CSPM-cspm-0.1.0.0: src/CSPM/LTS/LTS.hs
{-# LANGUAGE BangPatterns #-}
----------------------------------------------------------------------------
-- |
-- Module : CSPM.LTS.LTS
-- Copyright : (c) Fontaine 2009
-- License : BSD
--
-- Maintainer : Fontaine@cs.uni-duesseldorf.de
-- Stability : experimental
-- Portability : GHC-only
--
module CSPM.LTS.LTS
where
import CSPM.FiringRules.Rules
import CSPM.Interpreter as Interpreter
import CSPM.Interpreter.Hash
import Data.Map (Map)
import Data.Ord (comparing)
import Data.Function (on)
data LtsNode
= LtsNode {
nodeDigest :: ! Interpreter.Digest
,nodeProcess :: Interpreter.Process
}
mkLtsNode :: Interpreter.Process -> LtsNode
mkLtsNode p = LtsNode {
nodeDigest = hash p
,nodeProcess = p }
instance Ord LtsNode where compare = comparing nodeDigest
instance Eq LtsNode where (==) = on (==) nodeDigest
instance Show LtsNode where
show f = "(LTSNode " ++ (show $ nodeDigest f) ++ ")"
type LTS = Map LtsNode [Rule INT]