ForIn.toList of the effect-free containers #
Each bridge lemma computes ForIn.toList for one container, in the spelling that carries the
membership lemmas the verification conditions need, and each instance records that the container's
loop is effect-free.
@[simp]
instance Std.Internal.instPureForIn'List {m : Type u → Type v} [Monad m] {α : Type u₁} :
PureForIn' m (List α) α
@[simp]
instance Std.Internal.instPureForIn'Array {m : Type u → Type v} [Monad m] {α : Type u₁} :
PureForIn' m (Array α) α
@[simp]
@[simp]
theorem Std.Internal.ForIn.toList_iter {α γ : Type w} [Iterator α Id γ] [Iterators.Finite α Id] [IteratorLoop α Id Id] [LawfulIteratorLoop α Id Id] (it : Iter γ) :
ForIn.toList on an iterator is the iterator's own toList, so every container whose ForIn
loop iterates its Std.ToIterator reaches the iterator lemmas through this one step.
instance Std.Internal.instPureForInIterOfLawfulMonadOfFiniteOfLawfulIteratorLoopId {α γ : Type w} {m : Type w → Type v} [Monad m] [LawfulMonad m] [Iterator α Id γ] [Iterators.Finite α Id] [IteratorLoop α Id m] [LawfulIteratorLoop α Id m] [IteratorLoop α Id Id] [LawfulIteratorLoop α Id Id] :
@[simp]
theorem Std.Internal.ForIn.toList_iterM_id {α γ : Type w} [Iterator α Id γ] [Iterators.Finite α Id] [IteratorLoop α Id Id] [LawfulIteratorLoop α Id Id] (it : IterM Id γ) :
ForIn.toList on a pure monadic iterator is the iterator's own toList.
instance Std.Internal.instPureForInIterMIdOfLawfulMonadOfFiniteOfLawfulIteratorLoop {α γ : Type w} {m : Type w → Type v} [Monad m] [LawfulMonad m] [Iterator α Id γ] [Iterators.Finite α Id] [IteratorLoop α Id m] [LawfulIteratorLoop α Id m] [IteratorLoop α Id Id] [LawfulIteratorLoop α Id Id] :
theorem Std.Internal.ForIn.toList_rcc {α : Type u} [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] (r : Rcc α) :
instance Std.Internal.instLawfulMemForInIdRcc {α : Type u} [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] :
LawfulMemForInId (Rcc α) α
instance Std.Internal.instPureForIn'RccOfLawfulMonad {α : Type u} [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
PureForIn' m (Rcc α) α
instance Std.Internal.instPureForInRccOfLawfulMonad {α : Type u} [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
theorem Std.Internal.ForIn.toList_rco {α : Type u} [LE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] (r : Rco α) :
instance Std.Internal.instLawfulMemForInIdRco {α : Type u} [LE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] :
LawfulMemForInId (Rco α) α
instance Std.Internal.instPureForIn'RcoOfLawfulMonad {α : Type u} [LE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
PureForIn' m (Rco α) α
instance Std.Internal.instPureForInRcoOfLawfulMonad {α : Type u} [LE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
theorem Std.Internal.ForIn.toList_rci {α : Type u} [LE α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] (r : Rci α) :
instance Std.Internal.instLawfulMemForInIdRci {α : Type u} [LE α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] :
LawfulMemForInId (Rci α) α
instance Std.Internal.instPureForIn'RciOfLawfulMonad {α : Type u} [LE α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
PureForIn' m (Rci α) α
instance Std.Internal.instPureForInRciOfLawfulMonad {α : Type u} [LE α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
theorem Std.Internal.ForIn.toList_roc {α : Type u} [LE α] [DecidableLE α] [LT α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] (r : Roc α) :
instance Std.Internal.instLawfulMemForInIdRoc {α : Type u} [LE α] [DecidableLE α] [LT α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] :
LawfulMemForInId (Roc α) α
instance Std.Internal.instPureForIn'RocOfLawfulMonad {α : Type u} [LE α] [DecidableLE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
PureForIn' m (Roc α) α
instance Std.Internal.instPureForInRocOfLawfulMonad {α : Type u} [LE α] [DecidableLE α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLE α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
theorem Std.Internal.ForIn.toList_roo {α : Type u} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] (r : Roo α) :
instance Std.Internal.instLawfulMemForInIdRoo {α : Type u} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] :
LawfulMemForInId (Roo α) α
instance Std.Internal.instPureForIn'RooOfLawfulMonad {α : Type u} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
PureForIn' m (Roo α) α
instance Std.Internal.instPureForInRooOfLawfulMonad {α : Type u} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
theorem Std.Internal.ForIn.toList_roi {α : Type u} [LT α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] (r : Roi α) :
instance Std.Internal.instLawfulMemForInIdRoi {α : Type u} [LT α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] :
LawfulMemForInId (Roi α) α
instance Std.Internal.instPureForIn'RoiOfLawfulMonad {α : Type u} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
PureForIn' m (Roi α) α
instance Std.Internal.instPureForInRoiOfLawfulMonad {α : Type u} [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
theorem Std.Internal.ForIn.toList_ric {α : Type u} [PRange.Least? α] [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [PRange.LawfulUpwardEnumerableLE α] (r : Ric α) :
instance Std.Internal.instLawfulMemForInIdRic {α : Type u} [PRange.Least? α] [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [PRange.LawfulUpwardEnumerableLE α] :
LawfulMemForInId (Ric α) α
instance Std.Internal.instPureForIn'RicOfLawfulMonad {α : Type u} [PRange.Least? α] [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [PRange.LawfulUpwardEnumerableLE α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
PureForIn' m (Ric α) α
instance Std.Internal.instPureForInRicOfLawfulMonad {α : Type u} [PRange.Least? α] [LE α] [DecidableLE α] [PRange.UpwardEnumerable α] [Rxc.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [PRange.LawfulUpwardEnumerableLE α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
theorem Std.Internal.ForIn.toList_rio {α : Type u} [PRange.Least? α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [PRange.LawfulUpwardEnumerableLT α] (r : Rio α) :
instance Std.Internal.instLawfulMemForInIdRio {α : Type u} [PRange.Least? α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [PRange.LawfulUpwardEnumerableLT α] :
LawfulMemForInId (Rio α) α
instance Std.Internal.instPureForIn'RioOfLawfulMonad {α : Type u} [PRange.Least? α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
PureForIn' m (Rio α) α
instance Std.Internal.instPureForInRioOfLawfulMonad {α : Type u} [PRange.Least? α] [LT α] [DecidableLT α] [PRange.UpwardEnumerable α] [Rxo.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
theorem Std.Internal.ForIn.toList_rii {α : Type u} [PRange.Least? α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] (r : Rii α) :
instance Std.Internal.instLawfulMemForInIdRii {α : Type u} [PRange.Least? α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] :
LawfulMemForInId (Rii α) α
instance Std.Internal.instPureForIn'RiiOfLawfulMonad {α : Type u} [LT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
PureForIn' m (Rii α) α
instance Std.Internal.instPureForInRiiOfLawfulMonad {α : Type u} [LT α] [PRange.Least? α] [PRange.UpwardEnumerable α] [Rxi.IsAlwaysFinite α] [PRange.LawfulUpwardEnumerable α] [PRange.LawfulUpwardEnumerableLeast? α] [PRange.LawfulUpwardEnumerableLT α] {m : Type u → Type v} [Monad m] [LawfulMonad m] :
@[simp]
theorem Std.Internal.ForIn.toList_slice {γ : Type u} {α γ' : Type w} [ToIterator (Slice γ) Id α γ'] [Iterator α Id γ'] [Iterators.Finite α Id] [IteratorLoop α Id Id] [LawfulIteratorLoop α Id Id] (s : Slice γ) :
ForIn.toList on a slice is the slice's own toList.
instance Std.Internal.instPureForInSliceOfLawfulMonadOfFiniteOfLawfulIteratorLoopId {γ : Type u} {α γ' : Type w} {m : Type w → Type v} [Monad m] [LawfulMonad m] [ToIterator (Slice γ) Id α γ'] [Iterator α Id γ'] [Iterators.Finite α Id] [IteratorLoop α Id m] [LawfulIteratorLoop α Id m] [IteratorLoop α Id Id] [LawfulIteratorLoop α Id Id] :