Z3的对称破缺——在UFBV逻辑(新版本)的背景下
(这是我第二次尝试寻求帮助。如果问题/方法没有意义或不清楚,请让我知道。我也很高兴得到任何小提示或参考,这可以帮助我了解Z3在SBA中的行为) 我正在使用UFBV Z3逻辑对关系规范进行有界验证。我正在研究的当前问题需要对所有可能的模型进行篡改(因为对可达性谓词的负面使用),这会在更高的范围内降低解算器的性能 因为只有一部分可能的模型确实有趣(与其他模型不同构),所以我尝试介绍对称性破缺技术(在SAT领域已知) 然而,在某些情况下,使用我所称的对称破缺公理可以提高Z3的性能,但解算器的一般行为变得不稳定 我的一个方法(我认为是最有希望的方法)是基于打破关系的对称性。它引入了关系R的每个域D和D公理中的每个原子a,它们在R^{M}和R^{M[a+1/a]}的二进制表示上强制一个顺序,其中M是规范的模型。对于齐次关系,公理是松弛的 设为关系的子集。我对R的放松对称破缺公理如下:Z3的对称破缺——在UFBV逻辑(新版本)的背景下,z3,Z3,(这是我第二次尝试寻求帮助。如果问题/方法没有意义或不清楚,请让我知道。我也很高兴得到任何小提示或参考,这可以帮助我了解Z3在SBA中的行为) 我正在使用UFBV Z3逻辑对关系规范进行有界验证。我正在研究的当前问题需要对所有可能的模型进行篡改(因为对可达性谓词的负面使用),这会在更高的范围内降低解算器的性能 因为只有一部分可能的模型确实有趣(与其他模型不同构),所以我尝试介绍对称性破缺技术(在SAT领域已知) 然而,在某些情况下,使用我所称的对称破缺公理可以提高Z3的性能,但解算器的一般行为变
;; SBA(R, A)_upToDiag
(assert
(forall ( (ai A) (aj A) )
(=>
(bvult ai aj)
(=>
(forall ((x A))
(=>
(bvult x aj)
(= (R ai x) (R (bvadd ai (_ bv1 n)) x))
)
)
(=>
(R ai aj)
(R (bvadd ai (_ bv1 n)) aj)
)))))
;; SBA(R, A)_diag
(assert
(forall ( (ai A) )
(=>
(forall ((x A))
(=>
(bvult x ai)
(= (R ai x) (R (bvadd ai (_ bv1 n)) x))
)
)
(=>
(R ai ai)
(R (bvadd ai (_ bv1 n)) (bvadd ai (_ bv1 n)))
))))
我的问题是,使用此SBAs的效果不稳定/不一致。它因绑定和表单规范的不同而不同。此外,使用全部或仅使用一个SBA也会影响性能
在SAT环境中,所谓的对称性破缺谓词(SBP)方法的成功基于SAT解算器的回溯能力,这(以某种方式)保证,如果解算器回溯,它将使用SBP等工具修剪搜索空间
- 在Z3的上下文中有什么区别(如果有的话)李>
- 我如何强制执行solve以使用这些公理来修剪搜索空间(当它回溯时)
- 在我的SBA中使用(量词)模式会有帮助吗
Aboubakr Achraf El Ghazi在Z3.2中,有两个主要引擎用于处理量化公式:E匹配和MBQI(基于模型的量词实例化)。E-匹配仅在不可满足的公式中有效。Z3将无法证明使用此引擎的公式是可满足的。MBQI更昂贵,但它可以表明几类公式(包含量词)是可满足的。描述了这两个引擎(和其他选项)。为了在非平凡问题上有效地使用Z3,了解这两个引擎是如何工作的非常有用 对称性破缺通常是减少搜索空间的有效方法。很难准确地指出你的问题到底是怎么回事。我可以看到以下关于非稳定行为的解释:
- MBQI很难创建满足SBAs要求的模型。尽管SBA删减了搜索空间,但如果问题是可满足的,Z3将尝试构建满足它们的解释(模型)。因此,在这种情况下,SBA只是开销。如果输入公式很容易满足,但在添加SBA时变得很难满足,则这一点尤其正确。您可以使用选项
来确认此假设。Z3将显示如下消息:MBQI\u TRACE=true
。其中[mbqi]失败k!18
是量词id。您可以使用标签k![行号]
分配自己的id。以下是一个例子: (assert(forall((x T)(y T))(!(=>(和(子类型x y)) (y-x亚型) (=x y)) :qid反对称性):qid
MBQI=false
禁用MBQI模块
在Z3的未来版本中,我们计划添加一个选项来禁用某些量化公式的MBQI。此功能可能对SBA有用
- 另一种解释是,电子匹配创建了太多SBA实例。您可以使用选项
确认。Z3将转储以下信息:QI_PROFILE=true
(rai aj)
作为SBA(R,a)\u uptdiag
的模式。这种模式可能会创建二次数量的实例。另一个实验是禁用电子匹配。例如,选项
AUTO_CONFIG=false EMATCHING=false MBQI=true
您也可以尝试在上面的配置中禁用相关性传播,选项:relevancy=0
最后,另一个选项是生成您认为有用的SBA实例,并删除量化公式。在Z3 3.2中,有两个主要引擎用于处理量化公式:E-matching和MBQI(基于模型的量词实例化)。E-匹配仅在不可满足的公式中有效。Z3将无法证明使用此引擎的公式是可满足的。MBQI更昂贵,但它可以表明几类公式(包含量词)是可满足的。描述了这两个引擎(和其他选项)。为了在非平凡问题上有效地使用Z3,了解这两个引擎是如何工作的非常有用 对称性破缺通常是减少搜索空间的有效方法。很难准确地指出你的问题到底是怎么回事。我可以看到以下关于非稳定行为的解释:
- MBQI很难创建满足SBAs要求的模型。虽然SBA删减了搜索空间,但如果