C Z3:从字符串解析术语

C Z3:从字符串解析术语,c,parsing,z3,C,Parsing,Z3,是否有一个Z3CAPI调用解析一个通用(非布尔)术语?例如,类似这样的东西:(+ab)?在我看来,Z3_parse_smtlib2_string函数只解析断言中的公式,这些断言完全是布尔类型的。解析器(Z3_parse_smtlib2_string)解析SMT-LIB2基准。这种格式的基准定义了一个逻辑公式。如果输入不包含任何断言,则此公式为“true”。这就是为什么解析器在您的案例中返回“true”。Z3不公开术语的解析功能。您可以通过创建一个特殊的谓词“MyHolds”来解决这个问题,该谓词

是否有一个Z3CAPI调用解析一个通用(非布尔)术语?例如,类似这样的东西:
(+ab)
?在我看来,
Z3_parse_smtlib2_string
函数只解析断言中的公式,这些断言完全是布尔类型的。

解析器(Z3_parse_smtlib2_string)解析SMT-LIB2基准。这种格式的基准定义了一个逻辑公式。如果输入不包含任何断言,则此公式为“true”。这就是为什么解析器在您的案例中返回“true”。Z3不公开术语的解析功能。您可以通过创建一个特殊的谓词“MyHolds”来解决这个问题,该谓词采用合适类型的术语。
然后创建一个基准,其中断言“(assert(MyHolds))”是唯一的断言。然后,您可以从解析器的结果中删除myhold以获取术语。

定义fun sum()Int(+x y)
这样的东西不是让您满意吗?到目前为止,您尝试了什么,它是如何失败的?Michael,我以前尝试过用
Z3\u parse\u smtlib2\u string
解析类似的东西,但它只返回术语
true
。Z3是SAT模理论的解算器,因此它的结果是真或假(SAT或UNSAT),您希望从该示例中得到什么结果?