root/trunk/Comorphisms/CspCASL2Modal.hs @ 11216

Revision 11216, 3.7 kB (checked in by maeder, 11 months ago)

extended symbol kinds i.e. for CspCASL

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1{- |
2Module      :  $Header$
3Copyright   :  (c) Till Mossakowski and Uni Bremen 2004
4License     :  similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
5
6Maintainer  :  till@informatik.uni-bremen.de
7Stability   :  provisional
8Portability :  non-portable (imports Logic.Logic)
9
10The embedding comorphism from CspCASL to ModalCASL.
11   It keeps the CASL part and interprets the CspCASL LTS semantics as
12   Kripke structure
13-}
14
15module Comorphisms.CspCASL2Modal where
16
17import Logic.Logic
18import Logic.Comorphism
19import qualified Data.Set as Set
20import Common.Id
21
22-- CASL
23import CASL.Sign
24import CASL.AS_Basic_CASL
25import CASL.Morphism
26
27-- CspCASL
28import CspCASL.Logic_CspCASL
29import CspCASL.SignCSP
30import CspCASL.AS_CspCASL (CspBasicSpec (..))
31
32-- ModalCASL
33import Modal.Logic_Modal
34import Modal.AS_Modal
35import Modal.ModalSign
36
37-- | The identity of the comorphism
38data CspCASL2Modal = CspCASL2Modal deriving (Show)
39
40instance Language CspCASL2Modal -- default definition is okay
41
42instance Comorphism CspCASL2Modal
43               CspCASL ()
44               CspBasicSpec CspCASLSen SYMB_ITEMS SYMB_MAP_ITEMS
45               CspCASLSign
46               CspMorphism
47               Symbol RawSymbol ()
48               Modal ()
49               M_BASIC_SPEC ModalFORMULA SYMB_ITEMS SYMB_MAP_ITEMS
50               MSign
51               ModalMor
52               Symbol RawSymbol () where
53    sourceLogic CspCASL2Modal = CspCASL
54    sourceSublogic CspCASL2Modal = ()
55    targetLogic CspCASL2Modal = Modal
56    mapSublogic CspCASL2Modal _ = Just ()
57    map_theory CspCASL2Modal = return . simpleTheoryMapping mapSig mapSen
58    map_morphism CspCASL2Modal = return . mapMor
59    map_sentence CspCASL2Modal _ = return . mapSen
60    map_symbol CspCASL2Modal = Set.singleton . mapSym
61
62mapSig :: CspCASLSign -> MSign
63mapSig sign =
64     (emptySign emptyModalSign) {sortSet = sortSet sign
65               , sortRel = sortRel sign
66               , opMap = opMap sign
67               , assocOps = assocOps sign
68               , predMap = predMap sign }
69    -- ??? add modalities
70
71mapMor :: CspMorphism -> ModalMor
72mapMor m = (embedMorphism emptyMorExt (mapSig $ msource m) $ mapSig $ mtarget m)
73  { sort_map = sort_map m
74  , op_map = op_map m
75  , pred_map = pred_map m }
76    -- ??? add modalities
77
78
79mapSym :: Symbol -> Symbol
80mapSym = error "CspCASL2Modal.mapSym not yet implemented"
81   -- needs to be changed once modal symbols are added
82
83
84mapSen :: CspCASLSen -> ModalFORMULA
85mapSen _f = True_atom nullRange
86
87{- case f of
88    Quantification q vs frm ps ->
89        Quantification q vs (mapSen frm) ps
90    Conjunction fs ps ->
91        Conjunction (map mapSen fs) ps
92    Disjunction fs ps ->
93        Disjunction (map mapSen fs) ps
94    Implication f1 f2 b ps ->
95        Implication (mapSen f1) (mapSen f2) b ps
96    Equivalence f1 f2 ps ->
97        Equivalence (mapSen f1) (mapSen f2) ps
98    Negation frm ps -> Negation (mapSen frm) ps
99    True_atom ps -> True_atom ps
100    False_atom ps -> False_atom ps
101    Existl_equation t1 t2 ps ->
102        Existl_equation (mapTERM t1) (mapTERM t2) ps
103    Strong_equation t1 t2 ps ->
104        Strong_equation (mapTERM t1) (mapTERM t2) ps
105    Predication pn as qs ->
106        Predication pn (map mapTERM as) qs
107    Definedness t ps -> Definedness (mapTERM t) ps
108    Membership t ty ps -> Membership (mapTERM t) ty ps
109    Sort_gen_ax constrs isFree -> Sort_gen_ax constrs isFree
110    _ -> error "CspCASL2Modal.mapSen"
111
112mapTERM :: TERM () -> TERM M_FORMULA
113mapTERM t = case t of
114    Qual_var v ty ps -> Qual_var v ty ps
115    Application opsym as qs  -> Application opsym (map mapTERM as) qs
116    Sorted_term trm ty ps -> Sorted_term (mapTERM trm) ty ps
117    Cast trm ty ps -> Cast (mapTERM trm) ty ps
118    Conditional t1 f t2 ps ->
119       Conditional (mapTERM t1) (mapSen f) (mapTERM t2) ps
120    _ -> error "CspCASL2Modal.mapTERM"
121
122-}
Note: See TracBrowser for help on using the browser.