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.
3.1. DIE ABSTRAKTE SYNTAX 41<br />
Definition 3.3 Kanonische Hilfssymbole zu einer Signatur<br />
Sei C eine Signatur. Die dazugehörige Signatur kanonischer Hilfssymbole H ist definiert durch:<br />
H := {cond (3)<br />
G | G ∈ C} (Verzweigungssymbole)<br />
˙∪ {sel (1)<br />
G,i | G(n) ∈ C, i ∈ [n]} (Selektionssymbole)<br />
Dabei soll C ∩ H = ∅ sein. ✷<br />
Die Hilfssymbole fügen wir jetzt als dritte Teilsignatur zu unserer Programmsignatur hinzu.<br />
Definition 3.4 Programmsignatur mit Hilfssymbolen<br />
Sei Σ = (C, F) eine Programmsignatur. Sei H die Signatur der kanonischen Hilfssymbole zur Signatur<br />
der Konstruktorsymbole C mit H ∩Σ = ∅. Dann heißt Σ ′ := (C, H, F) Programmsignatur<br />
mit Hilfssymbolen. Auch hier verwenden wir oft schlicht Σ ′ = C ˙∪ H ˙∪ F. ✷<br />
Aus folgendem Grund haben wir kombinierte Test- und Verzweigungssymbole condG anstelle eines<br />
einzigen Verzweigungssymbols (if-then-else-fi) und von Testsymbolen für jedes Konstruktorsymbol<br />
(test (1)<br />
G ) definiert: Bei einer Trennung müßten wir die Existenz zweier verschiedener<br />
Konstruktorterme true, false ∈ TC voraussetzen, die durch ihre Verwendung als logische Werte<br />
ausgezeichnet wären. Bei der Verwendung von Sorten würde dies praktisch die Existenz einer Sorte<br />
Boolean voraussetzen. Außerdem ist der Einsatz des Tests im ersten Argument der Verzweigung<br />
üblicherweise dessen einzige Anwendung, so daß wir die beiden auch gleich verschmelzen können.<br />
Definition 3.5 Programm mit Hilfsfunktionen<br />
Sei Σ eine Programmsignatur mit Hilfssymbolen und X eine Variablenmenge. Ein geordnetes Paar<br />
von Termen<br />
f(x1, . . .,xn) → r<br />
mit f (n) ∈ F, x1, . . .,xn ∈ X paarweise verschieden und r ∈ TΣ({x1, . . .,xn}) heißt Programmregel<br />
mit Hilfsfunktionen. Eine endliche Menge P von Programmregeln mit Hilfsfunktionen, die<br />
die Eindeutigkeitsbedingung<br />
f(x1, . . .,xn)→r1, f(y1, . . .,yn)→r2 ∈ P =⇒ f(x1, . . .,xn)→r1 = f(y1, . . .,yn)→r2<br />
erfüllt, heißt Programm mit Hilfsfunktionen. ✷<br />
Die Einhaltung der Konsistenzbedingung<br />
Wenn eine rechte Regelseite r einen Teilterm t ′ = selG,i(t) besitzt, dann hat sie auch<br />
einen Teilterm t ′′ = condG(t, t1, t2), und t ′ ist ein Teilterm von t1, d. h. vor jeder Anwendung<br />
der Selektionsoperation wird sichergestellt, daß t = G(. . .).<br />
Formaler: Zu u ∈ Occ(r) mit r/u = t ′ existieren v, w mit u = v.2.w und r/v = t ′′ .<br />
ist sicherlich vernünftig, wird jedoch nicht verlangt. Auch für den Fall eines Verstoßes gegen diese<br />
Konsistenzbedingung sind die später betrachteten Semantiken definiert.<br />
Die Eindeutigkeitsbedingung besagt, daß zu jedem Funktionssymbol höchstens eine Programmregel<br />
existieren darf. Diese Forderung erfolgt mit der gleichen Intention wie bei der Eindeutigkeitsbedingung<br />
der Programme mit Pattern. Es handelt sich schlicht um eine angepaßte Form dieser Eindeutigkeitsbedingung,<br />
abgesehen davon, daß hier auch direkt der triviale Fall, daß zwei Programmregeln