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