∀ {m : Type u → Type v} [inst : Monad m] {α : Type w} {β : Type x} {γ : Type u} (f : α → β → m γ) (x : List α)
  (x_1 : List β),
  List.zipWithM' f x x_1 =
    match x, x_1 with
    | x :: xs, y :: ys => do
      let z ← f x y
      let zs ← List.zipWithM' f xs ys
      pure (z :: zs)
    | x, x_2 => pure []