Übungen zu ”Grundlagen der Logik in der Informatik” - WS15/16 1/5 Übungen zu ”Grundlagen der Logik in der Informatik” WS15/16 Donnerstag 14:15-15:45, Cauerstraße 7/9, Raum 0.154-115 Freitag 14:15-15:45, Martenstr. 3, Raum 02.134-113 Daniel Hausmann [email protected] Friedrich-Alexander-Universität Erlangen Department Informatik Lehrstuhl 8 January 12, 2016 Übungen zu ”Grundlagen der Logik in der Informatik” - WS15/16 | Übungsblatt 9 | Aufgabe 1 (Präsenzaufgabe) 2/5 Aufgabe 1 - Variablensubstitution (Prädikatenlogik) Eine Substitution ist eine Funktion, die Variablen auf Terme abbildet. Schreibweise: [E1 /x1 , . . . , En /xn ]. Definiere für Formeln φ, Ausdrücke E und Substitionen σ das Ergebnis φσ bzw. E σ der Anwendung von σ rekursiv: xσ = σ(x) f (E1 , . . . , En )σ = f (E1 σ, . . . , En σ) f /n ∈ Σ (E = D)σ = (E σ = Dσ) (¬φ)σ = ¬(φσ) (φ ∧ ψ)σ = (φσ ∧ ψσ) (∀x. φ)σ = ∀y . φσ 0 , wobei σ 0 (x) = y , σ 0 (z) = σ(z) für jedes z 6= x, und y ∈ / FV (σ(z)) für alle z ∈ FV (∀x. φ). Geben Sie entsprechende Gleichungen für (φ ∨ ψ)σ und (∃x. φ)σ an, die sich aus der Kodierung von φ ∨ ψ als ¬(¬φ ∧ ¬ψ) und von ∃x. φ als ¬(∀x. ¬φ) ergeben. Übungen zu ”Grundlagen der Logik in der Informatik” - WS15/16 | Wiederholung | Wiederholung aus der Vorlesung 3/5 Unifikation . Eine Gleichung E = D ist ein Paar (E , D) von Termen. Ein Gleichungssystem ist eine Menge von Gleichungen. Eine Substitution σ . ist ein Unifikator von E = D, wenn E σ = Dσ. Ein Unifikator eines Gleichungssystems S ist eine Substitution, die Unifikator aller Gleichungen in S ist. Das System S ist unifizierbar, wenn es einen Unifikator hat. Eine Substitution σ1 ist allgemeiner als σ2 , wenn eine Substitution τ existiert, so dass σ1 τ = σ2 . Ein Unifikator σ von S ist allgemeinster Unifikator (MGU, most general unifier) von S (σ = mgu(S)), wenn σ allgemeiner als jeder Unifikator von S ist. Übungen zu ”Grundlagen der Logik in der Informatik” - WS15/16 | Wiederholung | Wiederholung aus der Vorlesung 4/5 Unifikationsalgorithmus Der Algorithmus (ursprünglich Herbrand, später Martelli/Montanari) besteht in erschöpfender Anwendung der folgenden Umformungsregeln: (delete) : . S ∪ {x = x} →S (decomp) : . S ∪ {f (E1 , . . . , En ) = f (D1 , . . . , Dn )} . . → S ∪ {E1 = D1 , . . . , En = Dn } (conflict) : . S ∪ {f (E1 , . . . , En ) = g (D1 , . . . , Dk )} →⊥ (orient) : . S ∪ {E = x} . → S ∪ {x = E } (für f 6= g ) (E keine Variable) (occurs)/(elim) : . S ∪ {x = E } ( → ⊥ (x ∈ FV (E ), x 6= E ) . S[E /x] ∪ {x = E } (x ∈ / FV (E ), x ∈ FV (S)) Wenn ⊥ erreicht wird, gibt der Algorithmus ”nicht unifizierbar” aus; ansonsten berechnet er einen allgemeinsten Unifikator von S. Übungen zu ”Grundlagen der Logik in der Informatik” - WS15/16 | Übungsblatt 9 | Aufgabe 2 (Präsenzaufgabe) 5/5 Aufgabe 2 - Unifikation Berechnen Sie mittels des Unifikationsalgorithmus einen allgemeinsten Unifikator für die folgenden formalen Gleichungen, bzw. zeigen Sie ggf., dass die Gleichungen nicht unifizierbar sind. . 1 plus(plus(x, o), y ) = plus(plus(y , o), plus(o, plus(o, plus(z, o)))); . 2 branch(x, branch(end, end)) = branch(branch(z, y ), branch(x, end)). Annotieren Sie dabei alle Umformungsschritte explizit mit der jeweils verwendeten Regel des Unifikationsalgorithmus.