Automatic techniques for proving correctness of heap-manipulating programs

[1]  Albert R. Meyer,et al.  WEAK MONADIC SECOND ORDER THEORY OF SUCCESSOR IS NOT ELEMENTARY-RECURSIVE , 1973 .

[2]  Peter W. O'Hearn,et al.  Smallfoot: Modular Automatic Assertion Checking with Separation Logic , 2005, FMCO.

[3]  Hongseok Yang,et al.  Local reasoning for stateful programs , 2001 .

[4]  Koushik Sen,et al.  DART: directed automated random testing , 2005, PLDI '05.

[5]  George C. Necula,et al.  Data Structure Specifications via Local Equality Axioms , 2005, CAV.

[6]  Marvin Minsky,et al.  Computation : finite and infinite machines , 2016 .

[7]  Shmuel Sagiv,et al.  TVLA: A System for Implementing Static Analyses , 2000, SAS.

[8]  J. Büchi Weak Second‐Order Arithmetic and Finite Automata , 1960 .

[9]  Wolfram Schulte,et al.  Separation Logic Verification of C Programs with an SMT Solver , 2009, Electron. Notes Theor. Comput. Sci..

[10]  Shengchao Qin,et al.  Automated Verification of Shape, Size and Bag Properties , 2007, 12th IEEE International Conference on Engineering Complex Computer Systems (ICECCS 2007).

[11]  Michael I. Schwartzbach,et al.  The pointer assertion logic engine , 2000, PLDI '01.

[12]  Nils Klarlund,et al.  Graph types , 1993, POPL '93.

[13]  Joost Engelfriet,et al.  Context-Free Graph Grammars , 1997, Handbook of Formal Languages.

[14]  James W. Thatcher,et al.  Generalized finite automata theory with an application to a decision problem of second-order logic , 1968, Mathematical systems theory.

[15]  Peter W. O'Hearn,et al.  Symbolic Execution with Separation Logic , 2005, APLAS.

[16]  Alan J. Hu,et al.  Verifying Heap-Manipulating Programs in an SMT Framework , 2007, ATVA.

[17]  Todd Millstein,et al.  Automatic predicate abstraction of C programs , 2001, PLDI '01.

[18]  Chris Hawblitzel,et al.  Safe to the last instruction: automated verification of a type-safe operating system , 2010, PLDI '10.

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

[20]  Cesare Tinelli,et al.  Solving SAT and SAT Modulo Theories: From an abstract Davis--Putnam--Logemann--Loveland procedure to DPLL(T) , 2006, JACM.

[21]  Greg Nelson,et al.  Verifying reachability invariants of linked structures , 1983, POPL '83.

[22]  Peter W. O'Hearn,et al.  A Local Shape Analysis Based on Separation Logic , 2006, TACAS.

[23]  Frank Piessens,et al.  Implicit dynamic frames , 2008, TOPL.

[24]  Peter Lee,et al.  THOR: A Tool for Reasoning about Shape and Arithmetic , 2008, CAV.

[25]  Thomas W. Reps,et al.  Automated Verification of the Deutsch-Schorr-Waite Tree-Traversal Algorithm , 2006, SAS.

[26]  Adam Chlipala,et al.  Mostly-automated verification of low-level programs in computational separation logic , 2011, PLDI '11.

[27]  Peter W. O'Hearn,et al.  Scalable Shape Analysis for Systems Code , 2008, CAV.

[28]  Robert E. Shostak,et al.  Deciding Combinations of Theories , 1982, JACM.

[29]  Greg Nelson,et al.  Simplification by Cooperating Decision Procedures , 1979, TOPL.

[30]  Peter W. O'Hearn,et al.  A Decidable Fragment of Separation Logic , 2004, FSTTCS.

[31]  Mark A. Hillebrand,et al.  VCC: A Practical System for Verifying Concurrent C , 2009, TPHOLs.

[32]  Thomas W. Reps,et al.  Symbolically Computing Most-Precise Abstract Operations for Shape Analysis , 2004, TACAS.

[33]  K. Rustan M. Leino,et al.  Dafny: An Automatic Program Verifier for Functional Correctness , 2010, LPAR.

[34]  Chucky Ellison,et al.  Matching Logic: An Alternative to Hoare/Floyd Logic , 2010, AMAST.

[35]  Ruzica Piskac,et al.  Ordered Sets in the Calculus of Data Structures , 2010, CSL.

[36]  Alberto Griggio,et al.  The MathSAT5 SMT Solver , 2013, TACAS.

[37]  David Detlefs,et al.  Simplify: a theorem prover for program checking , 2005, JACM.

[38]  Amir Pnueli,et al.  Shape Analysis by Predicate Abstraction , 2005, VMCAI.

[39]  Tomás Vojnar,et al.  Automata-based verification of programs with tree updates , 2009, Acta Informatica.

[40]  Henny B. Sipma,et al.  What's Decidable About Arrays? , 2006, VMCAI.

[41]  Marius Bozga,et al.  Quantitative Separation Logic and Programs with Lists , 2008, IJCAR.

[42]  Viktor Kuncak,et al.  Satisfiability Modulo Recursive Programs , 2011, SAS.

[43]  Viktor Kuncak,et al.  Modular data structure verification , 2007 .

[44]  Samuel T. King,et al.  Verifying security invariants in ExpressOS , 2013, ASPLOS '13.

[45]  Frank Piessens,et al.  VeriFast: A Powerful, Sound, Predictable, Fast Verifier for C and Java , 2011, NASA Formal Methods.

[46]  Viktor Kuncak,et al.  Decision procedures for algebraic data types with abstractions , 2010, POPL '10.

[47]  Shuvendu K. Lahiri,et al.  Back to the future: revisiting precise program verification using SMT solvers , 2008, POPL '08.

[48]  Viktor Kuncak,et al.  An integrated proof language for imperative programs , 2009, PLDI '09.

[49]  L. D. Moura,et al.  The YICES SMT Solver , 2006 .

[50]  C. C. Elgot Decision problems of finite automata design and related arithmetics , 1961 .

[51]  Constantin Enea,et al.  A Logic-Based Framework for Reasoning about Composite Data Structures , 2009, CONCUR.

[52]  John C. Reynolds,et al.  Separation logic: a logic for shared mutable data structures , 2002, Proceedings 17th Annual IEEE Symposium on Logic in Computer Science.

[53]  Lawrence Charles Paulson,et al.  Isabelle/HOL: A Proof Assistant for Higher-Order Logic , 2002 .

[54]  Antoine Meyer,et al.  A logic of reachable patterns in linked data-structures , 2006, J. Log. Algebraic Methods Program..

[55]  Nikolaj Bjørner,et al.  Linear Functional Fixed-points , 2009, CAV.

[56]  Yuri Gurevich,et al.  The Classical Decision Problem , 1997, Perspectives in Mathematical Logic.

[57]  Wolfgang Thomas,et al.  Languages, Automata, and Logic , 1997, Handbook of Formal Languages.

[58]  Xiaokang Qiu,et al.  Decidable logics combining heap structures and data , 2011, POPL '11.

[59]  Peter W. O'Hearn,et al.  Computability and Complexity Results for a Spatial Assertion Language for Data Structures , 2001, APLAS.

[60]  Bor-Yuh Evan Chang,et al.  Relational inductive shape analysis , 2008, POPL '08.

[61]  Xiaokang Qiu,et al.  Recursive proofs for inductive tree data-structures , 2012, POPL '12.

[62]  Constantin Enea,et al.  On inter-procedural analysis of programs with lists and data , 2011, PLDI '11.

[63]  John Doner,et al.  Tree Acceptors and Some of Their Applications , 1970, J. Comput. Syst. Sci..

[64]  Albert Oliveras,et al.  6 Years of SMT-COMP , 2012, Journal of Automated Reasoning.

[65]  Leonardo Mendonça de Moura,et al.  Complete Instantiation for Quantified Formulas in Satisfiabiliby Modulo Theories , 2009, CAV.

[66]  Viktor Kuncak,et al.  Full functional verification of linked data structures , 2008, PLDI '08.

[67]  Xiaokang Qiu,et al.  Efficient Decision Procedures for Heaps Using STRAND , 2011, SAS.

[68]  Calogero G. Zarba,et al.  A Theory of Singly-Linked Lists and its Extensible Decision Procedure , 2006, Fourth IEEE International Conference on Software Engineering and Formal Methods (SEFM'06).

[69]  Claude Marché,et al.  A case study of C source code verification: the Schorr-Waite algorithm , 2005, Third IEEE International Conference on Software Engineering and Formal Methods (SEFM'05).

[70]  Peter W. O'Hearn,et al.  Shape Analysis for Composite Data Structures , 2007, CAV.

[71]  Peter W. O'Hearn,et al.  Local Reasoning about Programs that Alter Data Structures , 2001, CSL.

[72]  Alan J. Hu,et al.  An Inference-Rule-Based Decision Procedure for Verification of Heap-Manipulating Programs with Mutable Data and Cyclic Data Structures , 2007, VMCAI.

[73]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

[74]  Xiaokang Qiu,et al.  Natural proofs for structure, data, and separation , 2013, PLDI.

[75]  Mark Lillibridge,et al.  Extended static checking for Java , 2002, PLDI '02.