我想使用C ++ API对Z3进行增量求解。
2012年已经有一些老问题:
Z3 4.0 Z3_parse_smtlib2_string
Z3 4.3.1 C-API parse_smtlib2_string: Where to get declarations from?
我想知道是否有新的Z3版本的解决方案,4.4.2。
基本上我想做的就是这样:
CoInductive LListEq (A:Set) : LList A -> LList A -> Prop :=
| LNilEq : LListEq A LNil LNil
| LConsEq x lst1 lst2 : LListEq A lst1 lst2 ->
LListEq A (LCons x lst1) (LCons x lst2).
但我不知道如何获得声明。我尝试使用Z3_get_smtlib_num_decls,但它只能用于smtlib1,而不能用于smtlib2。
有没有办法检索声明?函数Z3_get_smtlib2_num_decls将来会实现吗?
感谢您的时间。
答案 0 :(得分:0)
就像Nikolaj在Z3 4.3.1 C-API parse_smtlib2_string: Where to get declarations from?中所说的那样,你必须遍历表达式(断言)来收集声明。 tptp示例的链接已中断,但该文件随Z3一起显示为examples/tptp/tptp5.cpp
(请参阅collect_decls
函数)。