Canonical miniKanren implementation, augmented with CLP(SMT).
Added SMT hooks:
z/assert takes a boolean arithmetic expression with variables (integer by default),
z/ takes an SMT statement,
z/purge manually purges the SMT constraints into an enumeration of models,
z/check only fails if the constraints are unsatisfiable.
Background on miniKanren
Starts with the language described in the paper:
William E. Byrd, Eric Holk, and Daniel P. Friedman. miniKanren, Live and Untagged: Quine Generation via Relational Interpreters (Programming Pearl). To appear in the Proceedings of the 2012 Workshop on Scheme and Functional Programming, Copenhagen, Denmark, 2012.
== fresh conde
=/= symbolo numbero absento