是否存在解析一般(非布尔)术语的Z3 C API调用?例如。这样的事情:(+ a b)
?据我所知,Z3_parse_smtlib2_string
函数仅解析断言中的公式,这些公式完全是布尔类型。
答案 0 :(得分:2)
解析器(Z3_parse_smtlib2_string)解析SMT-LIB2基准测试。这种格式的基准定义了一个逻辑公式。这个公式是" true"如果输入不包含任何断言。这就是解析器返回" true"在你的情况下。 Z3没有为术语提供解析工具。你可以通过创建一个特殊的谓词" MyHolds"来解决这个问题。这需要一个合适类型的术语。 然后,您创建一个具有断言"(断言(MyHolds))"的基准。作为唯一的断言。然后,您可以从解析器的结果中删除MyHolds以取回您的术语。