Z3'返回的公式的标准形式;中国的量化宽松策略

Z3'返回的公式的标准形式;中国的量化宽松策略,z3,smt,z3py,quantifiers,Z3,Smt,Z3py,Quantifiers,我通过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,

我通过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)))]]
从z3导入*
x、 y,xp,yp=Ints('x y xp-yp')
t=策略(“qe”)
t(存在((xp,yp)和(xp==x+1,yp==y+2,xp=1,yp=2)))
#返回:[[y=0,x=0]]
t(Exists((xp,yp)),暗示(x,战术尽“最大努力”。也就是说,虽然
qe
旨在消除量词,但它可能最终无法做到这一点,从而使目标堆栈保持不变


请注意,量词消除不仅仅是一种策略,而是一整套策略,具体取决于您的基准测试中涉及的其他理论。请参阅目录:

对于我当前的用例,我有纯线性整数算术公式。我尝试阅读您链接的源代码,但我对Z3的内部代码一点也不熟悉s、 有关于这方面的文档吗?我怀疑除了源代码本身之外,没有其他直接的文档。如果您正在寻找关于量词消除的一般信息,那么我相信您可以找到许多关于这方面的学术文章。