case cons xs_hd xs_tl xs_ih =>
  simp at h1
  cases ys
  case nil =>
    contradiction
  case cons ys_hd ys_tl =>
    simp only [Function.updateListITE]
    simp only [Function.updateITE]
    cases h1
    case inl h1 =>
      simp only [if_pos h1]
    case inr h1 =>
      split_ifs
      case pos =>
        rfl
      case neg c1 =>
        simp at h2
        exact xs_ih ys_tl h1 h2
α β : Type
inst✝ : DecidableEq α
f g : α → β
v xs_hd : α
xs_tl : List α
xs_ih : ∀ (ys : List β), v ∈ xs_tl → xs_tl.length = ys.length → updateListITE f xs_tl ys v = updateListITE g xs_tl ys v
ys : List β
h1 : v ∈ xs_hd :: xs_tl
h2 : (xs_hd :: xs_tl).length = ys.length
⊢ updateListITE f (xs_hd :: xs_tl) ys v = updateListITE g (xs_hd :: xs_tl) ys v
no goals