-- Hoogle documentation, generated by Haddock
-- See Hoogle, http://www.haskell.org/hoogle/
-- | Definition of a CSP core-language.
--
-- This package contains an interface for the CSP core-language. It
-- defines processes, events, event sets, and a domain specific language
-- for process operations like parallel or interleaving processes.
@package CSPM-CoreLanguage
@version 0.3.1.0
-- | This module defines the event-related part of an interface between the
-- CSPM-CoreLanguage and the underlying implementation. The underlying
-- implementation has to instantiate the type families Event,
-- EventSet, RenamingRelation and the class BE
-- (BE== base event).
--
-- For full CSPM support (channels with multiple fields, event closure
-- sets etc.) CSPM.CoreLanguage.Field is also needed.
module CSPM.CoreLanguage.Event
-- | Sigma is the set of all events that appear in a system.
type Sigma i = EventSet i
-- | The first argument of all functions in BE is a
-- phantom-type-argument, i.e. applications pass _|_ and implementations
-- must not use this value.
class BE i
eventEq :: BE i => i -> Event i -> Event i -> Bool
member :: BE i => i -> Event i -> EventSet i -> Bool
intersection :: BE i => i -> EventSet i -> EventSet i -> EventSet i
difference :: BE i => i -> EventSet i -> EventSet i -> EventSet i
union :: BE i => i -> EventSet i -> EventSet i -> EventSet i
null :: BE i => i -> EventSet i -> Bool
singleton :: BE i => i -> Event i -> EventSet i
insert :: BE i => i -> Event i -> EventSet i -> EventSet i
delete :: BE i => i -> Event i -> EventSet i -> EventSet i
eventSetToList :: BE i => i -> EventSet i -> [Event i]
allEvents :: BE i => i -> EventSet i
isInRenaming :: BE i => i -> RenamingRelation i -> Event i -> Event i -> Bool
imageRenaming :: BE i => i -> RenamingRelation i -> Event i -> [Event i]
preImageRenaming :: BE i => i -> RenamingRelation i -> Event i -> [Event i]
isInRenamingDomain :: BE i => i -> Event i -> RenamingRelation i -> Bool
isInRenamingRange :: BE i => i -> Event i -> RenamingRelation i -> Bool
getRenamingDomain :: BE i => i -> RenamingRelation i -> [Event i]
getRenamingRange :: BE i => i -> RenamingRelation i -> [Event i]
renamingFromList :: BE i => i -> [(Event i, Event i)] -> RenamingRelation i
renamingToList :: BE i => i -> RenamingRelation i -> [(Event i, Event i)]
singleEventToClosureSet :: BE i => i -> Event i -> EventSet i
-- | A wrapper for tick-events, tau-events and events from Sigma.
data TTE i
TickEvent :: TTE i
TauEvent :: TTE i
SEvent :: (Event i) -> TTE i
class ShowEvent i
showEvent :: ShowEvent i => i -> String
class ShowTTE i
showTTE :: ShowTTE i => i -> String
-- | This modules defines an FDR-compatible CSP core language. The core
-- language deals with CSP-related constructs like processes and events.
--
-- The implementation of the underlying language must provide instances
-- for the type families Prefix, ExtProcess and class
-- BL.
module CSPM.CoreLanguage.Process
-- | A prefix expression.
-- | A process that has not yet been switched on.
class (BE i) => BL i
-- | Try to perform an Event return the successor Process or
-- Nothing if the event is not possible.
prefixNext :: BL i => Prefix i -> Event i -> Maybe (Process i)
switchOn :: BL i => ExtProcess i -> Process i
-- | A data type for CSPM processes. For efficiency, replicated
-- alphabetized parallel has an explicit constructor. Other replicated
-- operations get translated on the fly. For constructing processes one
-- should rather use the wrappers from CSPM.CoreLanguage.ProcessWrappers.
data Process i
Prefix :: (Prefix i) -> Process i
ExternalChoice :: (Process i) -> (Process i) -> Process i
InternalChoice :: (Process i) -> (Process i) -> Process i
Interleave :: (Process i) -> (Process i) -> Process i
Interrupt :: (Process i) -> (Process i) -> Process i
Timeout :: (Process i) -> (Process i) -> Process i
Sharing :: (Process i) -> (EventSet i) -> (Process i) -> Process i
AParallel :: (EventSet i) -> (EventSet i) -> (Process i) -> (Process i) -> Process i
RepAParallel :: [(EventSet i, Process i)] -> Process i
Seq :: (Process i) -> (Process i) -> Process i
Hide :: (EventSet i) -> (Process i) -> Process i
Stop :: Process i
Skip :: Process i
Omega :: Process i
Chaos :: (EventSet i) -> Process i
-- | Just for debugging.
AProcess :: Int -> Process i
SwitchedOff :: (ExtProcess i) -> Process i
Renaming :: (RenamingRelation i) -> (Process i) -> Process i
LinkParallel :: (RenamingRelation i) -> (Process i) -> (Process i) -> Process i
Exception :: (EventSet i) -> (Process i) -> (Process i) -> Process i
isOmega :: Process i -> Bool
-- | This module defines the class BF for versions of CSP that also
-- support multi-field-events and event-closure sets.
module CSPM.CoreLanguage.Field
class BL i => BF i
fieldEq :: BF i => i -> Field i -> Field i -> Bool
member :: BF i => i -> Field i -> FieldSet i -> Bool
intersection :: BF i => i -> FieldSet i -> FieldSet i -> FieldSet i
difference :: BF i => i -> FieldSet i -> FieldSet i -> FieldSet i
union :: BF i => i -> FieldSet i -> FieldSet i -> FieldSet i
null :: BF i => i -> FieldSet i -> Bool
singleton :: BF i => i -> Field i -> FieldSet i
insert :: BF i => i -> Field i -> FieldSet i -> FieldSet i
delete :: BF i => i -> Field i -> FieldSet i -> FieldSet i
fieldSetToList :: BF i => i -> FieldSet i -> [Field i]
fieldSetFromList :: BF i => i -> [Field i] -> FieldSet i
joinFields :: BF i => i -> [Field i] -> Event i
splitFields :: BF i => i -> Event i -> [Field i]
channelLen :: BF i => i -> Field i -> Int
closureStateInit :: BF i => i -> EventSet i -> ClosureState i
closureStateNext :: BF i => i -> ClosureState i -> Field i -> ClosureState i
closureRestore :: BF i => i -> ClosureState i -> EventSet i
viewClosureState :: BF i => i -> ClosureState i -> ClosureView
viewClosureFields :: BF i => i -> ClosureState i -> FieldSet i
seenPrefixInClosure :: BF i => i -> ClosureState i -> Bool
prefixStateInit :: BF i => i -> Prefix i -> PrefixState i
prefixStateNext :: BF i => i -> PrefixState i -> Field i -> Maybe (PrefixState i)
prefixStateFinalize :: BF i => i -> PrefixState i -> Maybe (Prefix i)
viewPrefixState :: BF i => i -> PrefixState i -> PrefixFieldView i
data ClosureView
InClosure :: ClosureView
NotInClosure :: ClosureView
MaybeInClosure :: ClosureView
data PrefixFieldView i
FieldOut :: (Field i) -> PrefixFieldView i
FieldIn :: PrefixFieldView i
FieldGuard :: (FieldSet i) -> PrefixFieldView i
instance GHC.Classes.Ord CSPM.CoreLanguage.Field.ClosureView
instance GHC.Classes.Eq CSPM.CoreLanguage.Field.ClosureView
instance GHC.Show.Show CSPM.CoreLanguage.Field.ClosureView
-- | Wrappers for the constructors of data type Process and some
-- rewriting rules for replicated operations.
--
-- This can also be used as EDSL for CSP.
module CSPM.CoreLanguage.ProcessWrapper
prefix :: Prefix i -> Process i
externalChoice :: Process i -> Process i -> Process i
internalChoice :: Process i -> Process i -> Process i
interleave :: Process i -> Process i -> Process i
interrupt :: Process i -> Process i -> Process i
timeout :: Process i -> Process i -> Process i
sharing :: Process i -> EventSet i -> Process i -> Process i
aparallel :: EventSet i -> EventSet i -> Process i -> Process i -> Process i
seq :: Process i -> Process i -> Process i
hide :: EventSet i -> Process i -> Process i
stop :: Process i
skip :: Process i
switchedOff :: ExtProcess i -> Process i
renaming :: RenamingRelation i -> Process i -> Process i
linkParallel :: RenamingRelation i -> Process i -> Process i -> Process i
repSeq :: [Process i] -> Process i
repInternalChoice :: [Process i] -> Process i
repExternalChoice :: [Process i] -> Process i
repInterleave :: [Process i] -> Process i
repAParallel :: [(EventSet i, Process i)] -> Process i
repSharing :: EventSet i -> [Process i] -> Process i
repLinkParallel :: RenamingRelation i -> [Process i] -> Process i
chaos :: EventSet i -> Process i
-- | Just re-exports.
module CSPM.CoreLanguage
-- | The version of the CSPM-CoreLangugage library
coreLanguageVersion :: Version