This module contains the basic preprocessing pipeline framework for bv_normalize
.
The various kinds of matches supported by the match to cond infrastructure.
- simpleEnum
(info : InductiveVal)
(ctors : Array ConstructorVal)
: MatchKind
It is a full match statement on an enum inductive with one constructor handled per arm. The ctors are listed in the order they occur in the match statement in
ctors
. - enumWithDefault
(info : InductiveVal)
(ctors : Array ConstructorVal)
: MatchKind
It is a match statement on an enum inductive with a default arm, all explicitly handled ctors are listed in
ctors
in the order they occur in the match statement.
Contains the result of the type analysis to be used in the structures and enums pass.
- interestingStructures : Std.HashSet Name
Structures that are interesting for the structures pass.
- interestingEnums : Std.HashSet Name
Inductives enums that are interesting for the enums pass.
- interestingMatchers : Std.HashMap Name MatchKind
func.match_x
auxiliary declarations that we consider interesting. - uninteresting : Std.HashSet Name
Other types that we've seen that are not interesting, currently only used as a cache.
- rewriteCache : Std.HashSet FVarId
Contains
FVarId
that we already know are inbv_normalize
simp normal form and thus don't need to be processed again when we visit the next time. - acNfCache : Std.HashSet FVarId
Contains
FVarId
that we already know have been run through the AC normal form and thus don't don't need to be processed again when we visit the next time. - typeAnalysis : TypeAnalysis
Analysis results for the structure and enum pass if required.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.Normalize.PreProcessM.checkRewritten fvar = do let __do_lift ← get pure (__do_lift.rewriteCache.contains fvar)
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.Normalize.PreProcessM.getTypeAnalysis = do let __do_lift ← get pure __do_lift.typeAnalysis
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
Equations
- One or more equations did not get rendered due to their size.
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 : Name
- run' : MVarId → PreProcessM (Option MVarId)
Equations
- One or more equations did not get rendered due to their size.
Repeatedly run a list of Pass
until they either close the goal or an iteration doesn't change
the goal anymore.