Write a Blog >>
ICFP 2019
Sun 18 - Fri 23 August 2019 Berlin, Germany
Thu 22 Aug 2019 15:20 - 15:55 at Elk - Session 4 Chair(s): Dmitri Boulytchev

We present a first-order implementation of miniKanren that makes it easy to build a miniKanren debugger, and allows any other processes (including a human or a neural network) to guide the search. Typical miniKanren implementations use procedures to represent data structures like goals and streams. Instead, our implementation uses Racket structs, which are transparent, decomposible, manipulable, and not coupled with a particular search strategy. We obtain this first-order implementation by carefully applying defunctionalization rules to a higher-order implementation, deriving two compatible versions with the same search behavior and comparable performance. Decoupling the search in the first-order implementation makes it possible to analyze, transform, and optimize miniKanren programs, even while that program is running. We use a “human guided” search as a miniKanren debugger, and to demonstrate the breath of supported search strategies. The flexibility in how we interpret goals and streams opens up possibilities for new tools, and we hope to inspire the community to build better miniKanren tooling.

Thu 22 Aug
Times are displayed in time zone: (GMT+02:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change

15:20 - 16:30: miniKanren 2019 - Session 4 at Elk
Chair(s): Dmitri Boulytchev
minikanren-2019-papers15:20 - 15:55
Gregory Rosenblatt, Lisa ZhangUniversity of Toronto, William E. ByrdUniversity of Alabama at Birmingham, USA, Matthew MightUniversity of Alabama at Birmingham | Harvard Medical School
Link to publication
minikanren-2019-papers15:55 - 16:30
Kuang-Chen LuIndiana University, USA, Weixi Ma, Daniel P. FriedmanIndiana University, USA
Link to publication