S yntax vs. S em antik

Werbung
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
Herunterladen