Blatt 5 - Universität Paderborn

Werbung
Universität Paderborn
Institut für Informatik
Prof. Dr. Hans Kleine Büning
Paderborn, 13. November 2009
Präsenzübungen zur Vorlesung
Modellierung
WS 2009/2010
Blatt 5
Aufgabe 33: Unifikation nach Robinson
Prüfen Sie mit Hilfe des Unifikationsverfahrens von Robinson, welche der folgenden Termpaare mit den
Variablen x, y und den Konstanten a, b unifizierbar sind. Schreiben Sie dazu die Schritte des RobinsonVerfahrens einzeln auf, und geben Sie einen allgemeinsten Unifikator an, wenn er existiert. Wenn ein Termpaar nicht unifizierbar ist, markieren sie die Stelle, an der keine weitere Unifikation möglich ist, und begründen Sie, warum es nicht geht.
(a) h(x, g(y)) und h(g(g(y)), x)
(b) f (g(a), x) und f (x, a)
(c) f (a, x) und f (x, b)
Aufgabe 34: Abstrakte Algebra
Die Datenstruktur Schlange verwaltet Zahlen in der Reihenfolge ihres Eintreffens. Operationen auf einer
Schlange erlauben es, Zahlen hinten anzufügen (enqueue) oder vorne die am längsten wartende Zahl zu entnehmen (dequeue). Zusätzlich gibt es Operationen, um eine neue leere Schlange zu erzeugen (createQueue),
die erste Zahl zurückzugeben (front) sowie eine Methode, die anzeigt, ob die Schlange leer ist (empty).
Die folgende abstrakte Algebra beschreibt eine Schlange (τ, Σ, Q) mit der Signatur Σ = (S , F):
S = { Queue, Nat0, BOOL }
F = { createQueue :
enqueue :
Queue × Nat0
dequeue :
Queue
f ront :
Queue
empty :
Queue
→ Queue,
→ Queue,
→ Queue,
→ Nat0,
→ BOOL }
(F1 )
(F2 )
(F3 )
(F4 )
(F5 )
Die Sorte Queue stellt eine Schlange dar; die Sorte Nat0 beschreibt Elemente der Schlange und stellt somit
Zahlen dar. Für die Sorte BOOL sind die Konstanten true und false definiert. createQueue ist eine 0-stellige
Operation und deshalb eine Konstante.
1
2009
Für die Menge der Axiome Q seien x, y Terme der Sorte Nat0 und q ein Term der Sorte Queue.
Q={
Q1 : dequeue(enqueue(createQueue, x))
t
→ createQueue,
t
Q2 : dequeue(enqueue(enqueue(q, y), x)) → enqueue(dequeue(enqueue(q, y)), x),
t
Q3 :
f ront(enqueue(createQueue, x))
→ x,
Q4 :
f ront(enqueue(q, x))
→ f ront(q),
t
t
Q5 : empty(createQueue)
→ true,
Q6 : empty(enqueue(createQueue, x))
→ f alse
t
}
Im Folgenden seien x, y Variable der Sorte Nat0.
(a) Prüfen Sie, ob die folgenden Terme entsprechend der Signatur korrekt sind. Zeichnen Sie die Terme
als Baum und notieren Sie an jedem Blatt und an jedem inneren Knoten die entsprechende Sorte.
Kennzeichnen Sie die Stellen, an denen die Terme nicht korrekt gebildet wurden.
(a1) f ront(enqueue(createQueue, f ront(enqueue(createQueue, x))))
(a2) empty(dequeue(enqueue(createQueue, x), y))
(a3) enqueue(dequeue(createQueue), f ront(enqueue(createQueue, x))
(b) Formen Sie die folgenden Terme mit Hilfe der Axiome so um, dass Sie als Ergebnis eine einzelne
Variable oder Konstante erhalten. Geben Sie in jedem Schritt das verwendete Axiom an.
(b1) empty(dequeue(enqueue(createQueue, y)))
(b2) empty(enqueue(createQueue, f ront(enqueue(enqueue(createQueue, y), x))))
(b3) f ront(enqueue(dequeue(enqueue(createQueue, y)), x))
(c) Erweitern Sie die Algebra um eine zusätzliche Operation greatest, die die größte Zahlen der Schlange
zurückgibt. Wenn die Schlange beispielsweise die Zahlen (2,3,8,5,7) enthält, soll greatest für diese
Schlange 8 ausgeben.
• Nehmen Sie an, dass für die Sorte Nat0 die Operation max : Nat0 × Nat0 → Nat0 gegeben ist.
• max(x, y) gibt die größte der Zahlen x und y zurück.
• Sie können davon ausgehen, dass keine Zahl mehrfach in der Schlange vorhanden ist und dass
die kleinste Zahl in der Schlange größer als 0 ist.
• Für die Sorte Nat0 ist eine Konstante zero definiert; diese soll dem Wert „0“ entsprechen.
Geben Sie die nötigen Ergänzungen der Signatur sowie der Axiome an.
Aufgabe 35: Algebra
Gegeben sei für eine abstrakte Algebra Keller die Signatur Σ = (S , F) mit
S = { Keller, BOOL, Element }
F = { createS tack :
push :
Keller × Element
pop :
Keller
top :
Keller
empty :
Keller
2
→ Keller,
→ Keller,
→ Keller,
→ Element,
→ BOOL
}
(F1 )
(F2 )
(F3 )
(F4 )
(F5 )
2009
Sei t ein Element der Sorte Element und k ein Element der Sorte Keller. Überprüfen Sie, ob die folgenden
Terme korrekt sind. Falls nicht, markieren Sie die fehlerhaften Stellen und begründen Sie, warum der Term
nicht korrekt ist.
(a) top(pop(push(t, k)))
(b) pop(empty(top(k)))
(c) push(k, top(push(pop(push(push(k, t), t)), t)))
Aufgabe 36: Algebren
Ein Binärbaum ist ein spezieller Baum, dessen Knoten höchstens zwei Söhne haben können.
Die abstrakte Algebra Binärbaum mit der Signatur Σ = (S , F) beschreibt einen solchen Baum:
S = { BinTree, BOOL, Element }
F = { create :
node : BinTree × Element × BinTree
le f t :
BinTree
right :
BinTree
value :
BinTree
empty :
BinTree
→ BinTree,
→ BinTree,
→ BinTree,
→ BinTree,
→ Element,
→ BOOL
}
(F1 )
(F2 )
(F3 )
(F4 )
(F5 )
(F6 )
Die Sorte BinTree stellt einen Binärbaum dar, die Sorte Element beschreibt den Inhalt eines Baumknotens.
Für die Sorte BOOL sind Konstanten true und false definiert. create bezeichnet eine 0 - stellige Operation
und ist damit eine Konstante. Sie steht für den leeren Baum. Die Operation node erzeugt einen neuen Wurzelknoten und verbindet zwei existierende Bäume als linken und rechten Teilbaum zu einem neuen Baum.
Die Operationen left bzw. right liefern den linken bzw. rechten Teilbaum eines Baums. Die Operation value
liefert den Inhalt des Wurzelknotens eines Baumes. Die Operation empty zeigt an, ob der Baum leer ist oder
nicht.
Für die Menge der Axiome Q seien l, r Terme der Sorte BinTree und v ein Term der Sorte Element.
Q={
Q1 : empty(create)
t
→ true,
t
Q2 : empty(node(l, v, r)) → f alse,
t
Q3 : le f t(node(l, v, r))
→ l,
Q4 : right(node(l, v, r))
→ r,
Q5 : value(node(l, v, r))
→v
t
t
}
3
2009
(a) Stellen Sie zur oben angegebenen Algebra Binärbaum 2 korrekte Terme der Schachtelungstiefe 3 auf.
(b) Formen Sie die folgenden Terme mit Hilfe der Axiome so um, dass Sie als Ergebnis x, y, z, true oder
f alse erhalten. Notieren Sie bei jeder Umformung das benutzte Axiom.
(b1) empty(le f t(right(node(create, z, node(right(node(create, y, create)), x, create)))))
(b2) value(right(node(create, x, node(create, y, create))))
(c) Erweitern Sie die angegebene Algebra um eine Funktion count, die die Anzahl der Blätter eines Baum
angibt. Ergänzen Sie die nötigen Sorten, die Funktionen mit ihren Signaturen und die Axiome, in den
Mengen S , F und Q.
Aufgabe 37: Algebren
Es sei die abstrakte Algebra BOOL = (τ, Σ, Q) mit der Signatur Σ = (S , F) gegeben:
S = { BOOL }
F = { true :
f alse :
∧:
BOOL × BOOL
∨:
BOOL × BOOL
¬:
BOOL
}
→ BOOL,
→ BOOL,
→ BOOL,
→ BOOL,
→ BOOL}
(F1 )
(F2 )
(F3 )
(F4 )
(F5 )
Im Folgenden seien x, y, x0 , y0 Variable der Sorte BOOL.
Q={
t
Q1 : ¬true
→ f alse,
Q2 : ¬ f alse
→ true,
Q3 : true ∧ x
→ x,
Q4 :
t
t
t
f alse ∧ x → f alse,
Q5 : x ∨ y
t
→ ¬(¬x ∧ ¬y)
}
(a) Formen sie die folgenden Terme mit den oben aufgeführten Axiomen Q1 bis Q5 soweit wie möglich
um und geben Sie in jedem Schritt das benutze Axiom an.
(a1) ¬true ∧ x
(a2) ¬ f alse ∨ x
(a3) (x ∨ y) ∧ (x0 ∨ y0 )
(b) Erweitern Sie die abstrakte Algebra BOOL um Operationen für die Implikation (→) und die Äquivalenz (↔). Geben Sie für jede der beiden Operationen ein sinnvolles Axiom an, das die Auflösung der
entsprechenden Operation angibt.
(c) Geben Sie Axiome für folgende Umformungsregeln aus der Aussagenlogik an:
(c1) Idempotenz
(c2) Komplement
(c3) Negation
4
2009
Herunterladen