Theoretische Grundlagen der Logikprogrammierung SS 2011 Ubungsblatt 7 ¨
(Abgabe am 24.6.)Thomas Piecha
Aufgabe 1 (2 Punkte)
Beschreiben Sie eine Datenstruktur f ¨ur Unterschiedsmengen, bzw. f ¨ur Substitutionen, die ein effizienteres Unifizieren erm ¨oglicht.
Aufgabe 2 (9 Punkte)
(a) Welche Art von Programmklauseln entsprechen rekursiven Prozeduren?
(1 Punkt) (b) Es seix0der Nachfolger vonx. Die Addition sei wie folgt rekursiv definiert:
x + 0 =x, x +y0 =x0+y.
Schreiben Sie ein entsprechendes Logikprogramm Πadd, und berechnen Sie damit
2 + 3. (3 Punkte)
(c) Die Fibonacci-Zahlen seien definiert durch F(0) = 0,
F(1) = 1,
F(n) =F(n−1) +F(n−2) f ¨urn ≥2.
Schreiben Sie unter Verwendung von Πadd ein entsprechendes Logikprogramm, und berechnen Sie damit die Fibonacci-Zahl von 3. (5 Punkte)
Aufgabe 3 (9 Punkte) Sei Π das Programm
P(a, b)← P(c, b)←
P(x, z)←P(x, y), P(y, z) P(x, y)←P(y, x)
(a) Geben Sie eine SLD-Widerlegung f ¨ur←P(a, c) relativ zu Π an. (3 Punkte) (b) Durch das Entfernen beliebiger Klauseln aus Π erhalte man das Programm Π0. Geben Sie eine Auswahlfunktion vor, und zeigen Sie f ¨ur diese, daß es keine SLD-Widerlegung f ¨ur←P(a, c) relativ zu Π0 gibt. (6 Punkte)