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 55<br />
Fall 2: f = condG ∈ H und [[t1]] li P = [[t′ 1 ]]li P = ⊥.<br />
O. B. d.A. sei (t1 ↓P,li)(ε) = G.<br />
condG(t1, t2, t3)<br />
condG(t ′ 1 , t′ 2 , t′ 3 )<br />
∗<br />
−−→<br />
P,li<br />
∗<br />
P,li<br />
−−→<br />
condG(t1 ↓ P,li, t2, t3)<br />
condG(t ′ 1 ↓ P,li , t′ 2 , t′ 3 )<br />
Somit ist [[condG(t1, t2, t3)]] li P = [[t2]] li P = [[t′ 2 ]]li P = [[condG(t ′ 1 , t′ 2 , t′ 3 )]]li P .<br />
∗<br />
−−→<br />
P,li<br />
∗<br />
P,li<br />
−−→<br />
Die li-Reduktionsstrategie ist nicht normalisierend. Für die li ∗ -Reduktion gilt sogar, daß die mit<br />
einem Term t beginnende li ∗ -Reduktionsfolge nur genau dann terminiert, wenn von diesem Term<br />
überhaupt keine unendliche Reduktionsfolge ausgeht (Theorem 11 und 16 in [O’Do77]). Daher<br />
wurde sie in der Literatur oft als unvollständig bezeichnet ([Vui74], [Dow&Se76], [Ber&Lévy77]).<br />
Zum ersten Mal gibt [de Bakker76] im Rahmen des λ-Kalküls eine denotationelle Fixpunktsemantik<br />
für sie an.<br />
4.2.2 Die Fixpunktsemantik<br />
Wir geben nun eine denotationelle Definition der cbv-Semantik an. Dafür ordnen wir einem Programm<br />
einen Datentyp, eine Algebra als Semantik zu.<br />
Zuerst betrachten wir den Basisdatentyp, da dieser unabhängig von einem konkreten Programm ist,<br />
und wir diesen daher ein für allemal festlegen können. Die Datenelemente sollen aus Konstruktoren<br />
aufgebaut sein. Der Träger besteht somit aus den Konstruktortermen TC und dem Element ⊥ für die<br />
Undefiniertheit, ist also der schon bei der li-Reduktionssemantik verwendete Rechenbereich. Dies<br />
ist natürlich auch wesentlich, da der Datentyp ein Datentyp der li-Reduktionssemantik sein soll.<br />
Die Konstruktoren werden wie in einer Herbrandalgebra durch sich selbst interpretiert. Schließlich<br />
gehören noch die Operationen der Funktionssymbole, die zu deren Reduktionsregeln passen müssen,<br />
zum Basisdatentyp.<br />
Wir verzichten hier jedoch auf die formale Definition des Basisdatentyps und nähern uns stattdessen<br />
dem festzulegenden Datentyp des Programms auf etwas andere Weise. Wir definieren die<br />
Menge der Interpretationen: die Menge der Σ-Algebren, die, ohne daß wir Informationen über das<br />
konkrete Programm benutzen, potentielle Datentypen des Programms sind. Damit besteht eine Interpretation<br />
im Prinzip aus dem Basisdatentyp plus den Operationen der Funktionssymbole, wobei<br />
letztere beliebig sein können. Wie wir schon erwähnten, weichen wir bezüglich der Hilfsoperationen<br />
vom Konzept des Basisdatentyps etwas ab. Die Operationen der Hilfssymbole lassen sich aus den<br />
Reduktionsregeln auf genau die gleiche Art gewinnen wie die Operationen der Funktionssymbole,<br />
weshalb wir die Hilfsoperationen in den Interpretationen ebenfalls noch nicht festlegen.<br />
Definition 4.3 cbv-Interpretation<br />
Sei 〈T⊥ C , ✂〉 die flache Halbordnung des Rechenbereichs mit ⊥ als kleinstem Element. Sei<br />
α : <br />
Σn→[(T ⊥ C ) n →T ⊥ C ]<br />
n∈IN<br />
eine Zuordnung von ω-stetigen Operationen an die Operationssymbole mit<br />
<br />
G(t<br />
α(G)(t1, . . .,t n) = 1, . . .,t n) , falls t1, . . . , tn ∈ TC<br />
⊥ , andernfalls<br />
α(f)(t 1, . . .,t n) = ⊥ , wenn ⊥ ∈ {t 1, . . .,t n}<br />
α(condG)(⊥, t 1, t 2) = α(selG,i)(⊥) = ⊥<br />
t2<br />
t ′ 2<br />
✷