我有兴趣使用z3(Microsoft Research)网站上提供的MaxSAT / MaxSMT c示例(特别是maxsat.c)。使用Visual Studio 2010,我最终得到了编译的示例(使用全新安装的z3 4.0)。但是,我无法使用它们运行任何我的(SMT 2.0)模型。此外,我无法在this问题中发布示例。
在第一种情况下,我的编译程序在尝试调用文件的Z3_get_smtlib_num_formulas
中的get_hard_constraints
时崩溃了。我不知道为什么,相反,我得到标准的Windows 7“这个程序已经停止工作”弹出窗口。
在第二种情况下,它会报告unsupported ;benchmark
。
为了帮助我完成这项工作,我想知道是否 (a)在编写此代码时是否有任何人遇到类似问题,如果是,您是如何解决这些问题的? 要么 (b)如何调试文件的编译(假设它是正确的)?也就是说,有人可以枚举正确的库(和库版本 - 例如,z3 4.0?)以包含在编译器选项中以使此示例有效吗?
在任何一种情况下,第二种情况下报告的错误信息也将受到赞赏:这究竟是什么意思?关键字无效? SMT输入是错误的版本?或其他什么?
感谢。
答案 0 :(得分:1)
MaxSAT示例尚未更新为SMTLIB 2.0。它使用函数Z3_parse_smtlib_file
来解析输入,这意味着它目前仅支持SMTLIB 1.0。
此示例与Z3一起分发,即您应该已收到Z3-4.0/examples/maxsat/
中的副本,该副本还包含编译和执行脚本。
通过在Visual Studio命令提示符中运行build.cmd
或在Linux上运行build.sh
,编译应该是直截了当的。