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

Displayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change

15:20 - 16:30
Session 4miniKanren at Elk
Chair(s): Dmitri Boulytchev
15:20
35m
Full-paper
First-order miniKanren representation: Great for tooling and search
miniKanren
Gregory Rosenblatt , Lisa Zhang University of Toronto, William E. Byrd University of Alabama at Birmingham, USA, Matthew Might University of Alabama at Birmingham | Harvard Medical School
Link to publication
15:55
35m
Full-paper
Towards a miniKanren with fair search strategies
miniKanren
Kuang-Chen Lu Indiana University, USA, Weixi Ma , Daniel P. Friedman Indiana University, USA
Link to publication