Reductions for Synthesis Procedures

  • Swen Jacobs
  • Viktor Kuncak
  • Philippe Suter
Part of the Lecture Notes in Computer Science book series (LNCS, volume 7737)


A synthesis procedure acts as a compiler for declarative specifications. It accepts a formula describing a relation between inputs and outputs, and generates a function implementing this relation. This paper presents the first synthesis procedures for 1) algebraic data types and 2) arrays. Our procedures are reductions that lift a synthesis procedure for the elements into synthesis procedures for containers storing these elements. We introduce a framework to describe synthesis procedures as systematic applications of inference rules. We show that, by interpreting both synthesis problems and programs as relations, we can derive and modularly prove widely applicable transformation rules, simplifying both the presentation and the correctness argument.


Inference Rule Decision Procedure Synthesis Procedure Conjunctive Normal Form Synthesis Problem 
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.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. 1.
    Aït-Kaci, H.: Warren’s Abstract Machine: A Tutorial Reconstruction. MIT Press (1991) (available online as PDF)Google Scholar
  2. 2.
    Baader, F., Snyder, W.: Unification theory. In: Handbook of Automated Reasoning. Elsevier (2001)Google Scholar
  3. 3.
    Flener, P.: Logic Program Synthesis from Incomplete Information. Kluwer Academic Publishers (1995)Google Scholar
  4. 4.
    Hamza, J., Jobstmann, B., Kuncak, V.: Synthesis for regular specifications over unbounded domains. In: FMCAD, pp. 101–109 (2010)Google Scholar
  5. 5.
    Hodges, W.: A Shorter Model Theory. Cambridge University Press (1997)Google Scholar
  6. 6.
    Jobstmann, B., Bloem, R.: Optimizations for ltl synthesis. In: FMCAD, pp. 117–124 (2006)Google Scholar
  7. 7.
    Köksal, A.S., Kuncak, V., Suter, P.: Constraints as control. In: POPL, pp. 151–164 (2012)Google Scholar
  8. 8.
    Kuncak, V., Mayer, M., Piskac, R., Suter, P.: Software synthesis procedures. CACM 55(2), 103–111 (2012)Google Scholar
  9. 9.
    Kuncak, V., Mayer, M., Piskac, R., Suter, P.: Complete functional synthesis. In: PLDI, pp. 316–329 (2010)Google Scholar
  10. 10.
    Lahiri, S.K., Ball, T., Cook, B.: Predicate Abstraction via Symbolic Decision Procedures. In: Etessami, K., Rajamani, S.K. (eds.) CAV 2005. LNCS, vol. 3576, pp. 24–38. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  11. 11.
    Manna, Z., Waldinger, R.J.: Toward automatic program synthesis. CACM 14(3), 151–165 (1971)zbMATHGoogle Scholar
  12. 12.
    Manna, Z., Waldinger, R.J.: A deductive approach to program synthesis. TOPLAS 2(1), 90–121 (1980)zbMATHCrossRefGoogle Scholar
  13. 13.
    Maranget, L.: Compiling pattern matching to good decision trees. In: ML, pp. 35–46 (2008)Google Scholar
  14. 14.
    de Moura, L.M., Bjørner, N.: Generalized, efficient array decision procedures. In: FMCAD, pp. 45–52 (2009)Google Scholar
  15. 15.
    Nelson, G., Oppen, D.C.: Simplification by cooperating decision procedures. TOPLAS 1(2), 245–257 (1979)zbMATHCrossRefGoogle Scholar
  16. 16.
    Smith, D.R.: KIDS: A semiautomatic program development system. TSE 16(9), 1024–1043 (1990)Google Scholar
  17. 17.
    Solar-Lezama, A., Tancau, L., Bodík, R., Seshia, S.A., Saraswat, V.A.: Combinatorial sketching for finite programs. In: ASPLOS, pp. 404–415 (2006)Google Scholar
  18. 18.
    Spielmann, A., Kuncak, V.: Synthesis for unbounded bit-vector arithmetic. In: IJCAR, pp. 499–513 (2012)Google Scholar
  19. 19.
    Srivastava, S., Gulwani, S., Foster, J.S.: From program verification to program synthesis. In: POPL, pp. 313–326 (2010)Google Scholar
  20. 20.
    Stump, A., Barrett, C.W., Dill, D.L., Levitt, J.R.: A decision procedure for an extensional theory of arrays. In: LICS, pp. 29–37 (2001)Google Scholar
  21. 21.
    Sturm, T., Weispfenning, V.: Quantifier elimination in term algebras: The case of finite languages. In: Ganzha, V.G., Mayr, E.W., Vorozhtsov, E.V. (eds.) Computer Algebra in Scientific Computing (CASC). TUM München (2002)Google Scholar
  22. 22.
    Vechev, M.T., Yahav, E., Yorsh, G.: Abstraction-guided synthesis of synchronization. In: POPL, pp. 327–338 (2010)Google Scholar
  23. 23.
    Wadler, P.: The Implementation of Functional Programming Languages: Efficient Compilation of Pattern-matching, ch. 5, pp. 78–103 (1987)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2013

Authors and Affiliations

  • Swen Jacobs
    • 1
  • Viktor Kuncak
    • 2
  • Philippe Suter
    • 2
  1. 1.Graz University of TechnologyAustria
  2. 2.École Polytechnique Fédérale de Lausanne (EPFL)Switzerland

Personalised recommendations