Logic variables support for .NET

.net, f#, logic, logic-programming

Solution

Mini-Kanren has been implemented for Scala. I'm not a .NET programmer, and can't say how useful this is to you, but Mini-Kanren fits your requirements in terms of a programmatic logic-variable language: if the Scala embedding in .NET has properties compatible with what you are after, then you should be there.

Problem

I am looking for a library/assembly that allows me to work with logical variables in F#. I want to avoid reinventing the wheel in implementing the required union-find datastructure, unification code and so on. I have found Prolog.NET, but the manual is a bit sparse. I do not want a full-fledged Prolog implementation, but only its treatment of logical variables and the manual is kind of lacking in that respect. Here's what I want to be able to do: - declare new logical variables - bind a log.var. to a term (perferably the library allows complete Herbrand terms for that) - equalize log.vars. (i.e. unification) - meta-treatment of log.vars. (is it ground? to which other log.vars. has it been equalized?...) - eventually, the library even supports matching, i.e. one-sided unification. Does anyone know any library that does all this, or libraries that might at least be used as a starting point?

Original source