root/trunk/CspCASL/Logic_CspCASL.hs @ 11216

Revision 11216, 4.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      :  $Id$
3Description :  CspCASL instance of type class logic
4Copyright   :  (c)  Markus Roggenbach, Till Mossakowski and Uni Bremen 2003
5License     :  similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
6
7Maintainer  :  M.Roggenbach@swansea.ac.uk
8Stability   :  experimental
9Portability :  non-portable(import Logic.Logic)
10
11Here is the place where the class Logic is instantiated for CspCASL.
12   Also the instances for Syntax an Category.
13-}
14{-
15   todo:
16     - writing real functions
17     - Modul Sign.hs mit CSP-CASL-Signaturen und Morphismen, basiernd
18       auf CASL.Sign
19          CSP-CASL-Signatur = (CASL-Sig,Menge von Kanalnamen)
20          CSP-CASL-Morphismus = (CASL-Morphismus, Kanalnamenabbildung)
21                      oder nur CASL-Morphismus
22          SYMB_ITEMS SYMB_MAP_ITEMS: erstmal von CASL (d.h. nur CASL-Morphismus)
23     - instance Sentences
24        Sätze = entweder CASL-Sätze oder CSP-CASL-Sätze
25        Rest soweit wie möglich von CASL übernehmen
26     - statische Analyse (gemäß Typ in Logic.Logic) schreiben
27       und unten für basic_analysis einhängen
28
29    Kür:
30     - Teillogiken (instance SemiLatticeWithTop ...)
31
32-}
33
34module CspCASL.Logic_CspCASL(CspCASL(CspCASL)) where
35
36import Logic.Logic
37
38import CASL.AS_Basic_CASL
39import CASL.Logic_CASL
40import CASL.Morphism
41import CASL.Sign
42import CASL.SymbolParser
43
44--import CspCASL.AS_CspCASL
45import qualified CspCASL.AS_CspCASL as AS_CspCASL
46import qualified CspCASL.ATC_CspCASL()
47import qualified CspCASL.CspCASL_Keywords as CspCASL_Keywords
48import qualified CspCASL.Parse_CspCASL as Parse_CspCASL
49import qualified CspCASL.Print_CspCASL ()
50import qualified CspCASL.SignCSP as SignCSP
51import qualified CspCASL.StatAnaCSP as StatAnaCSP
52
53-- | Lid for CspCASL
54data CspCASL = CspCASL deriving (Show)
55
56instance Language CspCASL
57    where
58      description _ =
59        "CspCASL - see\n\n"++
60        "http://www.cs.swan.ac.uk/~csmarkus/ProcessesAndData/"
61
62instance SignExtension SignCSP.CspSign where
63  isSubSignExtension = SignCSP.isInclusion
64
65-- | Instance for CspCASL morphism extension (used for Category)
66instance MorphismExtension SignCSP.CspSign SignCSP.CspAddMorphism where
67  ideMorphismExtension _ = SignCSP.emptyCspAddMorphism
68  composeMorphismExtension = SignCSP.composeCspAddMorphism
69  inverseMorphismExtension = SignCSP.inverseCspAddMorphism
70  isInclusionMorphismExtension _ = True -- missing!
71
72-- | Instance of Sentences for CspCASL (missing)
73instance Sentences CspCASL
74    SignCSP.CspCASLSen   -- sentence (missing)
75    SignCSP.CspCASLSign     -- signature
76    SignCSP.CspMorphism     -- morphism
77    Symbol               -- symbol
78    where
79      parse_sentence CspCASL = Nothing
80      map_sen CspCASL mor sen =
81        if isInclusionMorphism isInclusionMorphismExtension mor
82        then return sen
83        else fail "renaming in map_sen CspCASL not implemented"
84
85-- | Syntax of CspCASL
86instance Syntax CspCASL
87    AS_CspCASL.CspBasicSpec -- basic_spec
88    SYMB_ITEMS              -- symb_items
89    SYMB_MAP_ITEMS          -- symb_map_items
90    where
91      parse_basic_spec CspCASL =
92          Just Parse_CspCASL.cspBasicSpec
93      parse_symb_items CspCASL =
94          Just $ symbItems CspCASL_Keywords.csp_casl_keywords
95      parse_symb_map_items CspCASL =
96          Just $ symbMapItems CspCASL_Keywords.csp_casl_keywords
97
98-- lattices (for sublogics) missing
99
100-- | Instance of Logic for CspCASL
101instance Logic CspCASL
102    ()                      -- Sublogics (missing)
103    AS_CspCASL.CspBasicSpec -- basic_spec
104    SignCSP.CspCASLSen   -- sentence (missing)
105    SYMB_ITEMS              -- symb_items
106    SYMB_MAP_ITEMS          -- symb_map_items
107    SignCSP.CspCASLSign         -- signature
108    SignCSP.CspMorphism     -- morphism
109    Symbol
110    RawSymbol
111    ()                      -- proof_tree (missing)
112    where
113      stability CspCASL = Experimental
114      data_logic CspCASL = Just (Logic CASL)
115      empty_proof_tree _ = ()
116
117-- | Static Analysis for CspCASL
118instance StaticAnalysis CspCASL
119    AS_CspCASL.CspBasicSpec -- basic_spec
120    SignCSP.CspCASLSen   -- sentence (missing)
121    SYMB_ITEMS              -- symb_items
122    SYMB_MAP_ITEMS          -- symb_map_items
123    SignCSP.CspCASLSign         -- signature
124    SignCSP.CspMorphism     -- morphism
125    Symbol
126    RawSymbol
127    where
128      basic_analysis CspCASL =
129          Just StatAnaCSP.basicAnalysisCspCASL
130      stat_symb_map_items CspCASL = error "Logic_CspCASL.hs"
131      stat_symb_items CspCASL = error "Logic_CspCASL.hs"
132      empty_signature CspCASL = SignCSP.emptyCspCASLSign
133      inclusion CspCASL =
134          sigInclusion SignCSP.emptyCspAddMorphism
135          SignCSP.isInclusion const -- this is still wrong
136      signature_union CspCASL s =
137          return . addSig SignCSP.addCspProcSig s
Note: See TracBrowser for help on using the browser.