miniKanren is an embedded Domain Specific Language for logic programming.
The core miniKanren language is very simple, with only three logical
operators and one interface operator.
miniKanren is designed to be easily modified and extended; extensions
include Constraint Logic Programming, probabilistic logic programming,
nominal logic programming, and tabling.