the support for mutual structural recursion (new since #4575) is extended so that Lean tries to infer it even without annotations. * The error message when termination checking fails looks quite different now. Maybe a bit better, maybe with more room for improvements. * If there are too many combinations (with an arbitrary cut-off) for a given argument type, it will just give up and ask the user to use `termination_by structural`. * It is now legal to specify `termination_by structural` on not necessarily all functions of a clique; this simply restricts the combinations of arguments that Lean considers. --------- Co-authored-by: Tobias Grosser <tobias@grosser.es>
11 lines
410 B
Text
11 lines
410 B
Text
1673.lean:1:4-1:9: error: fail to show termination for
|
|
foo.a
|
|
with errors
|
|
failed to infer structural recursion:
|
|
Not considering parameter n of foo.a:
|
|
it is unchanged in the recursive calls
|
|
Not considering parameter nope of foo.a:
|
|
it is unchanged in the recursive calls
|
|
no parameters suitable for structural recursion
|
|
|
|
well-founded recursion cannot be used, 'foo.a' does not take any (non-fixed) arguments
|