Documentation

Lean.Elab.PreDefinition.TerminationHint

Support for termination_by notation #

A single termination_by clause

  • ref : Syntax
  • structural : Bool
  • vars : TSyntaxArray [`ident, `Lean.Parser.Term.hole]
  • body : Term
  • synthetic : Bool

    If synthetic := true, then this termination_by clause was generated by GuessLex, and vars refers to all parameters of the function, not just the “extra parameters”. Cf. Lean.Elab.WF.unpackUnary

Instances For

    A single decreasing_by clause

    Instances For
      Instances For

        A single partial_fixpoint, greatest_fixpoint or least_fixpoint clause

        Instances For

          The termination annotations for a single function. For decreasing_by, we store the whole decreasing_by tacticSeq expression, as this is what Term.runTactic expects.

          Instances For
            Equations
              Instances For
                Equations
                  Instances For
                    Equations
                      Instances For

                        Logs warnings when the TerminationHints are unexpectedly present.

                        Equations
                          Instances For

                            True if any form of termination hint is present.

                            Equations
                              Instances For

                                Remembers extraParams for later use. Needs to happen early enough where we still know how many parameters came from the function header (headerParams).

                                Equations
                                  Instances For
                                    def Lean.Elab.TerminationBy.checkVars (funName : Name) (extraParams : Nat) (tb : TerminationBy) :

                                    Checks that termination_by binds at most as many variables are present in the outermost lambda of value, and throws appropriate errors.

                                    Equations
                                      Instances For
                                        def Lean.Elab.elabTerminationHints {m : TypeType} [Monad m] [MonadError m] (stx : TSyntax `Lean.Parser.Termination.suffix) :

                                        Takes apart a Termination.suffix syntax object

                                        Equations
                                          Instances For