Unterstützung von Logikvariablen für .NET [geschlossen]

8

Ich suche nach einer Bibliothek / Assembly, mit der ich mit logischen Variablen in F # arbeiten kann. Ich möchte vermeiden, das Rad neu zu erfinden, wenn ich die erforderliche union-find Datenstruktur, Vereinigungscode und so weiter implementiere.

Ich habe Prolog.NET gefunden, aber das Handbuch ist ein wenig spärlich. Ich möchte keine vollwertige Prolog-Implementierung, aber nur die Behandlung logischer Variablen und das Handbuch fehlt in dieser Hinsicht.

Folgendes möchte ich tun können:

  • deklariere neue logische Variablen
  • Binde eine log.var ein. zu einem Begriff (vorzugsweise die Bibliothek ermöglicht vollständige Herbrand Begriffe dafür)
  • gleicht log.vars aus. (d. h. Vereinigung)
  • Meta-Behandlung von log.vars. (Ist es Boden? Zu welchem ​​anderen log.vars. ist es ausgeglichen worden? ...)
  • schließlich unterstützt die Bibliothek sogar eine Anpassung, d. h. eine einseitige Vereinheitlichung.

Kennt jemand eine Bibliothek, die all dies tut, oder Bibliotheken, die zumindest als Ausgangspunkt verwendet werden könnten?

    
Frank 17.02.2010, 11:00
quelle

3 Antworten

2

Mini-Kanren wurde für Scala implementiert . Ich bin kein .NET-Programmierer und kann nicht sagen, wie nützlich das für Sie ist, aber Mini-Kanren passt zu Ihren Anforderungen in Bezug auf eine programmatische Logikvariable: Wenn die Scala-Einbettung in .NET Eigenschaften besitzt, die mit denen kompatibel sind Sie sind danach, dann sollten Sie da sein.

    
Charles Stewart 25.02.2010, 08:29
quelle
4

Ich habe eine grundlegende Einbettung der Logikprogrammierung in F #. Ich habe es für den Kurs entwickelt, den ich über "Programming Paradigms" lehre, der durchgängig F # verwendet und einige Vorlesungen über Logikprogrammierung enthält.

Der Code verwendet imperative Aktualisierungen, um Ersetzungen aufgrund von Vereinheitlichung widerzuspiegeln, und verwendet Erfolgsfortsetzungen. Es ist also relativ verschieden von z.B. Kanren.

Ich bin nicht sicher, wie viel Sinn die Notizen selbst machen, aber Sie finden diese Einbettung am Ende von:     Ссылка

Ich kann auf Anfrage eine verfeinerte Version dieser Einbettung bereitstellen.

    
RD1 02.08.2010 15:52
quelle
3

Ich kenne keine Bibliothek, die das tut, was Sie wollen. Allerdings habe ich eine Implementierung von "union-find in F #" in diesem Blogeintrag . Und von meinen College-Tagen erinnere ich mich daran, dass ein populäres Buch über Scheme einen grundlegenden Vereinheitlichungsalgorithmus enthielt, mit dem ich damals eine "Mini-Prolog" -Implementierung kodierte. Ich denke, das ist etwas, was jemand mit der richtigen Erfahrung an einem Wochenende zusammenstellen könnte, falls jemand da draußen nach einem Projekt sucht. (Vielleicht werde ich es meiner eigenen Wochenend-TODO-Liste hinzufügen.)

    
Brian 17.02.2010 15:56
quelle

Tags und Links