This module contains the implementation of the reflection monad, used by all other components of this directory.
Instances For
Instances For
Instances For
A BitVec atom.
- width : Nat
The width of the
BitVecthat is being abstracted. - atomNumber : Nat
A unique numeric identifier for the atom.
- synthetic : Bool
Whether the atom is synthetic. The effect of this is that values for this atom are not considered for the counter example derivation. This is for example useful when we introduce an atom over an expression, together with additional lemmas that fully describe the behavior of the atom.
Instances For
- hypotheses : Array Normalize.Hyp
Instances For
The state of the reflection monad
- atoms : Std.HashMap Sym.ExprPtr Atom
The atoms encountered so far. Saved as a map from
BitVecexpressions to a (width, atomNumber) pair. A cache for
atomsAssignment. If it isnonethe cache is currently invalidated as new atoms have been added since it was last updated, if it issomeit must be consistent with the atoms contained inatoms.- evalsAtCache : Std.HashMap Sym.ExprPtr (Option Expr)
Cached calls to
evalsAtAtomsof various reflection structures. Wheneveratomsis modified this cache is invalidated asevalsAtAtomsrelies onatoms.
Instances For
The reflection monad, used to track BitVec variables that we see as we traverse the context.
Instances For
A reified version of an Expr representing a BVExpr.
- width : Nat
- bvExpr : Std.Tactic.BVDecide.BVExpr self.width
The reified expression.
- originalExpr : Expr
The expression that was reflected, used for caching of
evalsAtAtoms. A proof that
bvExpr.eval atomsAssignment = originalExpr, none if it holds byrfl.- expr : Expr
A cache for
toExpr bvExpr.
Instances For
Instances For
A reified version of an Expr representing a BVPred.
- bvPred : Std.Tactic.BVDecide.BVPred
The reified expression.
- originalExpr : Expr
The expression that was reflected, usef for caching of
evalsAtAtoms. A proof that
bvPred.eval atomsAssignment = originalExpr, none if it holds byrfl.- expr : Expr
A cache for
toExpr bvPred
Instances For
Instances For
A reified version of an Expr representing a BVLogicalExpr.
- bvExpr : Std.Tactic.BVDecide.BVLogicalExpr
The reified expression.
- originalExpr : Expr
The expression that was reflected, usef for caching of
evalsAtAtoms. A proof that
bvExpr.eval atomsAssignment = originalExpr, none if it holds byrfl.- expr : Expr
A cache for
toExpr bvExpr
Instances For
Instances For
A reified version of an Expr representing a BVLogicalExpr that we know to be true.
- bvExpr : Std.Tactic.BVDecide.BVLogicalExpr
The reified expression.
A proof that
bvExpr.eval atomsAssignment = true.- expr : Expr
A cache for
toExpr bvExpr
Instances For
Run a reflection computation as a SymM one.
Instances For
Retrieve a BitVec.Assignment representing the atoms we found so far.
Instances For
The state of the lemma reflection monad.
- lemmas : Array SatAtBVLogical
The list of top level lemmas that got created on the fly during reflection.
- bvExprCache : Std.HashMap Sym.ExprPtr (Option ReifiedBVExpr)
Cache for reification of
BVExpr. - bvPredCache : Std.HashMap Sym.ExprPtr (Option ReifiedBVPred)
Cache for reification of
BVPred. - bvLogicalCache : Std.HashMap Sym.ExprPtr (Option ReifiedBVLogical)
Cache for reification of
BVLogicalExpr.
Instances For
The lemma reflection monad. It extends the usual reflection monad M by adding the ability to
add additional top level lemmas on the fly.
Instances For
Instances For
Add another top level lemma.