William E. Byrd

Relational Interpreters, Program Synthesis, and Barliman: Strange, Beautiful, and Possibly Useful

Relational programming and program synthesis

Relational Interpreters, Program Synthesis, and Barliman: Strange, Beautiful, and Possibly Useful

This talk will show how the miniKanren constraint logic programming language can be used to automatically generate Scheme code by example, a form of test-driven development on steroids. Our approach is unusual: we define an interpreter for Scheme as a relation, rather than as a standard function. We can use this "relational interpreter" to perform program synthesis, to automatically turn a proof checker into a theorem prover, to generate quines, and to perform other bizarre and fascinating tasks. We will also look at the current version of Barliman, a prototype Interactive Development Environment that will hopefully inspire future IDEs.

Talk objectives:

  • Provide an introduction to relational programming.
  • Give intuition as to how a relational interpreter works.
  • Demonstrate how a relational interpreter can be used for program synthesis and other interesting tasks.
  • Show how these features can be integrated into a prototype Interactive Development Environment, such as Barliman.   

http://minikanren.org/

https://github.com/webyrd/Barliman

About William

William E. Byrd is a researcher at the University of Alabama Birmingham. He is co-author of 'The Reasoned Schemer', and co-designer of the miniKanren relational programming language. Will is also interested in molecular biology, nanotechnology, and the history of writing.

Github: webyrd

Twitter: @webyrd

Back to conference page