08.10.2013 Aufrufe

Download (1405Kb)

Download (1405Kb)

Download (1405Kb)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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 />

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!