“…This paper is a literate Haskell file, and we invite interested readers to download the Haskell version of the paper to experiment with, and extend, the framework we present. 1 Related Previous Lines of Work The techniques that we develop in this paper are closely related to the techniques used for relational programming, pioneered by Friedman and Byrd in miniKanren [5,8,16,22], a language for relational programming and constraint logic programming, which has been implemented in a wide range of different languages; notably Scheme [7,16], but also, e.g., OCaml [30]. The miniKanren language and many of its implementations have been developed and researched for more than a decade, with new developments and improvements appearing each year, such as new and better heuristics for guiding the exploration of execution paths [34].…”