 ##  [Logikprogrammierung](/de/node/60986) 

 Definition

Ein Programmier- und Schlussfolgerungsparadigma, bei dem Programme als Mengen logischer Klauseln ausgedrückt werden und die Ausführung durch zielgerichtete Beweissuche erfolgt, typischerweise unter Verwendung von Unifikation und Backtracking, um Ableitungen zu finden, die Ziele erfüllen.

 

 

 

 

 

 





## Prinzip

Prinzip

Spezifikationen als Fakten und Regeln schreiben; Berechnung interpretieren als Versuch, ein Ziel aus diesen Regeln mittels Resolution oder SLD-Resolution zu beweisen, wobei Unifikation Variablen instanziiert und Backtracking Alternativen erkundet.

 

 

 

 

 





## Demonstration

Demonstration

Ein Prolog-ähnliches Stammbaumprogramm: Fakten geben Elternbeziehungen an und Regeln definieren den Ahnenbegriff als transitive Hülle; die Anfrage ancestor(X,Y) startet eine Suche, die Variablen unifiziert und per Backtracking Lösungen aufzählt.

 

 

 

 

## Fehlanwendung

Fehlanwendung

Ein Logikprogramm ausschließlich als imperativen Code behandeln und sich auf nebenwirkungsbehaftete Prädikate oder ordnungsabhängige Konstrukte stützen, untergräbt die deklarative Semantik und erschwert Korrektheitsbegründungen.

 

 

 

 

 





## Konsequenz

Konsequenz

Richtig eingesetzt liefert Logikprogrammierung prägnante, deklarative Programme, inhärente Suchsteuerung durch Backtracking und starke Möglichkeiten für Metaprogrammierung und symbolisches Schließen; sie erleichtert schnelles Prototyping suchorientierter Anwendungen.

 

 

 

 

## Umkehrung

Umkehrung

Umkehr zur funktionalen oder imperativen Programmierung, bei der Berechnung durch deterministische Funktionsauswertung oder geordnete Befehle gegeben ist statt durch Beweissuche; dies betont Kontrollfluss statt logischer Spezifikation.

 

 

 

 

 





## Abgrenzung

Abgrenzung

Betrifft typischerweise Horn-Klausel-Fragmente und zielgerichtete operationelle Semantik; schließt allgemeine Prädikatenlogiktheorien mit unbestimmtem Resolutionverhalten aus, und Termination sowie Vollständigkeit sind ohne Einschränkungen nicht garantiert.

 

 

 

 

 





## Semantische Spannung

Semantische Spannung

Spannung zwischen modelltheoretischer (deklarativer) und operationeller (prozeduraler) Lesart: Dasselbe Programm kann als Spezifikation logischer Konsequenzen oder als operative Rezeptur aufgefasst werden, deren Verhalten von der Auswertungsstrategie abhängt.

 

 

 

 

 





## Synthese

Synthese

Logikprogrammierung betrachtet Programme als logische Theorien und Berechnung als automatisches Beweisen: Durch Kodierung von Wissen in Klauseln verwendet man Unifikation und Backtracking, um deklarative Spezifikationen mittels zielgerichteter Suche umzusetzen.