| Universität Dortmund Lehrstuhl Informatik VIII Stefan Haustein Wintersemester 2000/2001 |
2001-01-17 |
Abgabe bis Do., 25.01.2001, Briefkasten LS VIII im Eingangsbereich GB IV,
oder per Email an haustein@ls8.cs.uni-dortmund.de,
bitte keine Attachments und max. 65 Zeichen pro Zeile.
In der Vorlesung haben Sie die Methode der Least General Generalizarion (lgg) nach Plotkin kennengelernt. Implementieren Sie eine Prozedur lgg(C, D, L) in Prolog, die den lgg L für zwei Klauseln C und D bestimmt. Sie können auf die Reduktion redundanter Literale verzichten.
Die folgenden Quintus Prolog Bibliotheken könnten sich als nützlich für die Aufgabe erweisen: basics, lists, strings, anti_unify, varnumbers, sets. Sie dürfen auch assert und retract benutzen.
Testen Sie Ihre lgg Implementierung auf den folgenden Beispielen. Wie lauten jeweils die lggs?
| C: | enthaelt(a,d) <- enthaelt="enthaelt" (a="(a" ,b=",b" )=")" &="&" ;=";" (b="(b" ,c=",c" (c="(c" ,d=",d" <="<" />d> |
| D: | enthaelt(e,i) <- enthaelt="enthaelt" (e="(e" ,f=",f" )=")" &="&" ;=";" (f="(f" ,g=",g" (g="(g" ,h=",h" (h="(h" ,i=",i" <="<" />d> |
| C: | befreundet(peter,paul) <- befreundet="befreundet" (peter="(peter" ,frank=",frank" )=")" &="&" ;=";" (paul="(paul" <="<" />d> |
| D: | befreundet(klemens,paul) <- befreundet="befreundet" (klemens="(klemens" ,uta=",uta" )=")" &="&" ;=";" (uta="(uta" ,="," klemens="klemens" ,paul=",paul" (paul="(paul" <="<" />d> |