Skip to content
0:00 / 0:00

#minikanren#scheme#programsynthesis

William E Byrd - Relational Interpreters, Program Synthesis, and Barliman - Code Mesh 2017

Erlang Solutions

18K subscribers • 48 videos on Hallway

YouTube
  • Recommended by 1 person: 1 in engineering communities.
  • Presented by William E. Byrd, co-designer of miniKanren

Advanced. Deep dive for people who know the field.

4.5K views8 years ago1 recommendation

Programming languagesComputer scienceFunctional programmingAlgorithmsComputation and complexity

William E. Byrd demonstrates how to use the miniKanren constraint logic programming language to perform program synthesis and generate Scheme code.

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. More details on website: codemesh.io/codemesh2017/william-e-byrd

Why it's here

1 person recommends this

What people say. Recommended as an interesting demonstration of program synthesis and relational interpreters using miniKanren.

u/Ramin_HAL9001in r/haskell • Recommends

On “Other influential disciplines or challenges?”

…lly the Scheme dialect, for program synthesis. William E. Byrd has been doing some interesting work in this field, and he has written an example program called Barliman in which you provide some example inputs and their associated outputs, and the program tries to infer the pattern and generates a program that can produce any output for any input. link to this video - Erlang, if you are more into engineering than theory, because the tools Erlang provides to you for detecting failures caused by bugs, and swapping-out a buggy module with a fixed one in a production system without ever halting and restarting the whole process is pretty amazing.…