Before, the termination argument as inferred by `GuessLex` was passed further on as `Syntax`, to be elaborated later in `WF.Rel`. This didn’t feel quite right anymore. In particular if we want to teach `GuessLex` about guessing more complex termination arguments like `xs.size - i`, using `Expr` here is more natural. So this introduces `TerminationArgument` based on an `Expr` to be used here. A side-effect of how the termination arguments are elaborated is that the unused variables linter will now look at `termination_by` variables, and that parameters past the colon are not even invisibly in scope, so `‹_›` will not find them See https://github.com/leanprover-community/mathlib4/pull/11370/files for examples of fixing these changes.
4 lines
134 B
Text
4 lines
134 B
Text
Inferred termination argument:
|
|
termination_by x1 x2 => (x1, x2, 0)
|
|
Inferred termination argument:
|
|
termination_by x1 x2 => (x1, x2, 1)
|