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?

Edit
Report