Session 6. Computational Logic

Combinatory Logic and Program Synthesis

Jakob Rehof, Technical University of Dortmund, 
We survey a new approach to component-oriented program synthesis based on combinatory logic, which exploits the idea that (semi-) algorithms for solving the inhabitation problem in a combinatory logic can be used to generate programs from collections of components. Under the Curry-Howard isomorphism, combinatory type inhabitation is the question of provability for a corresponding propositional logic. We survey recent results, ongoing work, and open problems in combinatory logic synthesis.

For purposes of synthesis, the inhabitation problem must be considered {\em relative} to a given propositional theory (combinatory basis). The relativized inhabitation problem is undecidable already in simple types (Linial-Post theorem) which can consequently be seen as a Turing-complete logic programming language for synthesizing compositions. Under this viewpoint, combinatory type environments are programs and types are rules in such programs. In order to enhance the ability to express semantic specifications intersection types are introduced into composition synthesis, and we survey recent results on expressive power, algorithmics, and complexity of inhabitation in various fragments of combinatory logic with intersection types. Modal types are introduced as a foundation for meta-programming combinators. The resulting system supports multiple languages and logics in a highly flexible framework for composition synthesis. Based on a prototype implementation of the framework (CL)S, Combinatory Logic Synthesizer, we illustrate with practical examples as time permits. We will end the talk with a survey of open problems and future directions.

Print version