Due to nested recursion, we do two passes of `getRecArgInfo`: One on each argument in isolation, to see which inductive types are around (e.g. `Tree` and `List`), and then we later refine/replace this result with the data for the nested type former (the implicit `ListTree`). If we have nested recursion through a non-recursive data type like `Array` or `Prod` then arguemnts of these types should survive the first phase, so that we can still use them when looking for, say, `Array Tree`. This was helpfully reported by @arthur-adjedj.
159 lines
5.7 KiB
Text
159 lines
5.7 KiB
Text
guessLexFailures.lean:9:4-9:18: error: fail to show termination for
|
|
nonTerminating
|
|
with errors
|
|
failed to infer structural recursion:
|
|
Cannot use parameter #1:
|
|
failed to eliminate recursive application
|
|
nonTerminating n.succ m.succ
|
|
Cannot use parameter #2:
|
|
failed to eliminate recursive application
|
|
nonTerminating n.succ m.succ
|
|
|
|
|
|
Could not find a decreasing measure.
|
|
The arguments relate at each recursive call as follows:
|
|
(<, ≤, =: relation proved, ? all proofs failed, _: no proof attempted)
|
|
x1 x2
|
|
1) 11:12-46 ? ?
|
|
Please use `termination_by` to specify a decreasing measure.
|
|
guessLexFailures.lean:15:0-18:31: error: Could not find a decreasing measure.
|
|
The arguments relate at each recursive call as follows:
|
|
(<, ≤, =: relation proved, ? all proofs failed, _: no proof attempted)
|
|
x1 x2
|
|
1) 17:12-47 ? ?
|
|
Please use `termination_by` to specify a decreasing measure.
|
|
guessLexFailures.lean:20:4-20:15: error: fail to show termination for
|
|
noArguments
|
|
with errors
|
|
failed to infer structural recursion:
|
|
no parameters suitable for structural recursion
|
|
|
|
well-founded recursion cannot be used, 'noArguments' does not take any (non-fixed) arguments
|
|
guessLexFailures.lean:22:4-22:23: error: fail to show termination for
|
|
noNonFixedArguments
|
|
with errors
|
|
failed to infer structural recursion:
|
|
Not considering parameter n of noNonFixedArguments:
|
|
it is unchanged in the recursive calls
|
|
no parameters suitable for structural recursion
|
|
|
|
well-founded recursion cannot be used, 'noNonFixedArguments' does not take any (non-fixed) arguments
|
|
guessLexFailures.lean:27:0-33:31: error: Could not find a decreasing measure.
|
|
The arguments relate at each recursive call as follows:
|
|
(<, ≤, =: relation proved, ? all proofs failed, _: no proof attempted)
|
|
n m l
|
|
1) 29:6-25 = = =
|
|
2) 30:6-23 = < _
|
|
3) 31:6-23 < _ _
|
|
Please use `termination_by` to specify a decreasing measure.
|
|
guessLexFailures.lean:37:0-43:31: error: Could not find a decreasing measure.
|
|
The arguments relate at each recursive call as follows:
|
|
(<, ≤, =: relation proved, ? all proofs failed, _: no proof attempted)
|
|
n m x4
|
|
1) 39:6-27 = = =
|
|
2) 40:6-25 = < _
|
|
3) 41:6-25 < _ _
|
|
Please use `termination_by` to specify a decreasing measure.
|
|
guessLexFailures.lean:48:0-54:31: error: Could not find a decreasing measure.
|
|
The arguments relate at each recursive call as follows:
|
|
(<, ≤, =: relation proved, ? all proofs failed, _: no proof attempted)
|
|
n m l
|
|
1) 50:6-25 = = =
|
|
2) 51:6-23 = < _
|
|
3) 52:6-23 < _ _
|
|
Please use `termination_by` to specify a decreasing measure.
|
|
guessLexFailures.lean:59:6-59:7: error: fail to show termination for
|
|
Mutual.f
|
|
Mutual.g
|
|
Mutual.h
|
|
with errors
|
|
failed to infer structural recursion:
|
|
Not considering parameter fixed of Mutual.f:
|
|
it is unchanged in the recursive calls
|
|
Not considering parameter fixed of Mutual.g:
|
|
it is unchanged in the recursive calls
|
|
Not considering parameter fixed of Mutual.h:
|
|
it is unchanged in the recursive calls
|
|
Too many possible combinations of parameters of type Nat (or please indicate the recursive argument explicitly using `termination_by structural`).
|
|
Skipping arguments of type True, as Mutual.f has no compatible argument.
|
|
|
|
|
|
Could not find a decreasing measure.
|
|
The arguments relate at each recursive call as follows:
|
|
(<, ≤, =: relation proved, ? all proofs failed, _: no proof attempted)
|
|
Call from Mutual.f to Mutual.f at 61:8-33:
|
|
n m l
|
|
= = =
|
|
Call from Mutual.f to Mutual.f at 62:8-31:
|
|
n m l
|
|
= < <
|
|
Call from Mutual.f to Mutual.g at 63:8-39:
|
|
n m l
|
|
n < ? ?
|
|
m ? = ?
|
|
l ? ? <
|
|
Call from Mutual.g to Mutual.g at 68:8-35:
|
|
n m l
|
|
? ? =
|
|
Call from Mutual.g to Mutual.g at 69:8-33:
|
|
n m l
|
|
_ _ <
|
|
Call from Mutual.g to Mutual.h at 70:8-27:
|
|
n m l
|
|
n _ _ ?
|
|
m _ _ ?
|
|
Call from Mutual.h to Mutual.f at 75:8-33:
|
|
n m
|
|
n _ _
|
|
m _ _
|
|
l _ _
|
|
Call from Mutual.h to Mutual.h at 76:8-27:
|
|
n m
|
|
_ _
|
|
Call from Mutual.h to Mutual.h at 77:8-27:
|
|
n m
|
|
_ _
|
|
|
|
Please use `termination_by` to specify a decreasing measure.
|
|
guessLexFailures.lean:87:4-87:5: error: fail to show termination for
|
|
DuplicatedCall.f
|
|
with errors
|
|
failed to infer structural recursion:
|
|
Cannot use parameter #1:
|
|
failed to eliminate recursive application
|
|
DuplicatedCall.f (n + 2) (m + 1)
|
|
Cannot use parameter #2:
|
|
failed to eliminate recursive application
|
|
DuplicatedCall.f (n + 2) (m + 1)
|
|
|
|
|
|
Could not find a decreasing measure.
|
|
The arguments relate at each recursive call as follows:
|
|
(<, ≤, =: relation proved, ? all proofs failed, _: no proof attempted)
|
|
n m
|
|
1) 89:19-32 ? ?
|
|
Please use `termination_by` to specify a decreasing measure.
|
|
guessLexFailures.lean:100:0-103:31: error: Could not find a decreasing measure.
|
|
The arguments relate at each recursive call as follows:
|
|
(<, ≤, =: relation proved, ? all proofs failed, _: no proof attempted)
|
|
n m
|
|
1) 101:83-105 ? ?
|
|
Please use `termination_by` to specify a decreasing measure.
|
|
guessLexFailures.lean:113:14-113:31: error: failed to prove termination, possible solutions:
|
|
- Use `have`-expressions to prove the remaining goals
|
|
- Use `termination_by` to specify a different well-founded relation
|
|
- Use `decreasing_by` to specify your own tactic for discharging this kind of goal
|
|
n✝ m n : Nat
|
|
⊢ n < n✝
|
|
guessLexFailures.lean:119:0-123:31: error: Could not find a decreasing measure.
|
|
The arguments relate at each recursive call as follows:
|
|
(<, ≤, =: relation proved, ? all proofs failed, _: no proof attempted)
|
|
n m
|
|
1) 121:31-54 ? ?
|
|
Please use `termination_by` to specify a decreasing measure.
|
|
guessLexFailures.lean:131:14-131:31: error: failed to prove termination, possible solutions:
|
|
- Use `have`-expressions to prove the remaining goals
|
|
- Use `termination_by` to specify a different well-founded relation
|
|
- Use `decreasing_by` to specify your own tactic for discharging this kind of goal
|
|
m n✝ n : Nat
|
|
⊢ n < n✝ + 1
|