Syntax-guided synthesis

The classical formulation of the program-synthesis problem is to find a program that meets a correctness specification given as a logical formula. Recent work on program synthesis and program optimization illustrates many potential benefits of allowing the user to supplement the logical specification with a syntactic template that constrains the space of allowed implementations. Our goal is to identify the core computational problem common to these proposals in a logical framework. The input to the syntax-guided synthesis problem (SyGuS) consists of a background theory, a semantic correctness specification for the desired program given by a logical formula, and a syntactic set of candidate implementations given by a grammar. The computational problem then is to find an implementation from the set of candidate expressions so that it satisfies the specification in the given theory. We describe three different instantiations of the counter-example-guided-inductive-synthesis (CEGIS) strategy for solving the synthesis problem, report on prototype implementations, and present experimental results on an initial set of benchmarks.

[1]  David Erickson,et al.  The beacon openflow controller , 2013, HotSDN '13.

[2]  Alberto Maria Segre,et al.  Programs for Machine Learning , 1994 .

[3]  Paul Hudak,et al.  Nettle: Functional Reactive Programming for OpenFlow Networks , 2010 .

[4]  Martín Casado,et al.  Rethinking enterprise network control , 2009, TNET.

[5]  Armando Solar-Lezama,et al.  Programming by sketching for bit-streaming programs , 2005, PLDI '05.

[6]  Paul Hudak,et al.  Maple: simplifying SDN programming using algorithmic policies , 2013, SIGCOMM.

[7]  Ehud Shapiro,et al.  Algorithmic Program Debugging , 1983 .

[8]  Armando Solar-Lezama,et al.  Program synthesis by sketching , 2008 .

[9]  J. Ross Quinlan,et al.  Induction of Decision Trees , 1986, Machine Learning.

[10]  Alexander Aiken,et al.  A Data Driven Approach for Algebraic Loop Invariants , 2013, ESOP.

[11]  Chen-Nee Chuah,et al.  Characterization of Failures in an Operational IP Backbone Network , 2008, IEEE/ACM Transactions on Networking.

[12]  Phillip D. Summers,et al.  A Methodology for LISP Program Construction from Examples , 1977, J. ACM.

[13]  Brighten Godfrey,et al.  VeriFlow: verifying network-wide invariants in real time , 2012, HotSDN '12.

[14]  Zuoning Yin,et al.  Towards understanding bugs in open source router software , 2010, CCRV.

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

[16]  Takuya Akiba,et al.  Calibrating Research in Program Synthesis Using 72,000 Hours of Programmer Time , 2013 .

[17]  Chen Liang,et al.  Participatory networking: an API for application control of SDNs , 2013, SIGCOMM.

[18]  Sanjit A. Seshia,et al.  Combining Induction, Deduction, and Structure for Verification and Synthesis , 2015, Proceedings of the IEEE.

[19]  George Varghese,et al.  Header Space Analysis: Static Checking for Networks , 2012, NSDI.

[20]  Christof Löding,et al.  ICE: A Robust Framework for Learning Invariants , 2014, CAV.

[21]  Carl H. Smith,et al.  Inductive Inference: Theory and Methods , 1983, CSUR.

[22]  Cesare Tinelli,et al.  Introducing StarExec: a Cross-Community Infrastructure for Logic Solving , 2014, COMPARE.

[23]  Helmut Veith,et al.  Counterexample-guided abstraction refinement for symbolic model checking , 2003, JACM.

[24]  Richard Wang,et al.  OpenFlow-Based Server Load Balancing Gone Wild , 2011, Hot-ICE.

[25]  D. Angluin Queries and Concept Learning , 1988 .

[26]  Kathi Fisler,et al.  A balance of power: expressive, analyzable controller programming , 2013, HotSDN '13.

[27]  E. Mark Gold,et al.  Language Identification in the Limit , 1967, Inf. Control..

[28]  Sumit Gulwani,et al.  Oracle-guided component-based program synthesis , 2010, 2010 ACM/IEEE 32nd International Conference on Software Engineering.

[29]  Nikolaj Bjørner,et al.  Satisfiability modulo theories , 2011, Commun. ACM.

[30]  Henry S. Warren,et al.  Hacker's Delight , 2002 .

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

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

[33]  Sumit Gulwani,et al.  Spreadsheet data manipulation using examples , 2012, CACM.

[34]  David Walker,et al.  Composing Software Defined Networks , 2013, NSDI.

[35]  Alexander Aiken,et al.  Stochastic superoptimization , 2012, ASPLOS '13.

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

[37]  Mukund Raghothaman,et al.  Language to Specify Syntax-Guided Synthesis Problems , 2014, ArXiv.

[38]  Ehab Al-Shaer,et al.  FlowChecker: configuration analysis and verification of federated openflow infrastructures , 2010, SafeConfig '10.

[39]  Henny B. Sipma,et al.  Linear Invariant Generation Using Non-linear Constraint Solving , 2003, CAV.

[40]  Sumit Gulwani,et al.  Synthesis of loop-free programs , 2011, PLDI '11.

[41]  Bruce McKenzie Generating Strings at Random from a Context Free Grammar , 1997 .

[42]  Rishabh Singh,et al.  Modular Synthesis of Sketches Using Models , 2014, VMCAI.

[43]  Nick McKeown,et al.  OpenFlow: enabling innovation in campus networks , 2008, CCRV.

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

[45]  Martín Casado,et al.  NOX: towards an operating system for networks , 2008, CCRV.

[46]  Sujata Banerjee,et al.  ElasticTree: Saving Energy in Data Center Networks , 2010, NSDI.

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

[48]  Andrey Rybalchenko Constraint Solving for Program Verification: Theory and Practice by Example , 2010, CSL.