08.10.2013 Aufrufe

Download (1405Kb)

Download (1405Kb)

Download (1405Kb)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!