Download - Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

Transcript
Page 1: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

Prof. Dr. Herbert GöttlerJohannes Gutenberg-Universität, Mainz

Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts

Page 2: Prof. Dr. Herbert Göttler Johannes 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).

Page 3: Prof. Dr. Herbert Göttler Johannes 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). Wann ist das wahr?

Page 4: Prof. Dr. Herbert Göttler Johannes 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).

p(A├ ..., B├ ...)

Abfrage:

?- p(A,B).

Page 5: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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).

Page 6: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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).

Page 7: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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).

Page 8: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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).

Page 9: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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

Page 10: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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 ;

Page 11: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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).

Page 12: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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 ;

Page 13: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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 ;

Page 14: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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 ;

Page 15: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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 ;

Page 16: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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 ;

Page 17: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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 ;

Page 18: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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 ;

Page 19: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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 ;

Page 20: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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

Page 21: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

Ähnlich

• f(X,2,Z) = f(1,Y,3).

• führt zur Systemantwort

X=1Z=3Y=2

Page 22: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

Ähnlich

• f(X,2,Z) = f(1,Y,p(X)).

• führt zur Systemantwort

X=1Z=p(1)Y=2

Page 23: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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“.

Page 24: Prof. Dr. Herbert Göttler Johannes Gutenberg-Universität, Mainz Visualisierung der Funktionsweise des Programms auf S. 9 des Skripts.

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)