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
The state of the reflection monad
- atoms : Std.HashMap Lean.Expr (Nat × Nat)
The atoms encountered so far. Saved as a map from
BitVec
expressions to a (width, atomNumber) pair. - atomsAssignmentCache : Lean.Expr
A cache for
atomsAssignment
.
Instances For
@[reducible, inline]
The reflection monad, used to track BitVec
variables that we see as we traverse the context.
Equations
Instances For
def
Lean.Elab.Tactic.BVDecide.Frontend.M.run
{α : Type}
(m : Lean.Elab.Tactic.BVDecide.Frontend.M α)
:
Run a reflection computation as a MetaM
one.
Equations
- m.run = StateRefT'.run' m { atoms := ∅, atomsAssignmentCache := Lean.mkConst `List.nil [Lean.Level.zero] }
Instances For
Retrieve the atoms as pairs of their width and expression.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Retrieve a BitVec.Assignment
representing the atoms we found so far.
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.M.atomsAssignment = do let __do_lift ← getThe Lean.Elab.Tactic.BVDecide.Frontend.State pure __do_lift.atomsAssignmentCache
Instances For
Look up an expression in the atoms, recording it if it has not previously appeared.
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.