next ha =>
  rw [eqNdrec_symm]
  apply ih
  rw [val_ndrec]
  exact h
case isTrue
α : Type u_1
s : Setoid α
inst✝ : DecidableRel Setoid.r
xs✝ : List α
x : α
xs : List α
ih : ∀ {i : xs.Index} {j : (List.dedup s xs).Index}, Setoid.r i.val j.val → dedup s i = j
i✝ : (x :: xs).Index
j : (List.dedup s (x :: xs)).Index
i : xs.Index
h : Setoid.r i.val j.val
h✝ : Logic.Any (List.map (Setoid.r x) xs)
⊢ (let_fun this := ⋯;
    ⋯ ▸ dedup s i) =
    j

case isFalse
α : Type u_1
s : Setoid α
inst✝ : DecidableRel Setoid.r
xs✝ : List α
x : α
xs : List α
ih : ∀ {i : xs.Index} {j : (List.dedup s xs).Index}, Setoid.r i.val j.val → dedup s i = j
i✝ : (x :: xs).Index
j : (List.dedup s (x :: xs)).Index
i : xs.Index
h : Setoid.r i.val j.val
h✝ : ¬Logic.Any (List.map (Setoid.r x) xs)
⊢ (let_fun this := ⋯;
    ⋯ ▸ (dedup s i).tail) =
    j
case isFalse
α : Type u_1
s : Setoid α
inst✝ : DecidableRel Setoid.r
xs✝ : List α
x : α
xs : List α
ih : ∀ {i : xs.Index} {j : (List.dedup s xs).Index}, Setoid.r i.val j.val → dedup s i = j
i✝ : (x :: xs).Index
j : (List.dedup s (x :: xs)).Index
i : xs.Index
h : Setoid.r i.val j.val
h✝ : ¬Logic.Any (List.map (Setoid.r x) xs)
⊢ (let_fun this := ⋯;
    ⋯ ▸ (dedup s i).tail) =
    j