Support for termination_by notation #
Equations
Instances For
A single decreasing_by clause
Instances For
Instances For
Equations
- partialFixpoint : PartialFixpointType
- coinductiveFixpoint : PartialFixpointType
- inductiveFixpoint : PartialFixpointType
Instances For
A single partial_fixpoint, inductive_fixpoint or coinductive_fixpoint clause
- ref : Syntax
- fixpointType : PartialFixpointType
Instances For
Equations
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.
- ref : Syntax
- terminationBy? : Option TerminationBy
- partialFixpoint? : Option PartialFixpoint
- decreasingBy? : Option DecreasingBy
- extraParams : Nat
Here we record the number of parameters past the
:. It is set byTerminationHints.rememberExtraParamsand used as follows:- When we guess the termination measure 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 measure in
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
Instances For
Equations
- Lean.Elab.TerminationHints.none = { ref := Lean.Syntax.missing, terminationBy?? := none, terminationBy? := none, partialFixpoint? := none, decreasingBy? := none, extraParams := 0 }
Instances For
Logs warnings when the TerminationHints are unexpectedly 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
- hints.isNotNone = (hints.terminationBy??.isSome || hints.terminationBy?.isSome || hints.decreasingBy?.isSome || hints.partialFixpoint?.isSome)
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
Takes apart a Termination.suffix syntax object
Equations
- One or more equations did not get rendered due to their size.