Abstract
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.
Keywords
- Boolean Function
- Boolean Algebra
- Input Space
- Target Function
- Inductive Logic Programming
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
This is a preview of subscription content, access via your institution.
Buying options
Notes
- 1.
Function-level programming, as proposed by Backus [14], is a particular, constrained type of functional programming where a program is built directly from programs that are given at the outset, by combining them with program-forming operations or functionals.
- 2.
Throughout this paper we will use indistinctively 0, F or false for the binary number 0 and 1, T or true for the binary number 1.
- 3.
Bit strings can represent any complex data type. Consequently, our functional setting includes any functional computer program having fixed length input and output.
- 4.
The dimension of the Boolean algebra will also determine the minimum number of monomials required to define each of its Boolean polynomials in algebraic normal form.
- 5.
We will use the overline notation to distinguish between modules (Boolean functions and Boolean spaces) belonging to the target function subspace (without overline) and modules belonging to a lower dimension linear subspace generated by the drill linear mapping (with overline).
- 6.
\(F_r\) is a set containing Boolean functions belonging to a Boolean algebra of dimension \(r\).
- 7.
Note that in Eq. 8 we are considering the target function as having one single vector input \(X\) while in 2 the same target function has two vector inputs \(X\) and \(Y\). These different notations for the same target function can be understood as \(X\) in Eq. 8 being the concatenation of \(X\) and \(Y\) from Eq. 2 or \(X\) and \(Y\) in Eq. 2 being a split of \(X\) from Eq. 8 in two vector subspaces. It follows that drill can be applied only to target Boolean functions having at least two input variables while join can be applied to target Boolean functions of any arity.
- 8.
We will use the double overline notation to distinguish between modules (Boolean functions and Boolean spaces) belonging to the target function subspace (without overline) and modules belonging to a lower dimension linear subspace generated by the join linear mapping (with double overline).
- 9.
The notation \(\overline{f_i}\) indicates a function resulting from the i-th recursive drill linear mapping.
- 10.
The notation \(\overline{\overline{f_i}}\) indicates a function resulting from the i-th recursive join linear mapping.
References
Kotsiantis, S.B.: Supervised machine learning: a review of classification techniques. Informatica 31, 249–268 (2007)
Gulwani, S., Jha, S., Tiwari, A., Venkatesan, R.: Synthesis of Loop-free Programs. SIGPLAN Not. 46(6), 62–73 (2011). doi:10.1145/1993316.1993506
Kitzelmann, E.: Inductive programming: a survey of program synthesis techniques. In: Schmid, U., Kitzelmann, E., Plasmeijer, R. (eds.) AAIP 2009. LNCS, vol. 5812, pp. 50–73. Springer, Heidelberg (2010)
Stone, M.H.: The theory of representations of Boolean Algebras. Trans. Am. Math. Soc. 40, 37–111 (1936)
Albarghouthi, A., Gulwani, S., Kincaid, Z.: Recursive program synthesis. In: Sharygina, N., Veith, H. (eds.) CAV 2013. LNCS, vol. 8044, pp. 934–950. Springer, Heidelberg (2013)
Kitzelmann, E.: A combined analytical and search-based approach for the inductive synthesis of functional programs. Kunstliche Intelligenz 25(2), 179–182 (2011)
Kitzelmann, E., Schmid, U.: Inductive synthesis of functional programs: an explanation based generalization approach. J. Mach. Learn. Res. 7, 429–454 (2006)
Kitzelmann, E.: Analytical inductive functional programming. In: Hanus, M. (ed.) LOPSTR 2008. LNCS, vol. 5438, pp. 87–102. Springer, Heidelberg (2009)
Summers, P.D.: A methodology for LISP program construction from examples. J. ACM 24(1), 162–175 (1977)
Smith, D.R.: The synthesis of LISP programs from examples. A survey. In: Biermann, A.W., Guiho, G., Kodratoff, Y. (eds.) Automatic Program Construction Techniques, pp. 307–324. Macmillan, New York (1984)
Sasao, T.: Switching Theory for Logic Synthesis. Springer, Boston (1999). ISBN: 0-7923-8456-3
Alur, R., Bodik, R., Juniwal G. et al.: Syntax-guided synthesis, FMCAD, pp. 1–17. IEEE (2013)
Tripp, J.L., Gokhal, M.B., Peterson, K.D.: Trident: from high-level language to hardware circuitry. IEEE - Comput. 40(3), 28–37 (2007). 0018–9162/07
Backus, J.: Can programming be liberated from the von Neumann style? a functional style and Its algebra of programs. Commun. ACM 21(8), 613–641 (1978)
Hara, Y., Tomiyama, H.I., Honda, S., Takada, H.: Proposal and quantitative analysis of the CHStone Benchmark program suite for practical C-based High-level synthesis. J. Inf. Process. 17, 242–254 (2009)
Jha, S., Gulwani, S., Seshia, S.A., Tiwari, A.: Oracle-guided Component-based Program Synthesis. In: ICSE (2010)
Seshia, S.A.: Sciduction: combining induction, deduction, and structure for verification and synthesis. In: DAC, pp. 356–365 (2012)
McCluskey, E.J.: Introduction to the Theory of Switching Circuits. McGrawHill Book Company, New York (1965). Library of Congress Catalog Card Number 65–17394
Acknowledgments
The author would like to thank Pierre-Jean Laurent from the Laboratoire de Modelisation et Calcul- LMC-IMAG at the Universite Joseph Fourier, Grenoble, France for his contributions concerning the mathematical proofs of the proposed method and Emmanuel Mazer from the Institut National De Recherche en Informatique et en Automatique- INRIA- Rhne Alpes, France for his assistance and helpful contributions to this research.
Author information
Authors and Affiliations
Corresponding author
Editor information
Editors and Affiliations
Appendices
Appendices
1.1 Details of the Fibonacci Sequence Program Synthesis
The translation between bit lists and integers is made using the following routines:




The Fibonacci sequence can be implemented in Lisp as:

Calling the synthesis procedure and then testing the generated program:

Rights and permissions
Copyright information
© 2015 Springer International Publishing Switzerland
About this paper
Cite this paper
Balaniuk, R. (2015). Drill and Join: A Method for Exact Inductive Program Synthesis. In: Proietti, M., Seki, H. (eds) Logic-Based Program Synthesis and Transformation. LOPSTR 2014. Lecture Notes in Computer Science(), vol 8981. Springer, Cham. https://doi.org/10.1007/978-3-319-17822-6_13
Download citation
DOI: https://doi.org/10.1007/978-3-319-17822-6_13
Published:
Publisher Name: Springer, Cham
Print ISBN: 978-3-319-17821-9
Online ISBN: 978-3-319-17822-6
eBook Packages: Computer ScienceComputer Science (R0)