Vorlesung Logik für Informatiker 10. Prädikatenlogik – Substitutionen und Unifikation – Bernhard Beckert Universität Koblenz-Landau Sommersemester 2006 Logik für Informatiker, SS ’06 – p.1 Substitutionen Definition: Substitution Belegung von Variablen mit Termen Formal: Funktion σ : Var → Term Σ Logik für Informatiker, SS ’06 – p.2 Substitutionen Definition: Substitution Belegung von Variablen mit Termen Formal: Funktion σ : Var → Term Σ Schreibweise für σ { x1 / t1 , . . . , x n / t n } ti if x = xi für 1 ≤ i ≤ n wobei σ (x) = x sonst Logik für Informatiker, SS ’06 – p.2 Substitutionen: Anwendung auf Terme und Formeln Definition: Anwendung auf Terme und Formeln σ (s(t1 , . . . , tn )) = s(σ (t1 ), . . . , σ (tn )) (insbes.: σ (c) = c für s ∈ FΣ ∪ PΣ für Konstanten c) Logik für Informatiker, SS ’06 – p.3 Substitutionen: Anwendung auf Terme und Formeln Definition: Anwendung auf Terme und Formeln σ (s(t1 , . . . , tn )) = s(σ (t1 ), . . . , σ (tn )) (insbes.: σ (c) = c für s ∈ FΣ ∪ PΣ für Konstanten c) σ (¬ A) = ¬σ (A) σ (A ∗ B) = σ (A) ∗ σ (B) für ∗ ∈ {∧, ∨, →, ↔} Logik für Informatiker, SS ’06 – p.3 Substitutionen: Anwendung auf Terme und Formeln Definition: Anwendung auf Terme und Formeln σ (s(t1 , . . . , tn )) = s(σ (t1 ), . . . , σ (tn )) (insbes.: σ (c) = c für s ∈ FΣ ∪ PΣ für Konstanten c) σ (¬ A) = ¬σ (A) σ (A ∗ B) = σ (A) ∗ σ (B) σ (QxA) = Qxσ 0 (A) wobei für ∗ ∈ {∧, ∨, →, ↔} für Q ∈ {∀, ∃}, σ 0 = σ\{x/t | t ∈ Term Σ } Logik für Informatiker, SS ’06 – p.3 Substitutionen: Anwendung auf Terme und Formeln Definition: Anwendung auf Terme und Formeln σ (s(t1 , . . . , tn )) = s(σ (t1 ), . . . , σ (tn )) (insbes.: σ (c) = c für s ∈ FΣ ∪ PΣ für Konstanten c) σ (¬ A) = ¬σ (A) σ (A ∗ B) = σ (A) ∗ σ (B) σ (QxA) = Qxσ 0 (A) wobei für ∗ ∈ {∧, ∨, →, ↔} für Q ∈ {∀, ∃}, σ 0 = σ\{x/t | t ∈ Term Σ } σ ({ A1 , . . . , An }) = {σ (A1 ), . . . , σ (An )} Logik für Informatiker, SS ’06 – p.3 Substitutionen Notation: Substitutionsanwendung in Postfix-Schreibweise F σ für σ (F) t σ für σ (t) Logik für Informatiker, SS ’06 – p.4 Substitutionen Notation: Substitutionsanwendung in Postfix-Schreibweise F σ für σ (F) t σ für σ (t) Konkatenation von Substitutionen (σ ◦ τ )(x) = σ (τ (x)) Nota bene F(σ ◦ τ ) = F τ σ Logik für Informatiker, SS ’06 – p.4 Substitutionen: Anwendung auf Terme und Formeln Achtung (I): Alle Vorkommen einer Variablen werden simultan ersetzt! Logik für Informatiker, SS ’06 – p.5 Substitutionen: Anwendung auf Terme und Formeln Achtung (I): Alle Vorkommen einer Variablen werden simultan ersetzt! Beispiel σ = {x/ y, y/ z} dann ( f (x, y))σ = f (y, z) Logik für Informatiker, SS ’06 – p.5 Substitutionen: Anwendung auf Terme und Formeln Achtung (II): Nur freie Variablenvorkommen werden ersetzt! Logik für Informatiker, SS ’06 – p.6 Substitutionen: Anwendung auf Terme und Formeln Achtung (II): Nur freie Variablenvorkommen werden ersetzt! Beispiel σ = { x / c , y / d} dann (∀ y p(x, y))σ = ∀ y (c, y) Logik für Informatiker, SS ’06 – p.6 Besondere Substitutionen Definition: Variablenumbenennung Eine Substitution ist eine Variablenumbenennung, falls sie eine Permutation auf Var ist Logik für Informatiker, SS ’06 – p.7 Besondere Substitutionen Definition: Variablenumbenennung Eine Substitution ist eine Variablenumbenennung, falls sie eine Permutation auf Var ist Definition: Identische Substitution id bezeichent die identische Substitution, d.h. id (x) = x für alle x ∈ Var Logik für Informatiker, SS ’06 – p.7 Besondere Substitutionen Definition: Variablenumbenennung Eine Substitution ist eine Variablenumbenennung, falls sie eine Permutation auf Var ist Definition: Identische Substitution id bezeichent die identische Substitution, d.h. id (x) = x für alle x ∈ Var Definition: Grundsubstitution Eine Substitution, die alle Variablen mit Grundtermen (variablenfreien Termen) belegt, heißt Grundsubstitution Logik für Informatiker, SS ’06 – p.7 Substitutionstheorem Substitutionstheorem I eine prädikatenlogische Interpretation σ = {x1 /t1 , . . . , xn /tn } eine Substitution F eine Formel dann I(F σ ) = Ix1 / I(t1 ),...,xn / I(tn ) (F) Logik für Informatiker, SS ’06 – p.8 Substitutionstheorem Substitutionstheorem I eine prädikatenlogische Interpretation σ = {x1 /t1 , . . . , xn /tn } eine Substitution F eine Formel dann I(F σ ) = Ix1 / I(t1 ),...,xn / I(tn ) (F) Beweis Einfach durch Induktion über strukturellen Aufbau von F Logik für Informatiker, SS ’06 – p.8 Kollisionsfreie Substitution Definition: Kollisionsfreie Substitution (engl.: admissible substitution) σ eine Substitution F eine Formel σ heißt kollisionsfrei (bzgl. F ), falls es folgendes nicht gibt: Logik für Informatiker, SS ’06 – p.9 Kollisionsfreie Substitution Definition: Kollisionsfreie Substitution (engl.: admissible substitution) σ eine Substitution F eine Formel σ heißt kollisionsfrei (bzgl. F ), falls es folgendes nicht gibt: eine freies Vorkommen einer Variablen z, das im Skopus einer Quantifizierung ∀x oder ∃x liegt, und x kommt in σ (z) vor Logik für Informatiker, SS ’06 – p.9 Kollisionsfreie Substitution Beispiel {z/ x} ist nicht kollisionsfrei bzgl. ∀x p(x, z) Logik für Informatiker, SS ’06 – p.10 Kollisionsfreie Substitution Beispiel {z/ x} ist nicht kollisionsfrei bzgl. ∀x p(x, z) Intuitive Bedeutung des Begriffs Aus ∀x F folgt F {x/t } Dies gilt allerdings i.a. nur, wenn {x/t } kollisionsfrei für F Logik für Informatiker, SS ’06 – p.10 Gebundene Umbenennung Definition: Gebundene Umbenennung Alle Vorkommen einer Variablen x in einer Quantifizierung ∀x oder ∃x im Skopus dieser Quantifizierung werden durch eine neue (bisher nicht vorkommende) Variable y ersetzt Logik für Informatiker, SS ’06 – p.11 Gebundene Umbenennung Definition: Gebundene Umbenennung Alle Vorkommen einer Variablen x in einer Quantifizierung ∀x oder ∃x im Skopus dieser Quantifizierung werden durch eine neue (bisher nicht vorkommende) Variable y ersetzt Eigenschaften • Gebundene Umbenennung ist Äquivalenzumformung • Gebundene Umbenennung erlaubt, Kollisionen zu beseitigen Logik für Informatiker, SS ’06 – p.11