skip to main content
10.1145/1869459.1869463acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

A simple inductive synthesis methodology and its applications

Published:17 October 2010Publication History

ABSTRACT

Given a high-level specification and a low-level programming language, our goal is to automatically synthesize an efficient program that meets the specification. In this paper, we present a new algorithmic methodology for inductive synthesis that allows us to do this.

We use Second Order logic as our generic high level specification logic. For our low-level languages we choose small application-specific logics that can be immediately translated into code that runs in expected linear time in the worst case.

We explain our methodology and provide examples of the synthesis of several graph classifiers, e.g, linear-time tests of whether the input graph is connected, acyclic, etc. In another set of applications we automatically derive many finite differencing expressions equivalent to ones that Paige built by hand in his thesis [Pai81]. Finally we describe directions for automatically combining such automatically generated building blocks to synthesize efficient code implementing more complicated specifications.

The methods in this paper have been implemented in Python using the SMT solver Z3 [dMB].

References

  1. }}Yanhong A. Liu and Scott D. Stoller. From datalog rules to efficient programs with time and space guarantees. ACM Trans. Program. Lang. Syst., 31(6), 2009. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. }}Yanhong A. Liu and Tim Teitelbaum. Systematic derivation of incremental programs. Sci. Comput. Program., 24(1):1--39, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. }}Stephen Muggleton, editor. Inductive Logic Programming, volume 38 of The APIC Series. Academic Press, 1992.Google ScholarGoogle Scholar
  4. }}Robert Paige.Formal Differentiation - A Program Synthesis Technique. UMI Press, 1981.Google ScholarGoogle Scholar
  5. }}Saurabh Srivastava, Sumit Gulwani, and Jeff Foster. From program verification to program synthesis. In POPL, pages 313--326, 2010. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. }}Ehud Y. Shapiro. Algorithmic Program DeBugging. MIT Press, Cambridge, MA, USA, 1983. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. }}Armando Solar-Lezama, Liviu Tancau, Rastislav Bodik, Sanjit Seshia, and Vijay Saraswat. Combinatorial sketching for finite programs. In ASPLOS, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. }}B.A. Brandin, R. Malik, and P. Malik.Incremental verification and synthesis of discrete-event systems guided by counter examples. Control Systems Technology, 12(3), May 2004.Google ScholarGoogle Scholar
  9. }}Jiazhen Cai and Robert Paige. Binding performance at language design time. In POPL, pages 85--97, 1987. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. }}Leonardo de Moura and Nikolaj Bjørner. Z3 an efficient smt solver.http://research. microsoft.com/en-us/um/redmond/ projects/z3/.Google ScholarGoogle Scholar
  11. }}Pierre Flener and Lubos Popelmnsky. On the use of inductive reasoning in program synthesis: Prejudice and prospects. In LOBSTR'94. 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. }}E. Mark Gold. Language identification in the limit. Information and Control, 10(5):447--474, 1967.Google ScholarGoogle ScholarCross RefCross Ref
  13. }}Neil Immerman. Descriptive Complexity. Springer, New York, 1999.Google ScholarGoogle Scholar

Index Terms

  1. A simple inductive synthesis methodology and its applications

      Recommendations

      Comments

      Login options

      Check if you have access through your login credentials or your institution to get full access on this article.

      Sign in

      PDF Format

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader