可以从Z3获得最终的CNF配方?

时间:2013-07-24 21:43:56

标签: z3 z3py

这是我的简单编码。我想得到最后的布尔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;此致

1 个答案:

答案 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)