Z3 y=1/x,x=0,在现实中可满足?

Z3 y=1/x,x=0,在现实中可满足?,z3,smt,cvc4,Z3,Smt,Cvc4,在SMT-LIB中: (declare-fun y () Real) (declare-fun x () Real) (assert (= 0.0 x)) (assert (= y (/ 1.0 x))) (check-sat) 这个模型应该是SAT还是UNSAT?在SMT-LIB 2.0和2.5中,所有函数都是合计的,所以这个示例在SMT-LIB中是SAT。对于问题中的示例,Z3和CVC4确实返回SAT 我发现这与直觉背道而驰。我认为,从数学上来说,y=1/x,x=0在现实中是不可满足的,这

在SMT-LIB中:

(declare-fun y () Real)
(declare-fun x () Real)
(assert (= 0.0 x))
(assert (= y (/ 1.0 x)))
(check-sat)

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

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

我发现这与直觉背道而驰。我认为,从数学上来说,
y=1/x,x=0
在现实中是不可满足的,这将更加合理。在Mathematica中,等价代码返回一个空列表,表示不存在解,即
FindInstance[Element[x,Reals]&&Element[y,Reals]&&x==0&&y==1/x,{x,y}]
返回
{}


尽管如此,
/
。就Z3或CVC4而言,这个问题是SAT。

是的,SMT就是这样定义这些运算符/函数的。一个经常出现的主题,总是有50%的支持者和50%的反对者:)非常感谢克里斯托夫。我遇到这个问题是为了弄清楚
(和(=y(^x 0.5))(
应该是SAT还是UNSAT。为了与SMT的其他部分保持一致,我想这个sqrt示例也应该是SAT。现在我只需要弄清楚如何让Z3为这个sqrt示例给出SAT。