| 1 | {- | |
|---|
| 2 | Module : $Header$ |
|---|
| 3 | Copyright : (c) Till Mossakowski and Uni Bremen 2003 |
|---|
| 4 | License : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt |
|---|
| 5 | |
|---|
| 6 | Maintainer : M.Roggenbach@swansea.ac.uk |
|---|
| 7 | Stability : provisional |
|---|
| 8 | Portability : non-portable (imports Logic.Logic) |
|---|
| 9 | |
|---|
| 10 | The embedding comorphism from CASL to CspCASL. |
|---|
| 11 | -} |
|---|
| 12 | |
|---|
| 13 | module Comorphisms.CASL2CspCASL where |
|---|
| 14 | |
|---|
| 15 | import Logic.Logic |
|---|
| 16 | import Logic.Comorphism |
|---|
| 17 | import Common.ProofTree |
|---|
| 18 | |
|---|
| 19 | -- CASL |
|---|
| 20 | import CASL.Logic_CASL |
|---|
| 21 | import CASL.Sublogic as SL |
|---|
| 22 | import CASL.Sign |
|---|
| 23 | import CASL.AS_Basic_CASL |
|---|
| 24 | import CASL.Morphism |
|---|
| 25 | |
|---|
| 26 | -- CspCASL |
|---|
| 27 | import CspCASL.Logic_CspCASL |
|---|
| 28 | import CspCASL.AS_CspCASL (CspBasicSpec (..)) |
|---|
| 29 | import CspCASL.SignCSP |
|---|
| 30 | |
|---|
| 31 | -- | The identity of the comorphism |
|---|
| 32 | data CASL2CspCASL = CASL2CspCASL deriving (Show) |
|---|
| 33 | |
|---|
| 34 | instance Language CASL2CspCASL -- default definition is okay |
|---|
| 35 | |
|---|
| 36 | instance Comorphism CASL2CspCASL |
|---|
| 37 | CASL CASL_Sublogics |
|---|
| 38 | CASLBasicSpec CASLFORMULA SYMB_ITEMS SYMB_MAP_ITEMS |
|---|
| 39 | CASLSign |
|---|
| 40 | CASLMor |
|---|
| 41 | Symbol RawSymbol ProofTree |
|---|
| 42 | CspCASL () |
|---|
| 43 | CspBasicSpec CspCASLSen SYMB_ITEMS SYMB_MAP_ITEMS |
|---|
| 44 | CspCASLSign |
|---|
| 45 | CspMorphism |
|---|
| 46 | Symbol RawSymbol () where |
|---|
| 47 | sourceLogic CASL2CspCASL = CASL |
|---|
| 48 | sourceSublogic CASL2CspCASL = SL.top |
|---|
| 49 | targetLogic CASL2CspCASL = CspCASL |
|---|
| 50 | mapSublogic CASL2CspCASL _ = Just () |
|---|
| 51 | map_theory CASL2CspCASL = return . simpleTheoryMapping mapSig mapSen |
|---|
| 52 | map_morphism CASL2CspCASL = return . mapMor |
|---|
| 53 | map_sentence CASL2CspCASL _sig = return . mapSen -- toSentence sig |
|---|
| 54 | -- this function has now the error implementation as default |
|---|
| 55 | -- map_symbol = errMapSymbol -- Set.singleton . mapSym |
|---|
| 56 | has_model_expansion CASL2CspCASL = True |
|---|
| 57 | is_weakly_amalgamable CASL2CspCASL = True |
|---|
| 58 | isInclusionComorphism CASL2CspCASL = True |
|---|
| 59 | |
|---|
| 60 | mapSig :: CASLSign -> CspCASLSign |
|---|
| 61 | mapSig sign = |
|---|
| 62 | (emptySign emptyCspSign) {sortSet = sortSet sign |
|---|
| 63 | , sortRel = sortRel sign |
|---|
| 64 | , opMap = opMap sign |
|---|
| 65 | , assocOps = assocOps sign |
|---|
| 66 | , predMap = predMap sign } |
|---|
| 67 | |
|---|
| 68 | mapMor :: CASLMor -> CspMorphism |
|---|
| 69 | mapMor m = |
|---|
| 70 | (embedMorphism emptyCspAddMorphism (mapSig $ msource m) $ mapSig $ mtarget m) |
|---|
| 71 | { sort_map = sort_map m |
|---|
| 72 | , op_map = op_map m |
|---|
| 73 | , pred_map = pred_map m } |
|---|
| 74 | |
|---|
| 75 | mapSen :: CASLFORMULA -> CspCASLSen |
|---|
| 76 | mapSen _ = emptyCCSen |
|---|