Documentation

Lean.Elab.Tactic.BVDecide.Frontend.Normalize.Basic

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 in bv_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.

@[reducible, inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
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.

@[inline]
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.