我正在使用F#和Z3 3.2 API对LIA进行量化消除。
Z3曾经有QUANT_ARITH
配置,表示使用Cooper方法或Omega测试消除LIA量词。但是该选项在Z3 2.6中被ELIM_QUANTIFIERS
取代(参见Z3 release notes)。
我想在内部询问Z3 3.2如何知道用于量词消除的方法?用户可以影响QUANT_ARITH
之前的方法选择吗?
此外,随着strategy specification language的引入,Z3是否允许我们通过扩展或组合这些方法来自定义量词消除?
答案 0 :(得分:2)
量化消除模块已重新实施。新的实施应该更快更正确。 最新的Z3没有实施Cooper的方法或Omega测试。 您可以在以下位置找到有关Z3中使用的实际量词消除程序的更多详细信息: “线性量词消除作为抽象决策程序,NikolajBjørner,IJCAR 2010”。
关于策略规范语言,我们最终将揭示执行量词消除的策略。 我们目前正在研究这个基础设施,不久将有更多新闻。