root/trunk/CspCASL/AS_CspCASL_Process.der.hs @ 10428

Revision 10428, 2.7 kB (checked in by maeder, 16 months ago)

removed more than two consecutive blank lines

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
Line 
1{- |
2Module      :  $Id$
3Description :  Abstract syntax of CSP-CASL processes
4Copyright   :  (c) Markus Roggenbach and Till Mossakowski and Uni Bremen 2004
5License     :  similar to LGPL, see HetCATS/LICENSE.txt or LIZENZ.txt
6
7Maintainer  :  a.m.gimblett@swan.ac.uk
8Stability   :  provisional
9Portability :  portable
10
11Abstract syntax of CSP-CASL processes.
12
13-}
14
15module CspCASL.AS_CspCASL_Process (
16    CHANNEL_NAME,
17    COMM_TYPE,
18    EVENT(..),
19    EVENT_SET(..),
20    PROCESS(..),
21    PROCESS_NAME,
22    RENAMING,
23) where
24
25import CASL.AS_Basic_CASL (FORMULA, SORT, TERM, VAR)
26import Common.Id
27
28-- DrIFT command
29{-! global: GetRange !-}
30
31data EVENT
32    = TermEvent (TERM ()) Range
33    | ChanSend CHANNEL_NAME (TERM ()) Range
34    | ChanNonDetSend CHANNEL_NAME VAR SORT Range
35    | ChanRecv CHANNEL_NAME VAR SORT Range
36    deriving (Show,Ord, Eq)
37
38
39-- |Event sets are sets of communication types.
40
41data EVENT_SET = EventSet [COMM_TYPE] Range
42    deriving (Show,Ord, Eq)
43
44
45-- |CSP renamings are predicate names or op names.
46
47type RENAMING = [Id]
48
49
50type CHANNEL_NAME = SIMPLE_ID
51
52type PROCESS_NAME = SIMPLE_ID
53
54type COMM_TYPE = SIMPLE_ID
55
56
57-- |CSP-CASL process expressions.
58
59data PROCESS
60    -- | @Skip@ - Terminate immediately
61    = Skip Range
62    -- | @Stop@ - Do nothing
63    | Stop Range
64    -- | @div@ - Divergence
65    | Div Range
66    -- | @Run es@ - Accept any event in es, forever
67    | Run EVENT_SET Range
68    -- | @Chaos es@ - Accept\/refuse any event in es, forever
69    | Chaos EVENT_SET Range
70    -- | @es -> p@ - Prefix process
71    | PrefixProcess EVENT PROCESS Range
72    -- | @[] var : es -> p@ - External nondeterministic prefix choice
73    | ExternalPrefixProcess VAR SORT PROCESS Range
74    -- | @|~| var : es -> p@ - Internal nondeterministic prefix choice
75    | InternalPrefixProcess VAR SORT PROCESS Range
76    -- | @p ; q@ - Sequential process
77    | Sequential PROCESS PROCESS Range
78    -- | @p [] q@ - External choice
79    | ExternalChoice PROCESS PROCESS Range
80    -- | @p |~| q@ - Internal choice
81    | InternalChoice PROCESS PROCESS Range
82    -- | @p ||| q@ - Interleaving
83    | Interleaving PROCESS PROCESS Range
84    -- | @p || q @ - Synchronous parallel
85    | SynchronousParallel PROCESS PROCESS Range
86    -- | @p [| a |] q@ - Generalised parallel
87    | GeneralisedParallel PROCESS EVENT_SET PROCESS Range
88    -- | @p [ a || b ] q@ - Alphabetised parallel
89    | AlphabetisedParallel PROCESS EVENT_SET EVENT_SET PROCESS Range
90    -- | @p \\ es@ - Hiding
91    | Hiding PROCESS EVENT_SET Range
92    -- | @p [[r]]@ - Renaming
93    | RenamingProcess PROCESS RENAMING Range
94    -- | @if f then p else q@ - Conditional
95    | ConditionalProcess (FORMULA ()) PROCESS PROCESS Range
96    -- | Named process
97    | NamedProcess PROCESS_NAME [TERM ()] Range
98    deriving (Eq, Ord, Show)
Note: See TracBrowser for help on using the browser.