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.
Instances For
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.
Instances For
- 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.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- Lean.Elab.Tactic.BVDecide.Frontend.Normalize.PreProcessM.checkRewritten fvar = do let __do_lift ← get pure (__do_lift.rewriteCache.contains fvar)
Instances For
Equations
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.PreProcessM.getTypeAnalysis = do let __do_lift ← get pure __do_lift.typeAnalysis
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
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)
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Repeatedly run a list of Pass
until they either close the goal or an iteration doesn't change
the goal anymore.