Universität Koblenz-Landau FB 4 Informatik 1 Prof. Dr. Viorica Sofronie-Stokkermans∗ 2 Dipl.-Inform. Markus Bender∗ 16.06.2017 Übung zur Vorlesung Logik für Informatiker Aufgabenblatt 8 Abgabe bis 23.06.2017, 17:00 s.t. Aufgabe 8.1 Sei Σ = (Ω, Π) eine Signatur, wobei • Ω = {a/0, f /1, g/1, h/2}, und • Π = {p/2, ≈/2}. Ferner sei X eine Menge von Variablen und x, y, z ∈ X. Berechnen Sie die Ergebnisse der folgenden Substitutionen: I) g h(a, x), f (x) [a/x] II) p g x, f (y) , g f (y), x [y/x, x/y] III) ∃ x p h(f (y), x), f (y) [x/y] IV) ∀ x g f (y), x ≈ f g(y, x) [y/x, f (x)/y] ! [f (a)/x, y/z] V) ∃ y p x, f (a) ∨ h(z, a) ≈ y → ∀ x p x, f (a) VI) ! ∀ x f x ≈ g y, z ∧ ! ! ∃ z f x ≈ h a, f (z) [z/x, a/y, f (a)/z] Aufgabe 8.2 Sei Σ = (Ω, Π) eine Signatur, wobei • Ω = {0/0, 1/0, p/1, +/2}, und • Π = {≈/2}. Ferner sei X eine Menge von Variablen und x, y ∈ X. Gegeben sind die folgenden Struktur A und die Belegungen β1 , β2 : A = (Z, {0A , 1A , pA : Z → Z, +A : Z × Z → Z}, {≈A }) mit • 0A = 1 ∈ Z • 1A = 0 ∈ Z • pA (n1 ) = n1 − 1 ∈ Z • +A (n1 , n2 ) = n1 + n2 ∈ Z • ≈A ist die Gleichheit, d.h. ≈A = {(n, n) | n ∈ Z} • β1 : X → Z, definiert durch β1 (x) = 7, β1 (y) = 5 • β2 : X → Z, definiert durch β2 (x) = 0, β2 (y) = 3 Evaluieren Sie I) A(β) p(1) + p(p(x) + 0) , II) A(β) x + 0 ≈ p(y) + p(1) , und III) A(β) p(0) + p(0) ≈ p(p(0)) , für a) β = β1 , b) β = β2 , Gehen Sie dabei in klaren und leicht nachvollziehbaren Schritten vor. Aufgabe 8.3 Erstellen Sie die Wissensbasis solution08.pl, und definieren Sie in ihr die Prädikate I) istAufsteigendSortiert(L), das genau dann wahr ist, wenn die Liste L eine monoton steigende Liste von Zahlen ist. II) istAbsteigendSortiert(L), das genau dann wahr ist, wenn die Liste L eine monoton fallende Liste von Zahlen ist. L kann eine Variable oder eine Liste von ganzen Zahlen mit beliebiger Länge sein. Beim Aufruf mit einer Variablen soll diese entsprechend belegt werden. 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 und keine Arithmetik verwenden: • den Cut-Operator ‘!’, • das Prädikat ‘fail’, das immer falsch ist, • den Vergleich ‘<’, der der Relation < entspricht, • das Prädikat ‘reverse(L1, L2)’, das genau dann wahr ist, wenn L1 das Reverse von L2 ist. Hinweis: Beachten Sie, dass hier lediglich von ‘monoton’ und nicht von ‘streng monoton’ gesprochen wird. Entsprechend soll istAufsteigendSortiert([1,2,2,3]) und istAbsteigendSortiert(3,3,2,1,1) zum Ergebnis true führen. Klarstellung: Beachten Sie weiterhin, dass Sie zwar das built-in ’<’ verwenden dürfen, nicht jedoch ’<=’. Achten Sie darauf, dass es beim Laden Ihrer Wissensbasis zu keinen Fehlern oder Warnungen kommt. Aufgabe 8.4 Hinweis: Diese Aufgabe muss von jedem Mitglied der Abgabegruppe selbst erfüllt werden. Erfüllt jemand diese Aufgabe nicht, wird dieses Blatt für diese Person mit allen Konsequenzen als „nicht eingereicht“ bewertet. Legen Sie im SVN unter Verwendung Ihres eigenen Zuganges im Verzeichnis „solutions“ Ihrer Abgabegruppe eine Datei mit dem Namen check_<KENNUNG>.txt an, wobei KENNUNG Ihre Rechnerkennung ist. Im Falle von Markus Bender hieße diese Datei beispielsweise check_mbender.txt. Achten Sie darauf, dass nur Sie selbst diese Datei hochladen, es wird nicht gewertet, wenn ein Gruppenmitglied diese Datei für Sie ins SVN stellt. ∗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].