| Copyright | (c) 2013-2016 Galois Inc. |
|---|---|
| License | BSD3 |
| Maintainer | cryptol@galois.com |
| Stability | provisional |
| Portability | portable |
| Safe Haskell | Safe |
| Language | Haskell2010 |
Cryptol.Eval
Description
Synopsis
- moduleEnv :: EvalPrims b w i => Module -> GenEvalEnv b w i -> Eval (GenEvalEnv b w i)
- runEval :: EvalOpts -> Eval a -> IO a
- data EvalOpts = EvalOpts {
- evalLogger :: Logger
- evalPPOpts :: PPOpts
- data PPOpts = PPOpts {}
- defaultPPOpts :: PPOpts
- data Eval a
- type EvalEnv = GenEvalEnv Bool BV Integer
- emptyEnv :: GenEvalEnv b w i
- evalExpr :: EvalPrims b w i => GenEvalEnv b w i -> Expr -> Eval (GenValue b w i)
- evalDecls :: EvalPrims b w i => [DeclGroup] -> GenEvalEnv b w i -> Eval (GenEvalEnv b w i)
- evalSel :: forall b w i. EvalPrims b w i => GenValue b w i -> Selector -> Eval (GenValue b w i)
- evalSetSel :: forall b w i. EvalPrims b w i => GenValue b w i -> Selector -> Eval (GenValue b w i) -> Eval (GenValue b w i)
- data EvalError
- forceValue :: GenValue b w i -> Eval ()
Documentation
Arguments
| :: EvalPrims b w i | |
| => Module | Module containing declarations to evaluate |
| -> GenEvalEnv b w i | Environment to extend |
| -> Eval (GenEvalEnv b w i) |
Extend the given evaluation environment with all the declarations contained in the given module.
Some options for evalutaion
Constructors
| EvalOpts | |
Fields
| |
How to pretty print things when evaluating
The monad for Cryptol evaluation.
emptyEnv :: GenEvalEnv b w i Source #
Evaluation environment with no bindings
Arguments
| :: EvalPrims b w i | |
| => GenEvalEnv b w i | Evaluation environment |
| -> Expr | Expression to evaluate |
| -> Eval (GenValue b w i) |
Evaluate a Cryptol expression to a value. This evaluator is parameterized
by the EvalPrims class, which defines the behavior of bits and words, in
addition to providing implementations for all the primitives.
Arguments
| :: EvalPrims b w i | |
| => [DeclGroup] | Declaration groups to evaluate |
| -> GenEvalEnv b w i | Environment to extend |
| -> Eval (GenEvalEnv b w i) |
Extend the given evaluation environment with the result of evaluating the given collection of declaration groups.
evalSel :: forall b w i. EvalPrims b w i => GenValue b w i -> Selector -> Eval (GenValue b w i) Source #
Apply the the given "selector" form to the given value. This function pushes tuple and record selections pointwise down into other value constructs (e.g., streams and functions).
evalSetSel :: forall b w i. EvalPrims b w i => GenValue b w i -> Selector -> Eval (GenValue b w i) -> Eval (GenValue b w i) Source #
Data type describing errors that can occur during evaluation.
Constructors
| InvalidIndex Integer | Out-of-bounds index |
| TypeCannotBeDemoted Type | Non-numeric type passed to |
| DivideByZero | Division or modulus by 0 |
| NegativeExponent | Exponentiation by negative integer |
| LogNegative | Logarithm of a negative integer |
| WordTooWide Integer | Bitvector too large |
| UserError String | Call to the Cryptol |
| LoopError String | Detectable nontermination |
Instances
| Show EvalError Source # | |
| Exception EvalError Source # | |
Defined in Cryptol.Eval.Monad Methods toException :: EvalError -> SomeException # fromException :: SomeException -> Maybe EvalError # displayException :: EvalError -> String # | |
| PP EvalError Source # | |
forceValue :: GenValue b w i -> Eval () Source #
Force the evaluation of a value