root/trunk/CspCASL/Trans_CspProver.hs @ 10931

Revision 10931, 3.7 kB (checked in by maeder, 13 months ago)

removed warning

Line 
1{- |
2Module      :  $Header$
3Description :  Provides transformations from Csp Processes to Isabelle terms
4Copyright   :  (c) Andy Gimblett, Liam O'Reilly and Markus Roggenbach,
5                   Swansea University 2008
6License     :  similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
7
8Maintainer  :  csliam@swansea.ac.uk
9Stability   :  provisional
10Portability :  portable
11
12Provides transformations from Csp Processes to Isabelle terms
13
14-}
15module CspCASL.Trans_CspProver where
16
17import CASL.AS_Basic_CASL (SORT, VAR)
18
19import Common.Id
20
21import CspCASL.AS_CspCASL_Process
22import CspCASL.CspProver_Consts
23import CspCASL.Trans_Consts
24
25import Isabelle.IsaSign
26import Isabelle.IsaConsts
27
28transProcess :: PROCESS -> Term
29transProcess pr = case pr of
30    -- precedence 0
31    Skip _ -> cspProver_skipOp
32    Stop _ -> cspProver_stopOp
33    Div  _ -> cspProver_divOp
34    Run es _ -> App (cspProver_runOp) (transEventSet es) NotCont
35    Chaos es _ -> App (cspProver_chaosOp) (transEventSet es) NotCont
36    NamedProcess pn ts _ ->
37        let pnTerm = conDouble $ show pn
38        in if (null ts)
39        then pnTerm
40        else App pnTerm (conDouble $ show ts) NotCont
41    -- precedence 1
42    ConditionalProcess _ p q _ ->
43        cspProver_conditionalOp true (transProcess p) (transProcess q)
44    -- precedence 2
45    Hiding p es _ ->
46        cspProver_hidingOp (transProcess p) (transEventSet es)
47    RenamingProcess p r _ ->
48        cspProver_renamingOp (transProcess p) (transRenaming r)
49    -- precedence 3
50    Sequential p q _ ->
51        cspProver_sequenceOp (transProcess p) (transProcess q)
52    PrefixProcess ev p _ ->
53        cspProver_action_prefixOp (transEvent ev) (transProcess p)
54    InternalPrefixProcess v s p _ ->
55        cspProver_internal_prefix_choiceOp (transVar v)
56                                           (transSort s)
57                                           (transProcess p)
58    ExternalPrefixProcess v s p _ ->
59        cspProver_external_prefix_choiceOp (transVar v)
60                                           (transSort s)
61                                           (transProcess p)
62    -- precedence 4
63    InternalChoice p q _ ->
64        cspProver_internal_choiceOp (transProcess p) (transProcess q)
65    ExternalChoice p q _ ->
66        cspProver_external_choiceOp (transProcess p) (transProcess q)
67    -- precedence 5
68    Interleaving p q _ ->
69        cspProver_interleavingOp (transProcess p) (transProcess q)
70    SynchronousParallel p q _ ->
71        cspProver_synchronousOp (transProcess p) (transProcess q)
72    GeneralisedParallel p es q _ ->
73        cspProver_general_parallelOp (transProcess p)
74                                     (transEventSet es)
75                                     (transProcess q)
76
77    AlphabetisedParallel p les res q _ ->
78        cspProver_alphabetised_parallelOp (transProcess p)
79                                          (transEventSet les)
80                                          (transEventSet res)
81                                          (transProcess q)
82
83transEventSet :: EVENT_SET -> Term
84transEventSet evs =
85    let
86        tranCommType ct = conDouble $ (tokStr ct) ++ barExtS
87    in case evs of
88         EventSet commTypes _ -> Set $ FixedSet $ map tranCommType commTypes
89
90transEvent :: EVENT -> Term
91transEvent ev =
92    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"
97
98transVar :: VAR -> Term
99transVar v = conDouble $ tokStr v
100
101transSort :: SORT -> Term
102transSort sort = let sortBarString = convertSort2String sort ++ barExtS
103                 in conDouble  sortBarString
104
105transRenaming :: RENAMING -> Term
106transRenaming _ = conDouble "not yet done"
Note: See TracBrowser for help on using the browser.