Skip to content
0:00 / 0:00

#barliman#minikanren#programsynthesis

Barliman: trying the halting problem backwards, blindfolded - William Byrd, Greg Rosenblatt

ClojureTV

111K subscribers • 135 videos on Hallway

YouTube
  • Recommended by 6 people: 3 on Hacker News, 1 on Lobsters, 1 in engineering communities and 1 curated list.
  • A classic. People kept recommending it from 2017 to 2024.
  • Presented by William Byrd, co-author of The Reasoned Schemer

Advanced. Deep dive for people who know the field.

7.8K views9 years ago6 recommendations

Programming languagesComputer scienceFunctional programmingAlgorithmsLisp and Clojure

William Byrd and Greg Rosenblatt demonstrate Barliman, an editor that uses a relational interpreter in miniKanren to perform program synthesis.

Barliman is a prototype smart editor capable of program synthesis: given part of a program and a set of tests to pass, Barliman attempts to complete the program for you. This capability enables an interesting kind of test-driven development with partially-instantiated programs. Synthesis is performed using a relational interpreter written in the EDSL miniKanren, which will be familiar to users of Clojure’s `core.logic`. We will demonstrate the Barliman programming experience with several examples, showing what currently works well and what does not, discussing the implementation and where the difficulties come from. We will also discuss the design philosophies and grander vision of Barliman as a tool for thought, and what it will take to get us there.

Why it's here

6 people recommend this

What people say. Recommended as an exciting demonstration of logic programming and relational program synthesis.

u/Hi-MyNameIsFuchsin r/Clojure • Recommends

Barliman: trying the halting problem backwards, blindfolded - William Byrd, Greg Rosenblatt

kanzenryu2on Hacker News • Recommends

On “William Byrd on logic and relational programming, miniKanren (2014)”

You might enjoy this amazing talk. I've linked to a part when the next 20 seconds of explanation turns the amazing up to 11. link to this video

programming-talkscurated list on GitHubRecommends

Under “Program Synthesis”

Barliman: trying the halting problem backwards, blindfolded 00:36:13 by **William Byrd & Greg Rosenblatt** (2016)

will_byrdon Hacker News • Recommends

On “William Byrd on logic and relational programming, miniKanren (2014)”

For anyone who finds this topic interesting, you might be interested in the following resources: link The second edition of `The Reasoned Schemer` (MIT Press, 2018): link The Clojure/conj 2016 talk Greg Rosenblatt and I gave on Barliman: link to this video `A Unified Approach to Solving Seven Programming Problems (Functional Pearl)`, William E. Byrd, Michael Ballantyne, Gregory Rosenblatt, Matthew Might (ICFP 2017) (Open Access): link and the related talk: link and Nada Amin's interactive version of the paper: link Cheers, --Will

thuuuomason Hacker News • Recommends

On “A Tour of the Lisps”

Have you checked out any of the minikanren logic programming environments people have implemented in scheme? The Reasoned Schemer is an accessible introduction to that space if you’re not put off by the socratic-themed dialogue. & the Barliman demo is still pretty exciting even after LLM codegen. link to this video

GeoffWozniakon Lobsters • Recommends

Barliman: trying the halting problem backwards, blindfolded (2016) There is also the project site with a previous Lobste.rs submission (although there were no comments).

mballantyneon Hacker News • Mentions

On “The Power of Prolog”

…cts, so everything is a bit slower. It's a tradeoff though. I work on miniKanren, which is a logic programming language with a complete search that doesn't hit the nontermination issues you mention. The complete search lets us do some pretty cool stuff with program synthesis (though we're not about to put any programmers out of business just yet): link to this video Note that you can implement iterative deepening depth first search on top of prolog if you want a complete search there. Iterative deepening takes a little more time but avoids the memory problems with breath-first. SWI has tools built in to help there: link And I believe Ciao implements its iterative deepening library with a meta-interpr…

u/bwdabatmanin r/ProgrammingLanguages • Mentions

On “Can a transformation pattern be inferred from example input/output pairs?”

William Byrd did it, it's a program called Barliman I think: link to this video