| 1 | {- | |
|---|
| 2 | Module : $Id$ |
|---|
| 3 | Description : CspCASL instance of type class logic |
|---|
| 4 | Copyright : (c) Markus Roggenbach, Till Mossakowski and Uni Bremen 2003 |
|---|
| 5 | License : similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt |
|---|
| 6 | |
|---|
| 7 | Maintainer : M.Roggenbach@swansea.ac.uk |
|---|
| 8 | Stability : experimental |
|---|
| 9 | Portability : non-portable(import Logic.Logic) |
|---|
| 10 | |
|---|
| 11 | Here 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 | |
|---|
| 34 | module CspCASL.Logic_CspCASL(CspCASL(CspCASL)) where |
|---|
| 35 | |
|---|
| 36 | import Logic.Logic |
|---|
| 37 | |
|---|
| 38 | import CASL.AS_Basic_CASL |
|---|
| 39 | import CASL.Logic_CASL |
|---|
| 40 | import CASL.Morphism |
|---|
| 41 | import CASL.Sign |
|---|
| 42 | import CASL.SymbolParser |
|---|
| 43 | |
|---|
| 44 | --import CspCASL.AS_CspCASL |
|---|
| 45 | import qualified CspCASL.AS_CspCASL as AS_CspCASL |
|---|
| 46 | import qualified CspCASL.ATC_CspCASL() |
|---|
| 47 | import qualified CspCASL.CspCASL_Keywords as CspCASL_Keywords |
|---|
| 48 | import qualified CspCASL.Parse_CspCASL as Parse_CspCASL |
|---|
| 49 | import qualified CspCASL.Print_CspCASL () |
|---|
| 50 | import qualified CspCASL.SignCSP as SignCSP |
|---|
| 51 | import qualified CspCASL.StatAnaCSP as StatAnaCSP |
|---|
| 52 | |
|---|
| 53 | -- | Lid for CspCASL |
|---|
| 54 | data CspCASL = CspCASL deriving (Show) |
|---|
| 55 | |
|---|
| 56 | instance Language CspCASL |
|---|
| 57 | where |
|---|
| 58 | description _ = |
|---|
| 59 | "CspCASL - see\n\n"++ |
|---|
| 60 | "http://www.cs.swan.ac.uk/~csmarkus/ProcessesAndData/" |
|---|
| 61 | |
|---|
| 62 | instance SignExtension SignCSP.CspSign where |
|---|
| 63 | isSubSignExtension = SignCSP.isInclusion |
|---|
| 64 | |
|---|
| 65 | -- | Instance for CspCASL morphism extension (used for Category) |
|---|
| 66 | instance 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) |
|---|
| 73 | instance 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 |
|---|
| 86 | instance 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 |
|---|
| 101 | instance 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 |
|---|
| 118 | instance 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 |
|---|