NFII, WS 1997/98: Übungsblatt 7


Ausgegeben am: 13. Januar 1998
Abzugeben bis: 20. Januar 1998
Lösungen dazu


Zur Erinnerung:
Einloggen mit Benutzernamen (x....) (z.B. xamtrup) und Kennwort
Oberfläche starten mit openwin
Befehle in einem Kommandofenster eingeben.

Wir benutzen SWI-Prolog. Aufruf über swi-prolog auf den Rechenzentrums-Maschinen.

Aufgabe 1

Lernen Sie, mit dem Prolog-System ein wenig umzugehen.

  1. Fakten eingeben:
  2. rzdspc110% swi-prolog
    Welcome to SWI-Prolog (Version 1.8.3 September 1993)
    Copyright (c) 1993, University of Amsterdam.  All rights reserved.
     
    1 ?- consult(user).
    |: vater( jan, willers).
    |: user compiled, 0.03 sec, 340 bytes.
    (hier Control-D druecken!) 
    Yes
    
  3. Eine Datei mit Fakten einlesen:
  4. rzdspc110% swi-prolog
    Welcome to SWI-Prolog (Version 1.8.3 September 1993)
    Copyright (c) 1993, University of Amsterdam.  All rights reserved.
     
    1 ?- consult(erben).
    erben compiled, 0.03 sec, 820 bytes.
     
    Yes
    2 ?- 
    
  5. Eine Anfrage ausführen:
  6. 8 ?- vater(stefan,X).
     
    X = viktor ;
     
    No
    9 ?- 
    
  7. Mit dem Texteditor eine Datenbasis erstellen:
  8. rzdspc110% textedit db.pl
    
  9. Die Definition eines Prädikates ausgeben:
  10. 9 ?- listing( vater).
     
    vater(stefan, viktor).
    vater(tamara, viktor).
    vater(viktor, gustav).
    vater(marion, gerd).
    vater(monika, gustav).
    vater(cosima, vogon).
     
    Yes
    10 ?- 
    
  11. Das Prolog-System beenden:
  12. 3 ?- halt.
    rzdspc110% 
    

Aufgabe 2

Erstellen Sie eine genealogische Datenbank und führen Sie einige Anfragen durch. Die Datenbasis sollte mindestens ein Dutzend Fakten enthalten. Benutzen Sie evtl. Ihre eigene Familie als Grundlage. Ein Beispiel für eine solche Datenbank ist unter

/home/nf1/xamtrup/erben.pl

verfügbar. Eine interessante Frage könnte z.B. sein, welche Enkel es gibt.

Aufgabe 3

Was berechnen die beiden folgenden Anfragen? Dabei sollen als interessant die Variablen S und C gelten.

?- vater(S, V), vater(V, G), vater(E, G), vater(C, E).
?- mutter(S, M), vater(M, G), vater(E, G), vater(C, E).


Author: Jan W. Amtrup
Document:
Last modified: