Universität Koblenz-Landau FB 4 Informatik 1 Prof. Dr. Viorica Sofronie-Stokkermans∗ 2 Dipl.-Inform. Markus Bender∗ 01.05.2015 Übung zur Vorlesung Logik für Informatiker Aufgabenblatt 3 Abgabe bis 08.05.2015, 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 mit Hilfe 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) Wenn die Sonne nicht scheint, ist es kalt. II) Wenn es regnet und kalt ist, ist die Straße glatt. III) Wenn die Straße glatt ist oder in der Nähe Kinder spielen, muss man vorsichtig fahren. IV) Wenn die Sonne scheint, und es regnet, gibt es einen Regenbogen. Aufgabe 3.3 Sei Π = {A, B, C} eine Menge von Aussagenvariablen und F die folgenden Formel über Π: F = (A → (B ∧ C)) ↔ ((¬C ∨ (B → A)) → (A ∨ C)) 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 mit Hilfe der Wahrheitstabelle aus a) ob F erfüllbar, unerfüllbar, tautologisch ist. c) Gegeben die Formel G = ¬A∨B über Π. Untersuchen Sie mit Hilfe der Wahrheitstabelle ob F |= G gilt. d) Gegeben die Formel H = (B ∧ C) ∨ (¬A ∧ ¬B ∧ C) über Π. Untersuchen Sie mit Hilfe der Wahrheitstabelle ob F ≡ H gilt. e) Gegeben die Formel K = ¬A∧C über Π. Untersuchen Sie mit Hilfe 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 teilt(Divisor, Dividend), das genau dann wahr ist, wenn die Variablen Divisor und Dividend positive, ganze Zahlen sind und Divisor Dividend ohne Rest teilt, 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 Divisor und Dividend handelt es sich um ganze Zahlen. Andere Eingaben müssen nicht beachtet und behandelt 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/ ss15logic.html einsehen können. Bei Fragen zu Ihrer Korrektur wenden Sie sich an [email protected].