This file describes the implementation task:
how to translate a development graph along a comorphism into an
isomorphic development graph
But unfortunately in German
Die Grundidee findet sich im CASL Reference Manual (LNCS 2960) auf
Seite 297-298 (Liegt hier als LNCS2960_297-298.pdf)
Hier nun eine Beschreibung auf Deutsch, die wir (Till und Klaus) um
notwendige Details anreichern werden:
- der �bersetzte Graph hat die gleiche Anzahl Knoten und Kanten wie
das Original, so dass jedem Originalknoten n ein Knoten R(n) im
�bersetzten Graph zugeordnet ist. Das gleiche gilt f�r Kanten.
- zu beachten ist das manch ein Comorphism Signaturen in Theorien
�bersetzt; dadurch kann es passieren, dass einige S�tze doppelt
erzeugt werden. Deshalb m�ssen aus den neu erzeugten S�tze noch die
ausgefiltert werden, die schon �ber andere Kanten importiert werden
- der �bersetzte Graph wird dann in einem neuen uDrawGraph Fenster
angezeigt.
- minimale Sublogic bez�glich aller Knoten f�r die Auswahl des
Comorphismus. (lessThanSublogic s. SPASS.CreateDFG)
- erstmal eine Fehlermeldung, wenn sich Links entlang
Comorphismus-�bersetzungen im DevGraph finden.
- Modul-Namen: Static.DGTranslation
GUI.DGTranslation
Static/test/dgTrans.hs
- statische Analyse bis zum DG
- minimale Sublogik
- �bersetzung mit PCFOL2CFOL
- Anzeige des Ergebnis in uDrawGraph
Datenstrukturen
siehe Static/DevGraph.hs
Der zu �bersetzende Typ ist GlobalContext, mittels rekursivem Abstieg.
Die eigentliche �bersetzung findet dann bei den Typen G_sign, G_theory,
G_morphism und GMorphism statt (dies sind Typen, die beim rekursiven
Abstieg vorkommen). Diese Typen m�ssen mit einem case ausgepackt werden,
und Signatur der G_sign (bzw. der Morphismus des G_morphism etc.) muss
mittles coerceSign (bzw. coerceMorphism) aus Logic.Coerce der
Quell-Logik des Comorphismus angepasst werden. Dazu muss der coerce-
Funktion die ausgepackte lid sowie die lid, die sich mittels
sourceLogic (siehe Logic.Comorphism) aus dem Comorphismus ergibt,
�bergeben werden. Nach Aufruf der Coerce-Funktion kann dann der
Comorphismus angewendet werden (map_sign, map_theory, map_morphism),
und das Resultat (zusammen mit der lid, die sich aus der targetLogic
des Comorphismus ergibt) in den neuen Entwicklungsgraphen eingetragen werden.
Sp�ter brauchen wir noch dies:
- f�r die �bersetzung nach OWL-DL brauchen wir eine M�glichkeit die
Kantentypen zu beschr�nken. Denn OWL-DL kennt nur "import"-Kanten.
Also brauchen wir f�r diese Richtung auch eine �bersetzung von
Hiding/Renaming-Kanten in import-Kanten.