【发布时间】:2019-04-14 06:06:57
【问题描述】:
我正在通过 Z3py 使用 Z3 的量词消除策略,并尝试了以下示例。
from z3 import *
x,y,xp,yp = Ints('x y xp yp')
t = Tactic('qe')
t(Exists((xp, yp), And(xp==x+1, yp==y+2, xp<=8, xp >=1, yp<=12, yp>=2)))
#returns: [[y <= 10, y >= 0, x <= 7, x >= 0]]
t(Exists((xp, yp), Implies(x<10 , And(xp==x+1, yp==y+2, xp<=8, xp >=1, yp<=12, yp>=2))))
#returns: [[Or(10 <= x, And(y <= 10, y >= 0, And(x <= 7, x >= 0)))]]
我认为得到的公式是无量词的 DNF(这是我需要的),但我在 API 文档中找不到任何保证它的东西。有谁知道qe 是否总是在 DNF 中返回公式?
我可以在哪里(如果有的话)找到有关战术的详细信息,而无需挖掘原始源代码?
编辑:所有公式都限于线性整数算术。
【问题讨论】:
标签: z3 smt z3py quantifiers