Download (1405Kb)
Download (1405Kb)
Download (1405Kb)
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
154 KAPITEL 7. SEQUENTIALITÄT<br />
In [Hup78] wird der Formalismus der rekursiven Abbildungen auf beliebige initiale Algebren übertragen.<br />
Auch hier ist leicht erkennbar, daß in unseren Programmiersprachen alle in diesem Sinne<br />
rekursiven Abbildungen über TC spezifizierbar sind.<br />
In [Ber&Tu80] und 2.4 und 4.2 in [Wir90] werden sogenannte berechenbare Datentypen, d. h. Algebren,<br />
deren Operationen alle berechenbar sind, definiert. Mit unseren Programmiersprachen sind<br />
nicht alle in diesem Sinne berechenbaren konstruktorbasierten Datentypen spezifizierbar. Immerhin<br />
existiert jedoch zu jedem berechenbaren Datentypein ς-Datentyp DP,ς, so daß DP,ς enthält,<br />
d. h. nur mehr Operationen besitzt aber ansonstengleicht. So ist eine Quadrierungsabbildung<br />
über den natürlichen Zahlen nicht ohne Verwendung einer anderen Abbildung, beispielsweise der<br />
Addition, definierbar (siehe Theorem 4.2.4 in [Wir90]).<br />
Interessant wäre noch ein absoluter Berechenbarkeitsbegriff, der auch die partiellen und unendlichen<br />
Konstruktorterme umfassen und dabei möglicherweise auch die Halbordnung des Rechenbereichs<br />
mit einbeziehen würde.<br />
Die obigen Aussagen über die absolute Berechungsstärke gelten für Programme mit Pattern und<br />
für Programme mit Hilfsfunktionen zusammen mit beliebigen ς-Semantiken.<br />
Eine andere Untersuchungsmöglichkeit ist ein direkter Vergleich zwischen den ς-Semantiken, d. h.<br />
den verschiedenen erzwungenen Striktheiten ς. Hierbei ist insbesondere von Interesse, ob es ein<br />
effektives Verfahren zur Übersetzung eines Programms P in ein Programm P ′ gibt, so daß der<br />
ς ′ -Datentyp von P ′ mit dem ς-Datentyp von P übereinstimmt. Aufgrund der unterschiedlichen<br />
Rechenbereiche werden die Operationen dabei nur über TC verglichen, und außerdem wird bei der<br />
Konstruktion von P ′ die Erweiterung der Signatur um zusätzliche Operationssymbole zugelassen.<br />
In [Noll95] werden in einem unseren Programmiersprachen ähnlichem Rahmen derartige Übersetzungsverfahren<br />
angegeben.<br />
Mit einem anderen Vergleich beschäftigen wir uns eingehender. Da wir zwei unterschiedliche Arten<br />
von Programmen definiert haben, vergleichen wir deren Ausdrucksstärke und prüfen die gegenseitige<br />
semantikerhaltende Übersetzbarkeit der Programme.<br />
7.2 Gegenseitige Übersetzbarkeit der Programme<br />
Präzise formuliert prüfen wir, ob ein Programm mit Hilfsfunktionen (mit Pattern), P, über der<br />
Programmsignatur Σ = (C, H, F) (Σ = (C, F)) in ein Programm mit Pattern (mit Hilfsfunktionen),<br />
P ′ , über Σ ′ = (C, F ˙∪ F ′ ) (Σ ′ = (C, H, F ˙∪ F ′ )) effektiv übersetzbar ist, so daß mit ς ′ (g) = ς(g) für<br />
alle g ∈ Σ ∩ Σ ′ für alle f ∈ F f DP,ς = f D P ′ ,ς ′ gilt. Wir lassen also die Erweiterung um zusätzliche<br />
Funktionssymbole zu. Da die erzwungene Striktheit (für die gemeinsamen Operationssymbole) fest<br />
ist, können wir die Operationen über dem gesamten Rechenbereich TC,ς vergleichen.<br />
Die semantikerhaltende Übersetzung von Programmen mit Hilfsfunktionen in Programme mit Pattern<br />
ist trivial, da die assoziierten Termersetzungssysteme von Programmen mit Hilfsfunktionen<br />
praktisch Programme mit Pattern sind. Ist P ein Programm mit Hilfsfunktionen über Σ = (C, H, F),<br />
so erfüllt P ′ := ˆ P über Σ = (C, F ˙∪ H) obige Bedingung.<br />
Eine weitere natürliche Forderung ist hierbei jedoch noch nicht erfüllt. Ist die erzwungene Striktheit<br />
ς = cbn, so soll auch ς ′ = cbn sein, und wenn ς = cbv, dann soll ς ′ = cbv sein. Letztere Bedingung<br />
ist problematisch, da die Verzweigungssymbole an den jeweils letzten zwei Argumentstellen auch in<br />
der cbv-Semantik nicht-strikt sind, während die Funktionssymbole dann alle erzwungen strikt sein<br />
müssen.