Prolog – Logikprogrammierung

Prolog (Programming in Logic) ist eine deklarative Programmiersprache: Statt Algorithmen beschreibst du Fakten und Regeln, und die Engine (der Resolution-Mechanismus) beantwortet Anfragen per Backtracking. Prolog wird klassisch in KI, Expertensystemen und Sprachverarbeitung eingesetzt.

SWI-Prolog – Die gängigste Distribution

  • swipl – interaktive REPL starten
  • swipl -s datei.pl – Datei laden (consult)
  • swipl -f datei.pl -g anfrage – Anfrage direkt ausführen
  • halt. – Prolog beenden

Basissyntax: Fakten, Regeln, Anfragen

% Fakten
eltern(hans, peter).
eltern(anna, peter).
eltern(peter, lisa).

% Regel
großelter(X, Y) :- eltern(X, Z), eltern(Z, Y).

% Anfrage
?- großelter(anna, lisa).
true.
  • Variablen beginnen mit Großbuchstaben: X, Y
  • Atome/Konstanten beginnen klein: hans
  • :- bedeutet „wenn“ (Implikation), , ist UND, ; ist ODER
  • Backtracking: findet automatisch alle Lösungen, z. B. findall(X, eltern(X, peter), L).

Wichtige eingebaute Prädikate

  • member(X, Liste) – X ist Element der Liste
  • append(L1, L2, L3) – Listen verketten
  • length(L, N) – Listenlänge
  • sort(L, S) – sortieren
  • findall(T, Ziel, Liste) – alle Lösungen sammeln
  • assert/retract – Fakten zur Laufzeit hinzufügen/entfernen
  • write(X), nl – Ausgabe
  • read(X) – Eingabe

Typische Einsatzgebiete

  • Expertensysteme: Wenn-Dann-Regeln für Diagnosen
  • Constraint-Programming: library(clpfd) für Rätsel und Planung
  • Grammatiken: DCG (Definite Clause Grammars) für Parser
  • Suchprobleme: Backtracking löst viele Kombinatorik-Probleme von selbst

Verwandte Einträge: Algorithmus, Rekursion und die Referenz Haskell für funktionale Alternativen.