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) = 1+2+3=6 1 Behandlung von Variablen Syntax: T ⇒ x | y | z | · · · Semantik: M(x) = 1 oder M(x) = 2 ? Speicherbelegung I: {x, y, z, . . .} → ω ENV . . . Menge aller Speicherbelegungen ( Environments“) ” Erweiterung der Semantikfunktion: M: ENV × T → ω M(I, 0) = 0, . . . , M(I, 9) = 9 M(I, v) = I(v) für v ∈ {x, y, z, . . .} M(I, ( t1 + t2 )) = M(I, t1 ) + M(I, t2 ) für t1 , t2 ∈ T 2 Beispiel. Auswertung von ((x +2 )+y) . . . für I(x) = 1, I(v) = 3 für alle v 6= x: M(I, ((x +2 )+y )) = M(I, (x+2 )) + M(I, y) = M(I, x) + M(I, 2) + M(I, y) = I(x) + 2 + I(y) = 1+2+3=6 . . . für J(x) = 5, J(y) = 2, J(v) = 0 sonst: M(J, (( x+2 )+y )) = M(J, ( x+2 )) + M(J, y) = M(J, x) + M(J, 2) + M(J, y) = J(x) + 2 + J(y) = 5+2+2=9 3 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 → ω Rekursion 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 ! t∈T →(t+t)∈T statt T ist nicht mehr kontextfrei! 4 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 → ω Rekursion = 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. 5 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 6 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 7 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 8 Ganze Zahlen: Z = hZ, {+, −, ∗}, {<, =}, Zi wobei Z = {. . ., −2, −1, 0, 1, 2, . . .} x−y 0 für x ≥ y für x < y . . . kleiner“-, bzw. ist-gleich“-Relation ” ” +, −, ∗ . . . übliche artihmetische Funtktionen <, = . y= x− Natürliche Zahlen: . ∗}, {<, =}, {0, 1}i N = hω, {+, −, wobei ω = {0, 1, 2, . . .} und (Ansonst wie für Z) 9 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) 10 Familie X: FamX = hDX , FX , PX , KX i wobei CX = 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 11 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 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, . . .} 12 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} 13 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, . . .} 14 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) 15 Semantik ENV (D) . . . Menge aller Abbildungen IVS → D (Variablenbelegungen, Environments, auch: Interpretationen) MT : ENV (D) × T (D) → D ist rekursiv definiert durch (M1) MT (I, v) = I(v) für v ∈ IVS ; (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 ′ ) 16 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); (BA4) ( F ∨ G ) ∈ BA(D), wenn F, G ∈ BA(D). 17 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 18 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 19 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 BA2 = = M BA1 M T 3,M T 2 = (−2 + 4 = 0) = (2 = 0) = f (MT (I, y+x) = MT (I, 0)) (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. 20 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. (AL4) Ist B ∈ BA(Z) und α ∈ ALI, dann ist while B do α ∈ ALI. 21 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! 22 Syntaktische Analyse AL1 • z ∈ IVS , 0 ∈ T (Z) =⇒ α1 = z ← 0 ∈ ALI AL1 • 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 23 Notationsvereinbarung: α1 ; α2 ; . . . ; αn steht für α1 ; begin α2 ; begin . . . ; αn end end 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. 24 Semantik von ALI Die Funktion MAL : ENV × ALI → ENV ist definiert durch: (MAL1) M (I, v ← t) = I ′ , wobei I ′ (v) = M (I, t) und AL T 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 25 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 M AL1 wobei I ′ (z) = MT (I, 0) = 0 und I ′ (v) = I(v) für v 6= z MBA (I ′ , (0<y) = (MT (I ′ , 0)<MT (I ′ , y)) = (0<I ′ (y)) M (I ′ , while (0<y) do β) AL = (0<I(y)) = (0<1) = t MAL (MAL (I ′ , β), while (0<y) do β) MAL (I, begin z ← 0; γ end) = MAL (MAL (I, z ← 0), γ) = MAL (I ′ , γ) = = M AL4 26 MAL (MAL (I ′ , β), while (0<y) do β) MAL (MAL (MAL (I ′ , z ← z+x), y ← y−1), while (0<y) do β) M AL2 = M AL1 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 AL4 27