Skip to main content

Drill and Join: A Method for Exact Inductive Program Synthesis

  • Conference paper
  • First Online:
Logic-Based Program Synthesis and Transformation (LOPSTR 2014)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 8981))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Notes

  1. 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. 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. 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. 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. 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. 6.

    \(F_r\) is a set containing Boolean functions belonging to a Boolean algebra of dimension \(r\).

  7. 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. 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. 9.

    The notation \(\overline{f_i}\) indicates a function resulting from the i-th recursive drill linear mapping.

  10. 10.

    The notation \(\overline{\overline{f_i}}\) indicates a function resulting from the i-th recursive join linear mapping.

References

  1. Kotsiantis, S.B.: Supervised machine learning: a review of classification techniques. Informatica 31, 249–268 (2007)

    MATH  MathSciNet  Google Scholar 

  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

    Article  Google Scholar 

  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)

    Chapter  Google Scholar 

  4. Stone, M.H.: The theory of representations of Boolean Algebras. Trans. Am. Math. Soc. 40, 37–111 (1936)

    Google Scholar 

  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)

    Chapter  Google Scholar 

  6. Kitzelmann, E.: A combined analytical and search-based approach for the inductive synthesis of functional programs. Kunstliche Intelligenz 25(2), 179–182 (2011)

    Article  Google Scholar 

  7. Kitzelmann, E., Schmid, U.: Inductive synthesis of functional programs: an explanation based generalization approach. J. Mach. Learn. Res. 7, 429–454 (2006)

    MATH  MathSciNet  Google Scholar 

  8. Kitzelmann, E.: Analytical inductive functional programming. In: Hanus, M. (ed.) LOPSTR 2008. LNCS, vol. 5438, pp. 87–102. Springer, Heidelberg (2009)

    Chapter  Google Scholar 

  9. Summers, P.D.: A methodology for LISP program construction from examples. J. ACM 24(1), 162–175 (1977)

    Article  MathSciNet  Google Scholar 

  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. Sasao, T.: Switching Theory for Logic Synthesis. Springer, Boston (1999). ISBN: 0-7923-8456-3

    Book  MATH  Google Scholar 

  12. Alur, R., Bodik, R., Juniwal G. et al.: Syntax-guided synthesis, FMCAD, pp. 1–17. IEEE (2013)

    Google Scholar 

  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/07

    Article  Google Scholar 

  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)

    Article  MATH  MathSciNet  Google Scholar 

  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. Jha, S., Gulwani, S., Seshia, S.A., Tiwari, A.: Oracle-guided Component-based Program Synthesis. In: ICSE (2010)

    Google Scholar 

  17. Seshia, S.A.: Sciduction: combining induction, deduction, and structure for verification and synthesis. In: DAC, pp. 356–365 (2012)

    Google Scholar 

  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

    MATH  Google Scholar 

Download references

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

Authors

Corresponding author

Correspondence to Remis Balaniuk .

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:

figure l
figure m
figure n
figure o

The Fibonacci sequence can be implemented in Lisp as:

figure p

Calling the synthesis procedure and then testing the generated program:

figure q

Rights and permissions

Reprints 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)

Publish with us

Policies and ethics