在实数中,y = 1 / x,x = 0是否可以满足?

时间:2016-06-29 18:33:22

标签: z3 smt cvc4

在SMT-LIB中:

e

这个模型应该是SAT还是UNSAT?

1 个答案:

答案 0 :(得分:1)

在SMT-LIB 2.0和2.5中,所有函数都是total,因此这个例子是SMT-LIB中的SAT。对于问题中的示例,Z3和CVC4确实都返回了SAT。

我发现这种反直觉。我认为在数学上更合理地说(declare-fun y () Real) (declare-fun x () Real) (assert (= 0.0 x)) (assert (= y (/ 1.0 x))) (check-sat) 在实际中是不可满足的。在Mathematica中,等效代码返回一个空列表,表示不存在解,即y=1/x, x=0返回FindInstance[Element[x, Reals] && Element[y, Reals] && x == 0 && y == 1/x, {x, y}]

尽管如此,{} is defined this way in SMT-LIB。因此,就Z3或CVC4而言,这个问题是SAT。