Download (1405Kb)
Download (1405Kb)
Download (1405Kb)
Erfolgreiche ePaper selbst erstellen
Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.
4.2. DIE CBV-SEMANTIK 61<br />
Definition 4.6 li-Datentyp<br />
Sei 〈T⊥ C , α〉 der Datentyp der li-Reduktionssemantik, dessen Operationen abgesehen von den Verzweigungsoperationen<br />
alle strikt sind, und für den<br />
⎧<br />
⎪⎨<br />
α(condG)(t1, t2, t3) :=<br />
⎪⎩<br />
für alle condG ∈ H und t1, t2, t3 ∈ T⊥ C gilt.<br />
〈T⊥ C<br />
⊥ , falls t1 = ⊥<br />
t2 , falls eine Variablenbelegung β : {x1, . . .,xn}→TC<br />
mit [[G(x1, . . .,xn)]] alg<br />
⊥cbv,β = t t3 ,<br />
1 (= ⊥) existiert<br />
andernfalls<br />
, ✂〉 sei die flache Halbordnung des Rechenbereichs.<br />
Dann heißt Dli P := 〈T⊥C , ✂, α〉 li-Datentyp ✷<br />
Die Ergänzung um die flache Halbordnung wurde einzig und allein zur Vergleichbarkeit mit dem cbv-<br />
Fixpunktdatentyp Dfix P,cbv vorgenommen. Der li-Datentyp ist damit eine geordnete Algebra. Es ist<br />
noch zu zeigen, daß Dli P wohldefiniert ist, d. h. daß die geforderte Striktheit auch gegeben ist, wenn<br />
ein t⊥ ∈ TΣ mit [[t⊥]] li P = ⊥ existiert. Außerdem haben wir für den li-Datentyp zur Vereinfachung des<br />
Übereinstimmungsbeweises die Verzweigungsoperationen vollständig neu angegeben. Wir müssen<br />
zeigen, daß diese mit der li-Reduktionssemantik übereinstimmen. Andernfalls gäbe es gar keinen<br />
li-Datentyp.<br />
Lemma 4.4 Wohldefiniertheit des li-Datentyps<br />
Der li-Datentyp, Dli P , ist wohldefiniert, d.h. es gilt<br />
[[g(t)]] li P = ⊥<br />
für alle g (n) ∈ Σ \ {condG ∈ H} und t ∈ (TΣ) n mit ⊥ ∈ {[[t1]] li P , . . . , [[tn]] li P }<br />
und<br />
[[condG(t1, t2, t3)]] li ⎧<br />
⊥ , falls t1 = ⊥<br />
⎪⎨ t2 , falls eine Variablenbelegung β : {x1, . . .,xn}→TC<br />
P =<br />
mit [[G(x1, . . .,xn)]]<br />
⎪⎩<br />
alg<br />
⊥cbv,β = t1 (= ⊥) existiert<br />
t3 , andernfalls<br />
für alle condG ∈ H und t1, t2, t3 ∈ TΣ, t 1, t 2, t 3 ∈ T ⊥ C mit [[t1]] li P = t 1, [[t2]] li P = t 2, [[t3]] li P = t 3.<br />
Beweis:<br />
Teil 1: Ist für ein i ∈ [n] [[ti]] li P = ⊥, so besitzt ti keine li-Konstruktornormalform. Dann besitzt<br />
auch g(t1, . . .,tn) keine li-Konstruktornormalform und es gilt [[g(t)]] li P = ⊥.<br />
Teil 2: Fall 1: t1 = ⊥.<br />
Somit besitzt t1 keine li-Konstruktornormalform. Also besitzt auch condG(t1, t2, t3) keine<br />
li-Konstruktornormalform und es gilt [[condG(t1, t2, t3)]] li P = ⊥.<br />
Fall 2: Es existiert eine Variablenbelegung β : {x1, . . .,xn}→TC mit [[G(x1, . . .,xn)]] alg<br />
⊥cbv,β =<br />
t1 (= ⊥).<br />
Es ist<br />
t1 ↓P,li = t1 = [[G(x1, . . .,xn)]] alg<br />
⊥cbv,β = G(. . .),