Paderborn, 28. November 2014 Universität Paderborn Institut für Informatik H. Kleine Büning, J. Blömer Modellierung – WS 2014/2015 Präsenzaufgaben Übungsblatt 7 Aufgabe 1: Widerlegen, prädikatenlogische Resolution Geben Sie zu folgenden Formeln Widerlegungen mit Hilfe der prädikatenlogischen Resolution an. Im Folgenden seien a, b Konstanten. (a) α = {T (z), ¬T (x) ∨ ¬Q(x), ¬P (x) ∨ Q(y) ∨ Q(x) ∨ S(f (x)), P (w), ¬P (x) ∨ Q(x) ∨ R(x, f (x)), ¬R(a, z) ∨ T (z), ¬T (y) ∨ ¬S(y)} (b) α = {¬P (x) ∨ ¬P (f (a)) ∨ Q(y), P (y), ¬P (g(b, x)) ∨ ¬Q(b)} (c) α = {P (w, x) ∨ P (y, z), ¬P (w1 , x1 ) ∨ ¬P (y1 , z1 )} Aufgabe 2: Prädikatenlogische Resolution Gegeben seien folgende Formeln: α = ∀x∀y ((B(x) ∧ ¬R(y, y)) → R(x, y)) β = ∀x∀y ((B(x) ∧ R(y, y)) → ¬R(x, y)) Zeigen Sie mittels Resolution, dass hieraus folgt: γ = ¬(∃x B(x)). Aufgabe 3: Formalisieren, Beweisen, Resolution Seien eine beliebige zweistellige Relation R und die folgenden Aussagen gegeben: • R ist irreflexiv und transitiv. • R ist asymmetrisch. (a) Zeigen Sie, dass die zweite Aussage eine Folgerung der ersten Aussage ist. Strukturieren Sie Ihren Beweis und geben Sie auch die verwendete Beweisform an. (b) Formalisieren Sie beide Aussage mittels prädikatenlogischer Formeln. (c) Zeigen Sie dann mittels Resolution, dass die zweite Aussage aus der ersten Aussage folgt. 1 2014 Aufgabe 4: verschiedene Notationen von Termen Gegeben seien die in Infixform dargestellten Terme: (a) a + ((x ∗ (x + 5)) − (y + z)) (b) a + ((y ∗ (x + z)) − (x + 3)) (c) ((a ∗ b) − (c − d)) + ((5 + x) ∗ (y − c)) Bestimmen Sie zunächst die Baumdarstellung und geben Sie dann Präfixform und Postfixform an. Aufgabe 5: 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. Für die Menge der Axiome Q seien x, y Terme der Sorte Nat0 und q ein Term der Sorte Queue. Q={ Q1 Q2 Q3 Q4 Q5 Q6 : : : : : : dequeue(enqueue(createQueue, x)) dequeue(enqueue(enqueue(q, y), x)) f ront(enqueue(createQueue, x)) f ront(enqueue(q, x)) empty(createQueue) empty(enqueue(createQueue, x)) → createQueue, → enqueue(dequeue(enqueue(q, y)), x), → x, → f ront(q), → true, → f alse } 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. 2 2014 (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)) (a4) enqueue(enqueue(createQueue, x), y) (a5) f ront(dequeue(enqueue(createQueue, x))) (a6) f ront(createQueue, x) (a7) enqueue(a, createQueue) (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)) (b4) dequeue(enqueue(createQueue, z)) (b5) empty(enqueue(createQueue, y)) (b6) f ront(dequeue(enqueue(enqueue(createQueue, z), x))) (b7) f ront(enqueue(enqueue(createQueue, x), z)) (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 : N at0 × N at0 → N at0 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. 3 2014