Outline Trace Abstraction Refinement Horn Trace Abstraction Refinement
Outline • Trace Abstraction Refinement介绍 • Horn子句与程序验证 • 我们的 作
Trace Abstraction Refinement相关文献 • Matthias Heizmann, Jochen Hoenicke, Andreas Podelski: Refinement of Trace Abstraction. SAS 2009: 69 -85 • Matthias Heizmann, Jochen Hoenicke, Andreas Podelski: Nested interpolants. POPL 2010: 471 -482 • Matthias Heizmann, Jochen Hoenicke, Andreas Podelski: Software Model Checking for People Who Love Automata. CAV 2013: 36 -52 • Azadeh Farzan, Zachary Kincaid, Andreas Podelski: Proofs that count. POPL 2014: 151 -164 • Azadeh Farzan et al: Automated Program Verification. LATA 2015
Counter-Example Guided Abstraction Refinement (CEGAR, Clarke 2000)
从trace 产生 finite automata •
相关的扩展 作 • 并发程序(concurrent programs) • 交错执行(interleaving) 会导致自动机状态个数较大(automata size increase) • Farzan, A. , Kincaid, Z. , Podelski, A. : Inductive data flow graphs. POPL 2014 • 有限自动机(finite automata) 交错自动机(finite alternating automata) • 带有函数调用的程序(programs with function calls) • Matthias Heizmann, Jochen Hoenicke, Andreas Podelski: Nested interpolants. POPL 2010: 471 -482 • 有限自动机 嵌套自动机(nested word automata) • Petri 网/带参系统(Parametric systems) • Azadeh Farzan, Zachary Kincaid, Andreas Podelski: Proofs that count. POPL 2014: 151 -164 • 有限自动机 带计数器的自动机(counter automata)
Horn子句(Horn clauses) •
多线程程序(multithreaded programs)的组合 编码(compositional encoding)
基于Horn子句求解的软件验证 Concurre nt Programs with function calls Functional Programs … Horn clause verification engine • Sergey Grebenshchikov, Nuno P. Lopes, Corneliu Popeea, Andrey Rybalchenko: Synthesizing software verifiers from proof rules. PLDI 2012: 405 -416
Our Idea: TAR for Horn Clause Solving •
Example: linear case • h 2 h 1 h 3
Example: linear case • h 2 h 1 h 3
Example: non-linear case •
Example: non-linear case
我们对TAR的扩展 • Trace • Sequence tree • Interpolant • Sequence of interpolants Tree interpolant • Automata • Finite automata tree automata • Tree automata对于并、交、补运算也是封闭的 • System • Simple programs Horn clauses
目前进展 • 实现了相关算法 • SMT solver: SMTInterpol (可以处理Quantifier-Free Linear Integer Arithmetic, QF_LIA) • Tree Automata Library: • 自己实现, explicit-state, on-the-fly • 实验效果: • SVCOMP benchmark (from TACAS) • Eldarica: 基于 predicate abstraction 的CEGAR算法 • 基于Princess SMT求解器 • 基于predicate abstraction的CEGAR算法 • 我们自己实现了一个基于predicate abstraction的CEGAR算法,采用SMTInterpol求解器 • 结果 • 不同的求解器导致不同的性能 • TAR表现稍差于CEGAR
- Slides: 26