Program Synthesis for Dependently Typed Programs
Master Project of Luka Janjić

Problem statement

Program synthesis is a set of techniques for automatically generating programs that satisfy a given high-level specification. However, an important question is where these specifications come from. Often, these specifications come in the form of either test cases or boolean propositions that the final program should satisfy. But a different answer to this question comes from the world of dependently typed programming languages such as Agda and Idris: the specification of the program should be encoded in its type. This brings us to the main question for this thesis: can a program specification in the form of a dependent type signature be used to guide program synthesis to construct a program that satisfies this specification?

Project description

The goal of this project is to explore how techniques from the field of program synthesis could be applied to the task of constructing programs in a dependently typed programming language. Since this is an explorative thesis, we expect a large initial part of the thesis will be dedicated to a survey of existing techniques from both fields. Once you have identified the most promising approaches, the next step in this thesis will be to implement a prototype tool that applies program synthesis to a dependently typed language.

Further reading

Contacts for the project

Program Synthesis for Dependently Typed Programs

Student: Luka Janjić
Supervisor(s): Jesper Cockx, Sebastijan Dumancic