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.
9 lines
663 B
Text
9 lines
663 B
Text
issue2260.lean:8:0-8:21: error: The termination argument's type must not depend on the function's varying parameters, but foo's termination argument does:
|
|
{i : Nat} → DNat i → DNat i
|
|
Try using `sizeOf` explicitly
|
|
issue2260.lean:15:0-15:21: error: The termination argument's type must not depend on the function's varying parameters, but bar1's termination argument does:
|
|
{i : Nat} → DNat i → DNat i
|
|
Try using `sizeOf` explicitly
|
|
issue2260.lean:31:0-31:21: error: The termination argument's type must not depend on the function's varying parameters, but baz2's termination argument does:
|
|
{i : Nat} → DNat i → DNat i
|
|
Try using `sizeOf` explicitly
|