Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise...

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