Documentation

Init.Data.Range.Polymorphic.Lemmas

Lemmas about ranges #

This file provides lemmas about Std.PRange.

theorem Std.Rcc.forIn'_congr {α : Type u} [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] {γ : Type u} {init init' : γ} {r r' : Rcc α} {f : (a : α) → a rγm (ForInStep γ)} {f' : (a : α) → a r'γm (ForInStep γ)} (hr : r = r') (hi : init = init') (h : ∀ (a : α) (m_1 : a r') (b : γ), f a b = f' a m_1 b) :
forIn' r init f = forIn' r' init' f'
theorem Std.Rco.forIn'_congr {α : Type u} [LE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] {γ : Type u} {init init' : γ} {r r' : Rco α} {f : (a : α) → a rγm (ForInStep γ)} {f' : (a : α) → a r'γm (ForInStep γ)} (hr : r = r') (hi : init = init') (h : ∀ (a : α) (m_1 : a r') (b : γ), f a b = f' a m_1 b) :
forIn' r init f = forIn' r' init' f'
theorem Std.Rci.forIn'_congr {α : Type u} [LE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] {γ : Type u} {init init' : γ} {r r' : Rci α} {f : (a : α) → a rγm (ForInStep γ)} {f' : (a : α) → a r'γm (ForInStep γ)} (hr : r = r') (hi : init = init') (h : ∀ (a : α) (m_1 : a r') (b : γ), f a b = f' a m_1 b) :
forIn' r init f = forIn' r' init' f'
theorem Std.Roc.forIn'_congr {α : Type u} [LE α] [LT α] [DecidableLE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] {γ : Type u} {init init' : γ} {r r' : Roc α} {f : (a : α) → a rγm (ForInStep γ)} {f' : (a : α) → a r'γm (ForInStep γ)} (hr : r = r') (hi : init = init') (h : ∀ (a : α) (m_1 : a r') (b : γ), f a b = f' a m_1 b) :
forIn' r init f = forIn' r' init' f'
theorem Std.Roo.forIn'_congr {α : Type u} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] {γ : Type u} {init init' : γ} {r r' : Roo α} {f : (a : α) → a rγm (ForInStep γ)} {f' : (a : α) → a r'γm (ForInStep γ)} (hr : r = r') (hi : init = init') (h : ∀ (a : α) (m_1 : a r') (b : γ), f a b = f' a m_1 b) :
forIn' r init f = forIn' r' init' f'
theorem Std.Roi.forIn'_congr {α : Type u} [LT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] {γ : Type u} {init init' : γ} {r r' : Roi α} {f : (a : α) → a rγm (ForInStep γ)} {f' : (a : α) → a r'γm (ForInStep γ)} (hr : r = r') (hi : init = init') (h : ∀ (a : α) (m_1 : a r') (b : γ), f a b = f' a m_1 b) :
forIn' r init f = forIn' r' init' f'
theorem Std.Ric.forIn'_congr {α : Type u} [LE α] [DecidableLE α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] {γ : Type u} {init init' : γ} {r r' : Ric α} {f : (a : α) → a rγm (ForInStep γ)} {f' : (a : α) → a r'γm (ForInStep γ)} (hr : r = r') (hi : init = init') (h : ∀ (a : α) (m_1 : a r') (b : γ), f a b = f' a m_1 b) :
forIn' r init f = forIn' r' init' f'
theorem Std.Rio.forIn'_congr {α : Type u} [LT α] [DecidableLT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] {γ : Type u} {init init' : γ} {r r' : Rio α} {f : (a : α) → a rγm (ForInStep γ)} {f' : (a : α) → a r'γm (ForInStep γ)} (hr : r = r') (hi : init = init') (h : ∀ (a : α) (m_1 : a r') (b : γ), f a b = f' a m_1 b) :
forIn' r init f = forIn' r' init' f'
theorem Std.Rii.forIn'_congr {α : Type u} [PRange.UpwardEnumerable α] [PRange.Least? α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] {m : Type u → Type w} [Monad m] {γ : Type u} {init init' : γ} {r r' : Rii α} {f : (a : α) → a rγm (ForInStep γ)} {f' : (a : α) → a r'γm (ForInStep γ)} (hr : r = r') (hi : init = init') (h : ∀ (a : α) (m_1 : a r') (b : γ), f a b = f' a m_1 b) :
forIn' r init f = forIn' r' init' f'
theorem Std.Rxi.Iterator.toList_eq_match {α : Type u} [PRange.UpwardEnumerable α] [IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {it : Iter α} :
it.toList = match it.internalState.next with | none => [] | some a => a :: { internalState := { next := PRange.succ? a } }.toList
theorem Std.Rxi.Iterator.toArray_eq_match {α : Type u} [PRange.UpwardEnumerable α] [IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {it : Iter α} :
it.toArray = match it.internalState.next with | none => #[] | some a => #[a] ++ { internalState := { next := PRange.succ? a } }.toArray
@[deprecated Std.Rcc.toList_eq_if_roo (since := "2025-10-29")]
Equations
Instances For
    @[deprecated Std.Rcc.toArray_eq_if_roo (since := "2025-10-29")]
    Equations
    Instances For
      @[deprecated Std.Rcc.toList_eq_if_roc (since := "2025-10-29")]
      Equations
      Instances For
        theorem Std.Rcc.forIn'_eq_forIn'_toList {α : Type u} {r : Rcc α} [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
        forIn' r init f = forIn' r.toList init fun (a : α) (ha : a r.toList) (acc : γ) => f a acc
        theorem Std.Rcc.forIn'_eq_forIn'_toArray {α : Type u} {r : Rcc α} [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
        forIn' r init f = forIn' r.toArray init fun (a : α) (ha : a r.toArray) (acc : γ) => f a acc
        theorem Std.Rcc.forIn'_toList_eq_forIn' {α : Type u} {r : Rcc α} [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toListγm (ForInStep γ)} :
        forIn' r.toList init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
        theorem Std.Rcc.forIn'_toArray_eq_forIn' {α : Type u} {r : Rcc α} [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toArrayγm (ForInStep γ)} :
        forIn' r.toArray init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
        @[deprecated Std.Rcc.mem_of_mem_roc (since := "2025-10-29")]
        Equations
        Instances For
          theorem Std.Rcc.forIn'_eq_if {α : Type u} {r : Rcc α} [LE α] [DecidableLE α] [LT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLE α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
          forIn' r init f = if hu : r.lower r.upper then have hle := ; do let __do_liftf r.lower init match __do_lift with | ForInStep.yield c => forIn' (r.lower<...=r.upper) c fun (a : α) (ha : a r.lower<...=r.upper) (acc : γ) => f a acc | ForInStep.done c => pure c else pure init
          @[deprecated Std.Rco.toList_eq_if_roo (since := "2025-10-29")]
          Equations
          Instances For
            @[deprecated Std.Rco.toArray_eq_if_roo (since := "2025-10-29")]
            Equations
            Instances For
              theorem Std.Rco.forIn'_eq_forIn'_toList {α : Type u} {r : Rco α} [LE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
              forIn' r init f = forIn' r.toList init fun (a : α) (ha : a r.toList) (acc : γ) => f a acc
              theorem Std.Rco.forIn'_eq_forIn'_toArray {α : Type u} {r : Rco α} [LE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
              forIn' r init f = forIn' r.toArray init fun (a : α) (ha : a r.toArray) (acc : γ) => f a acc
              theorem Std.Rco.forIn'_toList_eq_forIn' {α : Type u} {r : Rco α} [LE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toListγm (ForInStep γ)} :
              forIn' r.toList init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
              theorem Std.Rco.forIn'_toArray_eq_forIn' {α : Type u} {r : Rco α} [LE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toArrayγm (ForInStep γ)} :
              forIn' r.toArray init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
              @[deprecated Std.Rco.mem_of_mem_roo (since := "2025-10-29")]
              Equations
              Instances For
                theorem Std.Rco.forIn'_eq_if {α : Type u} {r : Rco α} [LE α] [DecidableLE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLE α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                forIn' r init f = if hu : r.lower < r.upper then have hle := ; do let __do_liftf r.lower init match __do_lift with | ForInStep.yield c => forIn' (r.lower<...r.upper) c fun (a : α) (ha : a r.lower<...r.upper) (acc : γ) => f a acc | ForInStep.done c => pure c else pure init
                @[deprecated Std.Rci.toList_eq_toList_roi (since := "2025-10-29")]
                Equations
                Instances For
                  @[deprecated Std.Rci.toArray_eq_toArray_roi (since := "2025-10-29")]
                  Equations
                  Instances For
                    theorem Std.Rci.forIn'_eq_forIn'_toList {α : Type u} {r : Rci α} [LE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                    forIn' r init f = forIn' r.toList init fun (a : α) (ha : a r.toList) (acc : γ) => f a acc
                    theorem Std.Rci.forIn'_eq_forIn'_toArray {α : Type u} {r : Rci α} [LE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                    forIn' r init f = forIn' r.toArray init fun (a : α) (ha : a r.toArray) (acc : γ) => f a acc
                    theorem Std.Rci.forIn'_toList_eq_forIn' {α : Type u} {r : Rci α} [LE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toListγm (ForInStep γ)} :
                    forIn' r.toList init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                    theorem Std.Rci.forIn'_toArray_eq_forIn' {α : Type u} {r : Rci α} [LE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toArrayγm (ForInStep γ)} :
                    forIn' r.toArray init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                    @[deprecated Std.Rci.mem_of_mem_roi (since := "2025-10-29")]
                    Equations
                    Instances For
                      theorem Std.Rci.forIn'_eq_match {α : Type u} {r : Rci α} [LE α] [DecidableLE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLE α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = have hle := ; do let __do_liftf r.lower hle init match __do_lift with | ForInStep.yield c => forIn' r.lower<...* c fun (a : α) (ha : a r.lower<...*) (acc : γ) => f a acc | ForInStep.done c => pure c
                      theorem Std.Roc.forIn'_eq_forIn'_toList {α : Type u} {r : Roc α} [LE α] [DecidableLE α] [LT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = forIn' r.toList init fun (a : α) (ha : a r.toList) (acc : γ) => f a acc
                      theorem Std.Roc.forIn'_eq_forIn'_toArray {α : Type u} {r : Roc α} [LE α] [DecidableLE α] [LT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = forIn' r.toArray init fun (a : α) (ha : a r.toArray) (acc : γ) => f a acc
                      theorem Std.Roc.forIn'_toList_eq_forIn' {α : Type u} {r : Roc α} [LE α] [DecidableLE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toListγm (ForInStep γ)} :
                      forIn' r.toList init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                      theorem Std.Roc.forIn'_toArray_eq_forIn' {α : Type u} {r : Roc α} [LE α] [DecidableLE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toArrayγm (ForInStep γ)} :
                      forIn' r.toArray init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                      theorem Std.Roc.mem_of_mem_of_le {α : Type u} [LE α] [LT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] {lo lo' hi a : α} (h : lo lo') (hmem : a lo'<...=hi) :
                      a lo<...=hi
                      theorem Std.Roc.forIn'_eq_match {α : Type u} {r : Roc α} [LE α] [DecidableLE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLE α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = match hs : PRange.succ? r.lower with | none => pure init | some next => if hu : next r.upper then have hlt := ; do let __do_liftf next init match __do_lift with | ForInStep.yield c => forIn' (next<...=r.upper) c fun (a : α) (ha : a next<...=r.upper) (acc : γ) => f a acc | ForInStep.done c => pure c else pure init
                      theorem Std.Roo.forIn'_eq_forIn'_toList {α : Type u} {r : Roo α} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = forIn' r.toList init fun (a : α) (ha : a r.toList) (acc : γ) => f a acc
                      theorem Std.Roo.forIn'_eq_forIn'_toArray {α : Type u} {r : Roo α} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = forIn' r.toArray init fun (a : α) (ha : a r.toArray) (acc : γ) => f a acc
                      theorem Std.Roo.forIn'_toList_eq_forIn' {α : Type u} {r : Roo α} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toListγm (ForInStep γ)} :
                      forIn' r.toList init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                      theorem Std.Roo.forIn'_toArray_eq_forIn' {α : Type u} {r : Roo α} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toArrayγm (ForInStep γ)} :
                      forIn' r.toArray init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                      theorem Std.Roo.forIn'_eq_match {α : Type u} {r : Roo α} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = match hs : PRange.succ? r.lower with | none => pure init | some next => if hu : next < r.upper then have hlt := ; have hle := ; do let __do_liftf next init match __do_lift with | ForInStep.yield c => forIn' (next<...r.upper) c fun (a : α) (ha : a next<...r.upper) (acc : γ) => f a acc | ForInStep.done c => pure c else pure init
                      theorem Std.Roi.forIn'_eq_forIn'_toList {α : Type u} {r : Roi α} [LT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = forIn' r.toList init fun (a : α) (ha : a r.toList) (acc : γ) => f a acc
                      theorem Std.Roi.forIn'_eq_forIn'_toArray {α : Type u} {r : Roi α} [LT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = forIn' r.toArray init fun (a : α) (ha : a r.toArray) (acc : γ) => f a acc
                      theorem Std.Roi.forIn'_toList_eq_forIn' {α : Type u} {r : Roi α} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toListγm (ForInStep γ)} :
                      forIn' r.toList init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                      theorem Std.Roi.forIn'_toArray_eq_forIn' {α : Type u} {r : Roi α} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toArrayγm (ForInStep γ)} :
                      forIn' r.toArray init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                      theorem Std.Roi.forIn'_eq_match {α : Type u} {r : Roi α} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = match hs : PRange.succ? r.lower with | none => pure init | some next => have hlt := ; have hle := ; do let __do_liftf next hlt init match __do_lift with | ForInStep.yield c => forIn' next<...* c fun (a : α) (ha : a next<...*) (acc : γ) => f a acc | ForInStep.done c => pure c
                      theorem Std.Ric.forIn'_eq_forIn'_toList {α : Type u} {r : Ric α} [LE α] [DecidableLE α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = forIn' r.toList init fun (a : α) (ha : a r.toList) (acc : γ) => f a acc
                      theorem Std.Ric.forIn'_eq_forIn'_toArray {α : Type u} {r : Ric α} [LE α] [DecidableLE α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                      forIn' r init f = forIn' r.toArray init fun (a : α) (ha : a r.toArray) (acc : γ) => f a acc
                      theorem Std.Ric.forIn'_toList_eq_forIn' {α : Type u} {r : Ric α} [LE α] [DecidableLE α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toListγm (ForInStep γ)} :
                      forIn' r.toList init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                      theorem Std.Ric.forIn'_toArray_eq_forIn' {α : Type u} {r : Ric α} [LE α] [DecidableLE α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toArrayγm (ForInStep γ)} :
                      forIn' r.toArray init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                      theorem Std.Ric.mem_of_mem_rcc {α : Type u} [LE α] {lo hi a : α} (hmem : a lo...=hi) :
                      a *...=hi
                      @[deprecated Std.Ric.mem_of_mem_rcc (since := "2025-10-29")]
                      def Std.Ric.mem_of_mem_Rcc {α : Type u_1} [LE α] {lo hi a : α} (hmem : a lo...=hi) :
                      a *...=hi
                      Equations
                      Instances For
                        theorem Std.Ric.mem_of_mem_roc {α : Type u} [LE α] [LT α] {lo hi a : α} (hmem : a lo<...=hi) :
                        a *...=hi
                        @[deprecated Std.Ric.mem_of_mem_roc (since := "2025-10-29")]
                        def Std.Ric.mem_of_mem_Roc {α : Type u_1} [LE α] [LT α] {lo hi a : α} (hmem : a lo<...=hi) :
                        a *...=hi
                        Equations
                        Instances For
                          theorem Std.Ric.forIn'_eq_forIn'_rcc {α : Type u} {r : Ric α} [LE α] [DecidableLE α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                          forIn' r init f = forIn' (PRange.UpwardEnumerable.least...=r.upper) init fun (a : α) (ha : a PRange.UpwardEnumerable.least...=r.upper) (acc : γ) => f a acc
                          @[deprecated Std.Ric.forIn'_eq_forIn'_rcc (since := "2025-10-29")]
                          def Std.Ric.forIn'_eq_forIn'_Rcc {α : Type u_1} {r : Ric α} [LE α] [DecidableLE α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u_1 → Type u_2} [Monad m] [LawfulMonad m] {γ : Type u_1} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                          forIn' r init f = forIn' (PRange.UpwardEnumerable.least...=r.upper) init fun (a : α) (ha : a PRange.UpwardEnumerable.least...=r.upper) (acc : γ) => f a acc
                          Equations
                          Instances For
                            theorem Std.Ric.forIn'_eq_if_roc {α : Type u} {r : Ric α} [LE α] [DecidableLE α] [LT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                            forIn' r init f = if hu : PRange.UpwardEnumerable.least r.upper then do let __do_liftf PRange.UpwardEnumerable.least hu init match __do_lift with | ForInStep.yield c => forIn' (PRange.UpwardEnumerable.least<...=r.upper) c fun (a : α) (ha : a PRange.UpwardEnumerable.least<...=r.upper) (acc : γ) => f a acc | ForInStep.done c => pure c else pure init
                            @[deprecated Std.Ric.forIn'_eq_if_roc (since := "2025-10-29")]
                            def Std.Ric.forIn'_eq_if {α : Type u_1} {r : Ric α} [LE α] [DecidableLE α] [LT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u_1 → Type u_2} [Monad m] [LawfulMonad m] {γ : Type u_1} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                            forIn' r init f = if hu : PRange.UpwardEnumerable.least r.upper then do let __do_liftf PRange.UpwardEnumerable.least hu init match __do_lift with | ForInStep.yield c => forIn' (PRange.UpwardEnumerable.least<...=r.upper) c fun (a : α) (ha : a PRange.UpwardEnumerable.least<...=r.upper) (acc : γ) => f a acc | ForInStep.done c => pure c else pure init
                            Equations
                            Instances For
                              @[deprecated Std.Rio.mem_iff_mem_rco (since := "2025-10-29")]
                              Equations
                              Instances For
                                theorem Std.Rio.forIn'_eq_forIn'_toList {α : Type u} {r : Rio α} [LT α] [DecidableLT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                                forIn' r init f = forIn' r.toList init fun (a : α) (ha : a r.toList) (acc : γ) => f a acc
                                theorem Std.Rio.forIn'_eq_forIn'_toArray {α : Type u} {r : Rio α} [LT α] [DecidableLT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                                forIn' r init f = forIn' r.toArray init fun (a : α) (ha : a r.toArray) (acc : γ) => f a acc
                                theorem Std.Rio.forIn'_toList_eq_forIn' {α : Type u} {r : Rio α} [LT α] [DecidableLT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toListγm (ForInStep γ)} :
                                forIn' r.toList init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                                theorem Std.Rio.forIn'_toArray_eq_forIn' {α : Type u} {r : Rio α} [LT α] [DecidableLT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toArrayγm (ForInStep γ)} :
                                forIn' r.toArray init f = forIn' r init fun (a : α) (ha : a r) (acc : γ) => f a acc
                                theorem Std.Rio.mem_of_mem_rco {α : Type u} [LE α] [LT α] {lo hi a : α} (hmem : a lo...hi) :
                                a *...hi
                                @[deprecated Std.Rio.mem_of_mem_rco (since := "2025-10-29")]
                                def Std.Rio.mem_of_mem_Rco {α : Type u_1} [LE α] [LT α] {lo hi a : α} (hmem : a lo...hi) :
                                a *...hi
                                Equations
                                Instances For
                                  theorem Std.Rio.mem_of_mem_roo {α : Type u} [LT α] {lo hi a : α} (hmem : a lo<...hi) :
                                  a *...hi
                                  @[deprecated Std.Rio.mem_of_mem_roo (since := "2025-10-29")]
                                  def Std.Rio.mem_of_mem_Roo {α : Type u_1} [LT α] {lo hi a : α} (hmem : a lo<...hi) :
                                  a *...hi
                                  Equations
                                  Instances For
                                    theorem Std.Rio.forIn'_eq_if_roo {α : Type u} {r : Rio α} [LT α] [DecidableLT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                                    forIn' r init f = if hu : PRange.UpwardEnumerable.least < r.upper then do let __do_liftf PRange.UpwardEnumerable.least hu init match __do_lift with | ForInStep.yield c => forIn' (PRange.UpwardEnumerable.least<...r.upper) c fun (a : α) (ha : a PRange.UpwardEnumerable.least<...r.upper) (acc : γ) => f a acc | ForInStep.done c => pure c else pure init
                                    @[deprecated Std.Rio.forIn'_eq_if_roo (since := "2025-10-29")]
                                    def Std.Rio.forIn'_eq_if {α : Type u_1} {r : Rio α} [LT α] [DecidableLT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u_1 → Type u_2} [Monad m] [LawfulMonad m] {γ : Type u_1} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                                    forIn' r init f = if hu : PRange.UpwardEnumerable.least < r.upper then do let __do_liftf PRange.UpwardEnumerable.least hu init match __do_lift with | ForInStep.yield c => forIn' (PRange.UpwardEnumerable.least<...r.upper) c fun (a : α) (ha : a PRange.UpwardEnumerable.least<...r.upper) (acc : γ) => f a acc | ForInStep.done c => pure c else pure init
                                    Equations
                                    Instances For
                                      theorem Std.Rio.forIn'_eq_forIn'_rco {α : Type u} {r : Rio α} [LE α] [LT α] [DecidableLT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                                      forIn' r init f = forIn' (PRange.UpwardEnumerable.least...r.upper) init fun (a : α) (ha : a PRange.UpwardEnumerable.least...r.upper) (acc : γ) => f a acc
                                      @[deprecated Std.Rio.forIn'_eq_forIn'_rco (since := "2025-10-29")]
                                      def Std.Rio.forIn'_eq_forIn'_Rco {α : Type u_1} {r : Rio α} [LE α] [LT α] [DecidableLT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u_1 → Type u_2} [Monad m] [LawfulMonad m] {γ : Type u_1} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                                      forIn' r init f = forIn' (PRange.UpwardEnumerable.least...r.upper) init fun (a : α) (ha : a PRange.UpwardEnumerable.least...r.upper) (acc : γ) => f a acc
                                      Equations
                                      Instances For
                                        @[deprecated Std.Rii.toList_eq_match_rci (since := "2025-10-29")]
                                        Equations
                                        Instances For
                                          @[deprecated Std.Rii.toArray_eq_match_rci (since := "2025-10-29")]
                                          Equations
                                          Instances For
                                            @[deprecated Std.Rii.toList_eq_match_roi (since := "2025-10-29")]
                                            Equations
                                            Instances For
                                              @[deprecated Std.Rii.toArray_eq_match_roi (since := "2025-10-29")]
                                              Equations
                                              Instances For
                                                theorem Std.Rii.forIn'_eq_forIn'_toList {α : Type u} {r : Rii α} [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                                                forIn' r init f = forIn' r.toList init fun (a : α) (x : a r.toList) (acc : γ) => f a acc
                                                theorem Std.Rii.forIn'_eq_forIn'_toArray {α : Type u} {r : Rii α} [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a rγm (ForInStep γ)} :
                                                forIn' r init f = forIn' r.toArray init fun (a : α) (x : a r.toArray) (acc : γ) => f a acc
                                                theorem Std.Rii.forIn'_toList_eq_forIn' {α : Type u} {r : Rii α} [LT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toListγm (ForInStep γ)} :
                                                forIn' r.toList init f = forIn' r init fun (a : α) (x : a r) (acc : γ) => f a acc
                                                theorem Std.Rii.forIn'_toArray_eq_forIn' {α : Type u} {r : Rii α} [LT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {γ : Type u} {init : γ} {m : Type u → Type w} [Monad m] [LawfulMonad m] {f : (a : α) → a r.toArrayγm (ForInStep γ)} :
                                                forIn' r.toArray init f = forIn' r init fun (a : α) (x : a r) (acc : γ) => f a acc
                                                theorem Std.Rii.forIn'_eq_match_rci {α : Type u} {r : Rii α} [LE α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                                                forIn' r init f = match PRange.least? with | none => pure init | some next => forIn' next...* init fun (a : α) (x : a next...*) (acc : γ) => f a acc
                                                @[deprecated Std.Rii.forIn'_eq_match_rci (since := "2025-10-29")]
                                                def Std.Rii.forIn'_eq_match_forIn'_Rci {α : Type u_1} {r : Rii α} [LE α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u_1 → Type u_2} [Monad m] [LawfulMonad m] {γ : Type u_1} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                                                forIn' r init f = match PRange.least? with | none => pure init | some next => forIn' next...* init fun (a : α) (x : a next...*) (acc : γ) => f a acc
                                                Equations
                                                Instances For
                                                  theorem Std.Rii.forIn'_eq_match_roi {α : Type u} {r : Rii α} {hu : True} [LT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u → Type w} [Monad m] [LawfulMonad m] {γ : Type u} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                                                  forIn' r init f = match PRange.least? with | none => pure init | some next => do let __do_liftf next hu init match __do_lift with | ForInStep.yield c => forIn' next<...* c fun (a : α) (x : a next<...*) (acc : γ) => f a acc | ForInStep.done c => pure c
                                                  @[deprecated Std.Rii.forIn'_eq_match_roi (since := "2025-10-29")]
                                                  def Std.Rii.forIn'_eq_match_forIn'_Roi {α : Type u_1} {r : Rii α} {hu : True} [LT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [PRange.LawfulUpwardEnumerableLeast? α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] {m : Type u_1 → Type u_2} [Monad m] [LawfulMonad m] {γ : Type u_1} {init : γ} {f : (a : α) → a rγm (ForInStep γ)} :
                                                  forIn' r init f = match PRange.least? with | none => pure init | some next => do let __do_liftf next hu init match __do_lift with | ForInStep.yield c => forIn' next<...* c fun (a : α) (x : a next<...*) (acc : γ) => f a acc | ForInStep.done c => pure c
                                                  Equations
                                                  Instances For
                                                    @[deprecated Std.toList_roc_eq_toList_rcc_of_isSome_succ? (since := "2025-10-29")]
                                                    Equations
                                                    Instances For
                                                      @[deprecated Std.toList_roo_eq_toList_rco_of_isSome_succ? (since := "2025-10-29")]
                                                      Equations
                                                      Instances For
                                                        @[deprecated Std.toList_roc_eq_toList_rcc_of_isSome_succ? (since := "2025-10-29")]
                                                        Equations
                                                        Instances For
                                                          @[deprecated Std.Rcc.size_eq_if_roc (since := "2025-10-29")]
                                                          Equations
                                                          Instances For
                                                            theorem Std.Roc.eq_succMany?_of_toList_eq_append_cons {α : Type u} {r : Roc α} [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [Rxc.IsAlwaysFinite α] {pref suff : List α} {cur : α} (h : r.toList = pref ++ cur :: suff) :
                                                            cur = (PRange.succMany? (pref.length + 1) r.lower).get
                                                            @[deprecated Std.Rco.size_eq_if_roo (since := "2025-10-29")]
                                                            Equations
                                                            Instances For
                                                              theorem Std.Roo.eq_succMany?_of_toList_eq_append_cons {α : Type u} {r : Roo α} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxo.IsAlwaysFinite α] {pref suff : List α} {cur : α} (h : r.toList = pref ++ cur :: suff) :
                                                              cur = (PRange.succMany? (pref.length + 1) r.lower).get
                                                              theorem Std.Roi.eq_succMany?_of_toList_eq_append_cons {α : Type u} {r : Roi α} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] [Rxi.IsAlwaysFinite α] {pref suff : List α} {cur : α} (h : r.toList = pref ++ cur :: suff) :
                                                              cur = (PRange.succMany? (pref.length + 1) r.lower).get