{-# 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]