DGTranslation.hs revision edd35c6c970fa1707dc6ad7a3ba26119e0046223
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweModule : $Header$
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweDescription : Translation of development graphs along comorphisms
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweCopyright : Heng Jiang, Uni Bremen 2004-2006
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweLicense : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweMaintainer : jiang@tzi.de
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweStability : provisional
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LowePortability : non-portable(Logic)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard LoweTranslation of development graphs along comorphisms
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe Follows Sect. IV:4.3 of the CASL Reference Manual.
0b5ce10aee80822ecc7df77df92a5e24078ba196Andy Stormont ( libEnv_translation
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov , dg_translation
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe , showFromTo )
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovimport qualified Data.Map as Map
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankovimport qualified List as List (nub)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe-- | translation of a LibEnv (a map of globalcontext)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovlibEnv_translation :: LibEnv -> AnyComorphism -> Result LibEnv
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri PankovlibEnv_translation libEnv comorphism =
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov updateGc (Map.keys libEnv) libEnv []
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov where updateGc :: [LIB_NAME] -> LibEnv -> [Diagnosis] -> Result LibEnv
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov updateGc [] le diag = Result diag (Just le)
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov updateGc (k1:kr) le diagnosis =
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov let gc = lookupGlobalContext k1 le
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov Result diagTran gc' = dg_translation gc comorphism
0b5ce10aee80822ecc7df77df92a5e24078ba196Andy Stormont in updateGc kr (Map.update (\_ -> gc') k1 le)
0b5ce10aee80822ecc7df77df92a5e24078ba196Andy Stormont (diagnosis ++ diagTran)
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowedg_translation :: GlobalContext -> AnyComorphism -> Result GlobalContext
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowedg_translation gc acm@(Comorphism cidMor) =
a9478106a12424322498e53cf7cd75bd8a4d6004Yuri Pankov let labNodesList = labNodesDG $ devGraph gc
c10c16dec587a0662068f6e2991c29ed3a9db943Richard Lowe labEdgesList = labEdgesDG $ devGraph gc
(sourceLogic cid2) "DGTranslation.updateEdges"
(targetLogic cid2) "DGTranslation.updateEdges"
coerceSign sourceID slid "DGTranslation.fSign" sign >>=
sign' <- coerceSign lid slid "DGTranslation.fTh.sign" sign
thSens' <- coerceThSens lid slid "DGTranslation.fTh.sen" thSens
return $ G_theory tlid sign'' 0 (toThSens $ List.nub namedS) 0
coerceMorphism sourceID slid "DGTranslation.fMor" mor >>=