unfold go
α : Type u_2
β : Type u_3
γ : Type u_1
as : Array α
bs : Array β
f : α → β → γ
p : size as = size bs
i : Nat
arr : Array γ
ip : i ≤ size as
ap : i = size arr
⊢ size (go as bs f p arr i) = size as
α : Type u_2
β : Type u_3
γ : Type u_1
as : Array α
bs : Array β
f : α → β → γ
p : size as = size bs
i : Nat
arr : Array γ
ip : i ≤ size as
ap : i = size arr
⊢ size
      (if q : i < size as then
        let a := as[i];
        let b := bs[i];
        go as bs f p (push arr (f a b)) (i + 1)
      else arr) =
    size as