Universität Koblenz-Landau FB 4 Informatik 1 Prof. Dr. Viorica Sofronie-Stokkermans∗ 2 Dipl.-Inform. Markus Bender∗ 05.05.2017 Übung zur Vorlesung Logik für Informatiker Aufgabenblatt 3 Abgabe bis 12.05.2017, 17:00 s.t. Aufgabe 3.1 a) Geben Sie die allgemeinste Struktur eines Beweises mit struktureller Induktion (für Aussagenlogik) an. b) Sei Π eine Menge von Aussagenvariablen. Seien die folgenden Funktionen auf aussagenlogischen Formeln über Π, wie folgt definiert: Für jede aussagenlogische Formel F : 0 1 + Tiefe(F ) 1 Tiefe(F ) = 1 + max(Tiefe(F 1 ), Tiefe(F2 )) 1 1 + Länge(F ) 1 Länge(F ) = 1 + Länge(F1 ) + Länge(F2 ) falls F ∈ Π ∪ {>, ⊥} falls F = ¬F1 falls F = F1 op F2 op ∈ {∨, ∧, →, ↔} falls F ∈ Π ∪ {>, ⊥} falls F = ¬F1 falls F = F1 op F2 op ∈ {∨, ∧, →, ↔} Zeigen Sie mithilfe der strukturellen Induktion über den Aufbau von aussagenlogischen Formeln, dass für jede aussagenlogische Formel F mit Aussagenvariablen in Π gilt: 1 + Tiefe(F ) ≤ Länge(F ). Aufgabe 3.2 Formalisieren Sie die folgenden Aussagen als aussagenlogische Formeln. I) Eine Zahl ist durch 2 teilbar genau dann, wenn sie gerade ist. II) Wenn eine Zahl durch 2 und durch 3 teilbar ist, ist sie durch 6 teilbar. III) Wenn eine Zahl prim ist, ist sie weder durch 2 noch durch 3 teilbar. IV) Eine Zahl ist prim oder nicht prim. Aufgabe 3.3 Sei Π = {P, Q, R} eine Menge von Aussagenvariablen und F die folgenden Formel über Π: F = ↔ R → (Q ∧ P ) ¬P ∨ (Q → R) → R ∨ P a) Geben Sie eine Wahrheitstabelle an, in der Sie die Wahrheitswerte für sämtliche Teilformeln von F angeben. Bedenken Sie, das auch F eine Teilformel von F ist. b) Begründen Sie mithilfe der Wahrheitstabelle aus a) ob F erfüllbar, unerfüllbar, tautologisch ist. c) Gegeben die Formel G = Q ∨ ¬R über Π. Untersuchen Sie mithilfe der Wahrheitstabelle ob F |= G gilt. d) Gegeben die Formel H = P ∧ (Q ∨ (¬Q ∧ ¬R)) über Π. Untersuchen Sie mithilfe der Wahrheitstabelle ob F ≡ H gilt. e) Gegeben die Formel K = P ∧¬R über Π. Untersuchen Sie mithilfe der Wahrheitstabelle ob F |= K gilt. Aufgabe 3.4 Machen Sie sich mit der Datei allgroups/sheets/sheet03.pl vertraut. Sie zeigt die Verwendung des Cut-Operators. Versuchen Sie durch Änderungen an der Definition des Prädikates max ein Gefühl für die Auswirkungen des Cut-Operators zu bekommen. Erweitern Sie die Datei mit dem Prädikat teilbarDurch(Dividend, Divisor), das genau dann wahr ist, wenn die Variablen Dividend und Divisor positive, ganze Zahlen sind und Dividend ohne Rest durch Divisor teilbar ist, d.h. bei Aufruf mit mindestens einer nicht positiven Zahl, oder mit einer Kombination in der Dividend kein ganzzahliges Vielfaches von Divisor ist, ist das Prädikat falsch. Wenn das Prädikat mit einer oder zwei Variablen aufgerufen wird, soll eine Belegung der Variablen erfolgen, die das Prädikat wahr macht. Prolog soll für jeden Aufruf exakt eine Antwort zurück geben, es gibt also keine Möglichkeit nach weiteren Antworten zu fragen. Bei Dividend und Divisor handelt es sich um ganze Zahlen. Andere Eingaben müssen nicht beachtet und behandelt werden. Das Prädikat max, das bereits in sheet03.pl definiert ist, darf zur Lösung verwendet werden. Sie dürfen die folgenden built-in Prädikate verwenden: • den Cut-Operator ‘!’, • das Prädikat ‘fail’, das immer falsch ist, • die arithmetische Zuweisung ‘is’, und • die arithmetischen Operatoren ‘+’ und ‘-’. Sie dürfen auch das in der Datei definierte Prädikat max verwenden. Achten Sie darauf, dass es beim Laden Ihrer Wissensbasis zu keinen Fehlern oder Warnungen kommt. ∗1 ∗2 B 225 B 224 [email protected] [email protected] www.uni-koblenz.de/~sofronie www.uni-koblenz.de/~mbender Bitte beachten Sie die Modalitäten zur Abgabe, die Sie unter http://userp.uni-koblenz.de/~mbender/ ss17logic.html einsehen können. Bei Fragen zu Ihrer Korrektur wenden Sie sich an [email protected].