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.
The bitblaster for multiplication introduces symbolic branches over the right hand side.
If we have an expression of the form c * x
where c
is constant we should change it to x * c
such that these symbolic branches get constant folded by the AIG framework.
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
- goal : Option Lean.MVarId
- stats : Lean.Meta.Simp.Stats
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.