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.
52 KAPITEL 4. DIE STANDARDSEMANTIKEN<br />
Da ein Term nur höchstens eine li-Redexstelle besitzt, ist −−→ wirklich eine (deterministische)<br />
P,li<br />
Reduktionsstrategie. Wir definieren nun die li-Reduktionssemantik genauso wie die Normalformsemantik<br />
im letzten Kapitel, nur daß wir die li-Reduktionsstrategie anstelle von beliebigen Reduktionen<br />
mit −−→ verwenden.<br />
P<br />
Definition 4.2 li-Reduktionssemantik<br />
Die li-Reduktionssemantik<br />
[[·]] li P : TΣ→T ⊥ C<br />
ist für einen Term t ∈ TΣ definiert durch<br />
[[t]] li P :=<br />
<br />
t↓ P,li , falls t↓ P,li existiert und t↓ P,li ∈ TC ist,<br />
⊥ , andernfalls.<br />
Unsere Definition von (leftmost-)innermost Redexstellen unterscheidet sich von der üblichen, in 4.1<br />
gegebenen Definition von (leftmost-)innermost ∗ Redexen in zwei Punkten:<br />
Nicht jede Stelle eines innermost ∗ Redexes ist eine innermost Redexstelle.<br />
Beispiel 4.2 Undefinierte Funktion<br />
Das Programm P mit den Funktionssymbolen f (1) und a (0) bestehe allein aus der Programmregel<br />
f(x) → A<br />
In dem Term f(a) ist f(a) selbst der (leftmost-)innermost ∗ Redex, da a kein Redex ist. Mit der<br />
in 4.1 beschriebenen leftmost-innermost ∗ Reduktionsstrategie ergibt sich<br />
f(a) −−→<br />
P,li ∗ A<br />
Die Stelle ε in f(a) ist jedoch keine (leftmost-)innermost Redexstelle.f(a) besitzt überhaupt keine<br />
leftmost-innermost Redexstelle und ist somit schon in li-Normalform. Es gilt also<br />
[[f(a)]] li<br />
P = ⊥<br />
Sobald ein Term ein Funktions- oder Hilfssymbol enthält, zu dem keine jemals passende Reduktionsregel<br />
existiert, ist der Term vermittels li-Reduktion nicht mehr zu einem Konstruktorterm<br />
reduzierbar. Die Funktions- und Hilfssymboloperationen werden in diesem Fall als undefiniert betrachtet,<br />
da schließlich das Programm keinerlei Information über sie enthält. Außerdem ist nur auf<br />
diese Weise die Invarianz der li-Reduktionssemantik erreichbar.<br />
Umgekehrt befindet sich auch nicht an jeder innermost Redexstelle ein innermost∗ Redex. Die Verzweigungssymbole<br />
condG können im 2. und 3. Argument geschachtelt“ sein, so daß die Bezeichnung<br />
”<br />
” innermost“ eigentlich auch nicht mehr ganz passend ist. Dies ist jedoch nötig, um die Verzweigung<br />
überhaupt sinnvoll einsetzen zu können, wie das folgende Beispiel zeigt.<br />
✷<br />
✷