gpt4 book ai didi

z3 - 在 z3 SMT 和 python 中不同

转载 作者:行者123 更新时间:2023-12-05 01:20:45 26 4
gpt4 key购买 nike

我的问题是“Distinct”在 z3 python 中是否有效?我比较了以下代码,但似乎没有给出相同的结果:

(declare-const x Int)
(declare-const y Int)
(assert (distinct x y))
(check-sat)
(get-model)

结果是:

sat

(model
(define-fun y () Int
0)
(define-fun x () Int
1)
)

我添加了否定断言只是为了测试,结果是不满意的,这是正确的:

(assert (= x y))

unsat
Z3(6, 10): ERROR: model is not available

但是当我在 python 中使用 z3 时,它总是给我如下坐姿:

x = Int('x')
y = Int('y')
Distinct(x, y)
s = Solver
s = Solver()
s.check()

当我添加以下断言时,它应该给我 unsat 但它返回 sat:

s.add(x == y)
[y = 0, x = 0]

这是否意味着我使用了错误的语法?

最佳答案

“Distinct”函数只创建一个项,它不会将自己添加到求解器中。这是一个对我有用的例子:

x = Int('x')
y = Int('y')
d = Distinct(x, y)

s = Solver()
s.add(d) # SAT without this one, UNSAT with
s.add(x == y)
print s
print s.check()

关于z3 - 在 z3 SMT 和 python 中不同,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27841804/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com