Documentation

Lean.Meta.Tactic.BVDecide.Normalize.Basic

This module contains the basic preprocessing pipeline framework for bv_normalize.

@[inline]
Equations
  • One or more equations did not get rendered due to their size.
Instances For
    Instances For

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

              The mode that the bv_normalize preprocessing pipeline runs in.

              • solve (restrictedTypes : Option (Array Name)) : Mode

                A regular run as part of bv_decide or a standalone bv_normalize. restrictedTypes are the types that the structure and enum analysis is restricted to, as provided by the types clause. If this is none the analysis discovers the relevant types on its own.

              • push : Mode

                A run as part of bv_decide_push. It merely prepares the caches of the passes for later runs of the pipeline on descendants of this goal and may thus only produce context independent information.

              Instances For

                Disables the configuration options that mode cannot support. In push mode these are the options that either depend on the context (e.g. enums, structures) or require a more clever incrementality scheme (e.g. embeddedConstraintSubst, andFlattening).

                Equations
                Instances For

                  The immutable context of the bv_normalize preprocessing pipeline. Use PreProcessContext.new to create one.

                  Instances For

                    Creates the context for a run of the pipeline in mode, disabling all configuration options that mode does not support.

                    Equations
                    Instances For

                      Identifies the Sym.Simp cache that a pass operates on.

                      Instances For

                        Identifies the Sym.DSimp cache that a pass operates on.

                        Instances For
                          Equations
                          Instances For
                            Equations
                            Instances For
                              • The caches of the passes that maintain one.

                              • typeAnalysis : TypeAnalysis

                                Analysis results for the structure and enum pass if required.

                              • target : Target

                                The target we are operating on.

                              • hypotheses : Array Hyp

                                The set of hypotheses we are operating on. These should be interpreted from withing the lctx of the goal. But they may not necessarily be fvars registered in the goal.

                              • didChange : Bool

                                A didChange flag for our fixpoint simplification loop.

                              Instances For
                                @[reducible, inline]
                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  Equations
                                  Instances For
                                    Equations
                                    Instances For
                                      @[inline]
                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        @[inline]

                                        Runs x on the target if it is a grind goal and writes the updated goal back. Returns none if the target is a plain MVarId.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For

                                          Closes the target using falseProof : False. Grind targets are additionally marked as inconsistent so that grind knows that there is nothing left to do for this goal.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For
                                            @[inline]
                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For
                                              @[inline]
                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                @[inline]
                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For

                                                  Drops the caches of all passes that maintain one. In bv_decide_push mode this is a no-op as the caches are the very thing that we want to hand to the next invocation.

                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    @[inline]
                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      @[inline]
                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For
                                                        @[inline]
                                                        Equations
                                                        • One or more equations did not get rendered due to their size.
                                                        Instances For
                                                          @[inline]
                                                          Equations
                                                          • One or more equations did not get rendered due to their size.
                                                          Instances For
                                                            @[inline]
                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For
                                                              @[inline]
                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              Instances For
                                                                @[inline]
                                                                Equations
                                                                • One or more equations did not get rendered due to their size.
                                                                Instances For
                                                                  @[inline]
                                                                  Equations
                                                                  • One or more equations did not get rendered due to their size.
                                                                  Instances For
                                                                    @[inline]
                                                                    Equations
                                                                    • One or more equations did not get rendered due to their size.
                                                                    Instances For
                                                                      @[inline]
                                                                      Equations
                                                                      • One or more equations did not get rendered due to their size.
                                                                      Instances For

                                                                        Runs Sym.Simp on hyp, using the cache identified by cacheId and updating it in place.

                                                                        Equations
                                                                        • One or more equations did not get rendered due to their size.
                                                                        Instances For

                                                                          Runs Sym.DSimp on hyp, using the cache identified by cacheId and updating it in place.

                                                                          Equations
                                                                          • One or more equations did not get rendered due to their size.
                                                                          Instances For
                                                                            @[inline]
                                                                            Equations
                                                                            • One or more equations did not get rendered due to their size.
                                                                            Instances For
                                                                              @[inline]
                                                                              Equations
                                                                              • One or more equations did not get rendered due to their size.
                                                                              Instances For

                                                                                A pass in the normalization pipeline. It operates on the current set of hypotheses stored in the PreProcessM monad. If it manages to find a way to close the associated goal it can indicate so by returning true. Otherwise it should always return false.

                                                                                Instances For
                                                                                  @[inline]
                                                                                  Equations
                                                                                  Instances For

                                                                                    Repeatedly run a list of Pass until they either close the goal or an iteration doesn't change the goal anymore.

                                                                                    Equations
                                                                                    • One or more equations did not get rendered due to their size.
                                                                                    Instances For