15个版本 (重大变化)
0.11.2 | 2021年8月30日 |
---|---|
0.11.1 | 2021年6月9日 |
0.11.0 | 2021年5月12日 |
0.7.0 | 2021年3月24日 |
在科学类别中排名第900
每月下载量9,988
用于prover-lab
7MB
8K SLoC
z3tracer
此库提供对Z3生成的详细日志文件的实验性解析器和分析器。
要获取文件z3.log
,请在Z3的命令行上传递选项trace=true
和proof=true
(例如,z3 trace=true proof=true file.smt2
)。对于大型问题,您可以选择通过中断z3
(例如,使用^C
或设置较短的超时)来限制日志文件的大小。仅传递trace=true
也是可能的,但这将防止任何依赖分析(见下文)。
在解析日志的同时,将构建一个日志“模型”,以记录大多数操作,以及每个#NUM
符号下的句法术语
use z3tracer::{Model, syntax::{Ident, Term}};
let mut model = Model::default();
let input = br#"
[mk-app] #0 a
[mk-app] #1 + #0 #0
[eof]
"#;
model.process(None, &input[1..])?;
assert_eq!(model.terms().len(), 2);
assert!(matches!(model.term(&Ident::from_str("#1")?)?, Term::App { .. }));
assert_eq!(model.id_to_sexp(&BTreeMap::new(), &Ident::from_str("#1").unwrap()).unwrap(), "(+ a a)");
此外,库将尝试重建以下信息
-
量词实例化(QIs),即Z3实例化了哪些量化公式以及原因;
-
SMT求解过程中的连续回溯级别;
-
SAT/SMT冲突及其在QIs方面的因果关系;
-
QIs之间的因果关系。
提供了一个基于库的工具z3tracer
,用于从命令行处理日志文件z3.log
并生成图表。
有关使用Jupyter笔记本的更多示例,请参阅存储库。
目前,此库仅支持Z3 v4.8.9。
有关Z3跟踪日志的更多信息,请参阅项目Axiom Profiler的文档。
贡献
查看CONTRIBUTING文件了解如何提供帮助。
许可证
该项目可以在以下许可证的条款下使用:Apache 2.0许可证或MIT许可证。
依赖项
约~6-10MB
约143K SLoC