View
217
Download
1
Category
Preview:
Citation preview
Prof. Dr. Herbert GöttlerJohannes Gutenberg-Universität, Mainz
Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts
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).
Abfrage:
?- p(A,B). Wann ist das wahr?
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).
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(a,a).
p(A├ ..., B├ ...)
Abfrage:
?- p(A,B).
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(a,a).
p(A├ ..., B├ ...)
p(a,a)
Abfrage:
?- p(A,B).
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(a,a).
p(A├ ..., B├ ...)
p(a,a)
Abfrage:
?- p(A,B).
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(a,a).
p(A├ a, B├ a)
p(a,a)
Abfrage:
?- p(A,B).
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(a,a).
p(A├ a, B├ a)
p(a,a)
Abfrage:
?- p(A,B).
A=aB=a
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(a,a).
p(A├ a, B├ a)
p(a,a)
Abfrage:
?- p(A,B).
A=aB=a ;
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(A├ X1, B├ Y1)
p(a,a)
Abfrage:
?- p(A,B).
p(a,a). ;
q(X1├ ..., Z1├ ...) r(Z1├ ..., Y1├ ...),p(X,Y) :- q(X,Z), r(Z,Y).
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(A├ X1, B├ Y1)
q(X1├ ..., Z1├ ...) r(Z1├ ..., Y1├ ...),q(a,b). p(a,a)
Abfrage:
?- p(A,B).
A=aB=a ;
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(A├ X1, B├ Y1)
q(X1├ ..., Z1├ ...) r(Z1├ ..., Y1├ ...),q(a,b).
q(a,b)
p(a,a)
Abfrage:
?- p(A,B).
A=aB=a ;
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(A├ X1, B├ Y1)
q(X1├ a, Z1├ b) r(Z1├ ..., Y1├ ...),q(a,b).
q(a,b)
p(a,a)
Abfrage:
?- p(A,B).
A=aB=a ;
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(A├ X1, B├ Y1)
q(X1├ a, Z1├ b) r(Z1├ b, Y1├ ...),
r(a,b).
q(a,b)
p(a,a)
r(a,b)
Abfrage:
?- p(A,B).
A=aB=a ;
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(A├ X1, B├ Y1)
q(X1├ a, Z1├ b) r(Z1├ b, Y1├ ...),
q(a,b)
p(a,a)
r (a,b)
r(a,b).
Abfrage:
?- p(A,B).
A=aB=a ;
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(A├ X1, B├ Y1)
q(X1├ a, Z1├ b) r(Z1├ b, Y1├ ...),
q(a,b)
p(a,a)
r (b, d)
r(b,d).
Abfrage:
?- p(A,B).
A=aB=a ;
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(A├ X1, B├ Y1)
q(X1├ a, Z1├ b) r(Z1├ b, Y1├ d),
q(a,b)
p(a,a)
r (b, d)
r(b,d).
Abfrage:
?- p(A,B).
A=aB=a ;
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(A├ a, B├ d)
q(X1├ a, Z1├ b) r(Z1├ b, Y1├ d),
q(a,b)
p(a,a)
r (b, d)
r(b,d).
Abfrage:
?- p(A,B).
A=aB=a ;
r(a,b).
r(b,d).
p(a,a).
p(X,Y) :- q(X,Z), r(Z,Y).
q(a,b).
Ein abstraktes Prolog-Programm
p(A├ a, B├ d)
q(X1├ a, Z1├ b) r(Z1├ b, Y1├ d),
q(a,b)
p(a,a)
r (b, d)
r(b,d).
Abfrage:
?- p(A,B).
A=aB=a ;
A=aB=d
Ähnlich
• f(X,2,Z) = f(1,Y,3).
• führt zur Systemantwort
X=1Z=3Y=2
Ähnlich
• f(X,2,Z) = f(1,Y,p(X)).
• führt zur Systemantwort
X=1Z=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)
Recommended