Z3是一种SMT Solver,用于在给定背景逻辑的情况下,求解改组理论解释下的公式可满足性。
下载安装
从下面链接中下载新的Z3版本:
https://github.com/Z3Prover/z3/releases
安装:
1.cd z3
2.python scripts/mk_make.py
3.cd build(切换到build文件夹)
4.make
看到Z3 was successfully built则表示安装成功
写一个Z3示例程序
安装成功后在命令行输入z3 -h查看帮助,使用z3 -in开始输入代码,如输入下面代码:
(declare-const a Int)
(declare-fun f (Int Bool) Int)
(assert (> a 10))
(assert (< (f a true) 100))
(check-sat)
check-sat的结果为sat
退出输入状态使用“(exit)”命令。
这样一个完整的例子就写好了。
写一个Z3无法求解的约束
(declare-const a Int)
(assert (> (* a a) 3))
(declare-const b Real)
(declare-const c Real)
(assert (= (+ (* b b b) (* b c)) (* a 1000000)))
(check-sat)
上述check-sat的结果为unknow,因为对于非线性的实数运算的代价是非常大的,返回的结果可能是unknow或者loop。
参考资料:
z3 -h:官方自带的help文档,什么都不知道的情况可以查看,否则连怎么输入代码都不知道
Z3-guide:官方文档https://rise4fun.com/z3/tutorialcontent/guide#h24