definition module ESMSpec import StdClass, StdMaybe import gast //gen :: Traces s i o :== [[SeenTrans s i o]] :: ESM s i o = { s_0 :: s // the initial state , d_F :: Spec s i o // the state transition function (\delta_F) , out :: s i -> [[o]] // outputs to be used if spec does not give them , pred:: (SeenTrans s i o)->[[String]] // consitency issues } :: KnownAutomaton s i o = {trans :: [SeenTrans s i o] ,issues:: [(SeenTrans s i o,[String])] } :: SeenTrans s i o :== (s,i,[o],s) tupToSpec :: (state input -> [([output],state)]) -> Spec state input output // conversion for old specificaions class render a :: !a -> String // show a concise text representation for rendering purposes enumerate :: [a] | ggen{|*|} a possibleInputs :: (ESM s i o) [s] -> [i] | gEq{|*|} s & ggen{|*|}, gEq{|*|} i nextStates :: (ESM s i o) i ![s] -> [s] | gEq{|*|} s addStep :: (ESM s i o) [s] i !(Traces s i o) -> Traces s i o | gEq{|*|} s narrowTraces :: (Traces s i o) [s] -> Traces s i o | gEq{|*|} s nodesOf :: !(KnownAutomaton s i o) -> [s] | gEq{|*|} s edgesFrom :: s !(KnownAutomaton s i o) -> [SeenTrans s i o] | gEq{|*|} s edgesTo :: s !(KnownAutomaton s i o) -> [SeenTrans s i o] | gEq{|*|} s startStates :: ![SeenTrans s i o] -> [s] | gEq{|*|} s targetStates :: ![SeenTrans s i o] -> [s] | gEq{|*|} s addTransitions :: !Int (ESM s i o) [s] [i] !(KnownAutomaton s i o) -> KnownAutomaton s i o | gEq{|*|}, render s & render, ggen{|*|}, gEq{|*|} i & gEq{|*|} o nrOf :: !(KnownAutomaton s i o) s -> Int | gEq{|*|}, render s gisMember :: a ![a] -> Bool | gEq{|*|} a gremoveDup :: !.[a] -> .[a] | gEq{|*|} a gelemIndex :: a ![a] -> Maybe Int | gEq{|*|} a