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
Bool
andBitVec
into the formx = true
wherex
only consists of a operations onBool
andBitVec
. In particular noProp
should 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
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.
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.
Instances For
Normalize with respect to Associativity and Commutativity.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Instances For
Equations
- One or more equations did not get rendered due to their size.