Zulip Chat Archive
Stream: new members
Topic: Induction on Dependent Pairs
Calvin Lee (Jan 23 2021 at 00:14):
I'm trying to write a function that will generate all elements of Fin n
for any n
. To do that I wrote a helper inductive function on Fin n
that would return all the elements of Fin n
below a certain value. However, even though the first element of the pair decreases, lean cannot prove termination. Is there anything I can do to remedy this? This is the failing function
theorem Nat.ltSucc : (n : Nat) -> Less n (Nat.succ n)
| 0 => rfl
| n'@(Nat.succ n) => ltSucc n
def allBelow {n : Nat} : (x : Fin n) -> List (Fin n)
| x@⟨0, _⟩ => [x]
| x@⟨Nat.succ m, lt⟩ => x :: allBelow ⟨m, Nat.ltTrans (Nat.ltSucc m) lt⟩
I'm using lean 4 nightly and the specific error is
error: fail to show termination for
allBelow
with errors
structural recursion cannot be used
well founded recursion has not been implemented yet
Notification Bot (Jan 23 2021 at 02:32):
This topic was moved by Mario Carneiro to #lean4 > Induction on Dependent Pairs
Last updated: Dec 20 2023 at 11:08 UTC