有一组 4 个公式,这些x - y < 2
x - y > 2
x > 3 y < 4
。当第一个公式被擦除时,x=4 y=-1
可以找到 的模型。如何使用 z3(api) 在第一个公式中将 x 和 y 替换为 4 和 -1?非常感谢。
问问题
1034 次
1 回答
2
您可以使用Z3_substitute
API。这是一个使用 Z3 Python 的示例。我使用 Python 是因为它更方便,我们可以使用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]))
于 2013-04-22T18:30:17.803 回答