-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Interpreter for Copilot. -- -- Interpreter for Copilot. -- -- Copilot is a stream (i.e., infinite lists) domain-specific language -- (DSL) in Haskell that compiles into embedded C. Copilot contains an -- interpreter, multiple back-end compilers, and other verification -- tools. -- -- A tutorial, examples, and other information are available at -- https://copilot-language.github.io. @package copilot-interpreter @version 3.13 -- | A tagless interpreter for Copilot specifications. module Copilot.Interpret.Eval -- | An environment that contains an association between (stream or extern) -- names and their values. type Env nm = [(nm, Dynamic)] -- | The simulation output is defined as a string. Different backends may -- choose to format their results differently. type Output = String -- | An execution trace, containing the traces associated to each -- individual monitor trigger and observer. data ExecTrace ExecTrace :: [(String, [Maybe [Output]])] -> [(String, [Output])] -> ExecTrace -- | Map from trigger names to their optional output, which is a list of -- strings representing their values. The output may be Nothing if -- the guard for the trigger was false. The order is important, since we -- compare the arg lists between the interpreter and backends. [interpTriggers] :: ExecTrace -> [(String, [Maybe [Output]])] -- | Map from observer names to their outputs. [interpObservers] :: ExecTrace -> [(String, [Output])] -- | Evaluate a specification for a number of steps. eval :: ShowType -> Int -> Spec -> ExecTrace -- | Target language for showing a typed value. Used to adapt the -- representation of booleans. data ShowType C :: ShowType Haskell :: ShowType instance GHC.Show.Show Copilot.Interpret.Eval.ExecTrace instance GHC.Show.Show Copilot.Interpret.Eval.InterpException instance GHC.Exception.Type.Exception Copilot.Interpret.Eval.InterpException -- | An interpreter for Copilot specifications. module Copilot.Interpret -- | Output format for the results of a Copilot spec interpretation. data Format Table :: Format CSV :: Format -- | Interpret a Copilot specification. interpret :: Format -> Int -> Spec -> String