【发布时间】:2014-04-08 21:49:59
【问题描述】:
抱歉,如果这是一个愚蠢的问题 - 我对使用 Z3(和一般的 SMT)很陌生 - 但我有点难过。
假设我有两个SMT2输入语言的文件,略有不同,总结如下:
(define-fun T ((i Int)) Bool (... - too long to paste completely, but does define $prop)
(assert (T 0))
(declare-fun assum1 () Bool)
(assert (=> assum1 (not (and ($prop 0)))))
(check-sat assum1)
现在,其中之一(更简单的)返回“sat”,具有更复杂非线性数学的变体返回“未知”。
我认为更复杂的变体可以使用非线性求解器(例如 qfnra-nlsat 或其他策略)来求解,但尝试将其与 check-sat-using 一起使用:
(check-sat-using qfnra-nlsat assum1)
返回:
(error "line 246 column 29: invalid command argument, keyword expected")
但是,没有明确命名函数 assum1
(check-sat-using qfnra-nlsat)
运行,但给了我一个“未知”的结果。
所以,我的问题是 - 我如何选择我的求解器并将其专门应用于函数“assum1”?
感谢您的帮助。
【问题讨论】:
标签: z3