rw [List.extract_step]
α : Type u_1
as bs : Array α
start stop : Nat
hstart : start ≤ stop
hstop : stop ≤ bs.size
hne : ¬start = stop
hstart' : start < stop
this : start < bs.size
⊢ (foldl push (as.push bs[start]) bs (start + 1) stop).data = as.data ++ bs.data.extract start stop
α : Type u_1
as bs : Array α
start stop : Nat
hstart : start ≤ stop
hstop : stop ≤ bs.size
hne : ¬start = stop
hstart' : start < stop
this : start < bs.size
⊢ (foldl push (as.push bs[start]) bs (start + 1) stop).data =
    as.data ++ bs.data.get ⟨start, ⋯⟩ :: bs.data.extract (start + 1) stop

case hstart
α : Type u_1
as bs : Array α
start stop : Nat
hstart : start ≤ stop
hstop : stop ≤ bs.size
hne : ¬start = stop
hstart' : start < stop
this : start < bs.size
⊢ start < stop

case hstop
α : Type u_1
as bs : Array α
start stop : Nat
hstart : start ≤ stop
hstop : stop ≤ bs.size
hne : ¬start = stop
hstart' : start < stop
this : start < bs.size
⊢ stop ≤ bs.data.length