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.
24 KAPITEL 2. GRUNDLAGEN<br />
t<br />
<br />
T T <br />
<br />
<br />
<br />
t ′<br />
T <br />
<br />
t<br />
<br />
<br />
′′<br />
T<br />
<br />
ˆt<br />
t<br />
∗<br />
T <br />
<br />
∗<br />
<br />
T <br />
<br />
t ′<br />
t<br />
<br />
∗<br />
T <br />
<br />
′′<br />
∗<br />
T<br />
<br />
ˆt<br />
−−→ heißt genau dann terminierend, wenn keine unendliche Folge (ti)i∈IN+ ̺<br />
mit ti −−→ ti+1 für<br />
̺<br />
alle i ∈ IN+ existiert (t1 −−→ t2 −−→ . . .).<br />
̺ ̺<br />
Starke Konfluenz impliziert Konfluenz, während die Umkehrung im allgemeinen nicht gilt. Wenn<br />
−−→ konfluent ist, besitzt jedes t ∈ T höchstens eine ̺-Normalform t↓ ̺<br />
̺. Wenn −−→ terminierend<br />
̺<br />
ist, besitzt jedes t ∈ T mindestens eine ̺-Normalform. Relationen −−→ , die sowohl konfluent als<br />
̺<br />
auch terminierend sind, heißen vollständig oder konvergent. Für vollständige −−→ besitzt jedes<br />
̺<br />
t ∈ T somit genau eine ̺-Normalform t↓̺. Die gerade definierten Begriffe und angegebenen Eigenschaften lassen sich nun insbesondere für die<br />
Reduktionsrelationen −−→ und −−→ verwenden.<br />
R,̺ R,̺<br />
Hierbei gebrauchen wir den Begriff ̺-Normalform für t↓R,̺, und, wenn ̺ die Menge aller Reduk-<br />
tionen ist, bezeichnen wir t↓ R schlicht als Normalform. Ein Term t ∈ TΣ ist genau dann eine<br />
Normalform, wenn RedOccR(t) = ∅ ist. Ist −−→<br />
konfluent, so heißt eine ̺-Reduktionsstrategie<br />
R<br />
genau dann normalisierend, wenn für alle t ∈ TΣ t↓R genau dann existiert, wenn t↓R,̺ existiert,<br />
und im Falle der Existenz t↓R = t↓R,̺ ist.<br />
∗<br />
∗<br />
Neben den Relationen −−→ und −−→<br />
R,̺ R,̺<br />
schreiben wir auch für endliche Reduktionsfolgen A =<br />
t1 −−→ . . . −−→ tn bzw. A<br />
R,̺ R,̺<br />
′ = t ′ 1 −−→ . . . −−→<br />
R,̺ R,̺<br />
t ′ ∗<br />
n mitunter A = t1 −−→ tn bzw. A<br />
R,̺<br />
′ = t ′ ∗<br />
1 −−→<br />
R,̺<br />
t ′ n.<br />
Ist −−→ terminierend/konfluent, so sagen wir auch, daß das Termersetzungssystem R terminie-<br />
R<br />
rend/konfluent ist.<br />
−−→ ist natürlich niemals terminierend. −−→ ist im allgemeinen weder terminierend noch kon-<br />
R,̺<br />
R<br />
fluent. Es ist unentscheidbar, ob R terminierend ist ([Huet&Lank78]), oder ob R konfluent ist<br />
([Bau&Otto84]).<br />
Im folgenden betrachten wir eine Teilmenge von Termersetzungssystemen, deren Reduktionsrelation<br />
immer konfluent und deren parallele Reduktionsrelation sogar stark konfluent ist.<br />
2.5.2 Beinahe orthogonale Termersetzungssyteme<br />
Termersetzungssysteme sind noch eine viel zu allgemeine Grundlage für unsere funktionalen Programmiersprachen.<br />
Insbesondere benötigen wir die Konfluenz der Reduktionsrelation, die jedoch<br />
im allgemeinen unentscheidbar ist, wie wir gerade festgestellt haben. Auch sind viele Eigenschaften<br />
des Reduktionsverhaltens schwer faßbar.<br />
Die syntaktisch eingeschränkteren beinahe orthogonalen Termersetzungssysteme stellen daher<br />
eine wichtige Teilmenge der allgemeinen Termersetzungssysteme dar. Sie werden im Prinzip<br />
in [Ros73] zum ersten Mal betrachtet und in [O’Do77] ausführlich behandelt. Freilich werden in<br />
diesen Werken noch keine Termersetzungssysteme in unserem Sinne definiert, worauf wir gleich<br />
noch eingehen werden. Von entscheidender Bedeutung ist die nur für beinahe orthogonale Termersetzungssysteme<br />
definierbare und auch schon in [Ros73] eingeführte Residuenabbildung. Sie