我正在尝试针对机器生成的问题调整z3
是否存在处理这种情况的一般准则?
通过命令行选项,我想我可以尝试:
mbqi.id(字符串)仅对ID以字符串开头的量词使用基于模型的实例化(默认值:)
但是,我还看不到如何使用SMT-LIB语法将ID附加到量词上。有线索的人可以和我分享吗?
答案 0 :(得分:2)
此处提到的ID只是量化变量的名称。如果您有:
(declare-sort S 0)
(declare-fun gt (S S) bool)
(assert (forall ((inst_a S) (inst_b S))
(or (gt inst_a inst_b) (gt inst_b inst_a))))
(check-sat)
那么你可以说:
z3 smt.mbqi=true smt.mbqi.id=inst a.smt2
请不要忘记使用smt.mbqi=true
打开MBQI。如果使用此调用,则在上面的示例中,如果量化变量以inst
开头,则z3将仅实例化模式。