Semantics-guided synthesis

This paper develops a new framework for program synthesis, called semantics-guided synthesis (SemGuS), that allows a user to provide both the syntax and the semantics for the constructs in the language. SemGuS accepts a recursively defined big-step semantics, which allows it, for example, to be used to specify and solve synthesis problems over an imperative programming language that may contain loops with unbounded behavior. The customizable nature of SemGuS also allows synthesis problems to be defined over a non-standard semantics, such as an abstract semantics. In addition to the SemGuS framework, we develop an algorithm for solving SemGuS problems that is capable of both synthesizing programs and proving unrealizability, by encoding a SemGuS problem as a proof search over Constrained Horn Clauses: in particular, our approach is the first that we are aware of that can prove unrealizabilty for synthesis problems that involve imperative programs with unbounded loops, over an infinite syntactic search space. We implemented the technique in a tool called MESSY, and applied it to SyGuS problems (i.e., over expressions), synthesis problems over an imperative programming language, and synthesis problems over regular expressions.

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

[2]  Sui Pheng Low,et al.  Results and Analysis , 2020, Waste Reduction in Precast Construction.

[3]  An Wang,et al.  Swizzle Inventor: Data Movement Synthesis for GPU Kernels , 2019, ASPLOS.

[4]  Sagar Chaki,et al.  SMT-based model checking for recursive programs , 2014, Formal Methods in System Design.

[5]  Isil Dillig,et al.  Learning Abstractions for Program Synthesis , 2018, CAV.

[6]  Emina Torlak,et al.  A lightweight symbolic virtual machine for solver-aided host languages , 2014, PLDI.

[7]  Cesare Tinelli,et al.  CVC4SY for SyGuS-COMP 2019 , 2019, ArXiv.

[8]  Loris D'Antoni,et al.  Syntax-Guided Synthesis with Quantitative Syntactic Objectives , 2018, CAV.

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

[10]  Sumit Gulwani,et al.  Automating string processing in spreadsheets using input-output examples , 2011, POPL '11.

[11]  Armando Solar-Lezama,et al.  Program sketching , 2012, International Journal on Software Tools for Technology Transfer.

[12]  Isil Dillig,et al.  Program synthesis using abstraction refinement , 2017, Proc. ACM Program. Lang..

[13]  Arjun Radhakrishna,et al.  Scaling Enumerative Program Synthesis via Divide and Conquer , 2017, TACAS.

[14]  Rajeev Alur,et al.  Syntax-guided synthesis , 2013, FMCAD 2013.

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

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

[17]  Viktor Kuncak,et al.  Counterexample-Guided Quantifier Instantiation for Synthesis in SMT , 2015, CAV.

[18]  Saso Dzeroski,et al.  Inductive Logic Programming: Techniques and Applications , 1993 .

[19]  Rajeev Alur,et al.  SyGuS-Comp 2017: Results and Analysis , 2017, SYNT@CAV.

[20]  J. Ross Quinlan,et al.  Learning logical definitions from relations , 1990, Machine Learning.

[21]  Loris D'Antoni,et al.  Proving Unrealizability for Syntax-Guided Synthesis , 2019, CAV.

[22]  Christopher L. Conway,et al.  Cvc4 , 2011, CAV.

[23]  Thomas Reps,et al.  Exact and approximate methods for proving unrealizability of syntax-guided synthesis problems , 2020, PLDI.

[24]  Laura Kovács,et al.  Tree Interpolation in Vampire , 2013, LPAR.

[25]  Loris D'Antoni,et al.  Automatic repair of regular expressions , 2019, Proc. ACM Program. Lang..

[26]  Daniel Kroening,et al.  Behavioral consistency of C and Verilog programs using bounded model checking , 2003, Proceedings 2003. Design Automation Conference (IEEE Cat. No.03CH37451).

[27]  Isil Dillig,et al.  Synthesizing data structure transformations from input-output examples , 2015, PLDI.

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

[29]  Patrick Cousot,et al.  Abstract Interpretation Frameworks , 1992, J. Log. Comput..

[30]  Vítor Santos Costa,et al.  Inductive Logic Programming , 2013, Lecture Notes in Computer Science.

[31]  Hakjoo Oh,et al.  Synthesizing Imperative Programs from Examples Guided by Static Analysis , 2017, SAS.

[32]  Murray Hill,et al.  Yacc: Yet Another Compiler-Compiler , 1978 .

[33]  Hakjoo Oh,et al.  Synthesizing regular expressions from examples for introductory automata assignments , 2016, GPCE.