Support for termination_by notation #
A single termination_by clause
- ref : Lean.Syntax
- vars : Lean.TSyntaxArray [`ident, `Lean.Parser.Term.hole]
- body : Lean.Term
- synthetic : Bool
Instances For
Equations
- Lean.Elab.WF.instInhabitedTerminationBy = { default := { ref := default, vars := default, body := default, synthetic := default } }
Equations
- One or more equations did not get rendered due to their size.
Instances For
A complete set of termination_by hints, as applicable to a single clique.
Instances For
A single decreasing_by clause
- ref : Lean.Syntax
- tactic : Lean.TSyntax `Lean.Parser.Tactic.tacticSeq
Instances For
Equations
- Lean.Elab.WF.instInhabitedDecreasingBy = { default := { ref := default, tactic := default } }
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.
- ref : Lean.Syntax
- terminationBy?? : Option Lean.Syntax
- terminationBy? : Option Lean.Elab.WF.TerminationBy
- decreasingBy? : Option Lean.Elab.WF.DecreasingBy
- extraParams : Nat
Here we record the number of parameters past the
:. It is set byTerminationHints.rememberExtraParamsand used as folows:- When we guess the termination argument in
GuessLexand want to print it in surface-syntax compatible form. - If there are fewer variables in the
termination_byannotation than there are extra parameters, we know which parameters they should apply to (TerminationBy.checkVars).
- When we guess the termination argument in
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- Lean.Elab.WF.TerminationHints.none = { ref := Lean.Syntax.missing, terminationBy?? := none, terminationBy? := none, decreasingBy? := none, extraParams := 0 }
Instances For
Logs warnings when the TerminationHints are present.
Equations
- One or more equations did not get rendered due to their size.
Instances For
True if any form of termination hint is present.
Equations
- Lean.Elab.WF.TerminationHints.isNotNone hints = (Option.isSome hints.terminationBy?? || Option.isSome hints.terminationBy? || Option.isSome hints.decreasingBy?)
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
- One or more equations did not get rendered due to their size.
Instances For
Checks that termination_by binds at most as many variables are present in the outermost
lambda of value, and throws appropriate errors.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Takes apart a Termination.suffix syntax object
Equations
- One or more equations did not get rendered due to their size.