【发布时间】:2015-03-10 18:31:02
【问题描述】:
ctx-solver-simplify 策略仅适用于布尔变量,那么我将如何处理有限域上的变量(例如,使用哪种策略)?比如z只能取3个值0,1,2,那么如何将Or(z==0,z==1,z==2)简化为true?
此外,即使是布尔表达式,ctx-solver-simplify 的策略也没有完全简化。例如:
x,y,z = z3.Bools('x y z')
c1 = z3.And(x==True,y==True,z==True)
c2 = z3.And(x==True,y==True,z==False)
c3 = z3.And(x==True,y==False,z==True)
c4 = z3.And(x==True,y==True,z==False)
z3.Tactic('ctx-solver-simplify')(z3.Or([c1,c2,c3,c4]))
[[Or(And(x, z), And(x == True, y == True, z == False))]]
如何获得And(x, Or(z, y)) 之类的信息?
谢谢!
【问题讨论】: