Ocanren  is a library, which embeds relational programming language in OCaml. It provides a type-safe interface for creating logic values, running computations and querying relational programs. The main feature of OCanren is polymorphic unification - the single primitive, which performs unification of two logic values. The first naive implementation was type-safe, but it introduced some abstraction cost for logic values. It is the main reason why current implementation was slower, that minimal implementation of miniKanren (called microKanren ) in Scheme. Later the abstraction cost for a value representation was removed. In the talk we will discuss the peculiarities of term representation, the origins of abstraction cost and the techniques, which made the unification faster.
Presenter: Dmitry Kosarev
Date: April 17, 2017
Venue: room 3248, Faculty of Mathematics and Mechanics, Saint Petersburg State University, Stary Peterhof, Universitetski pr., 28