This module contains the implementation of bv_normalize which is effectively a custom bv_normalize
simp set that is called like this: simp only [seval, bv_normalize]. The rules in bv_normalize
fulfill two goals:
- Turn all hypothesis involving
BoolandBitVecinto the formx = truewherexonly consists of a operations onBoolandBitVec. In particular noPropshould be contained. This makes the reflection procedure further down the pipeline much easier to implement. - Apply simplification rules from the Bitwuzla SMT solver.
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
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
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.Normalize.mkPow x y = Lean.Meta.mkAppM `HPow.hPow #[x, y]
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
A pass in the normalization pipeline. Takes the current goal and produces a refined one or closes
the goal fully, indicated by returning none.
- name : Lean.Name
- run : Lean.MVarId → Lean.MetaM (Option Lean.MVarId)
Instances For
Repeatedly run a list of Pass until they either close the goal or an iteration doesn't change
the goal anymore.
Responsible for applying the Bitwuzla style rewrite rules.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Flatten out ands. That is look for hypotheses of the form h : (x && y) = true and replace them
with h.left : x = true and h.right : y = true. This can enable more fine grained substitutions
in embedded constraint substitution.
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
Substitute embedded constraints. That is look for hypotheses of the form h : x = true and use
them to substitute occurences of x within other hypotheses. Additionally this drops all
redundant top level hypotheses.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Normalize with respect to Associativity and Commutativity.
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.