unfold anyM.loop
case refine_1
α : Type u
as : Array α
p : α → Bool
j : Nat
IH : Id.run (anyM.loop p as (size as) (_ : size as ≤ size as) (j + 1)) = List.any (List.drop (j + 1) as.data) p
⊢ Id.run (anyM.loop p as (size as) (_ : size as ≤ size as) j) = List.any (List.drop j as.data) p
case refine_1
α : Type u
as : Array α
p : α → Bool
j : Nat
IH : Id.run (anyM.loop p as (size as) (_ : size as ≤ size as) (j + 1)) = List.any (List.drop (j + 1) as.data) p
⊢ Id.run
      (if hlt : j < size as then
        let_fun this := (_ : j < size as);
        do
        let __do_lift ← p as[j]
        if __do_lift = true then pure true else anyM.loop p as (size as) (_ : size as ≤ size as) (j + 1)
      else pure false) =
    List.any (List.drop j as.data) p