An Update on Deductive Synthesis and Repair in the Leon Tool

We report our progress in scaling deductive synthesis and repair of recursive functional Scala programs in the Leon tool. We describe new techniques, including a more precise mechanism for encoding the space of meaningful candidate programs. Our techniques increase the scope of synthesis by expanding the space of programs we can synthesize and by reducing the synthesis time in many cases. As a new example, we present a run-length encoding function for a list of values, which Leon can now automatically synthesize from specification consisting of the decoding function and the local minimality property of the encoded value.

[1]  Patrick Maxim Rondon,et al.  Liquid types , 2008, PLDI '08.

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

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

[4]  Sumit Gulwani,et al.  Test-driven synthesis , 2014, PLDI.

[5]  Etienne Kneuss,et al.  Deductive Synthesis and Repair , 2016 .

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

[7]  Sumit Gulwani,et al.  Recursive Program Synthesis , 2013, CAV.

[8]  Viktor Kuncak,et al.  Synthesizing Java expressions from free-form queries , 2015, OOPSLA.

[9]  Bertrand Meyer,et al.  Automated Program Repair in an Integrated Development Environment , 2015, 2015 IEEE/ACM 37th IEEE International Conference on Software Engineering.

[10]  Viktor Kuncak,et al.  Deductive Program Repair , 2015, CAV.

[11]  Emina Torlak,et al.  Optimizing synthesis with metasketches , 2016, POPL.

[12]  Sumit Gulwani,et al.  FlashMeta: a framework for inductive program synthesis , 2015, OOPSLA.

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

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

[15]  Sumit Gulwani,et al.  Type-directed completion of partial expressions , 2012, PLDI.

[16]  David Walker,et al.  Example-directed synthesis: a type-theoretic interpretation , 2016, POPL.

[17]  Armando Solar-Lezama,et al.  Program synthesis from polymorphic refinement types , 2015, PLDI.

[18]  Armando Solar-Lezama,et al.  Type Assisted Synthesis of Recursive Transformers on Algebraic Data Types , 2015, ArXiv.

[19]  Cesare Tinelli,et al.  A tour of CVC4: How it works, and how to use it , 2014, 2014 Formal Methods in Computer-Aided Design (FMCAD).

[20]  Rajeev Alur,et al.  Syntax-guided synthesis , 2013, 2013 Formal Methods in Computer-Aided Design.

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

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

[23]  Rajeev Alur,et al.  TRANSIT: specifying protocols with concolic snippets , 2013, PLDI.

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

[25]  Ruzica Piskac,et al.  A Type-Directed Approach to Program Repair , 2015, CAV.

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

[27]  Pierre Flener Logic program synthesis from incomplete information , 1995, The Kluwer international series in engineering and computer science.