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.
54 KAPITEL 4. DIE STANDARDSEMANTIKEN<br />
Beispiel 4.4 Invarianz der li-Reduktionssemantik<br />
liste1 → []:liste1<br />
liste2 → [[]]:liste2<br />
head(x:xs) → x<br />
liste1 und liste2 besitzen keine li-Normalform und somit ist<br />
Wegen<br />
head(liste1) −−→<br />
P,li<br />
head(liste2) −−→<br />
P,li<br />
ist aber auch<br />
[[liste1]] li<br />
P = ⊥ = [[liste2]] li<br />
P<br />
head([]:liste1) −−→<br />
P,li<br />
head([[]]:liste2) −−→<br />
P,li<br />
[[head(liste1)]] li P = ⊥ = [[head(liste2)]] li P.<br />
head([]:[]:liste1) −−→<br />
P,li<br />
head([[]]:[[]]:liste2) −−→<br />
P,li<br />
Hier ist das Problem also verschwunden, und in der Tat ist die li-Reduktionssemantik invariant.<br />
Lemma 4.1 Invarianz der li-Reduktionssemantik<br />
Die li-Reduktionssemantik [[·]] li P ist invariant. Sie ist also eine Grundtermsemantik.<br />
Beweis:<br />
Wir zeigen die Invarianz anhand ihrer in Lemma 3.3, S. 46, angegebenen Charakerisierung.<br />
Sei f (n) ∈ Σ und t1, . . .,tn, t ′ 1 , . . .,t′ n ∈ TΣ mit [[t1]] li P = [[t′ 1 ]]li P , . . .,[[tn]] li P = [[t′ n]] li P .<br />
Fall 1: f = condG oder [[t1]] li P = [[t′ 1 ]]li P<br />
= ⊥.<br />
Fall 1.1: Es existiert i ∈ [n] mit [[t1]] li P = ⊥, . . . , [[ti−1]] li P = ⊥, [[ti]] li P = ⊥.<br />
Somit besitzen weder ti noch t ′ i eine li-Konstruktornormalform (d. h. eine li-Normalform<br />
in TC).<br />
f(t1, . . .,ti, . . .,tn)<br />
f(t ′ 1, . . .,t ′ i, . . .,t ′ n)<br />
∗<br />
−−→<br />
P,li<br />
∗<br />
−−→<br />
P,li<br />
f(t1 ↓ P,li, . . .,ti−1 ↓ P,li , ti, . . .,tn)<br />
f(t ′ 1 ↓ P,li , . . .,t ′ i−1 ↓ P,li , t ′ i, . . .,t ′ n)<br />
Auch f(t1 ↓ P,li, . . .,ti−1 ↓ P,li , ti, . . .,tn) und f(t ′ 1 ↓ P,li , . . .,t′ i−1 ↓ P,li , t′ i , . . .,t′ n) besit-<br />
zen keine li-Konstruktornormalform. Damit ist [[f(t1, . . . , ti, . . . , tn)]] li P<br />
[[f(t ′ 1 , . . . , t′ i , . . . , t′ n)]] li P .<br />
Fall 1.2: [[t1]] li P = ⊥, . . . , [[tn]] li P<br />
Also ist<br />
= ⊥.<br />
f(t1, . . . , tn)<br />
f(t ′ 1, . . . , t ′ n)<br />
∗<br />
−−→<br />
P,li<br />
∗<br />
−−→<br />
P,li<br />
f(t1 ↓ P,li, . . .,tn ↓ P,li)<br />
f(t ′ 1 ↓ P,li , . . .,t ′ n ↓ P,li )<br />
...<br />
...<br />
✷<br />
= ⊥ =<br />
[[f(t1, . . . , tn)]] li P = [[f(t1 ↓ P,li, . . .,tn ↓ P,li)]] li P = [[f(t ′ 1 ↓ P,li , . . . , t ′ n ↓ P,li )]] li P = [[f(t ′ 1, . . .,t ′ n)]] li P.