鉴于两个boolexpr b1,b2 说
b1=x1>=4&&x2>=5
b2=x2>=5&&x1>=4
我们可以使用.net API为Z3知道b1和b2是否实际上是相同的约束? )(意味着b1和b2允许的x1和x2的值相同)
答案 0 :(得分:3)
是。你想要证明b1等于b2,你可以通过显示b1 == b2的否定来做到这一点是不可满足的。这是一个示例,说明如何在Z3Py中执行此操作,并且您可以在.NET API中使用基本相同的步骤:http://rise4fun.com/Z3Py/M4R1
x1, x2 = Reals('x1 x2')
b1=And(x1>=4, x2>=5)
b2=And(x2>=5, x1>=4)
s = Solver()
proposition = b1 == b2 # assertion is whether b1 and b2 are equal
s.add(Not(proposition))
# proposition proved if negation of proposition is unsat
print s.check() # unsat
b1=And(x1>=3, x2>=5) # note difference
b2=And(x2>=5, x1>=4)
s = Solver()
proposition = b1 == b2
s.add(Not(proposition))
print s.check() # sat