Drill and Join: A Method for Exact Inductive Program Synthesis

In this paper we propose a novel semi-supervised active machine-learning method, based on two recursive higher-order functions that can inductively synthesize a functional computer program. Based on properties formulated using abstract algebra terms, the method uses two combined strategies: to reduce the dimensionality of the Boolean algebra where a target function lies and to combine known operations belonging to the algebra, using them as a basis to build a program that emulates the target function. The method queries for data on specific points of the problem input space and build a program that exactly fits the data. Applications of this method include all sorts of systems based on bitwise operations. Any functional computer program can be emulated using this approach. Combinatorial circuit design, model acquisition from sensor data, reverse engineering of existing computer programs are all fields where the proposed method can be useful.

[1]  J. W. Backus,et al.  Can programming be liberated from the von Neumann style , 1977 .

[2]  Emanuel Kitzelmann,et al.  Inductive Programming: A Survey of Program Synthesis Techniques , 2009, AAIP.

[3]  Sotiris B. Kotsiantis,et al.  Supervised Machine Learning: A Review of Classification Techniques , 2007, Informatica.

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

[5]  Hiroyuki Tomiyama,et al.  Proposal and Quantitative Analysis of the CHStone Benchmark Program Suite for Practical C-based High-level Synthesis , 2009, J. Inf. Process..

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

[7]  Tsutomu Sasao,et al.  Switching Theory for Logic Synthesis , 1999, Springer US.

[8]  Maya Gokhale,et al.  Trident: From High-Level Language to Hardware Circuitry , 2007, Computer.

[9]  Edward J. McCluskey,et al.  Introduction to the theory of switching circuits , 1965 .

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

[11]  Emanuel Kitzelmann,et al.  A Combined Analytical and Search-Based Approach for the Inductive Synthesis of Functional Programs , 2011, KI - Künstliche Intelligenz.

[12]  Emanuel Kitzelmann,et al.  Analytical Inductive Functional Programming , 2009, LOPSTR.

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

[14]  Ute Schmid,et al.  Inductive Synthesis of Functional Programs: An Explanation Based Generalization Approach , 2006, J. Mach. Learn. Res..

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

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