我已经创建了一个自定义理论插件,目前它什么都不做。回调都是实现和注册的,但他们只是返回。然后,我读了一堆declare-consts,declare-funs,并使用Z3_parse_smtlib2_string进行断言,并将生成的ast传递给Z3_assert_cnstr。到Z3_check_and_get_model的后续调用失败,出现以下错误:Z3理论插件错误
The mk_fresh_ext_data callback was not set for user theory, you must use Z3_theory_set_mk_fresh_ext_data_callback
据我所知,Z3_theory_set_mk_fresh_ext_data_callback不存在。
使用相同的字符串,但没有注册理论插件,Z3_check_and_get_model返回sat并按预期给出模型。
我正在使用版本4和Linux 64位库。
完整的例子是在这里:http://pastebin.com/hLJ8hFf1
简化示例[链接](http://pastebin.com/rGB6jX2a) – zanderso 2012-07-25 12:46:29
与使用API构建而不是解析调用的断言相同:[link](http://pastebin.com/ytzsbzpF)。此外,这个问题似乎与使用forall有关。当断言没有完成时,事情按预期工作。 – zanderso 2012-07-25 13:46:23