Theoretische Informatik und Logik Teil II: LOGIK Bernhard Gramlich AB Theoretische Informatik und Logik (E185/2) Institut für Computersprachen, TU Wien Überblick Syntax vs. Semantik Ein einfaches Beispiel: additive Terme = {T → 0 | ··· | 9 | ( T + T )} Sei T = L(G) mit G = h{T }, {(, ), +, 0, . . . , 9}, P, T i mit P M: T → ω . . . Meaning“, interpretiert T als additive Ausdrücke ” M(0) = 0, . . . , M(9) = 9 M(( t1 + t2 )) = M(t1 ) + M(t2 ) für t1 , t2 ∈ T = M((1+2 )) + M(3) Beispiel. Auswertung von ((1 +2 )+3): M(((1 +2) +3)) = M(1) + M(2) + M(3) • Syntax und Semantik von Termen, . . . , Programmiersprachen • Aussagenlogik = 1+2+3=6 171 • Prädikatenlogik 170 Beispiel. Auswertung von ((x +2 )+y) . . . für I(x) = 1, I(v) = 3 für alle v 6= x: Syntax: T → x | y | z | · · · = I(x) + 2 + I(y) = M(I, x) + M(I, 2) + M(I, y) Behandlung von Variablen Semantik: M(x) = 1 oder M(x) = 2 ? = 1+2+3=6 M(I, ((x +2 )+y )) = M(I, (x+2 )) + M(I, y) Speicherbelegung I: {x, y, z, . . .} → ω . . . für J(x) = 5, J(y) = 2, J(v) = 0 sonst: = M(J, x) + M(J, 2) + M(J, y) M(J, (( x+2 )+y )) = M(J, ( x+2 )) + M(J, y) M(I, 0) = 0, . . . , M(I, 9) = 9 = J(x) + 2 + J(y) ENV . . . Menge aller Speicherbelegungen ( Environments“) ” Erweiterung der Semantikfunktion: M: ENV × T → ω M(I, v) = I(v) für v ∈ {x, y, z, . . .} = 5+2+2=9 173 M(I, ( t1 + t2 )) = M(I, t1 ) + M(I, t2 ) für t1 , t2 ∈ T 172 T →x|y|z T → 0 | ··· | 9 T = L(G) Grammatik t1 , t2 ∈ T {x, y, z} ⊆ T {0, . . . 9} ⊆ T T ist kl. Menge mit: Induktive Definition M(I, ( t1 + t2 )) M(I, x) = I(x), . . . M(I, 0) = 0, . . . M: ENV × T → ω Rek. Auswertung Grammatik vs. Induktive Definition T →(T +T ) t1 , t2 ∈T ⇒( t1 + t2 )∈T: ⇒ ( t1 + t2 ) ∈ T = M(I, t1 ) + M(I, t2 ) Beachte: Die verschiedenen Vorkommen von T in ( T + T ) entsprechen den verschiedenen (metasprachlichen) Variablen t1 und t2 ! statt t∈T ⇒(t+t)∈T T ist nicht mehr kontextfrei! 174 Auflösung der Mehrdeutigkeit F →+E |∗E |ǫ Im Gegensatz zur Grammatik ist die Sprache E eindeutig; es gibt eine eindeutige (reguläre) Grammatik für E: E → 0F | ··· | 9F Problem: Ableitungen entsprechen nicht der intendierten Semantik. Die übliche Prioritätsregel ‘∗ vor +’ soll berücksichtigt werden. Zwei Möglichkeiten: 1. Prioritätsregel (nur) in die Definition von M einbauen 2. Prioritätsregel gleich in die Definition von E einbauen: Definition von E hierarchisch gestalten 176 E → 0 | ··· | 9 E = L(G) Grammatik {0, . . . 9} ⊆ E E ist kl. Menge mit: Induktive Definition M(e1 + e2 ) M(0) = 0, . . . M: E → ω Rek. Auswertung = M(e1 ) · M(e2 ) M(e1 ∗ e2 ) = M(e1 ) + M(e2 ) e1 , e2 ∈ E e1 , e2 ∈ E ⇒ e1 + e2 ∈ E E →E+E E →E∗E ⇒ e1 ∗ e2 ∈ E Problem: M ist keine Funktion mehr! M(3+3 ∗3) = M(3) + M(3∗ 3) = M(3) + M(3) · M(3) = 12 M(3+3 ∗3) = M(3 +3) · M(3) = (M(3) + M(3)) · M(3) = 18 Grund: Grammatik für E ist mehrdeutig; verschiedene Ableitungen führen zu verschiedenen Werten. 175 H⊆E E ist kleinste Menge mit: e1 , e2 ∈ H ⇒ e1 ∗ e2 ∈ H {0, 1, . . ., 9} ⊆ H H ist kleinste Menge mit: Hierarchische Definition von E e1 , e2 ∈ E ⇒ e1 + e2 ∈ E ME (e) = MH (e) falls e ∈ H MH (e1 ∗ e2 ) = MH (e1 ) · MH (e2 ) MH (0) = 0, . . . , MH (9) = 9 Davon lassen sich Definitionen ME und MH ableiten: ME (e1 + e2 ) = ME (e1 ) + ME (e2 ) = ME (2 ∗3) + ME (4) Als einzigen Wert von 2∗3 +4 erhält man: ME (2 ∗3 +4) = MH (2 ∗3) + MH (4) = 2 · 3 + 4 = 10 177 Modellstrukturen P ... F ... D ... Menge von Konstanten endliche Menge totaler Prädikate endliche Menge totaler Funktionen K⊆D D k → {t, f } Dk → D nicht-leere Menge (Gegenstandsbereich/Domäne) Quadruppel hD, F, P, Ki, wobei: K ... Modellstrukturen können als abstrakte Datentypen aufgefasst werden 178 ist0?(s) pop(s) push1(s) push0(s) ⇐⇒ ⇐⇒ = = = s=ε es gibt ein s′ sodass s = 1s′ es gibt ein s′ sodass s = 0s′ 1s ε s′ 0s Binäre Stacks: S = hS, {push0, push1, pop}, {ist0?, ist1?, istleer?}, {ε}i ∗ wobei die Stacks durch Worte aus S = {0, 1} dargestellt werden. ist1?(s) ⇐⇒ für s = ε für s = 0s′ oder s = 1s′ istleer?(s) 180 Ganze Zahlen: Z = hZ, {+, −, ∗}, {<, =}, Zi wobei Z = {. . ., −2, −1, 0, 1, 2, . . .} für x ≥ y für x < y . . . kleiner“-, bzw. ist-gleich“-Relation ” ” +, −, ∗ . . . übliche artihmetische Funtktionen <, = 179 x−y 0 Natürliche Zahlen: . ∗}, {<, =}, {0, 1}i N = hω, {+, −, wobei ω = {0, 1, 2, . . .} und . y= x− (ansonsten wie für Z) Familie X: FamX = hDX , FX , PX , KX i wobei DX = PersonenX (Menge der Mitglieder der Familie X) FX = {Vater, Mutter } PX = {Geschwister, Onkel, weiblich, männlich, = } KX = {Abdul, Berta, Chris, Dorlan, Ege, . . .} Funktionen Vater und Mutter müssen total sein. =⇒ PersonenX unendlich; oder mit Element ‘Unbekannt’, wobei Vater(Unbekannt) = Mutter(Unbekannt) = Unbekannt 181 Signaturen Die Signatur zur Modellstruktur D legt das Alphabet einer Sprache fest, die sich entsprechend auf die Gegenstände in D bezieht. FS (D), PS (D), KS (D) . . . Funktions-, Prädikaten-, Konst.symbole FS n (D), PS n (D) . . . n-stellige Symbole 182 Ganze Zahlen: FS 2 (Z) = {+, −, ∗}, FS n (Z) = {} für n 6= 2 PS 2 (Z) = {<, =}, PS n (Z) = {} für n 6= 2 KS (Z) = {. . . , −2, −1, 0, 1, 2, . . .} Signatur zur Familie X: FS 1 (FamX) = {Vater, Mutter}, FS n (FamX) = {} für n > 1, PS 1 (FamX) = {weiblich, männlich}, PS 2 (FamX) = {Geschwister, Onkel, =}, PS n (FamX) = {} für n > 2. KS (FamX) = {Abdul, Berta, Chris, Dorlan, Ege, . . .} 184 Natürliche Zahlen: . ∗}, FS (N) = {} für n 6= 2 FS 2 (N) = {+, −, n PS 2 (N) = {<, =}, PS n (N) = {} für n 6= 2 KS (N) = {0, 1} Binäre Stacks: FS 1 (S) = {push0, push1, pop}, FS n (S) = {} für n > 1 PS 1 (S) = {ist0?, ist1?, istleer?}, PS n (S) = {} für n > 1 KS (S) = {leer} 183 Terme über Modellstrukturen Syntax: Alphabet: neben FS (D) und KS (D) auch Individuenvariablensymbole IVS : {x, y, z, x1 , . . .} Hilfssymbole: ( und ) und , T (D) ist die kleinste Menge, für die gilt: (T1) IVS ⊆ T (D) (T2) KS (D) ⊆ T (D) (T3) f ′ ( t1 , . . . , tn ) ∈ T (D) wenn f ′ ∈ FS n (D) und t1 , . . . , tn ∈ T (D) 185 Semantik ENV (D) . . . Menge aller Abbildungen IVS → D (Variablenbelegungen, Environments, auch: Interpretationen) (I, v) = I(v) für v ∈ IVS ; MT : ENV (D) × T (D) → D ist rekursiv definiert durch (M1) MT (M2) MT (I, c′ ) = c für c′ ∈ KS (D) (c . . . Konstante zu Konstantensymbol c′ ) (M3) MT (I, f ′ ( t1 , . . . , tn )) = f (MT (I, t1 ), . . . , MT (I, tn )) (f . . . Funktion zum Funktionssymbol f ′ ) 186 Boolesche Ausdrücke über Modellstrukturen Semantik: Definition. Die Semantik von BA(D) wird durch die Funktion MBA : ENV × BA(D) → {t, f } festgelegt: (MBA1) (MBA2) (MBA3) (MBA4) MBA (I, p′ (t1 , . . . ,tn )) = p(MT (I, t1 ), . . . , MT (I, tn )), wobei p das Prädikat zum Symbol p′ ∈ PS n (D) ist. t falls MBA (I, F ) = f MBA (I, ¬ F ) = f falls MBA (I, F ) = t M (I, ( F ∧ G )) = BA t falls MBA (I, F ) = t und MBA (I, G) = t f sonst M (I, ( F ∨ G )) = BA t falls MBA (I, F ) = t oder MBA (I, G) = t f sonst 188 Boolesche Ausdrücke über Modellstrukturen Syntax: BA(D) ist die kleinste Menge, für die gilt: (BA1) p′ (t1 , . . . ,tn ) ∈ BA(D), wenn p′ ∈ PS n (D) und t1 , . . . , tn ∈ T (D); p′ (t1 , . . . ,tn ) heißt Atomformel; (BA2) ¬ F ∈ BA(D), wenn F ∈ BA(D); (BA3) ( F ∧ G ) ∈ BA(D), wenn F, G ∈ BA(D); 187 (BA4) ( F ∨ G ) ∈ BA(D), wenn F, G ∈ BA(D). Notationsvereinbarungen • Infixnotation für Terme über Z und N: ( 1 +x) steht für + ( 1 ,x) etc. • Infixnotation auch für Atomformeln: (t1 =t2 ) steht für = (t1 ,t2 ) etc. • t1 >t2 steht für t2 <t1 • t1 6= t2 / t1 ≥t2 steht für ¬ (t1 =t2 ) / ¬ (t1 <t2 ) etc. • Klammereinsparungen, sofern keine Gefahr der Mehrdeutigkeit besteht 189 Beispiel Wert von B = y+x6= 0 ∨ x<y über Z in einer Variablenbelegung I mit I(x) = 4 und I(y) = −2. M BA4 = t falls MBA (I, y+x6= 0) = t oder MBA (I, x<y) = t Erinnerung: B ist ‘offiziell’ ( ¬ = ( + (y,x) , 0 ) ∨ < (x,y) ) MBA (I, B) = = M T 3,M T 2 = M BA1 M BA2 (−2 + 4 = 0) = (2 = 0) = f (M (I, y+x) = M (I, 0)) T T (MT (I, y) + MT (I, x) = 0) t falls MBA (I, y+x= 0) = f Wir bestimmen zunächst MBA (I, y+x6= 0): MBA (I, y+x6= 0) MBA (I, y+x= 0) = MT 1 Daher erhalten wir MBA (I, B) = t. 190 Beispiel: Ein ALI-Programm zur Multiplikation zweier positiver Zahlen: begin z ← 0; while (0<y) do begin z ← (z + x) ; y ← (y − 1) end end Beachte: Die intendierte Semantik muss erst gerechtfertigt werden! 192 Eine einfache Programmiersprache ALI . . . Assignment Language für Integers (Statements/Programme über Z) Syntax: ALI ist die kleinste Menge, für die gilt: (AL1) Ist v ∈ IVS und t ∈ T (Z), dann ist v ← t ∈ ALI. (AL2) Sind α, β ∈ ALI, dann ist begin α; β end ∈ ALI. (AL3) Ist B ∈ BA(Z) und sind α, β ∈ ALI, dann ist if B then α else β ∈ ALI. AL1 = z ← 0 ∈ ALI 191 (AL4) Ist B ∈ BA(Z) und α ∈ ALI, dann ist while B do α ∈ ALI. Syntaktische Analyse AL1 • z ∈ IVS , 0 ∈ T (Z) =⇒ α1 • z ∈ IVS , (z + x) ∈ T (Z) =⇒ α2 = z ← (z + x) ∈ ALI AL1 • y ∈ IVS , (y − 1) ∈ T (Z) =⇒ α3 = y ← (y − 1) ∈ ALI AL2 • α2 , α3 ∈ AL =⇒ β = begin α2 ; α3 end ∈ ALI AL4 • (0<y) ∈ BA(Z), β ∈ ALI =⇒ γ = while (0<y) do β ∈ ALI AL2 • α1 , γ ∈ ALI =⇒ begin α1 ; γ end ∈ ALI 193 Notationsvereinbarung: α ; α2 ; . . . ; αn 1 steht für α1 ; begin α2 ; begin . . . ; αn end end M AL1 ← 0), γ) = Beachte: Die offizielle Syntax von ALI bleibt unverändert. (Das erleichtert die syntaktische und semantische Analyse) Eine Hilfsdefinition: v Für I, I ′ ∈ ENV und v ∈ IVS schreibt man I ∼ I ′ wenn I(w) = I ′ (w) für alle w ∈ IVS für die w 6= v. 194 Beispiel: Multiplikationsprogramm Abkürzungen: β = begin z ← (z + x); y ← (y − 1) end γ = while (0<y) do β Auswertung für I(x) = 3, I(y) = 1, (I(z) beliebig) M AL2 z ← 0; γ end) = MAL (MAL (I, z MAL (I ′ , while (0<y) do β) MBA (I ′ , (0<y) = (MT (I ′ , 0)<MT (I ′ , y)) = (0<I ′ (y)) = (0<I(y)) = (0<1) = t MAL (MAL (I ′ , β), while (0<y) do β) wobei I ′ (z) = MT (I, 0) = 0 und I ′ (v) = I(v) für v 6= z MAL (I, begin = M AL4 = 196 MAL (I ′ , γ) Semantik von ALI Die Funktion MAL : ENV × ALI → ENV ist definiert durch: (MAL1) MAL (I, v ← t) = I ′ , wobei I ′ (v) = MT (I, t) und v I ′ (w) = I(w) für alle w ∈ IVS mit w 6= v, d.h. I ′ ∼ I. (MAL2) MAL (I, begin α; β end) = MAL (MAL (I, α), β) (MAL3) MAL (I, if B then α else β) = MAL (I, α) falls MBA (I, B) = t MAL (I, β) falls MBA (I, B) = f (MAL4) M AL (I, while B do α) = MAL (MAL (I, α), while B do α) für MBA (I, B) = t I für MBA (I, B) = f 195 MAL (MAL (MAL (I ′ , z ← z+x), y ← y−1), while (0<y) do β) MAL (MAL (I ′ , β), while (0<y) do β) = M AL2 I ′′ (v) = I ′ (v) für v 6= z = I ′ (z) + I ′ (x) = 0 + I(x) = 0 + 3 = 3 I ′′ (z) = MT (I ′ , z+x) = MT (I ′ , z) + MT (I ′ , x) MAL (MAL (I ′′ , y ← y−1), while (0<y) do β) I ′′′ (y) = MT (I ′′ , y−1) = MT (I ′′ , y) − MT (I ′′ , 1) = I ′′ (y) − 1 = I ′ (y) − 1 = I(y) − 1 = 1 − 1 = 0 I ′′′ (v) = I ′′ (v) für v 6= y = (0<I ′′′ (y)) = (0<0) = f MBA (I ′′′ , (0<y)) = (MT (I ′′′ , 0)<MT (I ′′′ , y)) I ′′′ wobei MAL (I ′′′ , while (0<y) do β) wobei = M AL1 = M AL1 = M AL4 197 Wozu Logik? Eine literarische Anwort: Mein teurer Freund ich rat euch drum Zuerst Collegium Logicum Da wird der Geist euch wohl dressiert in spanische Stiefel eingeschnürt, dass er bedächtiger so fortan hinschleiche die Gedankenbahn . . . Goethe, Faust 1. Teil (Studierzimmer) Was ist mathematische Logik? • Logik untersucht allgemeine Prinzipien korrekten Schließens • Mathematische Logik stellt zu diesem Zweck formale Kalküle bereit und analysiert die Beziehung zwischen Syntax und Semantik von Aussagen. • Die Logik hat viele Anwendungen in der Informatik. • Vor allem aber bietet die (formale) Logik den geeigneten methodischen Rahmen zur Lösung zahlreicher Probleme der Informatik. Motto: The applied math of computer science is formal logic.“ ” 199 Anwendungen der Logik in der Informatik 2 198 Anwendungen der Logik in der Informatik 1 C. Korrektheit von Programmen – Kalküle für Korrektheitsbeweise (z.B. Hoare-Kalkül) A. Programmierung – Logik-nahe Programmiersprachen (PROLOG etc.) – Lösbarkeits- und Komplexitätsfragen – Design von (Logik-nahen) Datenformaten D. Datenbanken – (partielle) Automatisierung von Korrektheitsbeweisen – boolean expressions“ ” – Zusicherungen – Extraktion von Programmen aus Spezifikationen – Automatische Programmierung – Datenconstraints – Aspekte wie: Inkonsistenz, Unvollständigkeit, etc. – Extraktion von Information aus Datenmengen (WWW) – Design und Analyse von Abfragesprachen – dynamisches Verhalten (Temporallogiken, . . . ) B. Spezifikation: Sprachen, Schließen über Spezifikationen – Soll/Muss-Verhalten (deontische Logik) 201 – Update-Problem“ ” – Datenbanktheorie – Konsistenz von Spezifikationen 200 Anwendungen der Logik in der Informatik 3 G. Computermathematik: Anwendungen der Logik in der Informatik 4 – logische Aspekte von Geometrie-Systemen – Repräsentation matematischer Beweise und Theoreme – Symbolic Computation, Computeralgebra – automatisches Beweisen E. Wissensrepräsentation: – Design von geeignete Repräsentationssprachen – Web-Ontologien, Description-Logics – Schließen mit unsicherer/vager/unvollständiger Information I. (Deskriptive) Komplexitätstheorie – Formale Modellierung natürlicher Sprache – Repräsentation von Modalitäten“ (z.B. Wissen/Glauben) ” – “revisable reasoning“ (nicht-montone Logiken, . . . ) J. Berechenbarkeitstheorie (Rekursionstheorie) H. Semantik von Programmiersprachen – räumliches Schließen K. Unifikationstheorie L. Konstruktive Mathematik F. Hardware – Spezifkation von Schaltkreisen, Chips etc. M. Komplexität logischer Probleme und Algorithmen usw. usw. . . . 205 (b < c) ∨ (d < a) ⇒ Negation äquivalent zu: (b ≥ c) ∧ (d ≥ a) Viel Redundanz! Kompakte Formulierung der negierten Bedingung: • Ende des ersten Intervalls liegt im zweiten: c ≤ b und b ≤ d • Ende des zweiten Intervalls liegt im ersten: a ≤ d und d ≤ b • Anfang des ersten Intervalls liegt im zweiten: c ≤ a und a ≤ d • Anfang des zweiten Intervalls liegt im ersten: a ≤ c und c ≤ b • Zweites Intervall enthält das erste: c ≤ a und b ≤ d • Erstes Intervall enthält das zweite: a ≤ c und d ≤ b if hBedingungi then write Kollision!“ ” Auflistung aller Überlappungsmöglichkeiten: [a, b], [c, d] . . . Zeitintervalle: von a bis b“, von c bis d“ ” ” Aufgabe: Warnung ausgegeben wenn eine Terminkollision vorliegt: 203 – (Automatische) Verfikation von Hardware – Schaltkreistheorie 202 if-, case-, while-Bedingungen: if (x = 0) ∧ (y > 1) then P1 else P2 Vertauschen von then- und else-Zweig de-Morgan-Regel: ¬(A ∧ B) = ¬A ∨ ¬B if (x 6= 0) ∨ (y ≤ 1) then P2 else P1 ⇐ Zusicherung ⇐ Nachbedingung ⇐ Vorbedingung Spezifikation von Programmeigenschaften Assertions: Diagnoseanweisungen in Programmen Pre- und Postconditions in der Programmverifikation hx = a ∧ y = b ∧ y ≥ 0i while y > 0 do [ x ← x − 1; y ← y − 1; assert(y ≥ 0);] hx = a − bi 204 natürliche Sprache“ ” Sokrates ist ein Mensch. ⇒ Sokrates ist sterblich. Alle Menschen sind sterblich. (∀x)M (x) ⊃ S(x) sp M (s) ⊃ S(s) mp S(s) Formalisierung: Festlegung der Syntax und Semantik der Logik M (s) (∀x)M (x) ⊃ S(x) S(s) (Modus ponens) M (s) Beweistheorie: Untersuchung der Schlussregeln und Beweisformen (∀x)F[x] A A ⊃ B mp sp F[t] B (Spezialisierung) Semantische Fragestellungen: Ist eine Aussage unter jeder / mancher / keiner Interpretation der nicht-logischen Symbole wahr? Welche Form haben Beispiele (Modelle) bzw. Gegenbeispiele? Folgt eine Aussage aus anderen? (2) (1) ∀x i(x) ◦ x = e ∀x e ◦ x = x ∀x∀y∀z x ◦ (y ◦ z) = (x ◦ y) ◦ z Gruppentheorie: (3) (5) ∀x x ◦ i(x) = e (6) ∀x i(i(x)) = x Immer wenn (1), (2) und (3) erfüllt sind, dann gelten auch auch (4) ∀x x ◦ e = x Diese logische Konsequenz -Behauptung ist äquivalent zu: [(1) ∧ (2) ∧ (3)] ⊃ [(4) ∧ (5) ∧ (6)] ist gültig. Analysis: f : R → R konvergiert gegen a: Für jedes positive ǫ bleibt für alle ” hinreichend großen n die Distanz zwischen f (n) und a unter ǫ.“ Formalisiert: ∀ǫ∃x0 ∀x (ǫ > 0 ∧ x ≥ x0 ) ⊃ |f (x) − a| < ǫ B0 0 S0 0 0 C0 0 1 0 Ai 1 1 0 0 Bi 0 0 0 0 Ci−1 0 1 1 0 Si 1 0 0 0 Ci Ci Si C0 S0 = (Ai ∧ Bi ) ∨ (Ai ∧ Ci−1 ) ∨ (Bi ∧ Ci−1 ) (¬Ai ∧ Bi ∧ Ci−1 ) ∨ (Ai ∧ Bi ∧ Ci−1 ) = (Ai ∧ Bi ∧ ¬Ci−1 ) ∨ (Ai ∧ ¬Bi ∧ Ci−1 )∨ = (Ai 6≡ Bi ) 6≡ Ci−1 = A0 ∧ B0 = (¬A0 ∧ B0 ) ∨ (A0 ∧ ¬B0 ) = A0 6≡ B0 207 A0 0 1 0 1 206 0 0 1 1 Halb-/Volladdierer: S = A + B 1 1 0 0 0 0 1 1 1 1 0 0 1 1 1 1 0 • Verifikation von Eigenschaften • Umformung, Vereinfachung, Optimierung A = An · · · A0 , B = Bn · · · B0 , S = Sn · · · S0 Ci . . . Überträge 0 1 1 1 1 Problemstellungen: 1 0 1 209 • Spezifikation von Schaltkreisen, von boole-schen Funktionen 1 208 Formen und Typen der Logik • Neben der klassischen Logik sind auch verschiedenste Typen nicht-klassischer Logiken von Bedeutung: – intuitionistische Logik (konstruktive Logik) – mehrwertige Logiken, Fuzzy-Logik – Modallogiken: Temporallogiken, dynamische Logik, . . . – ... t t f t t t OR, Disjunktion f t t f t t f t t t t f NAND t f f f f f t f f t f f NOR t t f f t f t t f 6⊂ ≡ 6≡ XOR, exkl. Oder • Logik wird auf unterschiedlichen Stufen ( Ordnungen“) ” analysiert: t f f f Implikation 212 NEXOR, gdw. – Aussagenlogik (Logik 0-ter Stufe) – (Prädikaten)logik 1-ter Stufe 210 – Logiken höherer Ordnung Aussagenlogik f t ∧ ∨ ⊃ ⊂ ↑ ↓ 6⊃ t t ¬ Logische Konnektive (Junktoren, Operatoren) sind Funktionen über den Wahrheitwerten: t f f f AND, Konjunktion f Negation Logische Kalküle, Beweisprozeduren Werkzeug zum Beweis (bzw. zur Widerlegung) logischer Aussagen Keine Bezugnahme auf Bedeutung (Semantik) Nur syntaktische Manipulation von Formeln (Zeichenketten) Eigenschaften logischer Kalküle: Korrektheit: Kalkül beweist nur wahre Aussagen (widerlegt nur falsche Aussagen). Vollständigkeit: Jede wahre Aussage ist im Kalkül beweisbar (jede falsche Aussage ist widerlegbar). In dieser Vorlesung: Sequentialkalkül, Tableaux und Resolution für Aussagenlogik Tableaux und Resolution für Prädikatenlogik 211 Syntax AV = {A, B, C, . . .} . . . (aussagenlogische) Variable t, f . . . (aussagenlogische) Konstanten Definition. Die Menge der aussagenlogischen Formeln AF ist die kleinste Menge, für die gilt (AF1) AV ⊆ AF (AF2) {t, f } ⊆ AF (AF3) ¬F ∈ AF , wenn F ∈ AF (AF4) (F ◦′ G) ∈ AF , wenn F, G ∈ AF und ◦′ ∈ {∧, ∨, ⊃, ⊂, ↑, ↓, 6⊃ , 6⊂ , 6≡ , 6≡ }. AV ∪ {t, f } . . . Atomare Formeln (Atome) 213 Semantik: INT . . . Variablenbelegungen/Interpretationen: AV → {t, f } Definition. Die Semantik aussagenlogischer Formeln ist durch die Funktion : INT × AF → {t, f } festgelegt: MAF (MAF1) MAF (I, A) = I(A), wenn A ∈ AV (MAF2) MAF (I, t) = t und MAF (I, f ) = f (F1 ∧ (. . . ∧ Fn )) Alternative Sichtweise von aussagenlogischen Formeln: Syntax: Terme über Datentyp B = h{t, f }, {¬, ∧, ∨, ⊃, . . .}, {}, {t, f }i 217 Satz. F und G sind äquivalent genau dann, wenn F ≡ G gültig ist. Definition. Zwei Formel F, G ∈ AF heißen äquivalent, wenn MAF (I, F ) = MAF (I, G) für alle I ∈ INT. Schreibweise: F ∼ G (s. Def. 3.22 im Skriptum) oder auch F = G. unerfüllbar, wenn MAF (I, F ) = f für alle I ∈ INT. widerlegbar, wenn MAF (I, F ) = f für ein I ∈ INT. (I heißt Gegenbeispiel für F .) erfüllbar, wenn MAF (I, F ) = t für ein I ∈ INT. (I heißt Modell von F .) gültig oder Tautologie, wenn MAF (I, F ) = t für alle I ∈ INT. Definition. Eine Formel F ∈ AF heißt 215 Dazu die Notationsvereinbarung: • Infix- statt Prefix-Notation =⇒ (MAF3) MAF (I, ¬F ) = ¬MAF (I, F ) (MAF4) MAF (I, (F ◦′ G)) = MAF (I, F ) ◦ MAF (I, G), wobei ◦ die zum Symbol ◦′ gehörende Funktion ist. Semantik: MAL entspricht MT über B steht für (F1 ∨ (. . . ∨ Fn )) Eigenschaften von Formeln: Vergleiche mit MBA ! 214 Satz. MAF (I, F ) = MAF (I ′ , F ) für alle I, I ′ ∈ INT mit I(A) = I ′ (A) für alle A in F (A ∈ AV ). Notationsvereinbarungen: • keine Unterstreichungen mehr F1 ∧ . . . ∧ Fn steht für • überflüssige Klammern können weggelassen werden: F1 ∨ . . . ∨ Fn Beachte: Klammereinsparungen sind durch die Semantik gerechtfertigt: Die Funktionen ∧ und ∨ sind assoziativ. 216 Beispiel. (Gültigkeit, Erfüllbarkeit) A ⊃ (B ⊃ A) ist gültig und daher auch erfüllbar: f t f A t t f f B t f t t t t t t (B ⊃ A) A ⊃ (B ⊃ A) t f f f A B f t t ¬B f f t f t t t f (A ∧ ¬B) ∨ B ist erfüllbar, aber nicht gültig, also auch widerlegbar: t t f (A ∧ ¬B) (A ∧ ¬B) ∨ B f t 218 t Funktionale Vollständigkeit Eine Menge von Operatoren heißt funktional vollständig, wenn alle Funktionen durch sie ausgedrückt werden können. t f f f f f f t t f f A B f t f t f t f C t f f f t f f f (B ∧ C) t t t t t t f f t t t t t f t f t t t t t f f f F t t t t t f f f G G t t t (A ∨ B) (A ∨ C) t t 219 t F A ∨ (B ∧ C) = (A ∨ B) ∧ (A ∨ C) . {z } | {z } | Beispiel. (Distributivgesetz ) h F · · · Fn 1 A1 · · · An h i . . . Substitution, die alle Ai durch Fi ersetzt. Formeln, Formelschemata, Substitutionen σ= = (A ↑ B) ↑ (A ↑ B) Satz. Gilt F ≡ G, dann auch F σ ≡ Gσ. Satz. Ist F eine Tautologie, dann auch F σ. i F1 · · · Fn . . . Formel, die aus F entsteht, indem alle A Fσ = F A i 1 · · · An durch Fi ersetzt werden (Instanz von F unter σ). A∧B = (A ↑ A) ↑ (B ↑ B) A∧B = ¬A ∨ B = ¬(¬A ∨ ¬B) A↓B A↑B = ¬(A ∨ B) = ¬A ∨ ¬B F h X∨¬Y ¬X∧Y A B i 221 Beispiel. F = (A ∧ (A ⊃ B)) ⊃ B ist gültig, daher auch = (X∨¬Y ) ∧ (X∨¬Y ) ⊃ (¬X∧Y ) ⊃ (¬X∧Y ) Das heißt: Formeln können als Schemata aufgefasst werden, wobei Variablen als Platzhalter für Formeln dienen. A∨B Beispiel. {↑} ist funktional vollständig. Etwa: = A ↑ (B ↑ B) ¬A = A ↑ A A⊃B Beispiel. {¬, ∨} ist funktional vollständig. Etwa: A⊃B 220 Äquiv. Substitution sind Äquiv.-erhaltend h A⊃B B B C Bσ2 i und σ2 = h ¬A∨B B B C i . Satz. Seien σ1 , σ2 Substitutionen, sodass Aσ1 ≡ Aσ2 für alle in der Formel F vorkommenden Variablen A gilt. Dann folgt: F σ1 ≡ F σ2 . Bσ1 (A ⊃ B) ≡ (¬A ∨ B) | {z } | {z } Beispiel. Sei F = (A ∧ B) ⊃ C, σ1 = Da gilt, erhalten wir F σ2 (A ∧ (A⊃B)) ⊃ B ≡ (A ∧ (¬A∨B)) ⊃ B | {z } | {z } F σ1 222 Logische Konsequenz und Implikation Definition. Formel G ist logische Konsequenz der Formeln F1 , . . . , Fn , geschrieben F1 , . . . , Fn |= G, wenn für alle I gilt: Wenn MAF (I, Fi ) = t für 1 ≤ i ≤ n, dann gilt MAF (I, G) = t. Für n = 0 ist |= G gleichbedeutend mit G ist gültig“. ” Satz. (Deduktionstheorem) F1 , . . . , Fn |= G gdw. F1 , . . . , Fn−1 |= (Fn ⊃ G). Folgerung. F1 , . . . , Fn |= G gilt gdw. F1 ⊃ (F2 ⊃ · · · (Fn ⊃ G) · · ·) gültig ist gdw. (F1 ∧ · · · ∧ Fn ) ⊃ G gültig ist. Beispiel. B ist eine logische Konsequenz aus A und A ⊃ B, d.h., es gilt A, A ⊃ B |= B. Die Formel A ∧ (A⊃B) ⊃ B ist daher eine Tautologie. 223 A 6⊃ B = A ∧ ¬B Satz. Zu jeder aussagenlogischen Formel gibt es eine äquivalente in DNF bzw. in KNF. A ⊃ B = ¬A ∨ B A 6⊂ B = ¬A ∧ B Normalformen A ⊂ B = A ∨ ¬B ¬(A ∨ B) = ¬A ∧ ¬B Schritt 2: Schiebe Negationen vor die Variablen. ¬(A ∧ B) = ¬A ∨ ¬B A∨t=t A ∨ f = A ¬t = f Schritt 3: Eliminiere die Konstanten t und f . A∧f =f 225 ¬f = t Schritt 4: Forme um in DNF/KNF mittels Distributivgesetz. A∧t=A ¬¬A = A (A ≡ B) = (A ∧ B) ∨ (¬A ∧ ¬B) (A 6≡ B) = (¬A ∧ B) ∨ (A ∧ ¬B) A ↓ B = ¬A ∧ ¬B Definition. A, ¬A Literal, falls A ∈ IVS . ∨ ··· ∨ A ↑ B = ¬A ∨ ¬B Syntaktische (algebraische) Methode: Schritt 1: Ersetze alle Operatoren durch ∧, ∨ und ¬. Seien Li,j Literale. Disjunktive Normalform (DNF): ∧ ··· ∧ (Lm,1 Lm,nm ) (L1,1 ∧ · · · ∧ L1,n1 ) ∨ · · · ∨ (Lm,1 ∧ · · · ∧ Lm,nm ) ∨ ···∨ L1,n1 ) Konjunktive Normalform (KNF, CNF): (L1,1 implizite Berücksichtigung von Assoz., Kommut., Idempotenz ⇒ Mengenschreibweise: {{L1,1 , . . ., L1,n1 }, . . ., {Lm,1 , . . ., Lm,nm }} (Li,1 ∨ · · · ∨ Li,ni ) heißt auch Klausel (engl. clause), eine KNF heißt auch Klauselnormalform (clause normal form). 224 Beispiel. (A ↑ (B ∨ C)) ⊃ ¬D Schritt 1: ¬(¬A ∨ ¬(B ∨ C)) ∨ ¬D Schritt 2: (A ∧ (B ∨ C)) ∨ ¬D Schritt 3: (A ∧ (B ∨ C)) ∨ ¬D DNF: (A ∨ ¬D) ∧ (B ∨ C ∨ ¬D) (A ∧ B) ∨ (A ∧ C) ∨ ¬D Schritt 4: Ausdistribuieren KNF: 226 Semantische Methode (Fortsetzung) _ A in F LA {{A, ¬D}, {B, C, ¬D}} I∈INT,MAF (I,F )=f LA = A falls I(A) = f ¬A falls I(A) = t enthält ein Literal LA für jede Variable A in Formel F : KNF(F ) = KNF: Enthält Disjunktion DI für jedes I mit MAF (I, F ) = f (wobei I auf die in F vorkommenden Var. eingeschränkt wird!): ^ DI DI DI = Es gilt: DI ist falsch nur in I, und wahr sonst, d.h.: MAF (I, DI ) = f und MAF (I ′ , DI ) = t für I ′ 6= I . KNF(F ) ist falsch in I gdw. KI in KNF(F ) vorkommt. Daher: MAF (I, KNF(F )) = f gdw. MAF (I, F ) = f . KNF(F ) ist die eindeutig bestimmte vollständige KNF von F : jede Disjunktion DI enthält alle Variablen (von F ). 228 Semantische Methode F ∈ AF . . . aussagenlogische Formel I∈INT,MAF (I,F )=t DNF: Enthält Konjunktion KI für jedes I mit MAF (I, F ) = t (wobei I auf die in F vorkommenden Var. eingeschränkt wird!): _ KI DNF(F ) = ^ A in F LA LA = A falls I(A) = t ¬A falls I(A) = f KI enthält ein Literal LA für jede Variable A in Formel F : KI = Es gilt: KI ist wahr nur in I, und falsch sonst, d.h.: MAF (I, KI ) = t und MAF (I ′ , KI ) = f für I ′ 6= I . DNF(F ) ist wahr in I gdw. KI in DNF(F ) vorkommt. Daher: MAF (I, DNF(F )) = t gdw. MAF (I, F ) = t . f f t t t A↑(B∨C) t t t t t f f f f f f t t t ¬D t t t t t f f f t f t t t t F A ∨ ¬B ∨ ¬C ∨ ¬D ¬A ∧ B ∧ ¬C ∧ ¬D KI bzw. DI DNF(F ) ist die eindeutig bestimmte vollständige DNF von F : Jede Konjunktion KI enthält alle Variablen (von F ). 227 f f f f t f f f t f t f t f t t t f t f t f Beispiel. F = (A ↑ (B ∨ C)) ⊃ ¬D f tf f t t t t t f f t t t t f f A B C D B∨C f f f f f t t t t t t f t (11 Konjunktionen) f t t t t f f f f t t t f t f t f t f t f t t t DNF(F ) = · · · ∨ (¬A ∧ B ∧ ¬C ∧ ¬D) ∨ · · · (5 Disjunktionen) t f f t t f f t t f f t t t t f t t t KNF(F ) = · · · ∧ (A ∨ ¬B ∨ ¬C ∨ ¬D) ∧ · · · 229 Eigenschaften von DNFs und KNFs • Eine DNF ist unerfüllbar, wenn jede Konjunktion eine Variable A enthält, die sowohl als A als auch als ¬A vorkommt. • Eine KNF ist gültig, wenn jede Disjunktion eine Variable A enthält, die sowohl als A als auch als ¬A vorkommt. • Die Länge einer DNF/KNF kann exponentiell größer sein als die ursprüngliche Formel. Ursache bei algebraischer Methode: Elimination von ≡ und 6≡, Anwenden der Distributivität. Ursache bei semantischer Methode: Anzahl der möglichen Interpretationen (vgl. Wahrheitstafel). 230