Termination Analysis with Algorithmic Learning

An algorithmic-learning-based termination analysis technique is presented. The new technique combines transition predicate abstraction, algorithmic learning, and decision procedures to compute transition invariants as proofs of program termination. Compared to the previous approaches that mostly aim to find a particular form of transition invariants, our technique does not commit to any particular one. For the examples that the previous approaches simply give up and report failure our technique can still prove the termination. We compare our technique with others on several benchmarks from literature including PolyRank examples, SNU realtime benchmark, and Windows device driver examples. The result shows that our technique outperforms others both in efficiency and effectiveness.

[1]  Rajeev Alur,et al.  A Temporal Logic of Nested Calls and Returns , 2004, TACAS.

[2]  Soonho Kong,et al.  Automatically Inferring Quantified Loop Invariants by Algorithmic Learning from Simple Templates , 2010, APLAS.

[3]  Daniel Kroening,et al.  Ranking function synthesis for bit-vector relations , 2010, Formal Methods Syst. Des..

[4]  Andreas Podelski,et al.  Transition predicate abstraction and fair termination , 2005, POPL '05.

[5]  Kwangkeun Yi,et al.  Predicate Generation for Learning-Based Quantifier-Free Loop Invariant Inference , 2012, Log. Methods Comput. Sci..

[6]  Henny B. Sipma,et al.  The Polyranking Principle , 2005, ICALP.

[7]  A. Rybalchenko,et al.  Transition invariants , 2004, LICS 2004.

[8]  Andreas Podelski,et al.  Size-Change Termination and Transition Invariants , 2010, SAS.

[9]  Peter W. O'Hearn,et al.  Variance analyses from invariance analyses , 2007, POPL '07.

[10]  Nikolaj Bjørner,et al.  Z3: An Efficient SMT Solver , 2008, TACAS.

[11]  Daniel Kroening,et al.  Termination Analysis with Compositional Transition Invariants , 2010, CAV.

[12]  Sumit Gulwani,et al.  Proving Conditional Termination , 2008, CAV.

[13]  Sriram K. Rajamani,et al.  Thorough static analysis of device drivers , 2006, EuroSys.

[14]  Kwangkeun Yi,et al.  Deriving Invariants in Propositional Logic by Algorithmic Learning, Decision Procedure, and Predicate Abstraction , 2009 .

[15]  Andreas Podelski,et al.  Proving thread termination , 2007, PLDI '07.

[16]  Antoine Mid The Octagon Abstract Domain , 2001 .

[17]  Soonho Kong,et al.  Deriving Invariants by Algorithmic Learning, Decision Procedures, and Predicate Abstraction , 2010, VMCAI.

[18]  Antoine Miné,et al.  The octagon abstract domain , 2001, High. Order Symb. Comput..

[19]  Brian Campbell,et al.  Amortised Memory Analysis Using the Depth of Data Structures , 2009, ESOP.

[20]  Nader H. Bshouty Exact Learning Boolean Function via the Monotone Theory , 1995, Inf. Comput..

[21]  Daniel Kroening,et al.  Loop Summarization and Termination Analysis , 2011, TACAS.

[22]  Patrick Cousot,et al.  Abstract interpretation: a unified lattice model for static analysis of programs by construction or approximation of fixpoints , 1977, POPL.

[23]  Henny B. Sipma,et al.  Termination of Polynomial Programs , 2005, VMCAI.

[24]  Robin Milner,et al.  On Observing Nondeterminism and Concurrency , 1980, ICALP.

[25]  Kousha Etessami,et al.  Analysis of Recursive Game Graphs Using Data Flow Equations , 2004, VMCAI.

[26]  Andreas Podelski,et al.  Abstraction Refinement for Termination , 2005, SAS.

[27]  Andreas Podelski,et al.  A Complete Method for the Synthesis of Linear Ranking Functions , 2004, VMCAI.

[28]  Henny B. Sipma,et al.  Linear Ranking with Reachability , 2005, CAV.

[29]  Andreas Podelski,et al.  Termination proofs for systems code , 2006, PLDI '06.

[30]  Sumit Gulwani,et al.  Ranking Abstractions , 2008, ESOP.

[31]  Peter W. O'Hearn,et al.  Automatic Termination Proofs for Programs with Shape-Shifting Heaps , 2006, CAV.

[32]  William R. Harris,et al.  Alternation for Termination , 2010, SAS.

[33]  Yu-Fang Chen,et al.  Learning Boolean Functions Incrementally , 2012, CAV.