Documentation

Lean.Meta.Eqns

These options affect the generation of equational theorems in a significant way. For these, their value at definition time, not realization time, should matter.

This is implemented by storing their values at definition time (when non-default) in an environment extension, and restoring them when the equations are lazily realized.

Equations
Instances For

    Environment extension that stores the values of eqnAffectingOptions at definition time, keyed by declaration name. Only populated when at least one option has a non-default value. Stores an association list of (option name, value) pairs for options that differ from defaults.

    Returns true if s is of the form eq_<idx>

    Equations
    Instances For

      The equational theorem for a definition can be private even if the definition itself is not. So un-private the name here when looking for a declaration

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        def Lean.Meta.mkEqLikeNameFor (env : Environment) (declName : Name) (suffix : String) :
        Equations
        • One or more equations did not get rendered due to their size.
        Instances For

          Throw an error if names for equation theorems for declName are not available.

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

            Registers a new function for retrieving equation theorems. We generate equations theorems on demand, and they are generated by more than one module. For example, the structural and well-founded recursion modules generate them. Most recent getters are tried first.

            A getter returns an Option (Array Name). The result is none if the getter failed. Otherwise, it is a sequence of theorem names where each one of them corresponds to an alternative. Example: the definition

            def f (xs : List Nat) : List Nat :=
              match xs with
              | [] => []
              | x::xs => (x+1)::f xs
            

            should have two equational theorems associated with it

            f [] = []
            

            and

            (x : Nat) → (xs : List Nat) → f (x :: xs) = (x+1) :: f xs
            
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              A mapping from equational theorem to the declaration it was derived from.

              Instances For

                A mapping from equational theorem to the declaration it was derived from.

                def Lean.Meta.withEqnOptions {α : Type} (declName : Name) (act : MetaM α) :

                Runs act with the equation-affecting options restored to the values stored for declName at definition time (or reset to their defaults if none were stored). Use this inside realizeConst callbacks, which otherwise see the caller-independent ctx.opts rather than the outer getEqnsFor? context.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  def Lean.Meta.mkSimpleEqThm (declName name : Name) :

                  Simple equation theorem for nonrecursive definitions.

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

                    Returns some declName if thmName is an equational theorem for declName.

                    Equations
                    Instances For

                      Returns true if thmName is an equational theorem.

                      Equations
                      Instances For

                        Returns equation theorems for the given declaration.

                        Equations
                        Instances For

                          If any equation theorem affecting option is not the default value, store the option values for later use during lazy equation generation.

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

                            Registers a new function for retrieving a "unfold" equation theorem.

                            We generate this kind of equation theorem on demand, and it is generated by more than one module. For example, the structural and well-founded recursion modules generate it. Most recent getters are tried first.

                            A getter returns an Option Name. The result is none if the getter failed. Otherwise, it is a theorem name. Example: the definition

                            def f (xs : List Nat) : List Nat :=
                              match xs with
                              | [] => []
                              | x::xs => (x+1)::f xs
                            

                            should have the theorem

                            (xs : Nat) →
                              f xs =
                                match xs with
                                | [] => []
                                | x::xs => (x+1)::f xs
                            
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              def Lean.Meta.getUnfoldEqnFor? (declName : Name) (nonRec : Bool := false) :

                              Returns an "unfold" theorem (f.eq_def) for the given declaration. By default, we do not create unfold theorems for nonrecursive definitions. You can use nonRec := true to override this behavior.

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