This module contains the implementation of the pre processing pass for handling equality on enum inductive types.
The implementation generates mappings from enum inductives occuring in the goal to sufficiently
large BitVec
and replaces equality on the enum inductives with equality on these mapping
functions.
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.Normalize.enumToBitVecSuffix = "enumToBitVec"
Instances For
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.Normalize.eqIffEnumToBitVecEqSuffix = "eq_iff_enumToBitVec_eq"
Instances For
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.Normalize.enumToBitVecLeSuffix = "enumToBitVec_le"
Instances For
Assuming that declName
is an enum inductive, construct a proof of
∀ (x y : declName) : x = y ↔ x.enumToBitVec = y.enumToBitVec
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
def
Lean.Elab.Tactic.BVDecide.Frontend.Normalize.getEqIffEnumToBitVecEqFor.mkInverse
{w : Nat}
(input retType instBEq : Expr)
(ctors : List Name)
(counter : BitVec w)
(acc : Expr)
:
Equations
- One or more equations did not get rendered due to their size.
- Lean.Elab.Tactic.BVDecide.Frontend.Normalize.getEqIffEnumToBitVecEqFor.mkInverse input retType instBEq [] counter acc = acc
Instances For
Assuming that declName
is an enum inductive, construct a proof of
∀ (x : declName) : x.enumToBitVec ≤ domainSize - 1
where domainSize
is the amount of
constructors of declName
.
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.