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.
4.2. DIE CBV-SEMANTIK 63<br />
folgt auch gleich die ω-Stetigkeit der Operationen (über der flachen Halbordnung). Die Verzweigungsoperationen<br />
des li-Datentyps sind gemäß dessen Definition und dem Korollar 4.3<br />
sowieso gleich den Verzweigungsoperationen des (ω-vollständigen) cbv-Fixpunktdatentyps.<br />
Somit ist D li P<br />
Schritt 2: D li P<br />
ω-vollständig und eine cbv-Interpretation.<br />
ist ein Fixpunkt der cbv-Transformation.<br />
Träger, Ordnung und Konstruktoroperationen von ΦP,cbv(Dli P ) und Dli P<br />
ΦP,cbv(Dli zeigen noch f P ) = f Dli<br />
P für alle f ∈ F( ˙∪ H).<br />
Für die Verzweigungssymbole condG ∈ H ist cond<br />
ΦP,cbv(Dli P )<br />
G<br />
= cond Dli<br />
P<br />
G gegeben.<br />
stimmen überein. Wir<br />
Sei f (n) ∈ F( ˙∪ {selG,i ∈ H}) und t1, . . .,tn ∈ TΣ, t 1, . . .,t n ∈ T ⊥ C mit [[t1]] li P = t 1, . . .,[[tn]] li P =<br />
t n.<br />
Fall 1: Es existiert eine Reduktionsregel f(p)→r ∈ ˆ P und eine Substitution σ : Var(p)→TC<br />
mit p1σ = t 1, . . .,pnσ = t n.<br />
Da t1 ↓ P,li = t 1 = ⊥, . . .,tn ↓ P,li = t n = ⊥, gilt:<br />
und somit<br />
f(t1, . . .,tn)<br />
∗<br />
∗<br />
−−→ f(t1 ↓<br />
P,li P,li, . . .,tn ↓P,li) −−→ rσ<br />
P,li<br />
[[f(t1, . . .,tn)]] li P = [[rσ]] li P.<br />
Gemäß der Definition der cbv-Transformation ist<br />
ΦP,cbv(Dli f<br />
P ) (t1, . . .,t n) = [[rσ]] alg<br />
.<br />
Nach Korollar 3.4, S. 48, über Datentypen einer Grundtermsemantik ist<br />
Insgesamt gilt also<br />
ΦP,cbv(Dli f P ) (t1, . . .,t n) = [[rσ]] alg<br />
Dli P<br />
[[rσ]] alg<br />
D li<br />
P<br />
= [[rσ]] li P.<br />
Fall 2: ⊥ /∈ {t 1, . . . , t n} und es existiert keine passende Regel.<br />
f(t1, . . .,tn)<br />
D li<br />
P<br />
= [[rσ]] li P = [[f(t1, . . .,tn)]] li P = f Dli<br />
P (t 1, . . .,t n).<br />
∗<br />
−−→<br />
P,li f(t1 ↓ P,li, . . . , tn ↓ P,li) = f(t1, . . . , tn)↓ P,li /∈ TC,<br />
ΦP,cbv(Dli f P ) (t1, . . .,t n) = ⊥ = [[f(t1, . . .,tn)↓ P,li ]] li P = [[f(t1, . . .,tn)]] li P = f Dli<br />
P (t1, . . .,t n).<br />
Fall 3: ⊥ ∈ {t 1, . . . , t n}.<br />
f(t1, . . .,tn) besitzt keine li-Konstruktornormalform. Somit ist<br />
ΦP,cbv(Dli f P ) (t1, . . .,t n) = ⊥ = [[f(t1, . . .,tn)]] li P = f Dli<br />
P (t1, . . .,t n).