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.

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).

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!