显示Z3模型中的所有值(Python)

时间:2015-10-18 11:20:45

标签: z3 smt z3py

当我想获取SMT2实例中所有变量的值时,我使用命令(set-option :auto-config false)。在Z3py中,设置此选项不起作用 - 模型不显示我定义但不在任何约束中使用的变量。如果我要求这些变量的值,我得到None。我尝试了这些选项,但没有一个产生我想要的结果:

set_option('model_evaluator.completion', True)
set_option('smt.auto-config', False)
set_option('auto-config', False)

我该怎么做才能获得这些变量的具体值?

1 个答案:

答案 0 :(得分:0)

auto-config选项不会告诉Z3打印或省略部分模型;它只是启用或禁用解算器的自动配置(基于静态公式功能)。

当一个变量没有在模型中赋值时,它只是无关紧要,即你可以为它组成任何值,它仍然是一个正确的模型。根据您使用的解决方案/策略,选项model_evaluator.completion可以解决该问题,但最安全的方法是在模型评估时启用模型完成,即使用eval(..)函数和{{} 1}}