Universität Koblenz-Landau FB 4 Informatik 1 Prof. Dr. Viorica Sofronie-Stokkermans∗ 2 Dipl.-Inform. Markus Bender∗ 01.07.2016 Übung zur Vorlesung Logik für Informatiker Aufgabenblatt 12 Abgabe bis 08.07.2016, 17:00 s.t. Aufgabe 12.1 Sei Σ = (Ω, Π) eine Signatur, wobei • Ω = {a/0}, und • Π = {p/2}. Ferner sei X eine Menge von Variablen und x, y, z ∈ X. Markieren Sie durch Ankreuzen, welche der folgenden Formeln über Σ und X in NNF, bereinigt, in Pränexnormalform, in Skolemnormalform sind. Hinweis: Es können mehre Spalten zutreffen, d.h. es ist erlaubt mehr als nur 1 Kreuz pro Zeile zu setzen. NNF bereinigt Pränexnormalform Skolemnormalform ∃ x p(x, y) → ∀ y p(y, a) ∀ x p(a, x) ∧ ∃ y p(y, a) ∀ x p(x, y) ∨ ∃ y p(y, y) ∀ x∃ y p(a, x) ∨ p(x, y) ∀ x∃ z∀y ¬ p(x, y) ∨ p(x, z) ∀ x∀ y p(x, a) ∨ ¬p(x, y) ¬ p(x, x) ∧ p(x, y) ¬p(y, x) ∨ p(x, y) Aufgabe 12.2 Sei Σ = (Ω, Π) eine Signatur, wobei • Ω = {a/0}, und • Π = {p/3}. Ferner sei X eine Menge von Variablen und x, y, z ∈ X. Gegeben sei die folgende Formel über Σ und X: F = ∀ x ∃ y p(y, a, x) ↔ ¬∃ z p(z, y, x) Transformieren Sie F nach Pränexnormalform und geben Sie dabei alle Zwischenschritte explizit an (Negationsnormalform, bereinigte Form, Pränexnormalform). Aufgabe 12.3 Sei Σ = (Ω, Π) eine Signatur, wobei • Ω = {f /1}, und • Π = {p/3, q/4}. Ferner sei X eine Menge von Variablen und s, v, w, x, y, z ∈ X. Gegeben sei die folgende Formel über Σ und X: F = ∃s∀v∃w∀x∃y q(f (x), y, s, v) ∨ p(v, w, z) ∧ ¬p(z, s, f (w)) Geben Sie zur Formel F jeweils die folgenden Formen an: a) die Skolemnormalform b) die Skolemnormalform mit Matrix in konjunktiver Normalform c) die Klauselnormalform (in Mengennotation) Aufgabe 12.4 Hinweis: Informationen zum Martelli-Montanari Algorithmus erhalten Sie in praed-logik07.pdf und in der Vorlesung am 05.07.16. Sei Ω = {a/0, b/0. f /1, g/1, h/2} eine Menge von Funktionssymbolen, X eine Menge von Variablen und v, x, y, z ∈ X. Gegeben sind die folgenden 10 Unifikationsprobleme über Ω und X: ? VI) {f (x) = f (y)} ? VII) {f (x) = g(y)} I) {x = b} II) {a = x} ? III) {a = b} ? IV) {y = f (x)} ? V) {x = f (x)} ? ? ? VIII) {h(x, y) = h(a, b)} ? ? ? IX) {x = f (z), y = f (a), x = y} ? ? X) {h(x, f (y)) = z, z = h(f (y), v)} a) Wenden Sie den Martelli-Montanari Algorithmus auf die gegebenen Probleme an. Notieren Sie dabei sämtliche Zwischenschritte und dabei auch den Namen der im Schritt angewendeten Regel. Jeder Schritt soll genau einer Anwendung genau einer Regel entsprechen. Hinweis: Achten Sie darauf, den Algorithmus so lange anzuwenden, bis keine Regeln mehr anwendbar sind. b) Verwenden Sie die Ergebnisse aus dem vorherigen Aufgabenteil um eine begründete Aussage über das (Nicht-)Vorhandensein eines Unifikators zu machen. Gibt es einen Unifikator für ein Probleme, so geben Sie ihn explizit an. Aufgabe 12.5 Hinweis: Diese Aufgabe ist die letzte Prologaufgabe und eine Bonusaufgabe. Sie können sie verwenden um Ihre Punkte im Bereich Prolog zu verbessern. Wird diese Aufgabe nicht bearbeitet, hat dies keine Konsequenzen in Bezug auf die Klausurzulassung. Erstellen Sie die Wissensbasis solution12.pl, und definieren Sie in ihr die folgenden Prädikate: • akb(B1, B2), (alles Kleinbuchstaben), das genau dann wahr ist, wenn die Liste B2 der Liste B1 entspricht, mit dem Unterschied, dass alle Buchstaben in B2 Kleinbuchstaben sind. Sollte ein Element kein Buchstabe sein, so ist das Prädikat falsch. • agb(B1, B2), (alles Großbuchstaben), das genau dann wahr ist, wenn die Liste B2 der Liste B1 entspricht, mit dem Unterschied, dass alle Buchstaben in B2 Großbuchstaben sind. Sollte ein Element kein Buchstabe sein, so ist das Prädikat falsch. • ib(B1, B2), (invertierte Buchstaben), das genau dann wahr ist, wenn die Liste B2 der Liste B1 entspricht, mit dem Unterschied, dass alle Buchstaben, die in B1 Kleinbuchstaben sind, in B2 Großbuchstaben sind und alle Buchstaben, die in B1 Großbuchstaben sind, in B2 Kleinbuchstaben sind. Sollte ein Element kein Buchstabe sein, so ist das Prädikat falsch. • wb(B1, B2), (wechselnde Buchstaben), das genau dann wahr ist, wenn die Liste B2 der Liste B1 entspricht, mit dem Unterschied, dass alle Buchstaben an ungerade Stelle in B2 Kleinbuchstaben sind und alle Buchstaben an gerader Stelle in B2 Großbuchstaben sind. Sollte ein Element kein Buchstabe sein, so ist das Prädikat falsch. Sie müssen die folgenden Arten von Eingaben beachten: • L1 und L2 sind Listen von Atomen mit beliebiger Länge • L1 ist eine Liste von Atomen mit beliebiger Länge; L2 ist eine Variable • L1 ist eine Variable; L2 ist eine Liste von Atomen mit beliebiger Länge • L1 und L2 sind Variablen Beim Aufruf mit Variablen sollen diese entsprechend mit konkreten Werten belegt werden, sodass das Prädikat wahr ergibt. Prolog soll für jeden Aufruf exakt eine Antwort zurück geben, es gibt also keine Möglichkeit nach weiteren Antworten zu fragen. Bis auf die folgenden Ausnahmen dürfen Sie keine built-in Prädikate verwenden: • den Cut-Operator ‘!’, • das Prädikat ‘fail’, das immer falsch ist, Verwendung von Arithmetik ist nicht gestattet. Achten Sie darauf, dass es beim Laden Ihrer Wissensbasis zu keinen Fehlern oder Warnungen kommt. Hinweis: Beachten Sie, dass Prolog eine Eingabe von Großbuchstabe, z.B. A als Variable interpretiert und nicht als Atom. Um einen Großbuchstaben als Atom zu verwenden, müssen Sie ihn in einfache Anführungszeichen setzen, z.B. ’A’. Hinweis: Im Rahmen dieser Aufgabe gelten weder ’ß’ noch Umlaute als Buchstaben. Sie müssen entsprechend nicht beachtet werden. ∗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/ ss16logic.html einsehen können. Bei Fragen zu Ihrer Korrektur wenden Sie sich an [email protected].