这是我的简单编码。我想得到最后的布尔CNF,它提出了所有这些约束。 Z3求解器中是否有任何选项可以获得最终的布尔CNF?
x = Int('x')
y = Int('y')
c1 = And(x >= 1, x <= 10)
c2 = And(y >= 1, y <= 10)
c3 = Distinct(x,y)
s = Solver()
s.add(c1 , c2 , c3)
# I need the final Boolean CNF formula from Z3 solver...
谢谢&amp;此致
答案 0 :(得分:2)
正如艾拉特所说,使用目标和策略。 以下是一个示例:http://rise4fun.com/Z3Py/4I3
x = Int('x')
y = Int('y')
c1 = And(x >= 1, x <= 10)
c2 = And(y >= 1, y <= 10)
c3 = Distinct(x,y)
g = Goal()
g.add(c1 , c2 , c3)
describe_tactics()
t = Tactic('tseitin-cnf')
print t(g)