Download (1405Kb)
Download (1405Kb)
Download (1405Kb)
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
3.3. FORMALE SEMANTIKEN 47<br />
t = g(s1, . . .,sn): (g (n) ∈ Σ).<br />
Nach Induktionsvoraussetzung gilt für alle si:<br />
Somit folgt:<br />
[[si[t ′ /x]]] = [[si[t ′′ /x]]]<br />
[[t[t ′ /x]]]<br />
= [[g(s1[t ′ /x], s2[t ′ /x], . . .,sn[t ′ /x])]]<br />
I.V.<br />
= [[g(s1[t ′′ /x], s2[t ′′ /x], . . .,sn[t ′′ /x])]]<br />
= [[t[t ′′ /x]]]<br />
Operationelle Semantiken unserer Programme sollen also letztendlich immer Grundtermsemantiken<br />
sein. Dagegen sollen denotationelle Semantiken einem Programm einen Datentyp, eine Algebra<br />
zuordnen. Wie wir schon in der Einleitung angedeutet haben, kann aus einem solchen Datentyp<br />
leicht eine Eingabe-Ausgabe-Abbildung, d. h. eine Grundtermsemantik gewonnen werden.<br />
Definition 3.10 Algebraische Termsemantik<br />
Sei=〈A, α〉 eine Σ-Algebra, Y ⊆ X und β : Y →A eine Variablenbelegung. Die algebraische<br />
Termsemantik<br />
[[·]] alg<br />
: TΣ(Y )→A ,β<br />
ist für einen Term t ∈ TΣ(Y ) induktiv definiert durch<br />
[[x]] alg<br />
:= β(x) ,β<br />
[[g(ˆt1, . . ., ˆtn)]] alg<br />
:= g([[ˆt1]] ,β alg<br />
, . . . , [[ˆtn]] ,β alg<br />
,β )<br />
für alle x ∈ Y ,g (n) ∈ Σ und ˆt1, . . .,ˆtn ∈ TΣ(Y ).<br />
Ist t ein Grundterm, so ist β überflüssig und wir schreiben [[t]] alg<br />
. ✷<br />
Die algebraische Termsemantik [[·]] alg<br />
ist somit die eindeutige Fortsetzung von β zu einem Homo-<br />
,β<br />
morphismus von der frei über X erzeugten Termalgebra TΣ(X) in die Algebra. Daraus folgt auch<br />
direkt die Invarianz der auf Grundterme beschränkten algebraischen Termsemantik [[·]] alg : TΣ→A.<br />
Somit ist [[·]] alg eine Grundtermsemantik, die algebraische Grundtermsemantik.<br />
Umgekehrt können wir zu einer Grundtermsemantik auch Datentypen, d. h. Algebren definieren.<br />
Definition 3.11 Datentyp einer Grundtermsemantik<br />
Sei [[·]] : TΣ→A eine Grundtermsemantik. Dann heißt[·] = 〈A, α〉 genau dann ein Datentyp der<br />
Grundtermsemantik [·], wenn<br />
g(a1, . . .,an) = [[g(t1, . . .,tn)]]<br />
für alle g (n) ∈ Σ, t1, . . .,tn ∈ TΣ und a1, . . .,an ∈ A mit [[t1]] = a1, . . .,[[tn]] = an. ✷<br />
✷