Changeset 11215 for trunk/CspCASL/Trans_CspProver.hs
- Timestamp:
- 05.01.2009 15:46:06 (11 months ago)
- Files:
-
- 1 modified
-
trunk/CspCASL/Trans_CspProver.hs (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/CspCASL/Trans_CspProver.hs
r10931 r11215 15 15 module CspCASL.Trans_CspProver where 16 16 17 import CASL.AS_Basic_CASL (SORT, VAR) 17 import qualified CASL.AS_Basic_CASL as CASL_AS_Basic_CASL 18 import qualified CASL.Fold as CASL_Fold 19 import qualified CASL.Sign as CASL_Sign 18 20 19 21 import Common.Id 22 23 import qualified Comorphisms.CFOL2IsabelleHOL as CFOL2IsabelleHOL 20 24 21 25 import CspCASL.AS_CspCASL_Process … … 26 30 import Isabelle.IsaConsts 27 31 28 transProcess :: PROCESS -> Term29 transProcess pr = case pr of32 transProcess :: CASL_Sign.Sign () () -> PROCESS -> Term 33 transProcess caslSign pr = case pr of 30 34 -- precedence 0 31 35 Skip _ -> cspProver_skipOp … … 41 45 -- precedence 1 42 46 ConditionalProcess _ p q _ -> 43 cspProver_conditionalOp true (transProcess p) (transProcess q) 47 cspProver_conditionalOp true (transProcess caslSign p) 48 (transProcess caslSign q) 44 49 -- precedence 2 45 50 Hiding p es _ -> 46 cspProver_hidingOp (transProcess p) (transEventSet es)51 cspProver_hidingOp (transProcess caslSign p) (transEventSet es) 47 52 RenamingProcess p r _ -> 48 cspProver_renamingOp (transProcess p) (transRenaming r)53 cspProver_renamingOp (transProcess caslSign p) (transRenaming r) 49 54 -- precedence 3 50 55 Sequential p q _ -> 51 cspProver_sequenceOp (transProcess p) (transProcessq)56 cspProver_sequenceOp (transProcess caslSign p) (transProcess caslSign q) 52 57 PrefixProcess ev p _ -> 53 cspProver_action_prefixOp (transEvent ev) (transProcess p) 58 cspProver_action_prefixOp (transEvent caslSign ev) 59 (transProcess caslSign p) 54 60 InternalPrefixProcess v s p _ -> 55 61 cspProver_internal_prefix_choiceOp (transVar v) 56 62 (transSort s) 57 (transProcess p)63 (transProcess caslSign p) 58 64 ExternalPrefixProcess v s p _ -> 59 65 cspProver_external_prefix_choiceOp (transVar v) 60 66 (transSort s) 61 (transProcess p)67 (transProcess caslSign p) 62 68 -- precedence 4 63 69 InternalChoice p q _ -> 64 cspProver_internal_choiceOp (transProcess p) (transProcess q) 70 cspProver_internal_choiceOp (transProcess caslSign p) 71 (transProcess caslSign q) 65 72 ExternalChoice p q _ -> 66 cspProver_external_choiceOp (transProcess p) (transProcess q) 73 cspProver_external_choiceOp (transProcess caslSign p) 74 (transProcess caslSign q) 67 75 -- precedence 5 68 76 Interleaving p q _ -> 69 cspProver_interleavingOp (transProcess p) (transProcess q) 77 cspProver_interleavingOp (transProcess caslSign p) 78 (transProcess caslSign q) 70 79 SynchronousParallel p q _ -> 71 cspProver_synchronousOp (transProcess p) (transProcess q) 80 cspProver_synchronousOp (transProcess caslSign p) 81 (transProcess caslSign q) 72 82 GeneralisedParallel p es q _ -> 73 cspProver_general_parallelOp (transProcess p)83 cspProver_general_parallelOp (transProcess caslSign p) 74 84 (transEventSet es) 75 (transProcess q)85 (transProcess caslSign q) 76 86 77 87 AlphabetisedParallel p les res q _ -> 78 cspProver_alphabetised_parallelOp (transProcess p)88 cspProver_alphabetised_parallelOp (transProcess caslSign p) 79 89 (transEventSet les) 80 90 (transEventSet res) 81 (transProcess q) 91 (transProcess caslSign q) 92 -- BUG not done right yet 93 FQProcess p _ _ -> 94 transProcess caslSign p 82 95 83 96 transEventSet :: EVENT_SET -> Term … … 88 101 EventSet commTypes _ -> Set $ FixedSet $ map tranCommType commTypes 89 102 90 transEvent :: EVENT -> Term91 transEvent ev =103 transEvent :: CASL_Sign.Sign () () -> EVENT -> Term 104 transEvent caslSign ev = 92 105 case ev of 93 TermEvent _caslTerm _ -> conDouble "not yet done"94 ChanSend _ _ _ -> conDouble " not yet done"95 ChanNonDetSend _ _ _ _ -> conDouble " not yet done"96 ChanRecv _ _ _ _ -> conDouble " not yet done"106 TermEvent caslTerm _ -> transTerm_with_class caslSign caslTerm 107 ChanSend _ _ _ -> conDouble "ChanSendNotYetDone" 108 ChanNonDetSend _ _ _ _ -> conDouble "ChanNonDetSendNotYetDone" 109 ChanRecv _ _ _ _ -> conDouble "ChanRecvNotYetDone" 97 110 98 transVar :: VAR -> Term111 transVar :: CASL_AS_Basic_CASL.VAR -> Term 99 112 transVar v = conDouble $ tokStr v 100 113 101 transSort :: SORT -> Term114 transSort :: CASL_AS_Basic_CASL.SORT -> Term 102 115 transSort sort = let sortBarString = convertSort2String sort ++ barExtS 103 116 in conDouble sortBarString … … 105 118 transRenaming :: RENAMING -> Term 106 119 transRenaming _ = conDouble "not yet done" 120 121 122 123 -- BUG - I dont think these functions are correct 124 transTerm_with_class :: CASL_Sign.Sign () () -> CASL_AS_Basic_CASL.TERM () -> 125 Term 126 transTerm_with_class caslSign caslTerm = 127 case caslTerm of 128 -- if the term is just a variable then we just translate the 129 -- variable to isabelle 130 CASL_AS_Basic_CASL.Qual_var _ _ _ -> transCaslTerm caslSign caslTerm 131 -- otherwise we add a classOp around it and translate the inside of 132 -- it with the translator that adds a chooseOp 133 _ -> classOp (transTerm_with_choose caslSign caslTerm) 134 135 transTerm_with_choose :: CASL_Sign.Sign () () -> CASL_AS_Basic_CASL.TERM () -> 136 Term 137 transTerm_with_choose caslSign caslTerm = 138 case caslTerm of 139 -- if the term is just a variable then we need to apply the choose 140 -- function 141 CASL_AS_Basic_CASL.Qual_var _ _ _ -> termAppl (conDouble "choose") 142 (transCaslTerm caslSign caslTerm) 143 -- otherwise we just translate it to Isabelle 144 _ -> transCaslTerm caslSign caslTerm 145 146 -- | Translate a CASL Term to an Isabelle Term using the exact 147 -- translation as is done in the comorphism composition 148 -- CASL2PCFOL;defaultCASL2SubCFOL;CFOL2IsabelleHOL 149 transCaslTerm :: CASL_Sign.Sign () () -> CASL_AS_Basic_CASL.TERM () -> Term 150 transCaslTerm caslSign caslTerm = 151 let tyToks = CFOL2IsabelleHOL.typeToks caslSign 152 trForm = CFOL2IsabelleHOL.formTrCASL 153 strs = CFOL2IsabelleHOL.getAssumpsToks caslSign 154 in CASL_Fold.foldTerm (CFOL2IsabelleHOL.transRecord 155 caslSign tyToks trForm strs) caslTerm 156 157 158 -- My own version of transRecord 159 -- transRecord_Term :: CASL.Sign.Sign f e -> Set.Set String -> FormulaTranslator f e 160 -- -> Set.Set String -> Record f Term Term 161 -- transRecord_Term sign tyToks tr toks = Record 162 -- { foldSimpleId = error "transRecord_Term: Simple_id" 163 -- , foldQual_var = \ _ v _ _ -> mkFree $ transVar toks v 164 -- , foldApplication = \ _ opsymb args _ -> 165 -- foldl termAppl (con $ transOP_SYMB sign tyToks opsymb) args 166 -- , foldSorted_term = \ _ t _ _ -> t -- no subsorting assumed 167 -- , foldCast = \ _ t _ _ -> t -- no subsorting assumed 168 -- , foldConditional = \ _ t1 phi t2 _ -> -- equal types assumed 169 -- If phi t1 t2 NotCont 170 -- , foldMixfix_qual_pred = error "transRecord_Term: Mixfix_qual_pred" 171 -- , foldMixfix_term = error "transRecord_Term: Mixfix_term" 172 -- , foldMixfix_token = error "transRecord_Term: Mixfix_token" 173 -- , foldMixfix_sorted_term = error "transRecord_Term: Mixfix_sorted_term" 174 -- , foldMixfix_cast = error "transRecord_Term: Mixfix_cast" 175 -- , foldMixfix_parenthesized = error "transRecord_Term: Mixfix_parenthesized" 176 -- , foldMixfix_bracketed = error "transRecord_Term: Mixfix_bracketed" 177 -- , foldMixfix_braced = error "transRecord_Term: Mixfix_braced" 178 -- } 179 180 -- transVar :: Set.Set String -> VAR -> String 181 -- transVar toks v = let 182 -- s = showIsaConstT (simpleIdToId v) baseSign 183 -- renVar t = if Set.member t toks then renVar $ "X_" ++ t else t 184 -- in renVar s 185