Documentation

Lean.Elab.PreDefinition.Basic

A (potentially recursive) definition. The elaborator converts it into Kernel definitions using many different strategies.

Instances For

    Applies Lean.instantiateMVars to the types of values of each predefinition.

    Instances For

      Applies Lean.Elab.Term.levelMVarToParam to the types of each predefinition.

      Instances For
        def Lean.Elab.fixLevelParams (preDefs : Array PreDefinition) (scopeLevelNames allUserLevelNames : List Name) :
        Instances For

          Applies Meta.letToHave to the values of defs, instances, and abbrevs. Does not apply the transformation to values that are proofs, or to unsafe definitions.

          Instances For

            Applies Meta.letToHave to the type of the predef.

            Instances For

              Auxiliary method for (temporarily) adding pre definition as an axiom

              Instances For

                Adds the docstring, if relevant.

                This should be done just after compilation so the predefinition can be executed in examples in its docstring. If code generation will not occur, then it should be done after adding the declaration to the environment.

                Instances For

                  Adds constant info to the definition name. This should occur after executing post-compilation attributes, in case they have an effect on hovers.

                  Instances For
                    def Lean.Elab.addAndCompileNonRec (docCtx : LocalContext × LocalInstances) (preDef : PreDefinition) (all : List Name := [preDef.declName]) (cleanupValue isRecursive : Bool := false) :
                    Instances For
                      def Lean.Elab.addNonRec (docCtx : LocalContext × LocalInstances) (preDef : PreDefinition) (applyAttrAfterCompilation : Bool := true) (all : List Name := [preDef.declName]) (cacheProofs : Bool := true) (cleanupValue isRecursive : Bool := false) :
                      Instances For

                        Eliminate recursive application annotations containing syntax. These annotations are used by the well-founded recursion module to produce better error messages.

                        Instances For
                          def Lean.Elab.ensureNoRecFn (recFnNames : Array Name) (e : Expr) :
                          Instances For

                            Checks that all codomains have the same level, throws an error otherwise.

                            Instances For