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?