Documentation

Lean.Elab.Tactic.BVDecide.Frontend.Normalize.Enums

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.

Assuming that declName is an enum inductive construct a function of type declName → BitVec w that maps declName constructors to their numeric indices as BitVec.

Equations
  • One or more equations did not get rendered due to their size.
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
      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.
              Instances For