获取量化布尔变量问题的模型

时间:2011-09-08 12:24:54

标签: z3

我使用Z3检查逻辑中的可满足性,使用线性整数运算,未解释的函数和布尔变量的量词。 Z3不提供可满足问题的模型,我想这是因为量词(或我选择的逻辑:AUFLIA)。

有没有办法让Z3给我这些问题的模型,除了自己实例化所有的布尔变量?

1 个答案:

答案 0 :(得分:2)

Z3原则上可以决定这个片段。我说“原则上”,因为这个片段的决策问题的复杂性非常高。例如,它包含Bernays-Schönfinkel片段(又名EPR),它是NEXPTIME完整的。可以在以下位置找到Z3可以决定的片段列表:http://rise4fun.com/z3/tutorial/guide

我们必须确保在Z3中启用基于模型的量词实例化(MBQI)。您可以使用命令行选项MBQI=true或SMT2命令

来实现
(set-option :mbqi true)

Z3在MBQI步骤的迭代次数上也有一个阈值。我们可以使用命令行选项MBQI_MAX_ITERATIONS=<value>或命令

来更改阈值
(set-option :mbqi-max-iterations 1000000)

对于每个MBQI步骤,我们可以要求Z3显示当前候选模型不满足哪些量词。选项MBQI_TRACE=true

话虽这么说,我最近修复了你发给我的SMT2脚本暴露的错误(崩溃)。该修复程序将在Z3 3.2中提供。

相关问题