I am trying to do this in SMT-LIB, running z3 -smt2 script.smt2
on the script containing these expressions:
(set-logic AUFLIA)
(declare-fun a () Int)
(declare-fun b () Int)
(declare-fun c () Int)
(declare-fun d () Int)
(declare-fun e () Int)
(declare-fun f () Int)
(declare-fun x () Int)
(declare-fun c () Int)
(declare-fun addition (Int Int) Int)
(assert (= x c))
(assert (= c (addition a b)))
(assert (= f (addition d e)))
(check-sat)
I want to get a unification for these variables. For example, I expect to be able to unify the variables by assigning x=f
, a=d
and b=e
.
Is it even possible to do this in z3
or SMT-LIB
?
Or should I be using some other language to do this (maybe give a recommendation is this is what you think?)