2016-03-31 5 views
4

Was ist der Unterschied zwischen Logikprogrammierung und automatisiertem Theorembeweis (ATP) (z. B. mit E-Prover, Spass oder Princess)?Unterschied zwischen Logikprogrammierung und automatisiertem Theorembeweis

Ich suchte viel und die einzige Information, die ich fand, ist, dass ATP der Vorläufer der Logikprogrammierung ist. Aber ich sehe den Unterschied nicht. Aber ich denke, es ist mehr als die Syntax.

+2

Dieser Beitrag hilft den Unterschied zu verdeutlichen: [Ausführungs Theorembeweisern in Logic Programming] (http://repository.upenn.edu/cgi/viewcontent.cgi?article=1663&context=cis_reports) – lurker

Antwort

8

Was der Prolog Teil der Frage betrifft, so wurde dies gesagt am besten durch Richard O'Keefe:

Prolog eine effiziente Programmiersprache ist, weil es eine dumm Theorembeweisers ist.

So gibt es eine Verbindung zwischen Prolog und Theorem beweisen. Prolog hat einige Merkmale eines Theorembeweisers, zum Beispiel sucht es nach Beweisen oder besser Auflösung Widerlegungen, aber es tut so in einer unvollständigen Weise, die mehr auf eine allgemeine Programmiersprache zugeschnitten ist.

Natürlich macht die vergleichsweise enge Affinität zwischen Prolog und Theorembeweiser Prolog zu einer ausgezeichneten Wahl implementieren Sie mehr vollwertige Theorem Provers.

Tatsächlich ist es vergleichsweise einfach, die unvollständige Standardausführungsstrategie von Prolog zu ergänzen und zu erweitern, so dass die Suche vollständiger wird.

Beachten Sie, dass Prolog auch einige extra logische Merkmale aufweist, die nicht in den Geltungsbereich des Theorembeweises fallen und dem deklarativen Denken oft im Wege stehen können. Siehe auch .

+1

Das Wort eine gewisse Qualifikation hier unvollständig Verdienste: Es ist unvollständig, falls Prolog in eine Endlosschleife geht - oder einen anderen Fehler - ** nur **. – false

+1

Ich würde das Wort "ein anderer" aus dieser Qualifikation entfernen. Was denken Sie? – mat

+1

Argh, sollte noch besser erklären, was mit Fehler gemeint ist. Das ist eine signalisierte Ausnahme. – false