有一组4个公式,因为x - y < 2
x - y > 2
x&gt; 3 y < 4
。删除第一个公式后,可以找到x=4 y=-1
的模型。如何使用z3(api)在第一个公式上用4和-1替换x和y?非常感谢你。
答案 0 :(得分:1)
您可以使用Z3_substitute
API。以下是使用Z3 Python的示例。我正在使用Python,因为它更方便we can test it online using rise4fun。我们可以使用Z3 C / C ++ ,. Net或Java API编写相同的示例。
x, y = Ints('x y')
s = Solver()
s.add(x - y > 2, x > 3, y < 4)
print s.check()
m = s.model()
print m
# We can retrieve the value assigned to x by using m[x].
# The api has a function called substitute that replaces (and simplifies)
# an expression using a substitution.
# The substitution is a sequence of pairs of the form (f, t).
# That is, Z3 will replace f with the term t.
F1 = x - y < 2
# Let us use substitute to replace x with 10
print substitute(F1, (x, IntVal(10)))
# Now, let us replace x and y with values assigned by the model m.
print substitute(F1, (x, m[x]), (y, m[y]))