Logik für Informatik Sommersemester 2003 Mathias Kegelmann Technische Universität Darmstadt Fachbereich Mathematik 3. Juni 2003 VII. Variablen und Substitution A Heute beschäftigen wir uns mit weiteren syntaktischen Details der Prädikatenlogik: Zunächst mit Variablen und deren Geltungsbereich und dann mit der Substitution von Termen für Variablen. 1 1.1 Variablen Geltungsbereich Vergleichen wir die beiden folgende Formeln ∀x. P (x) ∨ ∀x. Q(x) ∀x. P (x) ∨ Q(x) so sagen sie etwas deutlich unterschiedliches aus: Das kann man sich z.B. dadurch klar machen, wenn man P in N als “gerade” und Q als “ungerade” interpretiert. Die Quantoren haben also in den Beispielen unterschiedliche Geltungsbereiche, d.h. Teile der Formel in der das Vorkommen der quantifizierten Variablen durch den Quantor gebunden wird. Man kann sich das auch dadurch veranschaulichen, dass man — wie in formalen Sprachen üblich — den Syntaxbaum der Ausdrücke zeichnet: ∨ ∀x @ @ ∀x ∀x ∨ @ @ P (x) Q(x) P (x) Q(x) Im Syntaxbaum ist der Geltungsbereich gerade der Teilbaum unterhalb des Quantors. Betrachten wir nun noch ein verwandtes Beispiel: ∀x. P (x) ∨ Q(x) (1) Hier bindet der Allquantor nur das erste Vorkommen von x; in Q(x) ist x nicht gebunden, man sagt dafür auch frei. Dass die gleiche Variable sowohl gebunden als auch frei vorkommt, kann man immer vermeiden, wie wir bald sehen werden. Eine noch merkwürdigere Formel ist: ∃x.∀x. P (x) ∨ Q(x) (2) Hier liegt x in P (x) und Q(x) im Geltungsbereich des Allquantors; das spätere Binden “überschreibt” sozusagen das erste. Auch hier sind die Variablennamen ungünstig gewählt. Wie wir in Abschnitt 1.3 diskutieren werden kann man solche Konflikte immer vermeiden, und der Verständlichkeit wegen sollte man dies auch tun! 1.2 Freie Variablen Jetzt wollen wir formal definieren, welche Variablen in einer Formel frei vorkommen. Dazu definieren wir zunächst induktiv über den Aufbau der Terme einer Signatur Σ = (Ω, R, α), welche Variablen in solch einem Term vorkommen, also eine Funktion F V : TΣ (X) → Pfin (X) von Termen zu endlichen Mengen von Variablen: F V (x) := {x} F V f(t1 , . . . ,tα(f ) ) := F V (t1 ) ∪ . . . ∪ F V (tα(f ) ) Nun setzt man diese Funktion auf Formeln, also zu F V : FΣ (X) → Pfin (X), fort. Dabei geht man wieder induktiv vor, wobei der einzige interessante Fall der für die Quantoren ist: F V R(t1 , . . . ,tα(R) ) := F V (t1 ) ∪ . . . ∪ F V (tα(f ) ) F V (t1 = t2 ) := F V (t1 ) ∪ F V (t2 ) F V (⊥) := ∅ F V (A ∧ B) = F V (A ∨ B) = F V (A → B) := F V (A) ∪ F V (B) F V (∀x. A) = F V (∃x. A) := F V (A) \ {x} Eine Formel, in der keine Variablen frei vorkommen, bezeichnet man als geschlossene Formel. Man kann zu jeder Formel den universellen Abschluss bilden: Ist F V (A) = {x1 , . . . , xn } für eine Formel A ∈ FΣ (X), dann ist dieser gerade ∀x1 ∀x2 · · · ∀xn . A. Dieser Begriff ist wegen der folgenden Beobachtung interessant. Proposition 7.1. Eine Formel A gilt genau dann in einem Modell M, wenn ihr universeller Abschluss in M gilt. Beweis. Folgt unmittelbar aus der Definition von . Die Semantik JAKρ einer Formel A hängt nur von den Werten ab, die ρ auf den freien Variablen von A annimmt: Proposition 7.2. Sei A ∈ FΣ (X) eine Formel, M ein Modell für die Signatur Σ und ρ, ρ0 : X → M Belegungen, die auf den freien Variablen von A übereinstimmen, d.h. für alle x ∈ F V (A) gilt ρ(x) = ρ0 (x). Dann gilt JAKρ = JAKρ0 . Beweis. Per Induktion über der Aufbau von A. (Übung!) Bemerkung. Insbesondere hängt für eine geschlossene Formel A die Semantik JAKρ überhaupt nicht von ρ ab. Deshalb schreiben wir in einem solchen Fall auch einfach JAK. 1.3 Gebundene Variablen Die Variable, die nach einem Quantor kommt, heißt im Geltungsbereich des Quantors gebunden. Wie R bei formalen Parametern einer Funktion bei Programmiersprachen oder bei Integrationsvariablen wie x2 dx kommt es auf den eigentlichen Namen der gebunden Variablen nicht an. So sehen wir z.B. die Formeln ∀x.P (x) und ∀y.P (y) als im Prinzip gleich an; wenn man Formeln in einem Programm repräsentiert, wählt man oft für deren Darstellung einen Datentyp, bei dem diese beiden Formeln tatsächlich gleich repräsentiert werden. Man kann gebundene Variablen in Formeln deshalb umbenennen. Wie man das technisch durchführt, werden wir im nächsten Abschnitt im Detail behandeln. Damit kann man es immer vermeiden, dass in einer Formel eine Variable wie in (1) sowohl frei als auch gebunden vorkommt. Ebenso sollte man mehrfaches verschachteltes Binden der gleichen Variable wie in (2) dadurch vermeiden. 2 Substitution Variablen stehen für beliebige konkrete Werte. Deshalb macht es Sinn, für Variablen andere Terme einzusetzen. Diese so genannte Substitution von Termen für Variablen haben wir bereits in der Allgemeinen Algebra in Abschnitt A.13.4 kennengelernt. Damals haben wir für eine Abbildung σ : X → TΣ (X) die simultane Substitution t[σ] aller Variablen x im Term t durch ihre Bilder σ(x) definiert (siehe Definition A.13.7). In der Logik substituiert man üblicherweise zu einem Zeitpunkt nur Terme für eine Variable, und für diesen Spezialfall wiederholen wir die Definition. Sei t ∈ TΣ (X) ein Term und x ∈ X ein Variable. Für die Substitution von t für x in einem anderen Term s ∈ TΣ (X) schreiben wir s[t/x], und wir definieren dies induktiv über den Aufbau von s: x[t/x] := t y[t/x] := y, wobei x 6= y ∈ X f(s1 , . . . ,sα(f ) ) [t/x] := f(s1 [t/x], . . . ,sα(f ) [t/x]) Nun setzen wir die Substitution auf Formeln fort. Wieder definiert man induktiv, dass x überall, wo es in einer Formel A vorkommt, durch t ersetzt wird, aber nur wenn x an dieser Stelle nicht gebunden ist. Gebundene Variablen werden also nie substituiert. Hier ist die formale Definition: R(s1 , . . . ,sα(R) ) [t/x] := R(s1 [t/x], . . . ,sα(R) [t/x]) (s1 = s2 )[t/x] := s1 [t/x] = s2 [t/x] ⊥[t/x] := ⊥ (A ∧ B)[t/x] := A[t/x] ∧ B[t/x] (A ∨ B)[t/x] := A[t/x] ∨ B[t/x] (A → B)[t/x] := A[t/x] → B[t/x] (∀x. A)[t/x] := ∀x. A (∀y. A)[t/x] := ∀y. A[t/x], für x 6= y ∈ X (∃x. A)[t/x] := ∃x. A (∃y. A)[t/x] := ∃y. A[t/x], für x 6= y ∈ X 2.1 Zulässige Substitutionen Es gibt leider noch eine zusätzliche Komplikation bei der Substitution. Zur Illustration betrachten wir die Formel ∃x. x = y, die in jedem Modell gilt. Wenn wir nun, z.B. in der Sprache der Arithmetik, x + 1 für y darin substituieren, so erhalten wir (∃x. x = y)[x + 1/y] ≡ ∃x. x = x + 1, was in N offensichtlich nicht gilt. Hätten wir aber die statt ∃x. x = y die Formel ∃z. z = y verwendet, die sich nur durch Umbenennen der freien Variablen von der ersten unterscheidet, so erhalten wir (∃z. z = y)[x + 1/y] ≡ ∃z. z = x + 1. Diese Formel gilt in N. Das Problem bei der ersten Substitution ist, dass die freie Variable x in x + 1 durch die Substitution in den Geltungsbereich von ∃x gerät und dadurch gebunden wird. Hätte man aber einen anderen Namen für die gebundene Variable gewählt, so wäre das nicht passiert. Diese Phänomen will man deshalb ausschließen. Um das zu formalisieren sagt man t sei frei für x in A, wenn bei der Substitution A[t/x] keine freie Variable von t gebunden wird. Wir nennen eine Substitution A[t/x] zulässig, wenn t frei für x in A ist, und im folgenden werden wir immer nur zulässige Substitutionen betrachten. Umbenennung gebundener Variabler. Mit der Substitution können wir nun auch das Umbenennen von gebunden Variablen formal erklären. Haben wir eine Formel ∀x. A, die die Variable y nicht enthält, dann ist y allemal frei für x in A und wir können die gebundene Variable x durch die Substitution ∀y. A[y/x] in y umbenennen. Analog macht man das für den Existenzquantor und wenn die Quantoren weiter innen in einer Formel vorkommen. Man beweist leicht folgende Aussage, die belegt, dass unsere Intuition richtig ist, dass die Namen der gebundenen Variablen keine Rolle spielen. Proposition 7.3. Sei A ∈ FΣ (X) eine Formel, die y ∈ X nicht enthält und x ∈ X eine Variable. Dann gelten (∀x.A) ↔ (∀y.A[y/x]) und (∃x.A) ↔ (∃y.A[y/x]). Implizite Umbenennung. Um es zu vermeiden, bei jeder Substitution dazusagen zu müssen, dass wir annehmen, dass der Term frei für die Variable in der Formel ist vereinbaren wir folgende Konvention. Ist in einer Formel A ∈ FΣ = FΣ (V ) über einer unendlichen Variablenmenge V der Term t nicht frei für x, dann fassen wir A[t/x] als A0 [t/x] auf, wobei A0 aus A durch Umbenennen der gebundenen Variablen so entsteht, dass t in A0 frei für x ist. Man kann z.B. immer alle gebundenen Variablen umbenennen und ihnen völlig neue Namen geben, die weder in A noch in t vorkommen. 2.2 Substitutionslemma Wie bei der Substitution in der Allgemeinen Algebra, gibt es auch in der Prädikatenlogik ein wichtiges Substitutionslemma (vergleiche Lemma A.13.9). Es besagt informell, dass sich Substitution mit der semantischen Auswertung verträgt. Lemma 7.4 (Substitutionslemma). Sei A ∈ FΣ (X) eine Formel, t ∈ TΣ (X) ein Term, der frei für x in A ist, M ein Modell für die Signatur Σ und ρ : X → M eine Variablenbelegung. Dann gilt q y A[t/x] ρ = JAKρ x 7→ JtKρ . Daraus erhält man unmittelbar, dass sich Substitution in folgender Weise mit Gültigkeit verträgt: Korollar 7.5. Sei A ∈ FΣ (X) eine Formel, t ∈ TΣ (X) ein Term, der frei für x in A ist und M ein Modell für die Signatur Σ, für das MA gilt. Dann gilt auch M A[t/x]. Beweis. Um M A[t/x] zu zeigen, betrachten wir eine beliebige Belegung ρ : X → M und rechnen q y A[t/x] ρ = JAKρ x 7→ JtKρ = w, 0 0 wobei der letzte Schritt aus M A folgt, da dies gerade bedeutet, dass JAKρ = w für alle Belegungen ρ , 0 also insbesondere für ρ = ρ x 7→ JtKρ , gilt.