apply bind_congr
α : Type u
β : Type v
m : Type → Type v
inst✝¹ : Monad m
inst✝ : LawfulMonad m
a : α
x : Array α
p : α → α → m Bool
stop : Nat
h : stop ≤ size x
j : Nat
hj : j < stop
⊢ (do
      let __do_lift ← p a x[j]
      if __do_lift = true then pure true
        else
          anyPairM.loop (cons a x) p (stop + 1) (_ : Nat.succ stop ≤ Nat.succ (List.length x.data)) 0 (j + 1 + 1)
            (_ : 0 < Nat.succ (j + 1))) =
    do
    let x_1 ← p a x[j]
    let b ← if x_1 = true then pure true else anyM.loop (p a) x stop h (j + 1)
    if b = true then pure true else anyPairM.loop x p stop h 0 1 Nat.zero_lt_one
case h
α : Type u
β : Type v
m : Type → Type v
inst✝¹ : Monad m
inst✝ : LawfulMonad m
a : α
x : Array α
p : α → α → m Bool
stop : Nat
h : stop ≤ size x
j : Nat
hj : j < stop
⊢ ∀ (a_1 : Bool),
    (if a_1 = true then pure true
      else
        anyPairM.loop (cons a x) p (stop + 1) (_ : Nat.succ stop ≤ Nat.succ (List.length x.data)) 0 (j + 1 + 1)
          (_ : 0 < Nat.succ (j + 1))) =
      do
      let b ← if a_1 = true then pure true else anyM.loop (p a) x stop h (j + 1)
      if b = true then pure true else anyPairM.loop x p stop h 0 1 Nat.zero_lt_one