This module contains the implementation of the reflection monad, used by all other components of this directory.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
- Lean.Elab.Tactic.BVDecide.Frontend.instToExprBVExpr.go (Std.Tactic.BVDecide.BVExpr.var idx) = Lean.mkApp2 (Lean.mkConst `Std.Tactic.BVDecide.BVExpr.var) (Lean.toExpr w) (Lean.toExpr idx)
- Lean.Elab.Tactic.BVDecide.Frontend.instToExprBVExpr.go (Std.Tactic.BVDecide.BVExpr.const val) = Lean.mkApp2 (Lean.mkConst `Std.Tactic.BVDecide.BVExpr.const) (Lean.toExpr w) (Lean.toExpr val)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
- Lean.Elab.Tactic.BVDecide.Frontend.instToExprBoolExpr.go (Std.Tactic.BVDecide.BoolExpr.const b) = Lean.mkApp2 (Lean.mkConst `Std.Tactic.BVDecide.BoolExpr.const) (Lean.toTypeExpr α) (Lean.toExpr b)
Instances For
A BitVec
atom.
- width : Nat
The width of the
BitVec
that 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 deriviation. 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
The state of the reflection monad
- atoms : Std.HashMap Expr Atom
The atoms encountered so far. Saved as a map from
BitVec
expressions to a (width, atomNumber) pair. A cache for
atomsAssignment
. If it isnone
the cache is currently invalidated as new atoms have been added since it was last updated, if it issome
it must be consistent with the atoms contained inatoms
.- evalsAtCache : Std.HashMap Expr (Option Expr)
Cached calls to
evalsAtAtoms
of various reflection structures. Wheneveratoms
is modified this cache is invalidated asevalsAtAtoms
relies onatoms
.
Instances For
The reflection monad, used to track BitVec
variables that we see as we traverse the context.
Equations
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
Equations
- One or more equations did not get rendered due to their size.
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
Equations
- One or more equations did not get rendered due to their size.
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
Equations
- One or more equations did not get rendered due to their size.
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
Retrieve a BitVec.Assignment
representing the atoms we found so far.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyBinaryProof' mkFRefl fst (some fproof_2) mkSRefl snd (some sproof_2) = some (fproof_2, sproof_2)
- Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyBinaryProof' mkFRefl fst (some fproof_2) mkSRefl snd none = some (fproof_2, mkSRefl snd)
- Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyBinaryProof' mkFRefl fst none mkSRefl snd (some sproof_2) = some (mkFRefl fst, sproof_2)
- Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyBinaryProof' mkFRefl fst none mkSRefl snd none = none
Instances For
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyBinaryProof mkRefl fst fproof snd sproof = Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyBinaryProof' mkRefl fst fproof mkRefl snd sproof
Instances For
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyTernaryProof mkRefl fst (some fproof_2) snd sproof thd tproof = some (fproof_2, stproof)
- Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyTernaryProof mkRefl fst (some fproof_2) snd sproof thd tproof = some (fproof_2, mkRefl snd, mkRefl thd)
- Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyTernaryProof mkRefl fst none snd sproof thd tproof = some (mkRefl fst, stproof)
- Lean.Elab.Tactic.BVDecide.Frontend.M.simplifyTernaryProof mkRefl fst none snd sproof thd tproof = none
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 Expr (Option ReifiedBVExpr)
Cache for reification of
BVExpr
. - bvPredCache : Std.HashMap Expr (Option ReifiedBVPred)
Cache for reification of
BVPred
. - bvLogicalCache : Std.HashMap Expr (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.
Equations
Instances For
Equations
Instances For
Add another top level lemma.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.