08.10.2013 Aufrufe

Download (1405Kb)

Download (1405Kb)

Download (1405Kb)

MEHR ANZEIGEN
WENIGER ANZEIGEN

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.

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!