Drill and Join: A Method for Exact Inductive Program Synthesis

  • Remis BalaniukEmail author
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8981)


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.


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.



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.

Supplementary material


  1. 1.
    Kotsiantis, S.B.: Supervised machine learning: a review of classification techniques. Informatica 31, 249–268 (2007)zbMATHMathSciNetGoogle Scholar
  2. 2.
    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 CrossRefGoogle Scholar
  3. 3.
    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) CrossRefGoogle Scholar
  4. 4.
    Stone, M.H.: The theory of representations of Boolean Algebras. Trans. Am. Math. Soc. 40, 37–111 (1936)Google Scholar
  5. 5.
    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) CrossRefGoogle Scholar
  6. 6.
    Kitzelmann, E.: A combined analytical and search-based approach for the inductive synthesis of functional programs. Kunstliche Intelligenz 25(2), 179–182 (2011)CrossRefGoogle Scholar
  7. 7.
    Kitzelmann, E., Schmid, U.: Inductive synthesis of functional programs: an explanation based generalization approach. J. Mach. Learn. Res. 7, 429–454 (2006)zbMATHMathSciNetGoogle Scholar
  8. 8.
    Kitzelmann, E.: Analytical inductive functional programming. In: Hanus, M. (ed.) LOPSTR 2008. LNCS, vol. 5438, pp. 87–102. Springer, Heidelberg (2009) CrossRefGoogle Scholar
  9. 9.
    Summers, P.D.: A methodology for LISP program construction from examples. J. ACM 24(1), 162–175 (1977)CrossRefMathSciNetGoogle Scholar
  10. 10.
    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) Google Scholar
  11. 11.
    Sasao, T.: Switching Theory for Logic Synthesis. Springer, Boston (1999). ISBN: 0-7923-8456-3 CrossRefzbMATHGoogle Scholar
  12. 12.
    Alur, R., Bodik, R., Juniwal G. et al.: Syntax-guided synthesis, FMCAD, pp. 1–17. IEEE (2013)Google Scholar
  13. 13.
    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/07CrossRefGoogle Scholar
  14. 14.
    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)CrossRefzbMATHMathSciNetGoogle Scholar
  15. 15.
    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)Google Scholar
  16. 16.
    Jha, S., Gulwani, S., Seshia, S.A., Tiwari, A.: Oracle-guided Component-based Program Synthesis. In: ICSE (2010)Google Scholar
  17. 17.
    Seshia, S.A.: Sciduction: combining induction, deduction, and structure for verification and synthesis. In: DAC, pp. 356–365 (2012)Google Scholar
  18. 18.
    McCluskey, E.J.: Introduction to the Theory of Switching Circuits. McGrawHill Book Company, New York (1965). Library of Congress Catalog Card Number 65–17394 zbMATHGoogle Scholar

Copyright information

© Springer International Publishing Switzerland 2015

Authors and Affiliations

  1. 1.Universidade Católica de BrasíliaBrasíliaBrazil

Personalised recommendations