Lemmas about ranges #
This file provides lemmas about Std.PRange.
theorem
Std.PRange.UpwardEnumerable.exists_of_succ_le
{α : Type u}
[UpwardEnumerable α]
[LawfulUpwardEnumerable α]
[InfinitelyUpwardEnumerable α]
{a b : α}
(h : UpwardEnumerable.LE (succ a) b)
:
theorem
Std.PRange.UpwardEnumerable.exists_of_succ_lt
{α : Type u}
[UpwardEnumerable α]
[LawfulUpwardEnumerable α]
[InfinitelyUpwardEnumerable α]
{a b : α}
(h : UpwardEnumerable.LT (succ a) b)
:
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)
:
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)
:
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)
:
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)
:
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)
:
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)
:
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)
:
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)
:
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)
:
theorem
Std.Rxc.Iterator.toList_eq_match
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
{it : Iter α}
:
it.toList = match it.internalState.next with
| none => []
| some a =>
if a ≤ it.internalState.upperBound then
a :: { internalState := { next := PRange.succ? a, upperBound := it.internalState.upperBound } }.toList
else []
theorem
Std.Rxc.Iterator.toArray_eq_match
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
{it : Iter α}
:
it.toArray = match it.internalState.next with
| none => #[]
| some a =>
if a ≤ it.internalState.upperBound then
#[a] ++ { internalState := { next := PRange.succ? a, upperBound := it.internalState.upperBound } }.toArray
else #[]
theorem
Std.Rxo.Iterator.toList_eq_match
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
{it : Iter α}
:
it.toList = match it.internalState.next with
| none => []
| some a =>
if a < it.internalState.upperBound then
a :: { internalState := { next := PRange.succ? a, upperBound := it.internalState.upperBound } }.toList
else []
theorem
Std.Rxo.Iterator.toArray_eq_match
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
{it : Iter α}
:
it.toArray = match it.internalState.next with
| none => #[]
| some a =>
if a < it.internalState.upperBound then
#[a] ++ { internalState := { next := PRange.succ? a, upperBound := it.internalState.upperBound } }.toArray
else #[]
theorem
Std.Rxi.Iterator.toList_eq_match
{α : Type u}
[PRange.UpwardEnumerable α]
[IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{it : Iter α}
:
theorem
Std.Rxi.Iterator.toArray_eq_match
{α : Type u}
[PRange.UpwardEnumerable α]
[IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{it : Iter α}
:
theorem
Std.Rxc.Iterator.pairwise_toList_upwardEnumerableLt
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
(it : Iter α)
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) it.toList
theorem
Std.Rxo.Iterator.pairwise_toList_upwardEnumerableLt
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
(it : Iter α)
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) it.toList
theorem
Std.Rxi.Iterator.pairwise_toList_upwardEnumerableLt
{α : Type u}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
(it : Iter α)
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) it.toList
instance
Std.instLawfulIteratorSizeIteratorOfLawfulHasSizeOfLawfulUpwardEnumerableLE
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[Rxc.HasSize α]
[Rxc.LawfulHasSize α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
instance
Std.instLawfulIteratorSizeIteratorOfLawfulHasSizeOfLawfulUpwardEnumerableLT
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxo.HasSize α]
[Rxo.LawfulHasSize α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
instance
Std.instLawfulIteratorSizeIteratorOfLawfulHasSize
{α : Type u}
[PRange.UpwardEnumerable α]
[Rxi.HasSize α]
[Rxi.LawfulHasSize α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rcc.toList_eq_match
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rcc.toArray_eq_match
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
@[simp]
theorem
Std.Rcc.toArray_toList
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
:
@[simp]
theorem
Std.Rcc.toList_toArray
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
:
theorem
Std.Rcc.toList_eq_nil_iff
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rcc.toArray_eq_empty_iff
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rcc.mem_toList_iff_mem
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Rcc.mem_toArray_iff_mem
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Rcc.pairwise_toList_upwardEnumerableLt
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) r.toList
theorem
Std.Rcc.pairwise_toList_ne
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≠ b) r.toList
theorem
Std.Rcc.pairwise_toList_lt
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a < b) r.toList
theorem
Std.Rcc.pairwise_toList_le
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≤ b) r.toList
theorem
Std.Rcc.mem_succ_succ_iff
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi a : α}
:
theorem
Std.Rcc.succ_mem_succ_succ_iff
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi a : α}
:
theorem
Std.Rcc.toList_succ_succ_eq_map
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi : α}
:
theorem
Std.Rcc.toArray_succ_succ_eq_map
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi : α}
:
@[deprecated Std.Rcc.toList_succ_succ_eq_map (since := "2025-08-22")]
theorem
Std.Rcc.ClosedOpen.toList_succ_succ_eq_map
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi : α}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
theorem
Std.Rcc.mem_of_mem_Roc
{α : Type u}
{r : Rcc α}
[LE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a b : α}
(hrb : r.lower ≤ b)
(hmem : a ∈ b<...=r.upper)
:
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 γ)}
:
theorem
Std.Rcc.isEmpty_iff_forall_not_mem
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[Rxc.HasSize α]
[Rxc.LawfulHasSize α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rco.toList_eq_if
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rco.toArray_eq_if
{α : Type u}
{r : Rco α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
@[simp]
theorem
Std.Rco.toArray_toList
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
:
@[simp]
theorem
Std.Rco.toList_toArray
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
:
theorem
Std.Rco.toList_eq_nil_iff
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rco.toArray_eq_empty_iff
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rco.mem_toList_iff_mem
{α : Type u}
{r : Rco α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Rco.mem_toArray_iff_mem
{α : Type u}
{r : Rco α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Rco.pairwise_toList_upwardEnumerableLt
{α : Type u}
{r : Rco α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) r.toList
theorem
Std.Rco.pairwise_toList_ne
{α : Type u}
{r : Rco α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≠ b) r.toList
theorem
Std.Rco.pairwise_toList_lt
{α : Type u}
{r : Rco α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a < b) r.toList
theorem
Std.Rco.pairwise_toList_le
{α : Type u}
{r : Rco α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≤ b) r.toList
theorem
Std.Rco.mem_succ_succ_iff
{α : Type u}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi a : α}
:
theorem
Std.Rco.succ_mem_succ_succ_iff
{α : Type u}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi a : α}
:
theorem
Std.Rco.toList_succ_succ_eq_map
{α : Type u}
[LE α]
[DecidableLE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi : α}
:
theorem
Std.Rco.toArray_succ_succ_eq_map
{α : Type u}
[LE α]
[DecidableLE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi : α}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
theorem
Std.Rco.mem_of_mem_Roo
{α : Type u}
{r : Rco α}
[LE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a b : α}
(hrb : r.lower ≤ b)
(hmem : a ∈ b<...r.upper)
:
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 γ)}
:
theorem
Std.Rco.isEmpty_iff_forall_not_mem
{α : Type u}
{r : Rco α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxo.HasSize α]
[Rxo.LawfulHasSize α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rci.toList_eq_toList_Roi
{α : Type u}
{r : Rci α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rci.toArray_eq_toArray_Roi
{α : Type u}
{r : Rci α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
@[simp]
theorem
Std.Rci.toArray_toList
{α : Type u}
{r : Rci α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
:
@[simp]
theorem
Std.Rci.toList_toArray
{α : Type u}
{r : Rci α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
:
theorem
Std.Rci.toList_ne_nil
{α : Type u}
{r : Rci α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rci.toArray_ne_nil
{α : Type u}
{r : Rci α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rci.mem_toList_iff_mem
{α : Type u}
{r : Rci α}
[LE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Rci.mem_toArray_iff_mem
{α : Type u}
{r : Rci α}
[LE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Rci.pairwise_toList_upwardEnumerableLt
{α : Type u}
{r : Rci α}
[LE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) r.toList
theorem
Std.Rci.pairwise_toList_ne
{α : Type u}
{r : Rci α}
[LE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≠ b) r.toList
theorem
Std.Rci.pairwise_toList_lt
{α : Type u}
{r : Rci α}
[LE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a < b) r.toList
theorem
Std.Rci.pairwise_toList_le
{α : Type u}
{r : Rci α}
[LE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≤ b) r.toList
theorem
Std.Rci.mem_succ_iff
{α : Type u}
[LE α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo a : α}
:
theorem
Std.Rci.succ_mem_succ_succ_iff
{α : Type u}
[LE α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo a : α}
:
theorem
Std.Rci.toList_succ_succ_eq_map
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo : α}
:
theorem
Std.Rci.toArray_succ_succ_eq_map
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo : α}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
theorem
Std.Rci.mem_of_mem_Roi
{α : Type u}
{r : Rci α}
[LE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a b : α}
(hrb : r.lower ≤ b)
(hmem : a ∈ b<...*)
:
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_lift ← f 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.Rci.isEmpty_iff_forall_not_mem
{α : Type u}
{r : Rci α}
[LE α]
[PRange.UpwardEnumerable α]
[Rxi.HasSize α]
[Rxi.LawfulHasSize α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Roc.toList_eq_match
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Roc.toArray_eq_match
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
@[simp]
theorem
Std.Roc.toArray_toList
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
:
@[simp]
theorem
Std.Roc.toList_toArray
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
:
theorem
Std.Roc.toList_eq_nil_iff
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Roc.toArray_eq_empty_iff
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Roc.mem_toList_iff_mem
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Roc.mem_toArray_iff_mem
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Roc.pairwise_toList_upwardEnumerableLt
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) r.toList
theorem
Std.Roc.pairwise_toList_ne
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≠ b) r.toList
theorem
Std.Roc.pairwise_toList_lt
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a < b) r.toList
theorem
Std.Roc.pairwise_toList_le
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≤ b) r.toList
theorem
Std.Roc.mem_succ_succ_iff
{α : Type u}
[LE α]
[DecidableLE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi a : α}
:
theorem
Std.Roc.succ_mem_succ_succ_iff
{α : Type u}
[LE α]
[DecidableLE α]
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi a : α}
:
theorem
Std.Roc.toList_succ_succ_eq_map
{α : Type u}
[LE α]
[DecidableLE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi : α}
:
theorem
Std.Roc.toArray_succ_succ_eq_map
{α : Type u}
[LE α]
[DecidableLE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi : α}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
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)
:
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_lift ← f 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.toList_eq_match
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Roo.toArray_eq_match
{α : Type u}
{r : Roo α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
@[simp]
theorem
Std.Roo.toArray_toList
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
:
@[simp]
theorem
Std.Roo.toList_toArray
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
:
theorem
Std.Roo.toList_eq_nil_iff
{α : Type u}
{r : Roo α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Roo.toArray_eq_empty_iff
{α : Type u}
{r : Roo α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Roo.mem_toList_iff_mem
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Roo.mem_toArray_iff_mem
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Roo.pairwise_toList_upwardEnumerableLt
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) r.toList
theorem
Std.Roo.pairwise_toList_ne
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≠ b) r.toList
theorem
Std.Roo.pairwise_toList_lt
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a < b) r.toList
theorem
Std.Roo.pairwise_toList_le
{α : Type u}
{r : Roo α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≤ b) r.toList
theorem
Std.Roo.mem_succ_succ_iff
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi a : α}
:
theorem
Std.Roo.succ_mem_succ_succ_iff
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi a : α}
:
theorem
Std.Roo.toList_succ_succ_eq_map
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi : α}
:
theorem
Std.Roo.toArray_succ_succ_eq_map
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi : α}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
theorem
Std.Roo.mem_of_mem_of_le
{α : Type u}
{r : Roo α}
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a b : α}
(hrb : PRange.UpwardEnumerable.LE r.lower b)
(hmem : a ∈ b<...r.upper)
:
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_lift ← f 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.isEmpty_iff_forall_not_mem
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxo.HasSize α]
[Rxo.LawfulHasSize α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Roi.toList_eq_match
{α : Type u}
{r : Roi α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Roi.toArray_eq_match
{α : Type u}
{r : Roi α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
@[simp]
theorem
Std.Roi.toArray_toList
{α : Type u}
{r : Roi α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
:
@[simp]
theorem
Std.Roi.toList_toArray
{α : Type u}
{r : Roi α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
:
theorem
Std.Roi.toList_eq_nil_iff
{α : Type u}
{r : Roi α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Roi.toArray_eq_empty_iff
{α : Type u}
{r : Roi α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Roi.mem_toList_iff_mem
{α : Type u}
{r : Roi α}
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
{a : α}
:
theorem
Std.Roi.mem_toArray_iff_mem
{α : Type u}
{r : Roi α}
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
{a : α}
:
theorem
Std.Roi.pairwise_toList_upwardEnumerableLt
{α : Type u}
{r : Roi α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) r.toList
theorem
Std.Roi.pairwise_toList_ne
{α : Type u}
{r : Roi α}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
:
List.Pairwise (fun (a b : α) => a ≠ b) r.toList
theorem
Std.Roi.pairwise_toList_lt
{α : Type u}
{r : Roi α}
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
:
List.Pairwise (fun (a b : α) => a < b) r.toList
theorem
Std.Roi.pairwise_toList_le
{α : Type u}
{r : Roi α}
[LE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxi.IsAlwaysFinite α]
:
List.Pairwise (fun (a b : α) => a ≤ b) r.toList
theorem
Std.Roi.mem_succ_iff
{α : Type u}
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo a : α}
:
theorem
Std.Roi.succ_mem_succ_succ_iff
{α : Type u}
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo a : α}
:
theorem
Std.Roi.toList_succ_succ_eq_map
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
{lo : α}
:
theorem
Std.Roi.toArray_succ_succ_eq_map
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
{lo : α}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
theorem
Std.Roi.mem_of_mem_of_le
{α : Type u}
{r : Roi α}
[LT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a b : α}
(hrb : PRange.UpwardEnumerable.LE r.lower b)
(hmem : a ∈ b<...*)
:
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_lift ← f 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.Roi.isEmpty_iff_forall_not_mem
{α : Type u}
{r : Roi α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxi.HasSize α]
[Rxi.LawfulHasSize α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
@[simp]
theorem
Std.Ric.toArray_toList
{α : Type u}
{r : Ric α}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
:
@[simp]
theorem
Std.Ric.toList_toArray
{α : Type u}
{r : Ric α}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
:
theorem
Std.Ric.toList_eq_toList_Rcc
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
:
theorem
Std.Ric.toArray_eq_toArray_Rcc
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
:
theorem
Std.Ric.toList_eq_if
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Ric.toArray_eq_if
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Ric.toList_ne_nil
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Ric.toArray_ne_empty
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Ric.mem_iff_mem_Rcc
{α : Type u}
{r : Ric α}
[LE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
{a : α}
:
theorem
Std.Ric.mem_toList_iff_mem
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Ric.mem_toArray_iff_mem
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Ric.pairwise_toList_upwardEnumerableLt
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) r.toList
theorem
Std.Ric.pairwise_toList_ne
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≠ b) r.toList
theorem
Std.Ric.pairwise_toList_lt
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[LT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
:
List.Pairwise (fun (a b : α) => a < b) r.toList
theorem
Std.Ric.pairwise_toList_le
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[LT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≤ b) r.toList
theorem
Std.Ric.mem_succ_iff
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{hi a : α}
:
theorem
Std.Ric.succ_mem_succ_iff
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{hi a : α}
:
theorem
Std.Ric.toList_succ_eq_map
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
{hi : α}
:
(*...=PRange.succ hi).toList = PRange.UpwardEnumerable.least :: List.map PRange.succ (*...=hi).toList
theorem
Std.Ric.toArray_succ_eq_map
{α : Type u}
{r : Ric α}
[LE α]
[DecidableLE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
{hi : α}
:
(*...=PRange.succ hi).toArray = #[PRange.UpwardEnumerable.least] ++ Array.map PRange.succ (*...=hi).toArray
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 γ)}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
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
theorem
Std.Ric.forIn'_eq_if
{α : 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_lift ← f 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
theorem
Std.Ric.isEmpty_iff_forall_not_mem
{α : Type u}
{r : Ric α}
[LE α]
[PRange.UpwardEnumerable α]
[Rxc.HasSize α]
[Rxc.LawfulHasSize α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
@[simp]
theorem
Std.Rio.toArray_toList
{α : Type u}
{r : Rio α}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
:
@[simp]
theorem
Std.Rio.toList_toArray
{α : Type u}
{r : Rio α}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
:
theorem
Std.Rio.toList_eq_toList_Rco
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
:
theorem
Std.Rio.toArray_eq_toArray_Rco
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
:
theorem
Std.Rio.toList_eq_if
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rio.toArray_eq_if
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rio.toList_eq_nil_iff
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rio.toArray_eq_nil_iff
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rio.mem_iff_mem_Rco
{α : Type u}
{r : Rio α}
[LE α]
[LT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
{a : α}
:
theorem
Std.Rio.mem_toList_iff_mem
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Rio.mem_toArray_iff_mem
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Rio.pairwise_toList_upwardEnumerableLt
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) r.toList
theorem
Std.Rio.pairwise_toList_ne
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≠ b) r.toList
theorem
Std.Rio.pairwise_toList_lt
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
:
List.Pairwise (fun (a b : α) => a < b) r.toList
theorem
Std.Rio.pairwise_toList_le
{α : Type u}
{r : Rio α}
[LE α]
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≤ b) r.toList
theorem
Std.Rio.mem_succ_iff
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{hi a : α}
:
theorem
Std.Rio.succ_mem_succ_iff
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{hi a : α}
:
theorem
Std.Rio.toList_succ_eq_map
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
{hi : α}
:
theorem
Std.Rio.toArray_succ_eq_map
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LinearlyUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.InfinitelyUpwardEnumerable α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
{hi : α}
:
(*...PRange.succ hi).toArray = #[PRange.UpwardEnumerable.least] ++ Array.map PRange.succ (*...hi).toArray
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 γ)}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
theorem
Std.Rio.forIn'_eq_if
{α : 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_lift ← f 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
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
theorem
Std.Rio.isEmpty_iff_forall_not_mem
{α : Type u}
{r : Rio α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[PRange.LawfulUpwardEnumerable α]
:
@[simp]
theorem
Std.Rii.toArray_toList
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
:
@[simp]
theorem
Std.Rii.toList_toArray
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
:
theorem
Std.Rii.toList_eq_match_toList_Rci
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
:
theorem
Std.Rii.toArray_eq_match_toArray_Rci
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
:
theorem
Std.Rii.toList_eq_match_toList_Roi
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rii.toArray_eq_toArray_Roi
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rii.toList_eq_nil_iff
{α : Type u}
{r : Rii α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rii.toArray_eq_empty_iff
{α : Type u}
{r : Rii α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.Rii.mem_iff_mem_Rci
{α : Type u}
{r : Rii α}
[LE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
{a : α}
:
theorem
Std.Rii.mem_toList
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Rii.mem_toArray
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{a : α}
:
theorem
Std.Rii.pairwise_toList_upwardEnumerableLt
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => PRange.UpwardEnumerable.LT a b) r.toList
theorem
Std.Rii.pairwise_toList_ne
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≠ b) r.toList
theorem
Std.Rii.pairwise_toList_lt
{α : Type u}
{r : Rii α}
[LT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
:
List.Pairwise (fun (a b : α) => a < b) r.toList
theorem
Std.Rii.pairwise_toList_le
{α : Type u}
{r : Rii α}
[LE α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
:
List.Pairwise (fun (a b : α) => a ≤ b) r.toList
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 γ)}
:
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 γ)}
:
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 γ)}
:
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 γ)}
:
theorem
Std.Rii.forIn'_eq_match_forIn'_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 γ)}
:
theorem
Std.Rii.forIn'_eq_match_forIn'_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_lift ← f 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
theorem
Std.Rii.isEmpty_iff
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
:
theorem
Std.Rii.isEmpty_iff_forall_not_mem
{α : Type u}
{r : Rii α}
[LT α]
[DecidableLT α]
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[PRange.LawfulUpwardEnumerable α]
:
theorem
Std.toList_Roc_eq_toList_Rcc_of_isSome_succ?
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi : α}
(h : (PRange.succ? lo).isSome = true)
:
theorem
Std.toList_Roo_eq_toList_Rco_of_isSome_succ?
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo hi : α}
(h : (PRange.succ? lo).isSome = true)
:
theorem
Std.toList_Roi_eq_toList_Rci_of_isSome_succ?
{α : Type u}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[PRange.LawfulUpwardEnumerable α]
{lo : α}
(h : (PRange.succ? lo).isSome = true)
:
theorem
Std.Rcc.length_toList
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[Rxc.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[Rxc.LawfulHasSize α]
:
theorem
Std.Rcc.size_toArray
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[Rxc.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[Rxc.LawfulHasSize α]
:
theorem
Std.Rcc.getElem?_toList_eq
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{r : Rcc α}
{i : Nat}
:
theorem
Std.Rcc.getElem?_toArray_eq
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
:
theorem
Std.Rcc.isSome_succMany?_of_lt_length_toList
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toList.length)
:
theorem
Std.Rcc.isSome_succMany?_of_lt_size_toArray
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toArray.size)
:
theorem
Std.Rcc.getElem_toList_eq
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toList.length}
:
theorem
Std.Rcc.getElem_toArray_eq
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toArray.size}
:
theorem
Std.Rcc.eq_succMany?_of_toList_eq_append_cons
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{pref suff : List α}
{cur : α}
(h : r.toList = pref ++ cur :: suff)
:
theorem
Std.Rcc.eq_succMany?_of_toArray_eq_append_append
{α : Type u}
{r : Rcc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{pref suff : Array α}
{cur : α}
(h : r.toArray = pref ++ #[cur] ++ suff)
:
theorem
Std.Roc.length_toList
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[Rxc.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[Rxc.LawfulHasSize α]
:
theorem
Std.Roc.size_toArray
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[Rxc.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[Rxc.LawfulHasSize α]
:
theorem
Std.Roc.getElem?_toList_eq
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
:
theorem
Std.Roc.getElem?_toArray_eq
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
:
theorem
Std.Roc.isSome_succMany?_of_lt_length_toList
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toList.length)
:
theorem
Std.Roc.isSome_succMany?_of_lt_size_toArray
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toArray.size)
:
theorem
Std.Roc.getElem_toList_eq
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toList.length}
:
theorem
Std.Roc.getElem_toArray_eq
{α : Type u}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{r : Roc α}
{i : Nat}
{h : i < r.toArray.size}
:
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)
:
theorem
Std.Roc.eq_succMany?_of_toArray_eq_append_append
{α : Type u}
{r : Roc α}
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
{pref suff : Array α}
{cur : α}
(h : r.toArray = pref ++ #[cur] ++ suff)
:
theorem
Std.Ric.length_toList
{α : Type u}
{r : Ric α}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[Rxc.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[Rxc.LawfulHasSize α]
:
theorem
Std.Ric.size_toArray
{α : Type u}
{r : Ric α}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[Rxc.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[Rxc.IsAlwaysFinite α]
[Rxc.LawfulHasSize α]
:
theorem
Std.Ric.getElem?_toList_eq
{α : Type u}
{r : Ric α}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
:
r.toList[i]? = Option.filter (fun (x : α) => decide (x ≤ r.upper)) (PRange.succMany? i PRange.UpwardEnumerable.least)
theorem
Std.Ric.getElem?_toArray_eq
{α : Type u}
{r : Ric α}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
:
r.toArray[i]? = Option.filter (fun (x : α) => decide (x ≤ r.upper)) (PRange.succMany? i PRange.UpwardEnumerable.least)
theorem
Std.Ric.isSome_succMany?_of_lt_length_toList
{α : Type u}
{r : Ric α}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toList.length)
:
theorem
Std.Ric.isSome_succMany?_of_lt_size_toArray
{α : Type u}
{r : Ric α}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toArray.size)
:
theorem
Std.Ric.getElem_toList_eq
{α : Type u}
{r : Ric α}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toList.length}
:
theorem
Std.Ric.getElem_toArray_eq
{α : Type u}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
{r : Ric α}
{i : Nat}
{h : i < r.toArray.size}
:
theorem
Std.Ric.eq_succMany?_of_toList_eq_append_cons
{α : Type u}
{r : Ric α}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
{pref suff : List α}
{cur : α}
(h : r.toList = pref ++ cur :: suff)
:
theorem
Std.Ric.eq_succMany?_of_toArray_eq_append_append
{α : Type u}
{r : Ric α}
[PRange.Least? α]
[LE α]
[DecidableLE α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLE α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxc.IsAlwaysFinite α]
{pref suff : Array α}
{cur : α}
(h : r.toArray = pref ++ #[cur] ++ suff)
:
theorem
Std.Rco.length_toList
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxo.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[Rxo.LawfulHasSize α]
:
theorem
Std.Rco.size_toArray
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxo.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[Rxo.LawfulHasSize α]
:
theorem
Std.Rco.getElem?_toList_eq
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{r : Rco α}
{i : Nat}
:
theorem
Std.Rco.getElem?_toArray_eq
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
:
theorem
Std.Rco.isSome_succMany?_of_lt_length_toList
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toList.length)
:
theorem
Std.Rco.isSome_succMany?_of_lt_size_toArray
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toArray.size)
:
theorem
Std.Rco.getElem_toList_eq
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toList.length}
:
theorem
Std.Rco.getElem_toArray_eq
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toArray.size}
:
theorem
Std.Rco.eq_succMany?_of_toList_eq_append_cons
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{pref suff : List α}
{cur : α}
(h : r.toList = pref ++ cur :: suff)
:
theorem
Std.Rco.eq_succMany?_of_toArray_eq_append_append
{α : Type u}
{r : Rco α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{pref suff : Array α}
{cur : α}
(h : r.toArray = pref ++ #[cur] ++ suff)
:
theorem
Std.Roo.length_toList
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxo.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[Rxo.LawfulHasSize α]
:
theorem
Std.Roo.size_toArray
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxo.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[Rxo.LawfulHasSize α]
:
theorem
Std.Roo.getElem?_toList_eq
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
:
theorem
Std.Roo.getElem?_toArray_eq
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
:
theorem
Std.Roo.isSome_succMany?_of_lt_length_toList
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toList.length)
:
theorem
Std.Roo.isSome_succMany?_of_lt_size_toArray
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toArray.size)
:
theorem
Std.Roo.getElem_toList_eq
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toList.length}
:
theorem
Std.Roo.getElem_toArray_eq
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{r : Roo α}
{i : Nat}
{h : i < r.toArray.size}
:
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)
:
theorem
Std.Roo.eq_succMany?_of_toArray_eq_append_append
{α : Type u}
{r : Roo α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
{pref suff : Array α}
{cur : α}
(h : r.toArray = pref ++ #[cur] ++ suff)
:
theorem
Std.Rio.length_toList
{α : Type u}
{r : Rio α}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxo.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[Rxo.LawfulHasSize α]
:
theorem
Std.Rio.size_toArray
{α : Type u}
{r : Rio α}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxo.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxo.IsAlwaysFinite α]
[Rxo.LawfulHasSize α]
:
theorem
Std.Rio.getElem?_toList_eq
{α : Type u}
{r : Rio α}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
:
r.toList[i]? = Option.filter (fun (x : α) => decide (x < r.upper)) (PRange.succMany? i PRange.UpwardEnumerable.least)
theorem
Std.Rio.getElem?_toArray_eq
{α : Type u}
{r : Rio α}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
:
r.toArray[i]? = Option.filter (fun (x : α) => decide (x < r.upper)) (PRange.succMany? i PRange.UpwardEnumerable.least)
theorem
Std.Rio.isSome_succMany?_of_lt_length_toList
{α : Type u}
{r : Rio α}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toList.length)
:
theorem
Std.Rio.isSome_succMany?_of_lt_size_toArray
{α : Type u}
{r : Rio α}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toArray.size)
:
theorem
Std.Rio.getElem_toList_eq
{α : Type u}
{r : Rio α}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toList.length}
:
theorem
Std.Rio.getElem_toArray_eq
{α : Type u}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
{r : Rio α}
{i : Nat}
{h : i < r.toArray.size}
:
theorem
Std.Rio.eq_succMany?_of_toList_eq_append_cons
{α : Type u}
{r : Rio α}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
{pref suff : List α}
{cur : α}
(h : r.toList = pref ++ cur :: suff)
:
theorem
Std.Rio.eq_succMany?_of_toArray_eq_append_append
{α : Type u}
{r : Rio α}
[PRange.Least? α]
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxo.IsAlwaysFinite α]
{pref suff : Array α}
{cur : α}
(h : r.toArray = pref ++ #[cur] ++ suff)
:
theorem
Std.Rci.length_toList
{α : Type u}
{r : Rci α}
[PRange.UpwardEnumerable α]
[Rxi.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[Rxi.LawfulHasSize α]
:
theorem
Std.Rci.size_toArray
{α : Type u}
{r : Rci α}
[PRange.UpwardEnumerable α]
[Rxi.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[Rxi.LawfulHasSize α]
:
theorem
Std.Rci.getElem?_toList_eq
{α : Type u}
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
{r : Rci α}
{i : Nat}
:
theorem
Std.Rci.getElem?_toArray_eq
{α : Type u}
{r : Rci α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
:
theorem
Std.Rci.isSome_succMany?_of_lt_length_toList
{α : Type u}
{r : Rci α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toList.length)
:
theorem
Std.Rci.isSome_succMany?_of_lt_size_toArray
{α : Type u}
{r : Rci α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toArray.size)
:
theorem
Std.Rci.getElem_toList_eq
{α : Type u}
{r : Rci α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toList.length}
:
theorem
Std.Rci.getElem_toArray_eq
{α : Type u}
{r : Rci α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toArray.size}
:
theorem
Std.Rci.eq_succMany?_of_toList_eq_append_cons
{α : Type u}
{r : Rci α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{pref suff : List α}
{cur : α}
(h : r.toList = pref ++ cur :: suff)
:
theorem
Std.Rci.eq_succMany?_of_toArray_eq_append_append
{α : Type u}
{r : Rci α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{pref suff : Array α}
{cur : α}
(h : r.toArray = pref ++ #[cur] ++ suff)
:
theorem
Std.Roi.length_toList
{α : Type u}
{r : Roi α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxi.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
[Rxi.LawfulHasSize α]
:
theorem
Std.Roi.size_toArray
{α : Type u}
{r : Roi α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[Rxi.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
[Rxi.LawfulHasSize α]
:
theorem
Std.Roi.getElem?_toList_eq
{α : Type u}
{r : Roi α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
:
theorem
Std.Roi.getElem?_toArray_eq
{α : Type u}
{r : Roi α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
:
theorem
Std.Roi.isSome_succMany?_of_lt_length_toList
{α : Type u}
{r : Roi α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toList.length)
:
theorem
Std.Roi.isSome_succMany?_of_lt_size_toArray
{α : Type u}
{r : Roi α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toArray.size)
:
theorem
Std.Roi.getElem_toList_eq
{α : Type u}
{r : Roi α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toList.length}
:
theorem
Std.Roi.getElem_toArray_eq
{α : Type u}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{r : Roi α}
{i : Nat}
{h : i < r.toArray.size}
:
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)
:
theorem
Std.Roi.eq_succMany?_of_toArray_eq_append_append
{α : Type u}
{r : Roi α}
[LT α]
[DecidableLT α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLT α]
[Rxi.IsAlwaysFinite α]
{pref suff : Array α}
{cur : α}
(h : r.toArray = pref ++ #[cur] ++ suff)
:
theorem
Std.Rii.length_toList
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[Rxi.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[Rxi.LawfulHasSize α]
:
theorem
Std.Rii.size_toArray
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[Rxi.HasSize α]
[PRange.LawfulUpwardEnumerable α]
[Rxi.IsAlwaysFinite α]
[Rxi.LawfulHasSize α]
:
theorem
Std.Rii.getElem?_toList_eq
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
:
theorem
Std.Rii.getElem?_toArray_eq
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
:
theorem
Std.Rii.isSome_succMany?_of_lt_length_toList
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toList.length)
:
theorem
Std.Rii.isSome_succMany?_of_lt_size_toArray
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
(h : i < r.toArray.size)
:
theorem
Std.Rii.getElem_toList_eq
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toList.length}
:
theorem
Std.Rii.getElem_toArray_eq
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
{i : Nat}
{h : i < r.toArray.size}
:
theorem
Std.Rii.eq_succMany?_of_toList_eq_append_cons
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
{pref suff : List α}
{cur : α}
(h : r.toList = pref ++ cur :: suff)
:
theorem
Std.Rii.eq_succMany?_of_toArray_eq_append_append
{α : Type u}
{r : Rii α}
[PRange.Least? α]
[PRange.UpwardEnumerable α]
[PRange.LawfulUpwardEnumerable α]
[PRange.LawfulUpwardEnumerableLeast? α]
[Rxi.IsAlwaysFinite α]
{pref suff : Array α}
{cur : α}
(h : r.toArray = pref ++ #[cur] ++ suff)
: