Verifying and Synthesizing Software with Recursive Functions - (Invited Contribution)

Our goal is to help people construct software that does what they wish. We develop tools and algorithms that span static and dynamic verification, constraint solving, and program synthesis. I will outline the current state our verification and synthesis system, Leon, which translates software into a functional language and uses SMT solvers to reason about paths in programs and specifications. Certain completeness results partly explain the effectiveness of verification and synthesis procedures implemented within Leon, in particular results on decidability of sufficiently surjective abstraction functions, and the framework of complete functional synthesis

[1]  Leonardo Mendonça de Moura,et al.  Cutting to the Chase , 2011, Journal of Automated Reasoning.

[2]  Ronald L. Rivest,et al.  Introduction to Algorithms, Second Edition , 2001 .

[3]  Zohar Manna,et al.  Toward automatic program synthesis , 1971, Symposium on Semantics of Algorithmic Languages.

[4]  Andreas Podelski,et al.  ACSAR: Software Model Checking with Transfinite Refinement , 2007, SPIN.

[5]  Viktor Kuncak,et al.  An Efficient Decision Procedure for Imperative Tree Data Structures , 2011, CADE.

[6]  Chen C. Chang,et al.  Model Theory: Third Edition (Dover Books On Mathematics) By C.C. Chang;H. Jerome Keisler;Mathematics , 1966 .

[7]  Viktor Kuncak,et al.  Trustworthy numerical computation in Scala , 2011, OOPSLA '11.

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

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

[10]  Ruzica Piskac,et al.  Building a Calculus of Data Structures (invited paper) , 2010, International Conference on Verification, Model Checking and Abstract Interpretation.

[11]  Swarat Chaudhuri,et al.  A constraint-based approach to solving games on infinite graphs , 2014, POPL.

[12]  Ruzica Piskac,et al.  Complete functional synthesis , 2010, PLDI '10.

[13]  Sanjit A. Seshia,et al.  Combinatorial sketching for finite programs , 2006, ASPLOS XII.

[14]  Viktor Kuncak,et al.  Interpolation for synthesis on unbounded domains , 2013, 2013 Formal Methods in Computer-Aided Design.

[15]  Viktor Kuncak,et al.  Synthesis for Unbounded Bit-Vector Arithmetic , 2012, IJCAR.

[16]  Jochen Hoenicke,et al.  Nested interpolants , 2010, POPL '10.

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

[18]  Zohar Manna,et al.  A Deductive Approach to Program Synthesis , 1979, TOPL.

[19]  Nikolaj Bjørner,et al.  Automated Deduction - CADE-23 - 23rd International Conference on Automated Deduction, Wroclaw, Poland, July 31 - August 5, 2011. Proceedings , 2011, CADE.

[20]  Viktor Kuncak,et al.  Constraints as control , 2012, POPL '12.

[21]  W. J. Thron,et al.  Encyclopedia of Mathematics and its Applications. , 1982 .

[22]  Cesare Tinelli,et al.  An Abstract Decision Procedure for Satisfiability in the Theory of Recursive Data Types , 2007, PDPAR/PaUL@FLoC.

[23]  K. McMillan,et al.  Solving Constrained Horn Clauses using Interpolation , 2013 .

[24]  Chris Okasaki,et al.  Purely functional data structures , 1998 .

[25]  Viktor Kuncak,et al.  CrystalBall: Predicting and Preventing Inconsistencies in Deployed Distributed Systems , 2009, NSDI.

[26]  Ruzica Piskac,et al.  Fractional Collections with Cardinality Bounds, and Mixed Linear Arithmetic with Stars , 2008, CSL.

[27]  Vincent Danos,et al.  Computer Science Logic , 1993, Lecture Notes in Computer Science.

[28]  Viktor Kuncak,et al.  On Verification by Translation to Recursive Functions , 2013 .

[29]  Viktor Kuncak,et al.  Certifying Solutions for Numerical Constraints , 2012, RV.

[30]  Leonardo Mendonça de Moura,et al.  Computation in Real Closed Infinitesimal and Transcendental Extensions of the Rationals , 2013, CADE.

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

[32]  Philippe Suter,et al.  Programming with Specifications , 2012 .

[33]  Carsten Ihlemann,et al.  On Local Reasoning in Verification , 2008, TACAS.

[34]  Viktor Kuncak,et al.  Deciding Functional Lists with Sublist Sets , 2012, VSTTE.

[35]  Daniel Kroening,et al.  Software Verification Using k-Induction , 2011, SAS.

[36]  Viktor Kuncak,et al.  Game programming by demonstration , 2013, Onward!.

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

[38]  Viktor Kuncak,et al.  A Verification Toolkit for Numerical Transition Systems - Tool Paper , 2012, FM.

[39]  Alan Bundy,et al.  Constructing Induction Rules for Deductive Synthesis Proofs , 2006, CLASE.

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

[41]  Wilfrid Hodges,et al.  Model Theory: The existential case , 1993 .

[42]  Ruzica Piskac,et al.  MUNCH - Automated Reasoner for Sets and Multisets , 2010, IJCAR.

[43]  Leonardo Mendonça de Moura,et al.  Cutting to the Chase , 2013, Journal of Automated Reasoning.

[44]  Ruzica Piskac,et al.  Building a Calculus of Data Structures , 2010, VMCAI.

[45]  Viktor Kuncak,et al.  Synthesis of fixed-point programs , 2013, 2013 Proceedings of the International Conference on Embedded Software (EMSOFT).

[46]  Robert S. Boyer,et al.  Proving Theorems about LISP Functions , 1973, JACM.

[47]  Viktor Kuncak,et al.  Effect Analysis for Programs with Callbacks , 2013, VSTTE.

[48]  Viktor Kuncak,et al.  Sets with Cardinality Constraints in Satisfiability Modulo Theories , 2011, VMCAI.

[49]  Ruzica Piskac,et al.  Interactive Synthesis of Code Snippets , 2011, CAV.

[50]  Viorica Sofronie-Stokkermans,et al.  Locality Results for Certain Extensions of Theories with Bridging Functions , 2009, CADE.

[51]  Ruzica Piskac,et al.  Linear Arithmetic with Stars , 2008, CAV.

[52]  Martin Odersky,et al.  Unifying functional and object-oriented programming with Scala , 2014, Commun. ACM.

[53]  Viktor Kuncak,et al.  Accelerating Interpolants , 2012, ATVA.

[54]  Sarfraz Khurshid,et al.  Test generation through programming in UDITA , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[55]  Ruzica Piskac,et al.  Combining Theories with Shared Set Operations , 2009, FroCoS.

[56]  Thomas A. Henzinger,et al.  Invariant Synthesis for Combined Theories , 2007, VMCAI.

[57]  Ruzica Piskac,et al.  MUNCH - Automated Reasoner for Sets and Multisets (System Description) , 2010 .

[58]  Ruzica Piskac,et al.  Collections, Cardinalities, and Relations , 2010, VMCAI.

[59]  Joachim Niehren,et al.  A learning algorithm for top-down XML transformations , 2010, PODS.

[60]  Viktor Kuncak,et al.  Reductions for Synthesis Procedures , 2013, VMCAI.

[61]  Armin Biere,et al.  Symbolic Model Checking without BDDs , 1999, TACAS.

[62]  Viktor Kuncak,et al.  Sound compilation of reals , 2013, POPL.

[63]  Nikolaj Bjørner,et al.  On Solving Universally Quantified Horn Clauses , 2013, SAS.

[64]  Rastislav Bodík Algorithmic Program Synthesis with Partial Programs and Decision Procedures , 2009, SAS.

[65]  Martin Odersky,et al.  Contracts for Scala , 2010, RV.

[66]  Viktor Kuncak,et al.  Disjunctive Interpolants for Horn-Clause Verification , 2013, CAV.

[67]  Viktor Kuncak,et al.  Synthesis for regular specifications over unbounded domains , 2010, Formal Methods in Computer Aided Design.

[68]  Sumit Gulwani,et al.  From program verification to program synthesis , 2010, POPL '10.

[69]  Ruzica Piskac,et al.  Functional synthesis for linear arithmetic and sets , 2011, International Journal on Software Tools for Technology Transfer.

[70]  Ruzica Piskac,et al.  Software synthesis procedures , 2012, Commun. ACM.

[71]  Andrey Rybalchenko,et al.  Synthesizing software verifiers from proof rules , 2012, PLDI.

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

[73]  Viktor Kuncak,et al.  Towards Complete Reasoning about Axiomatic Specifications , 2011, VMCAI.

[74]  Viktor Kuncak,et al.  Symbolic Resource Bound Inference for Functional Programs , 2014, CAV.

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

[76]  Jürgen Giesl,et al.  SAT Solving for Termination Proofs with Recursive Path Orders and Dependency Pairs , 2012, Journal of Automated Reasoning.

[77]  Panagiotis Manolios,et al.  Computer-aided reasoning : ACL2 case studies , 2000 .

[78]  Viktor Kuncak,et al.  Runtime Instrumentation for Precise Flow-Sensitive Type Analysis , 2010, RV.

[79]  Viktor Kuncak,et al.  Executing Specifications Using Synthesis and Constraint Solving , 2013, RV.

[80]  Cesare Tinelli,et al.  PKind: A parallel k-induction based model checker , 2011, PDMC.

[81]  Nikolaj Bjørner,et al.  Generalized, efficient array decision procedures , 2009, 2009 Formal Methods in Computer-Aided Design.

[82]  Viktor Kuncak,et al.  Automatic synthesis of out-of-core algorithms , 2013, SIGMOD '13.

[83]  Alessandro Armando,et al.  Bounded Model Checking of Software Using SMT Solvers Instead of SAT Solvers , 2006, SPIN.

[84]  Viktor Kuncak,et al.  Synthesis modulo recursive functions , 2013, OOPSLA.

[85]  Ruzica Piskac,et al.  Complete completion using types and weights , 2013, PLDI.

[86]  Panagiotis Manolios,et al.  Computer-Aided Reasoning: An Approach , 2011 .

[87]  Andrey Rybalchenko,et al.  Solving Existentially Quantified Horn Clauses , 2013, CAV.

[88]  Martin Odersky,et al.  Programming in Scala: A Comprehensive Step-by-Step Guide, 2nd Edition , 2010 .

[89]  Nikolaj Bjørner,et al.  Program Verification as Satisfiability Modulo Theories , 2013, SMT@IJCAR.

[90]  Larry Wos,et al.  What Is Automated Reasoning? , 1987, J. Autom. Reason..

[91]  A. I. Malcev Axiomatizable classes of locally free algebras of various types , 1971 .

[92]  Frits W. Vaandrager,et al.  Automata Learning through Counterexample Guided Abstraction Refinement , 2012, FM.

[93]  Viktor Kuncak,et al.  Classifying and Solving Horn Clauses for Verification , 2013, VSTTE.