我对 SMT Z3 使用(如 DbC)的实际示例感兴趣并寻找该工具的代码和开源替代品。所以,其实我对类似的Z3形式求解工具很感兴趣,但是:
- 它必须是开源的
- 提供低级(API)和高级(文本脚本)交互
- 支持 SMT-LIB
- 适用于(可用)工具/编写/用于 Java、python、ruby、Vala 等语言,而不是Haskell
- 有基于它的稳定(在实践中可用)工具,如按合同设计(DbC)、静态类型验证等。
根据 SMT-LIB 主页(详见 bit.ly bundle),2010 年 SMT 求解器列表为:“Alt-Ergo、Barcelogic、Beaver、Boolector、CVC3、DPT、MathSAT、OpenSMT、SatEEn、Spear、STP、SWORD、 UCLID、veriT、Yices、Z3。”
请就在实践中使用它们提供任何反馈(代码示例是最好的)?
最后,将它与 GHC 可能性进行比较的任何信息都是有用的,但前提是存在实现示例(不是语言“功能”)。
更多关于 Z3 的快速信息在这里http://bit.ly/bundles/ewiger/1