this is in preparation for #4542, and extracts from `findRecArg` the functionality for trying one particular argument. It also refactors the code a bit. In particular * It reports errors in the order of the parameters, not the order of in which they are tried (it tries non-indices first). * For every argument it will say why it wasn't tried, even if the reason is quite obviously (fixed prefix, or `Prop`-typed etc.) Therefore there is some error message churn.
12 lines
388 B
Text
12 lines
388 B
Text
1673.lean:1:4-1:9: error: fail to show termination for
|
|
foo.a
|
|
with errors
|
|
structural recursion cannot be used:
|
|
|
|
argument #1 cannot be used for structural recursion
|
|
it is unchanged in the recursive calls
|
|
|
|
argument #2 cannot be used for structural recursion
|
|
it is unchanged in the recursive calls
|
|
|
|
well-founded recursion cannot be used, 'foo.a' does not take any (non-fixed) arguments
|