rw [dif_neg hlt, dif_neg (fun h => hlt <| Nat.lt_of_succ_lt_succ h)]
α : Type u
m : Type → Type v
inst✝ : Monad m
p : α → m Bool
a : α
x : Array α
stop : Nat
h : stop ≤ size x
i : Nat
hlt : ¬i < stop
⊢ (if hlt : i + 1 < stop + 1 then
      let_fun this := (_ : i + 1 < size (cons a x));
      do
      let __do_lift ← p (cons a x)[i + 1]
      if __do_lift = true then pure true
        else anyM.loop p (cons a x) (stop + 1) (_ : Nat.succ stop ≤ Nat.succ (List.length x.data)) (i + 1 + 1)
    else pure false) =
    if hlt : i < stop then
      let_fun this := (_ : i < size x);
      do
      let __do_lift ← p x[i]
      if __do_lift = true then pure true else anyM.loop p x stop h (i + 1)
    else pure false
no goals