{α : Type u} →
  [inst : Std.PRange.UpwardEnumerable α] →
    [inst_1 : LT α] →
      [DecidableLT α] →
        [Std.PRange.LawfulUpwardEnumerable α] →
          {n : Type u → Type w} →
            [Monad n] →
              (γ : Type u) →
                (Pl : α → γ → ForInStep γ → Prop) →
                  (LargeEnough : α → Prop) →
                    (∀ (a b : α), Std.PRange.UpwardEnumerable.LE a b → LargeEnough a → LargeEnough b) →
                      (upperBound : α) →
                        γ →
                          (next : α) →
                            LargeEnough next →
                              ((out : α) → LargeEnough out → out < upperBound → (c : γ) → n (Subtype (Pl out c))) → n γ