03.02.2014 Aufrufe

Spezifikationsmodule - Software and Systems Engineering - TUM

Spezifikationsmodule - Software and Systems Engineering - TUM

Spezifikationsmodule - Software and Systems Engineering - TUM

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.

Abhängigkeiten bezüglich dieser beiden Relationen erfüllen. Wir wissen zwar,<br />

dass aufgrund der Konstruktion der beiden Relationen für jedes Konstruktor<br />

bzw. Applikationspaar ein Ein- oder Ausgabepaar existiert, nicht jedoch ob für<br />

alle Ein-/Ausgabepaare die Terme unifiziert werden konnten. Wir müssen also<br />

überprüfen, ob es für alle Ein- und Ausgabeterme entsprechende Konstruktoroder<br />

Applikationsunifikationen gibt. Da Konstruktorenpaare auch durch Applikationspaare<br />

entst<strong>and</strong>en sein können, sind auch letztere in Bezug auf erstere<br />

zu prüfen. Nur dadurch können wir sicherstellen, dass die unifizierten Terme<br />

strukturäquivalent sind.<br />

Ein Beispiel soll Notwendigkeit dieser Zusatzprüfungen verdeutlichen. Abbildung<br />

5.5 zeigt die Termstruktur von drei Eingabeausdrücken. Die erste und<br />

der zweite Term, sowie der erste und der dritte, können nicht unifiziert werden,<br />

weil die obersten Elemente der Baumdarstellung ein Konstruktor und eine<br />

Applikation sind. Hierfür reicht die Überprüfung der Abhängigkeit zwischen<br />

Eingaberelation und Konstruktorrelation.<br />

p?Con1<br />

q?Con2(Con3)<br />

r?Con4(Con5(Con6))<br />

Con1<br />

Appl<br />

Appl<br />

Con2<br />

Con3<br />

Con4<br />

Appl<br />

Head<br />

Args<br />

Con5<br />

Con6<br />

Abbildung 5.5: Nicht-unifizierbare Termstrukturen<br />

Dass der zweite Term und dritte Term nicht unifiziert werden können, kann<br />

allerdings nur durch die Überprüfung der Applikationsrelation bewiesen werden,<br />

denn die Eingaberelation bezieht die Strukturäquivalenz nur auf das oberste<br />

Element des Terms. Bei der Überprüfung der Applikationsrelation tritt dann<br />

der Fehler im ersten Parameter zutage.<br />

Die genannten Abhängigkeiten können mit dem aus Kapitel 4 bekannten<br />

ODL St<strong>and</strong>ardausdrücken überprüft werden, weshalb wir hier auf eine Wiederholung<br />

des ODL Codes verzichten.<br />

Im Hinblick auf das Konstruktionsverfahren fordern wir wieder die Ein-Eindeutigkeit<br />

von den berechneten Relationen.<br />

Berechnung der Datentypvereinigungen<br />

Vorteil der verherigen umfangreichen Berechnung ist, dass wir nun die Datentyprelation<br />

sehr leicht ableiten können. Zwei Datentypdefinitionen sind zu unifizieren,<br />

wenn es ein Paar von vereinigten Schnittstellen oder vereinigten Konstruktoren<br />

gibt. Dies können wir, wie schon bekannt, durch die St<strong>and</strong>ardausdrücke<br />

für Abhängigkeiten bewerkstelligen.<br />

exists typedef_map:lfp FP_TDef set<br />

fp_tdef_it:(one:DataDef, two:DataDef)<br />

with (<br />

52

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!