Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Logic variables support for .NET [closed]

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?

like image 965
Frank Avatar asked Feb 17 '10 11:02

Frank


People also ask

How long can Logic apps run for?

For Consumption logic app workflows, the same setting controls the maximum number of days that a workflow can run and for keeping run history in storage. In multi-tenant Azure Logic Apps, the 90-day default limit is the same as the maximum limit. You can only decrease this value.

Are logic apps stateful?

A single logic app can have multiple stateful and stateless workflows. Workflows in a single logic app and tenant share the same processing (compute), storage, network, and so on. Data stays in the same region where you deploy your logic apps.

Can logic app have multiple triggers?

Multiple triggers can be accommodated in a Logic App workflow. As mentioned by Microsoft Azure, a single Logic App can have up to 10 triggers in it.


1 Answers

I have a basic embedding of logic programming in F#. I developed it for the course I teach on "Programing Paradigms", which uses F# throughout and includes a couple of lectures on logic programming.

The code uses imperative updates to reflect substitutions due to unification, and it uses success continuations. So it is relatively different from, e.g., Kanren.

I'm not sure how much sense the notes will make by themselves, but you can find this embedding at the end of: http://undergraduate.csse.uwa.edu.au/units/CITS3242/16-logic-prog.pdf

I can provide a refined version of this embedding on request.

like image 144
RD1 Avatar answered Oct 07 '22 00:10

RD1