SMT Solver-Z3入手教程

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

发布了205 篇原创文章 · 获赞 655 · 访问量 53万+

猜你喜欢

转载自blog.csdn.net/qq_33414271/article/details/103282161