Copyright | (c) 2013-2016 Galois Inc. |
---|---|
License | BSD3 |
Maintainer | cryptol@galois.com |
Stability | provisional |
Portability | portable |
Safe Haskell | Safe |
Language | Haskell2010 |
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
:: 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
EvalOpts | |
|
How to pretty print things when evaluating
The monad for Cryptol evaluation.
emptyEnv :: GenEvalEnv b w i Source #
Evaluation environment with no bindings
:: 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.
:: 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.
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 |
NoPrim Name | Primitive with no implementation |
Instances
Show EvalError Source # | |
Exception EvalError Source # | |
Defined in Cryptol.Eval.Monad 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