Staged Composition Synthesis

  • Boris Düdder
  • Moritz Martens
  • Jakob Rehof
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 8410)


A framework for composition synthesis is provided in which metalanguage combinators are supported and the execution of synthesized programs can be staged into composition-time code generation (stage 1) and run-time execution (stage 2). By extending composition synthesis to encompass both object language (L1) and metalanguage (L2) combinators, composition synthesis becomes a powerful and flexible framework for the generation of L1-program compositions. A system of modal intersection types is introduced into a combinatory composition language to control the distinction between L1- and L2-combinators at the type level, thereby exposing the language distinction to composition synthesis. We provide a theory of correctness of the framework which ensures that generated compositions of component implementations are well typed and that their execution can be staged such that all metalanguage combinators can be computed away completely at stage 1, leaving only well typed L1-code for execution at stage 2. Our framework has been implemented, and we report on experiments.


Intersection Type Operational Semantic Semantic Type Combinatory Logic Inhabitation 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.


  1. 1.
    Rehof, J., Urzyczyn, P.: Finite Combinatory Logic with Intersection Types. In: Ong, L. (ed.) TLCA 2011. LNCS, vol. 6690, pp. 169–183. Springer, Heidelberg (2011)Google Scholar
  2. 2.
    Düdder, B., Martens, M., Rehof, J., Urzyczyn, P.: Bounded Combinatory Logic. In: Proceedings of CSL 2012, Schloss Dagstuhl. LIPIcs, vol. 16, pp. 243–258 (2012)Google Scholar
  3. 3.
    Düdder, B., Garbe, O., Martens, M., Rehof, J., Urzyczyn, P.: Using Inhabitation in Bounded Combinatory Logic with Intersection Types for GUI Synthesis. In: Proceedings of ITRS 2012 (2012)Google Scholar
  4. 4.
    Rehof, J.: Towards Combinatory Logic Synthesis. In: 1st International Workshop on Behavioural Types, BEAT 2013. ACM (January 22, 2013)Google Scholar
  5. 5.
    Düdder, B., Martens, M., Rehof, J.: Intersection Type Matching with Subtyping. In: Hasegawa, M. (ed.) TLCA 2013. LNCS, vol. 7941, pp. 125–139. Springer, Heidelberg (2013)CrossRefGoogle Scholar
  6. 6.
    Hindley, J.R., Seldin, J.P.: Lambda-calculus and Combinators, an Introduction. Cambridge University Press (2008)Google Scholar
  7. 7.
    Barendregt, H., Coppo, M., Dezani-Ciancaglini, M.: A Filter Lambda Model and the Completeness of Type Assignment. Journal of Symbolic Logic 48(4), 931–940 (1983)CrossRefzbMATHMathSciNetGoogle Scholar
  8. 8.
    Haack, C., Howard, B., Stoughton, A., Wells, J.B.: Fully Automatic Adaptation of Software Components Based on Semantic Specifications. In: Kirchner, H., Ringeissen, C. (eds.) AMAST 2002. LNCS, vol. 2422, pp. 83–98. Springer, Heidelberg (2002)CrossRefGoogle Scholar
  9. 9.
    Wells, J.B., Yakobowski, B.: Graph-Based Proof Counting and Enumeration with Applications for Program Fragment Synthesis. In: Etalle, S. (ed.) LOPSTR 2004. LNCS, vol. 3573, pp. 262–277. Springer, Heidelberg (2005)CrossRefGoogle Scholar
  10. 10.
    Davies, R., Pfenning, F.: A Modal Analysis of Staged Computation. Journal of the ACM 48(3), 555–604 (2001)CrossRefMathSciNetGoogle Scholar
  11. 11.
    Dezani-Ciancaglini, M., Hindley, R.: Intersection Types for Combinatory Logic. Theoretical Computer Science 100(2), 303–324 (1992)CrossRefzbMATHMathSciNetGoogle Scholar
  12. 12.
    Miller, D., Nadathur, G., Pfenning, F., Scedrov, A.: Uniform Proofs as a Foundation for Logic Programming. Ann. Pure Appl. Logic 51(1-2), 125–157 (1991)CrossRefzbMATHMathSciNetGoogle Scholar
  13. 13.
    Düdder, B., Martens, M., Rehof, J.: A Theory of Staged Composition Synthesis (Extended Version). Technical Report 843, Faculty of Computer Science, TU Dortmund (2013),
  14. 14.
    Chandra, A.K., Kozen, D.C., Stockmeyer, L.J.: Alternation. Journal of the ACM 28(1), 114–133 (1981)CrossRefzbMATHMathSciNetGoogle Scholar
  15. 15.
    Lustig, Y., Vardi, M.Y.: Synthesis from Component Libraries. In: de Alfaro, L. (ed.) FOSSACS 2009. LNCS, vol. 5504, pp. 395–409. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  16. 16.
    Gulwani, S., Jha, S., Tiwari, A., Venkatesan, R.: Synthesis of Loop-free Programs. In: Proceedings of PLDI 2011, pp. 62–73. ACM (2011)Google Scholar
  17. 17.
    Freeman, T., Pfenning, F.: Refinement Types for ML. In: Proceedings of PLDI 1991, pp. 268–277. ACM (1991)Google Scholar
  18. 18.
    Davies, R., Pfenning, F.: Intersection Types and Computational Effects. In: ICFP, pp. 198–208 (2000)Google Scholar
  19. 19.
    Dezani-Ciancaglini, M., Giannini, P., Della Rocca, S.R.: Intersection, Universally Quantified, and Reference Types. In: Grädel, E., Kahle, R. (eds.) CSL 2009. LNCS, vol. 5771, pp. 209–224. Springer, Heidelberg (2009)CrossRefGoogle Scholar
  20. 20.
    Dezani-Ciangaglini, M., Ronchi Della Rocca, S.: Intersection and Reference Types. Essays dedicated to Henk Barendregt on the occasion of his 60’th birthday, pp. 77–86 (2007)Google Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2014

Authors and Affiliations

  • Boris Düdder
    • 1
  • Moritz Martens
    • 1
  • Jakob Rehof
    • 1
  1. 1.Faculty of Computer ScienceTechnical University of DortmundGermany

Personalised recommendations