Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Abfrage: ?- p(A,B).
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). Wann ist das wahr? Abfrage: ?- p(A,B).
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ ..., B├ ...) Abfrage: ?- p(A,B).
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ ..., B├ ...) p(a,a). Abfrage: ?- p(A,B).
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ ..., B├ ...) p(a,a). p(a,a) Abfrage: ?- p(A,B).
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ ..., B├ ...) p(a,a). p(a,a) Abfrage: ?- p(A,B).
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ a, B├ a) p(a,a). p(a,a) Abfrage: ?- p(A,B).
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ a, B├ a) p(a,a). p(a,a) Abfrage: ?- p(A,B). A=a B=a
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ a, B├ a) p(a,a). p(a,a) Abfrage: ?- p(A,B). A=a B=a ;
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ X1, B├ Y1) p(X,Y) :- q(X,Z), r(Z,Y). p(a,a) q(X1├ ..., Z1├ ...) r(Z1├ ..., Y1├ ...) , Abfrage: ?- p(A,B). p(a,a). ;
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ X1, B├ Y1) p(a,a) q(X1├ ..., Z1├ ...) r(Z1├ ..., Y1├ ...) , q(a,b). Abfrage: ?- p(A,B). A=a B=a ;
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ X1, B├ Y1) p(a,a) q(X1├ ..., Z1├ ...) r(Z1├ ..., Y1├ ...) , q(a,b). Abfrage: ?- p(A,B). A=a B=a ; q(a,b)
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ X1, B├ Y1) p(a,a) q(X1├ a, Z1├ b) r(Z1├ ..., Y1├ ...) , q(a,b). Abfrage: ?- p(A,B). A=a B=a ; q(a,b)
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). r(a,b). p(A├ X1, B├ Y1) p(a,a) q(X1├ a, Z1├ b) r(Z1├ b, Y1├ ...) , Abfrage: ?- p(A,B). A=a B=a ; q(a,b) r(a,b)
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). r(a,b). p(A├ X1, B├ Y1) p(a,a) q(X1├ a, Z1├ b) r(Z1├ b, Y1├ ...) , Abfrage: ?- p(A,B). A=a B=a ; q(a,b) r (a,b)
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ X1, B├ Y1) r(b,d). p(a,a) q(X1├ a, Z1├ b) r(Z1├ b, Y1├ ...) , Abfrage: ?- p(A,B). A=a B=a ; q(a,b) r (b, d)
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ X1, B├ Y1) r(b,d). p(a,a) q(X1├ a, Z1├ b) r(Z1├ b, Y1├ d) , Abfrage: ?- p(A,B). A=a B=a ; q(a,b) r (b, d)
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ a, B├ d) r(b,d). p(a,a) q(X1├ a, Z1├ b) r(Z1├ b, Y1├ d) , Abfrage: ?- p(A,B). A=a B=a ; q(a,b) r (b, d)
Ein abstraktes Prolog-Programm r(a,b). r(b,d). p(a,a). p(X,Y) :- q(X,Z), r(Z,Y). q(a,b). p(A├ a, B├ d) r(b,d). p(a,a) q(X1├ a, Z1├ b) r(Z1├ b, Y1├ d) , Abfrage: ?- p(A,B). A=a B=a ; A=a B=d q(a,b) r (b, d)
Ähnlich f(X,2,Z) = f(1,Y,3). führt zur Systemantwort X=1 Z=3 Y=2
Ähnlich f(X,2,Z) = f(1,Y,p(X)). führt zur Systemantwort X=1 Z=p(1) Y=2
Matching und Unifikation Man kann beim Mustervergleich (Matching) zwei Muster S und T nur unter folgenden Bedingungen zur Übereinstimmung bringen (Unifikation): Wenn S und T Konstante sind, dann müssen sie gleich sein Ist S irgendeine Variable und T irgendein Term, dann passen sie immer und S wird zu T „instanziiert“.
Matching und Unifikation Wenn S und T strukturierte Objekte, dann passen sie nur dann, wenn sie im sog. ersten Funktor übereinstimmen (hier das f ) und der Rest wie vorangehend beschrieben korrespondiert Die resultierende Instanziierung wird durch den Mustervergleich der Komponenten festgelegt, (im Beispiel u.a. das X)