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.
7.3. SEQUENTIALITÄT 157<br />
Auf den ersten Blick scheint es, als könnte dieses Problem durch das Verbieten überlappender linker<br />
Programmregelseiten beseitigt werden. Berrys Beispiel zeigt jedoch, daß dem keinesfalls so ist:<br />
Beispiel 7.4 Berrys Beispiel (S. 280 in [Ber&Cur82], S. 188 in [Fie&Har88], [Lav87])<br />
Weder<br />
noch<br />
noch<br />
f(x,A,B) → C<br />
f(B,x,A) → D<br />
f(A,B,x) → E<br />
f1(x,y,z) → cond A/B(x,. . .)<br />
f2(x,y,z) → cond A/B(y,. . .)<br />
f3(x,y,z) → cond A/B(z,. . .)<br />
stellen Ansätze für eine semantikerhaltende Übersetzung dar, da<br />
f DP 1 ,cbn<br />
1 (⊥,A,B) = ⊥ , aber f DP,cbn(⊥,A,B) = C<br />
f DP 2 ,cbn<br />
2 (B, ⊥,A) = ⊥ , aber f DP,cbn(B, ⊥,A) = D<br />
f DP 3 ,cbn<br />
3 (A,B, ⊥) = ⊥ , aber f DP,cbn(A,B, ⊥) = E<br />
ist. ✷<br />
Wir haben in beiden Beispielen die cbn-Semantik verwendet. Tatsächlich existiert das dargestellte<br />
Problem in der cbv-Semantik nicht. Dort werden bekanntlich — wie auch aus der li-<br />
Reduktionssemantik direkt ersichtlich — vor dem ” Funktionsaufruf“ die Funktionsargumente<br />
vollständig ausgewertet. Somit können die Konstruktortests in einer beliebigen Reihenfolge erfolgen.<br />
Für die cbv-Semantik lassen sich Programme mit Pattern also offensichtlich semantikerhaltend<br />
in Programme mit Hilfsfunktionen übersetzen.<br />
Für alle anderen erzwungenen Striktheiten ς sind jedoch leicht zu den obigen Beispielprogrammen<br />
analoge Programme konstruierbar.<br />
Die bisherige Argumentation für die Unmöglichkeit einer Übersetzung ist zwar intuitiv einleuchtend,<br />
aber stellt noch keinen formalen Beweis dar. Diesen führen wir im folgenden Abschnitt.<br />
7.3 Sequentialität<br />
In Programmen mit Hilfsfunktionen können die Argumente einer Funktion nur nacheinander auf<br />
ihre Konstruktorsymbolkomponenten getestet werden. Dies führt dazu, daß alle durch Programme<br />
mit Hilfsfunktionen spezifizierten Operationen in einem gewissen Sinne sequentiell sind.