这几天把MathSat装上,并且简单学习了他的使用方法,除了编程应用,还可以使用命令行方式。下面这里是使用KLEE生成的符号公式作为输入,由MathSat运行求解,得到可满足性的判定。这里主要列出基本步骤。
1 利用llvm-gcc编译c文件
llvm-gcc --emit-llvm -c -g get_sign.c
2 klee执行
klee --write-smt2s --use-query-log=all:smt2 --use-query-log=solver:smt2 --use-query-log=all:pc get_sign.o
执行后可以生成一个文件夹,里面存储的是执行的结果。执行中加入各种参数目的是为了能够生成smt2文件,以便于下一步使用。
3 利用mathsat运行这些smt2文件
生成的文件中*-queries包含了所有的symbolic formula,你可以一个一个单独放到文件中,然后作为mathsat的输入。也可以总的加以应用。
mathsat -input=smt2<solver-queries.smt2
突然知道怎么简单使用了。