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 } }
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
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.