Loogle!
Result
Found 343 declarations mentioning Std.Iterators.Map. Of these, only the first 200 are shown.
- Std.Iterators.Map 📋 Init.Data.Iterators.Combinators.Monadic.FilterMap
(α : Type w) {β γ : Type w} (m : Type w → Type w') (n : Type w → Type w'') (lift : ⦃α : Type w⦄ → m α → n α) [Functor n] (f : β → Std.Iterators.PostconditionT n γ) : Type w - Std.Iterators.instIteratorMap 📋 Init.Data.Iterators.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad n] [Std.Iterators.Iterator α m β] {lift : ⦃α : Type w⦄ → m α → n α} {f : β → Std.Iterators.PostconditionT n γ} : Std.Iterators.Iterator (Std.Iterators.Map α m n lift f) n γ - Std.Iterators.IterM.InternalCombinators.map 📋 Init.Data.Iterators.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad n] (lift : ⦃α : Type w⦄ → m α → n α) [Std.Iterators.Iterator α m β] (f : β → Std.Iterators.PostconditionT n γ) (it : Std.IterM m β) : Std.IterM n γ - Std.Iterators.IterM.mapWithPostcondition 📋 Init.Data.Iterators.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad n] [MonadLiftT m n] [Std.Iterators.Iterator α m β] (f : β → Std.Iterators.PostconditionT n γ) (it : Std.IterM m β) : Std.IterM n γ - Std.Iterators.instFiniteMap 📋 Init.Data.Iterators.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad n] [Std.Iterators.Iterator α m β] {lift : ⦃α : Type w⦄ → m α → n α} {f : β → Std.Iterators.PostconditionT n γ} [Std.Iterators.Finite α m] : Std.Iterators.Finite (Std.Iterators.Map α m n lift f) n - Std.Iterators.Map.instIteratorLoop 📋 Init.Data.Iterators.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type x → Type x'} [Monad n] [Monad o] [Std.Iterators.Iterator α m β] {lift : ⦃α : Type w⦄ → m α → n α} {f : β → Std.Iterators.PostconditionT n γ} : Std.Iterators.IteratorLoop (Std.Iterators.Map α m n lift f) n o - Std.Iterators.Map.instProductive 📋 Init.Data.Iterators.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad n] [Std.Iterators.Iterator α m β] {lift : ⦃α : Type w⦄ → m α → n α} {f : β → Std.Iterators.PostconditionT n γ} [Std.Iterators.Productive α m] : Std.Iterators.Productive (Std.Iterators.Map α m n lift f) n - Std.Iterators.IterM.map 📋 Init.Data.Iterators.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α m β] [Monad m] (f : β → γ) (it : Std.IterM m β) : Std.IterM m γ - Std.Iterators.IterM.mapM 📋 Init.Data.Iterators.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Monad n] [MonadLiftT m n] (f : β → n γ) (it : Std.IterM m β) : Std.IterM n γ - Std.Iterators.Map.instIteratorCollect 📋 Init.Data.Iterators.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type x} [Monad n] [Monad o] [Std.Iterators.Iterator α m β] {lift₁ : ⦃α : Type w⦄ → m α → n α} {f : β → Std.Iterators.PostconditionT n γ} [Std.Iterators.IteratorCollect α m o] : Std.Iterators.IteratorCollect (Std.Iterators.Map α m n lift₁ f) n o - Std.Iterators.Iter.mapWithPostcondition 📋 Init.Data.Iterators.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {m : Type w → Type w'} [Monad m] (f : β → Std.Iterators.PostconditionT m γ) (it : Std.Iter β) : Std.IterM m γ - Std.Iterators.Iter.map 📋 Init.Data.Iterators.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] (f : β → γ) (it : Std.Iter β) : Std.Iter γ - Std.Iterators.Iter.mapM 📋 Init.Data.Iterators.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {m : Type w → Type w'} [Monad m] (f : β → m γ) (it : Std.Iter β) : Std.IterM m γ - Std.Iterators.Map.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
(α : Type w) {β γ : Type w} (m : Type w → Type w') (n : Type w → Type w'') (lift : ⦃α : Type w⦄ → m α → n α) [Functor n] (f : β → Std.Iterators.PostconditionT n γ) : Std.Iterators.Map α m n lift f = Std.Iterators.FilterMap α m n lift fun b => Std.Iterators.PostconditionT.map some (f b) - Std.Iterators.IterM.mapWithPostcondition.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad n] [MonadLiftT m n] [Std.Iterators.Iterator α m β] (f : β → Std.Iterators.PostconditionT n γ) (it : Std.IterM m β) : Std.Iterators.IterM.mapWithPostcondition f it = Std.Iterators.IterM.InternalCombinators.map (fun {x} => monadLift) f it - Std.Iterators.IterM.map.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α m β] [Monad m] (f : β → γ) (it : Std.IterM m β) : Std.Iterators.IterM.map f it = Std.Iterators.IterM.mapWithPostcondition (fun b => pure (f b)) it - Std.Iterators.IterM.InternalCombinators.map.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad n] (lift : ⦃α : Type w⦄ → m α → n α) [Std.Iterators.Iterator α m β] (f : β → Std.Iterators.PostconditionT n γ) (it : Std.IterM m β) : Std.Iterators.IterM.InternalCombinators.map lift f it = Std.Iterators.toIterM { inner := it } n γ - Std.Iterators.instIteratorMap.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad n] [Std.Iterators.Iterator α m β] {lift : ⦃α : Type w⦄ → m α → n α} {f : β → Std.Iterators.PostconditionT n γ} : Std.Iterators.instIteratorMap = inferInstanceAs (Std.Iterators.Iterator (Std.Iterators.FilterMap α m n lift fun b => Std.Iterators.PostconditionT.map some (f b)) n γ) - Std.Iterators.instLawfulIteratorCollectMapOfLawfulMonadOfFiniteOfLawfulMonadLiftFunction 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type x} [Monad m] [Monad n] [Monad o] [LawfulMonad n] [LawfulMonad o] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m o] [Std.Iterators.LawfulIteratorCollect α m o] {lift : ⦃δ : Type w⦄ → m δ → n δ} {f : β → Std.Iterators.PostconditionT n γ} [Std.Internal.LawfulMonadLiftFunction lift] : Std.Iterators.LawfulIteratorCollect (Std.Iterators.Map α m n lift f) n o - Std.Iterators.IterM.toListRev_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] [Std.Iterators.Finite α m] {f : β → γ} (it : Std.IterM m β) : (Std.Iterators.IterM.map f it).toListRev = (fun x => List.map f x) <$> it.toListRev - Std.Iterators.IterM.count_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α m β] [Monad m] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.Finite α m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α m m] {it : Std.IterM m β} {f : β → β'} : (Std.Iterators.IterM.map f it).count = it.count - Std.Iterators.IterM.all_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Std.Iterators.IteratorLoop α m m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α m m] {it : Std.IterM m β} {f : β → β'} {p : β' → Bool} : Std.Iterators.IterM.all p (Std.Iterators.IterM.map f it) = Std.Iterators.IterM.all (fun x => p (f x)) it - Std.Iterators.IterM.any_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Std.Iterators.IteratorLoop α m m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α m m] {it : Std.IterM m β} {f : β → β'} {p : β' → Bool} : Std.Iterators.IterM.any p (Std.Iterators.IterM.map f it) = Std.Iterators.IterM.any (fun x => p (f x)) it - Std.Iterators.IterM.allM_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Std.Iterators.IteratorLoop α m m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α m m] {it : Std.IterM m β} {f : β → β'} {p : β' → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p (Std.Iterators.IterM.map f it) = Std.Iterators.IterM.allM (fun x => p (f x)) it - Std.Iterators.IterM.anyM_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Std.Iterators.IteratorLoop α m m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α m m] {it : Std.IterM m β} {f : β → β'} {p : β' → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.anyM p (Std.Iterators.IterM.map f it) = Std.Iterators.IterM.anyM (fun x => p (f x)) it - Std.Iterators.IterM.fold_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [LawfulMonad m] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.LawfulIteratorLoop α m m] {f : β → γ} {g : δ → γ → δ} {init : δ} {it : Std.IterM m β} : Std.Iterators.IterM.fold g init (Std.Iterators.IterM.map f it) = Std.Iterators.IterM.fold (fun d b => g d (f b)) init it - Std.Iterators.IterM.toArray_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] [Std.Iterators.Finite α m] {f : β → γ} (it : Std.IterM m β) : (Std.Iterators.IterM.map f it).toArray = (fun x => Array.map f x) <$> it.toArray - Std.Iterators.IterM.toList_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] [Std.Iterators.Finite α m] {f : β → β'} (it : Std.IterM m β) : (Std.Iterators.IterM.map f it).toList = (fun x => List.map f x) <$> it.toList - Std.Iterators.IterM.fold_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [LawfulMonad m] [LawfulMonad n] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.IteratorLoop α m n] [Std.Iterators.LawfulIteratorLoop α m m] [Std.Iterators.LawfulIteratorLoop α m n] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : β → n γ} {g : δ → γ → δ} {init : δ} {it : Std.IterM m β} : Std.Iterators.IterM.fold g init (Std.Iterators.IterM.mapM f it) = Std.Iterators.IterM.foldM (fun d b => do let c ← f b pure (g d c)) init it - Std.Iterators.IterM.foldM_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [LawfulMonad m] [LawfulMonad n] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.IteratorLoop α m n] [Std.Iterators.LawfulIteratorLoop α m m] [Std.Iterators.LawfulIteratorLoop α m n] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : β → γ} {g : δ → γ → n δ} {init : δ} {it : Std.IterM m β} : Std.Iterators.IterM.foldM g init (Std.Iterators.IterM.map f it) = Std.Iterators.IterM.foldM (fun d b => g d (f b)) init it - Std.Iterators.IterM.toListRev_map_eq_toListRev_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → γ} {it : Std.IterM m β} : (Std.Iterators.IterM.map f it).toListRev = (Std.Iterators.IterM.mapM (fun b => pure (f b)) it).toListRev - Std.Iterators.IterM.toListRev_map_eq_toListRev_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → γ} {it : Std.IterM m β} : (Std.Iterators.IterM.map f it).toListRev = (Std.Iterators.IterM.filterMapM (fun b => pure (some (f b))) it).toListRev - Std.Iterators.IterM.toListRev_mapM_eq_toListRev_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [MonadLiftT m n] [LawfulMonadLiftT m n] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m n] [Std.Iterators.LawfulIteratorCollect α m n] {f : β → n γ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM f it).toListRev = (Std.Iterators.IterM.filterMapM (fun b => some <$> f b) it).toListRev - Std.Iterators.IterM.foldM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type w'''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [Monad o] [LawfulMonad m] [LawfulMonad n] [LawfulMonad o] [Std.Iterators.IteratorLoop α m n] [Std.Iterators.IteratorLoop α m o] [Std.Iterators.LawfulIteratorLoop α m n] [Std.Iterators.LawfulIteratorLoop α m o] [MonadLiftT m n] [MonadLiftT n o] [LawfulMonadLiftT m n] [LawfulMonadLiftT n o] {f : β → n γ} {g : δ → γ → o δ} {init : δ} {it : Std.IterM m β} : Std.Iterators.IterM.foldM g init (Std.Iterators.IterM.mapM f it) = Std.Iterators.IterM.foldM (fun d b => do let c ← liftM (f b) g d c) init it - Std.Iterators.IterM.anyM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [LawfulMonad m] [LawfulMonad n] {it : Std.IterM m β} {f : β → n β'} {p : β' → n (ULift.{w, 0} Bool)} : Std.Iterators.IterM.anyM p (Std.Iterators.IterM.mapM f it) = Std.Iterators.IterM.anyM (fun x => do let __do_lift ← f x p __do_lift) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.allM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [LawfulMonad m] [LawfulMonad n] [LawfulMonadLiftT m n] {it : Std.IterM m β} {f : β → n β'} {p : β' → n (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p (Std.Iterators.IterM.mapM f it) = Std.Iterators.IterM.allM (fun x => do let __do_lift ← f x p __do_lift) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.toArray_map_eq_toArray_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → γ} {it : Std.IterM m β} : (Std.Iterators.IterM.map f it).toArray = (Std.Iterators.IterM.mapM (fun b => pure (f b)) it).toArray - Std.Iterators.IterM.toList_map_eq_toList_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → γ} {it : Std.IterM m β} : (Std.Iterators.IterM.map f it).toList = (Std.Iterators.IterM.mapM (fun b => pure (f b)) it).toList - Std.Iterators.IterM.toArray_map_eq_toArray_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → γ} {it : Std.IterM m β} : (Std.Iterators.IterM.map f it).toArray = (Std.Iterators.IterM.filterMapM (fun b => pure (some (f b))) it).toArray - Std.Iterators.IterM.toList_map_eq_toList_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → γ} {it : Std.IterM m β} : (Std.Iterators.IterM.map f it).toList = (Std.Iterators.IterM.filterMapM (fun b => pure (some (f b))) it).toList - Std.Iterators.IterM.all_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [Std.Iterators.IteratorLoop α m m] [LawfulMonad m] [LawfulMonad n] [LawfulMonadLiftT m n] [Std.Iterators.LawfulIteratorLoop α m m] {it : Std.IterM m β} {f : β → n β'} {p : β' → Bool} : Std.Iterators.IterM.all p (Std.Iterators.IterM.mapM f it) = Std.Iterators.IterM.allM (fun x => (fun x => { down := p x }) <$> f x) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.anyM_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [LawfulMonad m] [LawfulMonad n] {it : Std.IterM m β} {f : β → n (Option β')} {p : β' → n (ULift.{w, 0} Bool)} : Std.Iterators.IterM.anyM p (Std.Iterators.IterM.filterMapM f it) = Std.Iterators.IterM.anyM (fun x => do let __do_lift ← f x match __do_lift with | some fx => p fx | none => pure { down := false }) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.any_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [Std.Iterators.IteratorLoop α m m] [LawfulMonad m] [LawfulMonad n] [LawfulMonadLiftT m n] [Std.Iterators.LawfulIteratorLoop α m m] {it : Std.IterM m β} {f : β → n β'} {p : β' → Bool} : Std.Iterators.IterM.any p (Std.Iterators.IterM.mapM f it) = Std.Iterators.IterM.anyM (fun x => (fun x => { down := p x }) <$> f x) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.toArray_mapM_eq_toArray_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [MonadLiftT m n] [LawfulMonadLiftT m n] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m n] [Std.Iterators.LawfulIteratorCollect α m n] {f : β → n γ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM f it).toArray = (Std.Iterators.IterM.filterMapM (fun b => some <$> f b) it).toArray - Std.Iterators.IterM.toList_mapM_eq_toList_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [MonadLiftT m n] [LawfulMonadLiftT m n] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m n] [Std.Iterators.LawfulIteratorCollect α m n] {f : β → n γ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM f it).toList = (Std.Iterators.IterM.filterMapM (fun b => some <$> f b) it).toList - Std.Iterators.IterM.allM_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [LawfulMonad m] [LawfulMonad n] [LawfulMonadLiftT m n] {it : Std.IterM m β} {f : β → n (Option β')} {p : β' → n (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p (Std.Iterators.IterM.filterMapM f it) = Std.Iterators.IterM.allM (fun x => do let __do_lift ← f x match __do_lift with | some fx => p fx | none => pure { down := true }) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.all_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [Std.Iterators.IteratorLoop α m m] [LawfulMonad m] [LawfulMonad n] [LawfulMonadLiftT m n] [Std.Iterators.LawfulIteratorLoop α m m] {it : Std.IterM m β} {f : β → n (Option β')} {p : β' → Bool} : Std.Iterators.IterM.all p (Std.Iterators.IterM.filterMapM f it) = Std.Iterators.IterM.allM (fun x => do let __do_lift ← f x match __do_lift with | some fx => pure { down := p fx } | none => pure { down := true }) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.any_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [Std.Iterators.IteratorLoop α m m] [LawfulMonad m] [LawfulMonad n] [LawfulMonadLiftT m n] [Std.Iterators.LawfulIteratorLoop α m m] {it : Std.IterM m β} {f : β → n (Option β')} {p : β' → Bool} : Std.Iterators.IterM.any p (Std.Iterators.IterM.filterMapM f it) = Std.Iterators.IterM.anyM (fun x => do let __do_lift ← f x match __do_lift with | some fx => pure { down := p fx } | none => pure { down := false }) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.toListRev_mapM_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [MonadLiftT m n] [LawfulMonadLiftT m n] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] {f : β → γ} {g : γ → n δ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM g (Std.Iterators.IterM.map f it)).toListRev = (Std.Iterators.IterM.mapM (fun b => g (f b)) it).toListRev - Std.Iterators.IterM.toListRev_filterMapM_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [MonadLiftT m n] [LawfulMonadLiftT m n] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → γ} {g : γ → n (Option δ)} {it : Std.IterM m β} : (Std.Iterators.IterM.filterMapM g (Std.Iterators.IterM.map f it)).toListRev = (Std.Iterators.IterM.filterMapM (fun b => g (f b)) it).toListRev - Std.Iterators.IterM.anyM_filterM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [LawfulMonad m] [LawfulMonad n] {it : Std.IterM m β} {f p : β → n (ULift.{w, 0} Bool)} : Std.Iterators.IterM.anyM p (Std.Iterators.IterM.filterM f it) = Std.Iterators.IterM.anyM (fun x => do let __do_lift ← f x if __do_lift.down = true then p x else pure { down := false }) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.allM_filterM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [LawfulMonad m] [LawfulMonad n] [LawfulMonadLiftT m n] {it : Std.IterM m β} {f p : β → n (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p (Std.Iterators.IterM.filterM f it) = Std.Iterators.IterM.allM (fun x => do let __do_lift ← f x if __do_lift.down = true then p x else pure { down := true }) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.toListRev_mapM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type w'''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Monad o] [LawfulMonad o] [MonadLiftT m n] [MonadLiftT n o] [LawfulMonadLiftT m n] [LawfulMonadLiftT n o] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] {f : β → n γ} {g : γ → o δ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM g (Std.Iterators.IterM.mapM f it)).toListRev = (Std.Iterators.IterM.mapM (fun b => do let __do_lift ← liftM (f b) g __do_lift) it).toListRev - Std.Iterators.IterM.all_filterM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [Std.Iterators.IteratorLoop α m m] [LawfulMonad m] [LawfulMonad n] [LawfulMonadLiftT m n] [Std.Iterators.LawfulIteratorLoop α m m] {it : Std.IterM m β} {f : β → n (ULift.{w, 0} Bool)} {p : β → Bool} : Std.Iterators.IterM.all p (Std.Iterators.IterM.filterM f it) = Std.Iterators.IterM.allM (fun x => do let __do_lift ← f x if __do_lift.down = true then pure { down := p x } else pure { down := true }) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.any_filterM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad m] [Monad n] [MonadLiftT m n] [Std.Iterators.IteratorLoop α m m] [LawfulMonad m] [LawfulMonad n] [LawfulMonadLiftT m n] [Std.Iterators.LawfulIteratorLoop α m m] {it : Std.IterM m β} {f : β → n (ULift.{w, 0} Bool)} {p : β → Bool} : Std.Iterators.IterM.any p (Std.Iterators.IterM.filterM f it) = Std.Iterators.IterM.anyM (fun x => do let __do_lift ← f x if __do_lift.down = true then pure { down := p x } else pure { down := false }) (Std.Iterators.IterM.mapM pure it) - Std.Iterators.IterM.toListRev_filterMapM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type w'''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Monad o] [LawfulMonad o] [MonadLiftT m n] [MonadLiftT n o] [LawfulMonadLiftT m n] [LawfulMonadLiftT n o] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → n γ} {g : γ → o (Option δ)} {it : Std.IterM m β} : (Std.Iterators.IterM.filterMapM g (Std.Iterators.IterM.mapM f it)).toListRev = (Std.Iterators.IterM.filterMapM (fun b => do let __do_lift ← liftM (f b) g __do_lift) it).toListRev - Std.Iterators.IterM.toList_filterMapM_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [MonadLiftT m n] [LawfulMonadLiftT m n] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] {f : β → γ} {g : γ → n (Option δ)} {it : Std.IterM m β} : (Std.Iterators.IterM.filterMapM g (Std.Iterators.IterM.map f it)).toList = (Std.Iterators.IterM.filterMapM (fun b => g (f b)) it).toList - Std.Iterators.IterM.toArray_filterMapM_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [MonadLiftT m n] [LawfulMonadLiftT m n] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → γ} {g : γ → n (Option δ)} {it : Std.IterM m β} : (Std.Iterators.IterM.filterMapM g (Std.Iterators.IterM.map f it)).toArray = (Std.Iterators.IterM.filterMapM (fun b => g (f b)) it).toArray - Std.Iterators.IterM.toArray_mapM_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [MonadLiftT m n] [LawfulMonadLiftT m n] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m n] [Std.Iterators.LawfulIteratorCollect α m n] {f : β → γ} {g : γ → n δ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM g (Std.Iterators.IterM.map f it)).toArray = (Std.Iterators.IterM.mapM (fun b => g (f b)) it).toArray - Std.Iterators.IterM.toList_mapM_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [MonadLiftT m n] [LawfulMonadLiftT m n] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m n] [Std.Iterators.LawfulIteratorCollect α m n] {f : β → γ} {g : γ → n δ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM g (Std.Iterators.IterM.map f it)).toList = (Std.Iterators.IterM.mapM (fun b => g (f b)) it).toList - Std.Iterators.IterM.toListRev_mapM_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type w'''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Monad o] [LawfulMonad o] [MonadLiftT m n] [MonadLiftT n o] [LawfulMonadLiftT m n] [LawfulMonadLiftT n o] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → n (Option γ)} {g : γ → o δ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM g (Std.Iterators.IterM.filterMapM f it)).toListRev = (Std.Iterators.IterM.filterMapM (fun b => do let __do_lift ← liftM (f b) match __do_lift with | none => pure none | some fb => some <$> g fb) it).toListRev - Std.Iterators.IterM.toList_filterMapM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type w'''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Monad o] [LawfulMonad o] [MonadLiftT m n] [MonadLiftT n o] [LawfulMonadLiftT m n] [LawfulMonadLiftT n o] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] {f : β → n γ} {g : γ → o (Option δ)} {it : Std.IterM m β} : (Std.Iterators.IterM.filterMapM g (Std.Iterators.IterM.mapM f it)).toList = (Std.Iterators.IterM.filterMapM (fun b => do let __do_lift ← liftM (f b) g __do_lift) it).toList - Std.Iterators.IterM.toArray_filterMapM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type w'''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Monad o] [LawfulMonad o] [MonadLiftT m n] [MonadLiftT n o] [LawfulMonadLiftT m n] [LawfulMonadLiftT n o] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → n γ} {g : γ → o (Option δ)} {it : Std.IterM m β} : (Std.Iterators.IterM.filterMapM g (Std.Iterators.IterM.mapM f it)).toArray = (Std.Iterators.IterM.filterMapM (fun b => do let __do_lift ← liftM (f b) g __do_lift) it).toArray - Std.Iterators.IterM.toArray_mapM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type w'''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Monad o] [LawfulMonad o] [MonadLiftT m n] [MonadLiftT n o] [LawfulMonadLiftT m n] [LawfulMonadLiftT n o] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m o] [Std.Iterators.LawfulIteratorCollect α m o] {f : β → n γ} {g : γ → o δ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM g (Std.Iterators.IterM.mapM f it)).toArray = (Std.Iterators.IterM.mapM (fun b => do let __do_lift ← liftM (f b) g __do_lift) it).toArray - Std.Iterators.IterM.toList_mapM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type w'''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Monad o] [LawfulMonad o] [MonadLiftT m n] [MonadLiftT n o] [LawfulMonadLiftT m n] [LawfulMonadLiftT n o] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m o] [Std.Iterators.LawfulIteratorCollect α m o] {f : β → n γ} {g : γ → o δ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM g (Std.Iterators.IterM.mapM f it)).toList = (Std.Iterators.IterM.mapM (fun b => do let __do_lift ← liftM (f b) g __do_lift) it).toList - Std.Iterators.IterM.toArray_mapM_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type w'''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Monad o] [LawfulMonad o] [MonadLiftT m n] [MonadLiftT n o] [LawfulMonadLiftT m n] [LawfulMonadLiftT n o] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → n (Option γ)} {g : γ → o δ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM g (Std.Iterators.IterM.filterMapM f it)).toArray = (Std.Iterators.IterM.filterMapM (fun b => do let __do_lift ← liftM (f b) match __do_lift with | none => pure none | some fb => some <$> g fb) it).toArray - Std.Iterators.IterM.toList_mapM_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {o : Type w → Type w'''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Monad o] [LawfulMonad o] [MonadLiftT m n] [MonadLiftT n o] [LawfulMonadLiftT m n] [LawfulMonadLiftT n o] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α m m] {f : β → n (Option γ)} {g : γ → o δ} {it : Std.IterM m β} : (Std.Iterators.IterM.mapM g (Std.Iterators.IterM.filterMapM f it)).toList = (Std.Iterators.IterM.filterMapM (fun b => do let __do_lift ← liftM (f b) match __do_lift with | none => pure none | some fb => some <$> g fb) it).toList - Std.Iterators.IterM.step_mapWithPostcondition 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {γ : Type w} {f : β → Std.Iterators.PostconditionT n γ} [Monad n] [LawfulMonad n] [MonadLiftT m n] : (Std.Iterators.IterM.mapWithPostcondition f it).step = do let __do_lift ← liftM it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let out' ← (f out).operation pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.mapWithPostcondition f it') ↑out' ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.mapWithPostcondition f it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {γ : Type w} {f : β → n γ} [Monad n] [LawfulMonad n] [MonadLiftT m n] : (Std.Iterators.IterM.mapM f it).step = do let __do_lift ← liftM it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let out' ← f out pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.mapM f it') out' ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.mapM f it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_map 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α m β] {it : Std.IterM m β} [Monad m] [LawfulMonad m] {f : β → β'} : (Std.Iterators.IterM.map f it).step = do let __do_lift ← it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => let out' := f out; pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.map f it') out' ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.map f it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - String.Slice.lines 📋 Init.Data.String.Slice
(s : String.Slice) : Std.Iter String.Slice - String.Slice.chars 📋 Init.Data.String.Slice
(s : String.Slice) : Std.Iter Char - String.Slice.revChars 📋 Init.Data.String.Slice
(s : String.Slice) : Std.Iter Char - String.lines 📋 Init.Data.String.Search
(s : String) : Std.Iter String.Slice - String.positions 📋 Init.Data.String.Search
(s : String) : Std.Iter { p // p ≠ s.endPos } - String.revPositions 📋 Init.Data.String.Search
(s : String) : Std.Iter { p // p ≠ s.endPos } - String.chars 📋 Init.Data.String.Search
(s : String) : Std.Iter Char - String.revChars 📋 Init.Data.String.Search
(s : String) : Std.Iter Char - Std.Iterators.IterM.flatMapM 📋 Init.Data.Iterators.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] (f : β → m (Std.IterM m γ)) (it : Std.IterM m β) : Std.IterM m γ - Std.Iterators.IterM.flatMap 📋 Init.Data.Iterators.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] (f : β → Std.IterM m γ) (it : Std.IterM m β) : Std.IterM m γ - Std.Iterators.IterM.flatMapAfterM 📋 Init.Data.Iterators.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] (f : β → m (Std.IterM m γ)) (it₁ : Std.IterM m β) (it₂ : Option (Std.IterM m γ)) : Std.IterM m γ - Std.Iterators.IterM.flatMapAfter 📋 Init.Data.Iterators.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] (f : β → Std.IterM m γ) (it₁ : Std.IterM m β) (it₂ : Option (Std.IterM m γ)) : Std.IterM m γ - Std.Iterators.Iter.flatMap 📋 Init.Data.Iterators.Combinators.FlatMap
{α β α₂ γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] (f : β → Std.Iter γ) (it : Std.Iter β) : Std.Iter γ - Std.Iterators.Iter.flatMapAfter 📋 Init.Data.Iterators.Combinators.FlatMap
{α β α₂ γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] (f : β → Std.Iter γ) (it₁ : Std.Iter β) (it₂ : Option (Std.Iter γ)) : Std.Iter γ - Std.Iterators.Iter.flatMapM 📋 Init.Data.Iterators.Combinators.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] (f : β → m (Std.IterM m γ)) (it : Std.Iter β) : Std.IterM m γ - Std.Iterators.Iter.flatMapAfterM 📋 Init.Data.Iterators.Combinators.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] (f : β → m (Std.IterM m γ)) (it₁ : Std.Iter β) (it₂ : Option (Std.IterM m γ)) : Std.IterM m γ - Std.Iterators.IterM.flatMapM.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] (f : β → m (Std.IterM m γ)) (it : Std.IterM m β) : Std.Iterators.IterM.flatMapM f it = Std.Iterators.IterM.flatMapAfterM f it none - Std.Iterators.IterM.flatMap.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] (f : β → Std.IterM m γ) (it : Std.IterM m β) : Std.Iterators.IterM.flatMap f it = Std.Iterators.IterM.flatMapAfter f it none - Std.Iterators.Flatten.IsPlausibleStep.outerDone_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.IterM m β} (h : it₁.IsPlausibleStep Std.Iterators.IterStep.done) : (Std.Iterators.IterM.flatMapAfterM f it₁ none).IsPlausibleStep Std.Iterators.IterStep.done - Std.Iterators.Flatten.IsPlausibleStep.outerDone_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → Std.IterM m γ} {it₁ : Std.IterM m β} (h : it₁.IsPlausibleStep Std.Iterators.IterStep.done) : (Std.Iterators.IterM.flatMapAfter f it₁ none).IsPlausibleStep Std.Iterators.IterStep.done - Std.Iterators.Flatten.IsPlausibleStep.innerDone_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.IterM m β} {it₂ : Std.IterM m γ} (h : it₂.IsPlausibleStep Std.Iterators.IterStep.done) : (Std.Iterators.IterM.flatMapAfterM f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.IterM.flatMapAfterM f it₁ none)) - Std.Iterators.Flatten.IsPlausibleStep.outerSkip_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ it₁' : Std.IterM m β} (h : it₁.IsPlausibleStep (Std.Iterators.IterStep.skip it₁')) : (Std.Iterators.IterM.flatMapAfterM f it₁ none).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.IterM.flatMapAfterM f it₁' none)) - Std.Iterators.Flatten.IsPlausibleStep.innerSkip_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.IterM m β} {it₂ it₂' : Std.IterM m γ} (h : it₂.IsPlausibleStep (Std.Iterators.IterStep.skip it₂')) : (Std.Iterators.IterM.flatMapAfterM f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.IterM.flatMapAfterM f it₁ (some it₂'))) - Std.Iterators.Flatten.IsPlausibleStep.outerYield_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ it₁' : Std.IterM m β} {it₂' : Std.IterM m γ} {b : β} (h : it₁.IsPlausibleStep (Std.Iterators.IterStep.yield it₁' b)) : (Std.Iterators.IterM.flatMapAfterM f it₁ none).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.IterM.flatMapAfterM f it₁' (some it₂'))) - Std.Iterators.Flatten.IsPlausibleStep.innerYield_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.IterM m β} {it₂ it₂' : Std.IterM m γ} {b : γ} (h : it₂.IsPlausibleStep (Std.Iterators.IterStep.yield it₂' b)) : (Std.Iterators.IterM.flatMapAfterM f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.yield (Std.Iterators.IterM.flatMapAfterM f it₁ (some it₂')) b) - Std.Iterators.Flatten.IsPlausibleStep.innerDone_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → Std.IterM m γ} {it₁ : Std.IterM m β} {it₂ : Std.IterM m γ} (h : it₂.IsPlausibleStep Std.Iterators.IterStep.done) : (Std.Iterators.IterM.flatMapAfter f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.IterM.flatMapAfter f it₁ none)) - Std.Iterators.Flatten.IsPlausibleStep.outerSkip_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → Std.IterM m γ} {it₁ it₁' : Std.IterM m β} (h : it₁.IsPlausibleStep (Std.Iterators.IterStep.skip it₁')) : (Std.Iterators.IterM.flatMapAfter f it₁ none).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.IterM.flatMapAfter f it₁' none)) - Std.Iterators.Flatten.IsPlausibleStep.outerYield_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → Std.IterM m γ} {it₁ it₁' : Std.IterM m β} {b : β} (h : it₁.IsPlausibleStep (Std.Iterators.IterStep.yield it₁' b)) : (Std.Iterators.IterM.flatMapAfter f it₁ none).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.IterM.flatMapAfter f it₁' (some (f b)))) - Std.Iterators.Flatten.IsPlausibleStep.innerSkip_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → Std.IterM m γ} {it₁ : Std.IterM m β} {it₂ it₂' : Std.IterM m γ} (h : it₂.IsPlausibleStep (Std.Iterators.IterStep.skip it₂')) : (Std.Iterators.IterM.flatMapAfter f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.IterM.flatMapAfter f it₁ (some it₂'))) - Std.Iterators.Flatten.IsPlausibleStep.innerYield_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → Std.IterM m γ} {it₁ : Std.IterM m β} {it₂ it₂' : Std.IterM m γ} {b : γ} (h : it₂.IsPlausibleStep (Std.Iterators.IterStep.yield it₂' b)) : (Std.Iterators.IterM.flatMapAfter f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.yield (Std.Iterators.IterM.flatMapAfter f it₁ (some it₂')) b) - Std.Iterators.IterM.toArray_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α m] [Std.Iterators.Finite α₂ m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α m] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → Std.IterM m γ} {it₁ : Std.IterM m β} : (Std.Iterators.IterM.flatMap f it₁).toArray = Array.flatten <$> (Std.Iterators.IterM.mapM (fun b => (f b).toArray) it₁).toArray - Std.Iterators.IterM.toList_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α m] [Std.Iterators.Finite α₂ m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α m] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → Std.IterM m γ} {it₁ : Std.IterM m β} : (Std.Iterators.IterM.flatMap f it₁).toList = List.flatten <$> (Std.Iterators.IterM.mapM (fun b => (f b).toList) it₁).toList - Std.Iterators.IterM.toArray_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α m] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → m (Std.IterM m γ)} {it₁ : Std.IterM m β} : (Std.Iterators.IterM.flatMapM f it₁).toArray = Array.flatten <$> (Std.Iterators.IterM.mapM (fun b => do let __do_lift ← f b __do_lift.toArray) it₁).toArray - Std.Iterators.IterM.toList_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α m] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → m (Std.IterM m γ)} {it₁ : Std.IterM m β} : (Std.Iterators.IterM.flatMapM f it₁).toList = List.flatten <$> (Std.Iterators.IterM.mapM (fun b => do let __do_lift ← f b __do_lift.toList) it₁).toList - Std.Iterators.IterM.toArray_flatMapAfter 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α m] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → Std.IterM m γ} {it₁ : Std.IterM m β} {it₂ : Option (Std.IterM m γ)} : (Std.Iterators.IterM.flatMapAfter f it₁ it₂).toArray = match it₂ with | none => Array.flatten <$> (Std.Iterators.IterM.mapM (fun b => (f b).toArray) it₁).toArray | some it₂ => do let __do_lift ← it₂.toArray let __do_lift_1 ← Array.flatten <$> (Std.Iterators.IterM.mapM (fun b => (f b).toArray) it₁).toArray pure (__do_lift ++ __do_lift_1) - Std.Iterators.IterM.toList_flatMapAfter 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α m] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → Std.IterM m γ} {it₁ : Std.IterM m β} {it₂ : Option (Std.IterM m γ)} : (Std.Iterators.IterM.flatMapAfter f it₁ it₂).toList = match it₂ with | none => List.flatten <$> (Std.Iterators.IterM.mapM (fun b => (f b).toList) it₁).toList | some it₂ => do let __do_lift ← it₂.toList let __do_lift_1 ← List.flatten <$> (Std.Iterators.IterM.mapM (fun b => (f b).toList) it₁).toList pure (__do_lift ++ __do_lift_1) - Std.Iterators.IterM.toArray_flatMapAfterM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α m] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → m (Std.IterM m γ)} {it₁ : Std.IterM m β} {it₂ : Option (Std.IterM m γ)} : (Std.Iterators.IterM.flatMapAfterM f it₁ it₂).toArray = match it₂ with | none => Array.flatten <$> (Std.Iterators.IterM.mapM (fun b => do let __do_lift ← f b __do_lift.toArray) it₁).toArray | some it₂ => do let __do_lift ← it₂.toArray let __do_lift_1 ← Array.flatten <$> (Std.Iterators.IterM.mapM (fun b => do let __do_lift ← f b __do_lift.toArray) it₁).toArray pure (__do_lift ++ __do_lift_1) - Std.Iterators.IterM.toList_flatMapAfterM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α m] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α m m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α m m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → m (Std.IterM m γ)} {it₁ : Std.IterM m β} {it₂ : Option (Std.IterM m γ)} : (Std.Iterators.IterM.flatMapAfterM f it₁ it₂).toList = match it₂ with | none => List.flatten <$> (Std.Iterators.IterM.mapM (fun b => do let __do_lift ← f b __do_lift.toList) it₁).toList | some it₂ => do let __do_lift ← it₂.toList let __do_lift_1 ← List.flatten <$> (Std.Iterators.IterM.mapM (fun b => do let __do_lift ← f b __do_lift.toList) it₁).toList pure (__do_lift ++ __do_lift_1) - Std.Iterators.IterM.step_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.IterM m β} : (Std.Iterators.IterM.flatMapM f it₁).step = do let __do_lift ← it₁.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it₁' b, h⟩ => do let __do_lift ← f b pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfterM f it₁' (some __do_lift)) ⋯)) | ⟨Std.Iterators.IterStep.skip it₁', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfterM f it₁' none) ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → Std.IterM m γ} {it₁ : Std.IterM m β} : (Std.Iterators.IterM.flatMap f it₁).step = do let __do_lift ← it₁.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it₁' b, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfter f it₁' (some (f b))) ⋯)) | ⟨Std.Iterators.IterStep.skip it₁', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfter f it₁' none) ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_flatMapAfterM 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.IterM m β} {it₂ : Option (Std.IterM m γ)} : (Std.Iterators.IterM.flatMapAfterM f it₁ it₂).step = match it₂ with | none => do let __do_lift ← it₁.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it₁' b, h⟩ => do let __do_lift ← f b pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfterM f it₁' (some __do_lift)) ⋯)) | ⟨Std.Iterators.IterStep.skip it₁', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfterM f it₁' none) ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) | some it₂ => do let __do_lift ← it₂.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it₂' out, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.flatMapAfterM f it₁ (some it₂')) out ⋯)) | ⟨Std.Iterators.IterStep.skip it₂', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfterM f it₁ (some it₂')) ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfterM f it₁ none) ⋯)) - Std.Iterators.IterM.step_flatMapAfter 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Iterator α₂ m γ] {f : β → Std.IterM m γ} {it₁ : Std.IterM m β} {it₂ : Option (Std.IterM m γ)} : (Std.Iterators.IterM.flatMapAfter f it₁ it₂).step = match it₂ with | none => do let __do_lift ← it₁.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it₁' b, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfter f it₁' (some (f b))) ⋯)) | ⟨Std.Iterators.IterStep.skip it₁', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfter f it₁' none) ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) | some it₂ => do let __do_lift ← it₂.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it₂' out, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.flatMapAfter f it₁ (some it₂')) out ⋯)) | ⟨Std.Iterators.IterStep.skip it₂', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfter f it₁ (some it₂')) ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.flatMapAfter f it₁ none) ⋯)) - Std.Iterators.Iter.mapWithPostcondition_eq_toIter_mapWithPostcondition_toIterM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} {m : Type w → Type w'} [Monad m] {f : β → Std.Iterators.PostconditionT m γ} : Std.Iterators.Iter.mapWithPostcondition f it = Std.Iterators.IterM.mapWithPostcondition f it.toIterM - Std.Iterators.Iter.mapM_eq_toIter_mapM_toIterM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} {m : Type w → Type w'} [Monad m] {f : β → m γ} : Std.Iterators.Iter.mapM f it = Std.Iterators.IterM.mapM f it.toIterM - Std.Iterators.Iter.map_eq_toIter_map_toIterM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} {f : β → γ} : Std.Iterators.Iter.map f it = (Std.Iterators.IterM.map f it.toIterM).toIter - Std.Iterators.Iter.toListRev_map 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] [Std.Iterators.Finite α Id] {f : β → γ} : (Std.Iterators.Iter.map f it).toListRev = List.map f it.toListRev - Std.Iterators.Iter.count_map 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.IteratorLoop α Id Id] [Std.Iterators.Finite α Id] [Std.Iterators.LawfulIteratorLoop α Id Id] {it : Std.Iter β} {f : β → β'} : (Std.Iterators.Iter.map f it).count = it.count - Std.Iterators.Iter.toArray_map 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] [Std.Iterators.Finite α Id] {f : β → γ} : (Std.Iterators.Iter.map f it).toArray = Array.map f it.toArray - Std.Iterators.Iter.toList_map 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] [Std.Iterators.Finite α Id] {f : β → γ} : (Std.Iterators.Iter.map f it).toList = List.map f it.toList - Std.Iterators.Iter.all_map 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Std.Iterators.IteratorLoop α Id Id] [Std.Iterators.LawfulIteratorLoop α Id Id] {it : Std.Iter β} {f : β → β'} {p : β' → Bool} : Std.Iterators.Iter.all p (Std.Iterators.Iter.map f it) = Std.Iterators.Iter.all (fun x => p (f x)) it - Std.Iterators.Iter.any_map 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Std.Iterators.IteratorLoop α Id Id] [Std.Iterators.LawfulIteratorLoop α Id Id] {it : Std.Iter β} {f : β → β'} {p : β' → Bool} : Std.Iterators.Iter.any p (Std.Iterators.Iter.map f it) = Std.Iterators.Iter.any (fun x => p (f x)) it - Std.Iterators.Iter.fold_map 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ : Type w} {δ : Type x} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Std.Iterators.IteratorLoop α Id Id] [Std.Iterators.LawfulIteratorLoop α Id Id] {f : β → γ} {g : δ → γ → δ} {init : δ} {it : Std.Iter β} : Std.Iterators.Iter.fold g init (Std.Iterators.Iter.map f it) = Std.Iterators.Iter.fold (fun d b => g d (f b)) init it - Std.Iterators.Iter.allM_map 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} {m : Type → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [Std.Iterators.IteratorLoop α Id m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α Id m] {it : Std.Iter β} {f : β → β'} {p : β' → m Bool} : Std.Iterators.Iter.allM p (Std.Iterators.Iter.map f it) = Std.Iterators.Iter.allM (fun x => p (f x)) it - Std.Iterators.Iter.anyM_map 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} {m : Type → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [Std.Iterators.IteratorLoop α Id m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α Id m] {it : Std.Iter β} {f : β → β'} {p : β' → m Bool} : Std.Iterators.Iter.anyM p (Std.Iterators.Iter.map f it) = Std.Iterators.Iter.anyM (fun x => p (f x)) it - Std.Iterators.Iter.foldM_map 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ : Type w} {δ : Type x} {m : Type x → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [LawfulMonad m] [Std.Iterators.IteratorLoop α Id m] [Std.Iterators.LawfulIteratorLoop α Id m] {f : β → γ} {g : δ → γ → m δ} {init : δ} {it : Std.Iter β} : Std.Iterators.Iter.foldM g init (Std.Iterators.Iter.map f it) = Std.Iterators.Iter.foldM (fun d b => g d (f b)) init it - Std.Iterators.Iter.fold_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [LawfulMonad m] [Std.Iterators.IteratorLoop α Id Id] [Std.Iterators.IteratorLoop α Id m] [Std.Iterators.LawfulIteratorLoop α Id Id] [Std.Iterators.LawfulIteratorLoop α Id m] {f : β → m γ} {g : δ → γ → δ} {init : δ} {it : Std.Iter β} : Std.Iterators.IterM.fold g init (Std.Iterators.Iter.mapM f it) = Std.Iterators.Iter.foldM (fun d b => do let __do_lift ← f b pure (g d __do_lift)) init it - Std.Iterators.Iter.allM_eq_allM_mapM_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β : Type} {m : Type → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [LawfulMonad m] [Std.Iterators.IteratorLoop α Id m] [Std.Iterators.LawfulIteratorLoop α Id m] {it : Std.Iter β} {p : β → m Bool} : Std.Iterators.Iter.allM p it = ULift.down <$> Std.Iterators.IterM.allM (fun x => ULift.up <$> p x) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.anyM_eq_anyM_mapM_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β : Type} {m : Type → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [LawfulMonad m] [Std.Iterators.IteratorLoop α Id m] [Std.Iterators.LawfulIteratorLoop α Id m] {it : Std.Iter β} {p : β → m Bool} : Std.Iterators.Iter.anyM p it = ULift.down <$> Std.Iterators.IterM.anyM (fun x => ULift.up <$> p x) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.foldM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ δ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [Monad n] [LawfulMonad m] [LawfulMonad n] [Std.Iterators.IteratorLoop α Id m] [Std.Iterators.IteratorLoop α Id n] [Std.Iterators.LawfulIteratorLoop α Id m] [Std.Iterators.LawfulIteratorLoop α Id n] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : β → m γ} {g : δ → γ → n δ} {init : δ} {it : Std.Iter β} : Std.Iterators.IterM.foldM g init (Std.Iterators.Iter.mapM f it) = Std.Iterators.Iter.foldM (fun d b => do let c ← liftM (f b) g d c) init it - Std.Iterators.Iter.allM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [LawfulMonad m] {it : Std.Iter β} {f : β → m β'} {p : β' → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p (Std.Iterators.Iter.mapM f it) = Std.Iterators.IterM.allM (fun x => do let __do_lift ← f x p __do_lift) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.anyM_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [LawfulMonad m] {it : Std.Iter β} {f : β → m β'} {p : β' → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.anyM p (Std.Iterators.Iter.mapM f it) = Std.Iterators.IterM.anyM (fun x => do let __do_lift ← f x p __do_lift) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.all_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [Std.Iterators.IteratorLoop α Id m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α Id m] {it : Std.Iter β} {f : β → m β'} {p : β' → Bool} : Std.Iterators.IterM.all p (Std.Iterators.Iter.mapM f it) = Std.Iterators.IterM.allM (fun x => (fun x => { down := p x }) <$> f x) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.any_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [Std.Iterators.IteratorLoop α Id m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α Id m] {it : Std.Iter β} {f : β → m β'} {p : β' → Bool} : Std.Iterators.IterM.any p (Std.Iterators.Iter.mapM f it) = Std.Iterators.IterM.anyM (fun x => (fun x => { down := p x }) <$> f x) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.allM_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [LawfulMonad m] {it : Std.Iter β} {f : β → m (Option β')} {p : β' → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p (Std.Iterators.Iter.filterMapM f it) = Std.Iterators.IterM.allM (fun x => do let __do_lift ← f x match __do_lift with | some fx => p fx | none => pure { down := true }) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.anyM_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [LawfulMonad m] {it : Std.Iter β} {f : β → m (Option β')} {p : β' → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.anyM p (Std.Iterators.Iter.filterMapM f it) = Std.Iterators.IterM.anyM (fun x => do let __do_lift ← f x match __do_lift with | some fx => p fx | none => pure { down := false }) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.all_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [Std.Iterators.IteratorLoop α Id m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α Id m] {it : Std.Iter β} {f : β → m (Option β')} {p : β' → Bool} : Std.Iterators.IterM.all p (Std.Iterators.Iter.filterMapM f it) = Std.Iterators.IterM.allM (fun x => do let __do_lift ← f x match __do_lift with | some fx => pure { down := p fx } | none => pure { down := true }) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.any_filterMapM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β β' : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [Std.Iterators.IteratorLoop α Id m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α Id m] {it : Std.Iter β} {f : β → m (Option β')} {p : β' → Bool} : Std.Iterators.IterM.any p (Std.Iterators.Iter.filterMapM f it) = Std.Iterators.IterM.anyM (fun x => do let __do_lift ← f x match __do_lift with | some fx => pure { down := p fx } | none => pure { down := false }) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.allM_filterM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [LawfulMonad m] {it : Std.Iter β} {f p : β → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p (Std.Iterators.Iter.filterM f it) = Std.Iterators.IterM.allM (fun x => do let __do_lift ← f x if __do_lift.down = true then p x else pure { down := true }) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.anyM_filterM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [LawfulMonad m] {it : Std.Iter β} {f p : β → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.anyM p (Std.Iterators.Iter.filterM f it) = Std.Iterators.IterM.anyM (fun x => do let __do_lift ← f x if __do_lift.down = true then p x else pure { down := false }) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.all_filterM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [Std.Iterators.IteratorLoop α Id m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α Id m] {it : Std.Iter β} {f : β → m (ULift.{w, 0} Bool)} {p : β → Bool} : Std.Iterators.IterM.all p (Std.Iterators.Iter.filterM f it) = Std.Iterators.IterM.allM (fun x => do let __do_lift ← f x if __do_lift.down = true then pure { down := p x } else pure { down := true }) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.any_filterM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β : Type w} {m : Type w → Type w'} [Std.Iterators.Iterator α Id β] [Std.Iterators.Finite α Id] [Monad m] [Std.Iterators.IteratorLoop α Id m] [LawfulMonad m] [Std.Iterators.LawfulIteratorLoop α Id m] {it : Std.Iter β} {f : β → m (ULift.{w, 0} Bool)} {p : β → Bool} : Std.Iterators.IterM.any p (Std.Iterators.Iter.filterM f it) = Std.Iterators.IterM.anyM (fun x => do let __do_lift ← f x if __do_lift.down = true then pure { down := p x } else pure { down := false }) (Std.Iterators.Iter.mapM pure it) - Std.Iterators.Iter.step_map 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} {f : β → γ} : (Std.Iterators.Iter.map f it).step = match it.step with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.map f it') (f out) ⋯ | ⟨Std.Iterators.IterStep.skip it', h⟩ => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.map f it') ⋯ | ⟨Std.Iterators.IterStep.done, h⟩ => Std.Iterators.PlausibleIterStep.done ⋯ - Std.Iterators.Iter.step_mapWithPostcondition 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} {m : Type w → Type w'} {n : Type w → Type w''} {f : β → Std.Iterators.PostconditionT n γ} [Monad n] [LawfulMonad n] [MonadLiftT m n] : (Std.Iterators.Iter.mapWithPostcondition f it).step = match it.step with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let out' ← (f out).operation pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.mapWithPostcondition f it') ↑out' ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.mapWithPostcondition f it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.Iter.step_mapM 📋 Init.Data.Iterators.Lemmas.Combinators.FilterMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} {n : Type w → Type w''} {f : β → n γ} [Monad n] [LawfulMonad n] : (Std.Iterators.Iter.mapM f it).step = match it.step with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let out' ← f out pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.mapM f it') out' ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.mapM f it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.Iter.mapM.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] {m : Type w → Type w'} [Monad m] (f : β → m γ) (it : Std.Iter β) : Std.Iterators.Iter.mapM f it = Std.Iterators.IterM.mapM f it.toIterM - Std.Iterators.Iter.flatMap.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] (f : β → Std.Iter γ) (it : Std.Iter β) : Std.Iterators.Iter.flatMap f it = Std.Iterators.Iter.flatMapAfter f it none - Std.Iterators.Iter.map.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β γ : Type w} [Std.Iterators.Iterator α Id β] (f : β → γ) (it : Std.Iter β) : Std.Iterators.Iter.map f it = (Std.Iterators.IterM.map f it.toIterM).toIter - Std.Iterators.Iter.flatMapM.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] (f : β → m (Std.IterM m γ)) (it : Std.Iter β) : Std.Iterators.Iter.flatMapM f it = Std.Iterators.Iter.flatMapAfterM f it none - Std.Iterators.Flatten.IsPlausibleStep.outerDone_flatMap_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] {f : β → Std.Iter γ} {it₁ : Std.Iter β} (h : it₁.IsPlausibleStep Std.Iterators.IterStep.done) : (Std.Iterators.Iter.flatMapAfter f it₁ none).IsPlausibleStep Std.Iterators.IterStep.done - Std.Iterators.Flatten.IsPlausibleStep.innerDone_flatMap_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] {f : β → Std.Iter γ} {it₁ : Std.Iter β} {it₂ : Std.Iter γ} (h : it₂.IsPlausibleStep Std.Iterators.IterStep.done) : (Std.Iterators.Iter.flatMapAfter f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.Iter.flatMapAfter f it₁ none)) - Std.Iterators.Flatten.IsPlausibleStep.outerSkip_flatMap_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] {f : β → Std.Iter γ} {it₁ it₁' : Std.Iter β} (h : it₁.IsPlausibleStep (Std.Iterators.IterStep.skip it₁')) : (Std.Iterators.Iter.flatMapAfter f it₁ none).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.Iter.flatMapAfter f it₁' none)) - Std.Iterators.Flatten.IsPlausibleStep.outerYield_flatMap_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] {f : β → Std.Iter γ} {it₁ it₁' : Std.Iter β} {b : β} (h : it₁.IsPlausibleStep (Std.Iterators.IterStep.yield it₁' b)) : (Std.Iterators.Iter.flatMapAfter f it₁ none).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.Iter.flatMapAfter f it₁' (some (f b)))) - Std.Iterators.Flatten.IsPlausibleStep.innerSkip_flatMap_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] {f : β → Std.Iter γ} {it₁ : Std.Iter β} {it₂ it₂' : Std.Iter γ} (h : it₂.IsPlausibleStep (Std.Iterators.IterStep.skip it₂')) : (Std.Iterators.Iter.flatMapAfter f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.Iter.flatMapAfter f it₁ (some it₂'))) - Std.Iterators.Flatten.IsPlausibleStep.innerYield_flatMap_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] {f : β → Std.Iter γ} {it₁ : Std.Iter β} {it₂ it₂' : Std.Iter γ} {b : γ} (h : it₂.IsPlausibleStep (Std.Iterators.IterStep.yield it₂' b)) : (Std.Iterators.Iter.flatMapAfter f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.yield (Std.Iterators.Iter.flatMapAfter f it₁ (some it₂')) b) - Std.Iterators.Flatten.IsPlausibleStep.outerDone_flatMapM_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.Iter β} (h : it₁.IsPlausibleStep Std.Iterators.IterStep.done) : (Std.Iterators.Iter.flatMapAfterM f it₁ none).IsPlausibleStep Std.Iterators.IterStep.done - Std.Iterators.Flatten.IsPlausibleStep.outerSkip_flatMapM_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ it₁' : Std.Iter β} (h : it₁.IsPlausibleStep (Std.Iterators.IterStep.skip it₁')) : (Std.Iterators.Iter.flatMapAfterM f it₁ none).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.Iter.flatMapAfterM f it₁' none)) - Std.Iterators.Flatten.IsPlausibleStep.innerDone_flatMapM_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.Iter β} {it₂ : Std.IterM m γ} (h : it₂.IsPlausibleStep Std.Iterators.IterStep.done) : (Std.Iterators.Iter.flatMapAfterM f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.Iter.flatMapAfterM f it₁ none)) - Std.Iterators.Flatten.IsPlausibleStep.outerYield_flatMapM_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ it₁' : Std.Iter β} {it₂' : Std.IterM m γ} {b : β} (h : it₁.IsPlausibleStep (Std.Iterators.IterStep.yield it₁' b)) : (Std.Iterators.Iter.flatMapAfterM f it₁ none).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.Iter.flatMapAfterM f it₁' (some it₂'))) - Std.Iterators.Flatten.IsPlausibleStep.innerSkip_flatMapM_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.Iter β} {it₂ it₂' : Std.IterM m γ} (h : it₂.IsPlausibleStep (Std.Iterators.IterStep.skip it₂')) : (Std.Iterators.Iter.flatMapAfterM f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.skip (Std.Iterators.Iter.flatMapAfterM f it₁ (some it₂'))) - Std.Iterators.Flatten.IsPlausibleStep.innerYield_flatMapM_pure 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.Iter β} {it₂ it₂' : Std.IterM m γ} {b : γ} (h : it₂.IsPlausibleStep (Std.Iterators.IterStep.yield it₂' b)) : (Std.Iterators.Iter.flatMapAfterM f it₁ (some it₂)).IsPlausibleStep (Std.Iterators.IterStep.yield (Std.Iterators.Iter.flatMapAfterM f it₁ (some it₂')) b) - Std.Iterators.Iter.toArray_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α α₂ β γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] [Std.Iterators.Finite α Id] [Std.Iterators.Finite α₂ Id] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] [Std.Iterators.Finite α Id] [Std.Iterators.Finite α₂ Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.IteratorCollect α₂ Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α₂ Id Id] {f : β → Std.Iter γ} {it₁ : Std.Iter β} : (Std.Iterators.Iter.flatMap f it₁).toArray = (Std.Iterators.Iter.map (fun b => (f b).toArray) it₁).toArray.flatten - Std.Iterators.Iter.toList_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α α₂ β γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] [Std.Iterators.Finite α Id] [Std.Iterators.Finite α₂ Id] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] [Std.Iterators.Finite α Id] [Std.Iterators.Finite α₂ Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.IteratorCollect α₂ Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α₂ Id Id] {f : β → Std.Iter γ} {it₁ : Std.Iter β} : (Std.Iterators.Iter.flatMap f it₁).toList = (Std.Iterators.Iter.map (fun b => (f b).toList) it₁).toList.flatten - Std.Iterators.Iter.toArray_flatMapAfter 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α α₂ β γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] [Std.Iterators.Finite α Id] [Std.Iterators.Finite α₂ Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.IteratorCollect α₂ Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α₂ Id Id] {f : β → Std.Iter γ} {it₁ : Std.Iter β} {it₂ : Option (Std.Iter γ)} : (Std.Iterators.Iter.flatMapAfter f it₁ it₂).toArray = match it₂ with | none => (Std.Iterators.Iter.map (fun b => (f b).toArray) it₁).toArray.flatten | some it₂ => it₂.toArray ++ (Std.Iterators.Iter.map (fun b => (f b).toArray) it₁).toArray.flatten - Std.Iterators.Iter.toList_flatMapAfter 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α α₂ β γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] [Std.Iterators.Finite α Id] [Std.Iterators.Finite α₂ Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.IteratorCollect α₂ Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α₂ Id Id] {f : β → Std.Iter γ} {it₁ : Std.Iter β} {it₂ : Option (Std.Iter γ)} : (Std.Iterators.Iter.flatMapAfter f it₁ it₂).toList = match it₂ with | none => (Std.Iterators.Iter.map (fun b => (f b).toList) it₁).toList.flatten | some it₂ => it₂.toList ++ (Std.Iterators.Iter.map (fun b => (f b).toList) it₁).toList.flatten - Std.Iterators.Iter.toArray_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α Id] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α Id m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α Id m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → m (Std.IterM m γ)} {it₁ : Std.Iter β} : (Std.Iterators.Iter.flatMapM f it₁).toArray = Array.flatten <$> (Std.Iterators.Iter.mapM (fun b => do let __do_lift ← f b __do_lift.toArray) it₁).toArray - Std.Iterators.Iter.toList_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α Id] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α Id m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α Id m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → m (Std.IterM m γ)} {it₁ : Std.Iter β} : (Std.Iterators.Iter.flatMapM f it₁).toList = List.flatten <$> (Std.Iterators.Iter.mapM (fun b => do let __do_lift ← f b __do_lift.toList) it₁).toList - Std.Iterators.Iter.toArray_flatMapAfterM 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α Id] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α Id m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α Id m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → m (Std.IterM m γ)} {it₁ : Std.Iter β} {it₂ : Option (Std.IterM m γ)} : (Std.Iterators.Iter.flatMapAfterM f it₁ it₂).toArray = match it₂ with | none => Array.flatten <$> (Std.Iterators.Iter.mapM (fun b => do let __do_lift ← f b __do_lift.toArray) it₁).toArray | some it₂ => do let __do_lift ← it₂.toArray let __do_lift_1 ← Array.flatten <$> (Std.Iterators.Iter.mapM (fun b => do let __do_lift ← f b __do_lift.toArray) it₁).toArray pure (__do_lift ++ __do_lift_1) - Std.Iterators.Iter.toList_flatMapAfterM 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] [Std.Iterators.Finite α Id] [Std.Iterators.Finite α₂ m] [Std.Iterators.IteratorCollect α Id m] [Std.Iterators.IteratorCollect α₂ m m] [Std.Iterators.LawfulIteratorCollect α Id m] [Std.Iterators.LawfulIteratorCollect α₂ m m] {f : β → m (Std.IterM m γ)} {it₁ : Std.Iter β} {it₂ : Option (Std.IterM m γ)} : (Std.Iterators.Iter.flatMapAfterM f it₁ it₂).toList = match it₂ with | none => List.flatten <$> (Std.Iterators.Iter.mapM (fun b => do let __do_lift ← f b __do_lift.toList) it₁).toList | some it₂ => do let __do_lift ← it₂.toList let __do_lift_1 ← List.flatten <$> (Std.Iterators.Iter.mapM (fun b => do let __do_lift ← f b __do_lift.toList) it₁).toList pure (__do_lift ++ __do_lift_1) - Std.Iterators.Iter.step_flatMap 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] {f : β → Std.Iter γ} {it₁ : Std.Iter β} : (Std.Iterators.Iter.flatMap f it₁).step = match it₁.step with | ⟨Std.Iterators.IterStep.yield it₁' b, h⟩ => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfter f it₁' (some (f b))) ⋯ | ⟨Std.Iterators.IterStep.skip it₁', h⟩ => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfter f it₁' none) ⋯ | ⟨Std.Iterators.IterStep.done, h⟩ => Std.Iterators.PlausibleIterStep.done ⋯ - Std.Iterators.Iter.step_flatMapAfter 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ Id γ] {f : β → Std.Iter γ} {it₁ : Std.Iter β} {it₂ : Option (Std.Iter γ)} : (Std.Iterators.Iter.flatMapAfter f it₁ it₂).step = match it₂ with | none => match it₁.step with | ⟨Std.Iterators.IterStep.yield it₁' b, h⟩ => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfter f it₁' (some (f b))) ⋯ | ⟨Std.Iterators.IterStep.skip it₁', h⟩ => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfter f it₁' none) ⋯ | ⟨Std.Iterators.IterStep.done, h⟩ => Std.Iterators.PlausibleIterStep.done ⋯ | some it₂ => match it₂.step with | ⟨Std.Iterators.IterStep.yield it₂' out, h⟩ => Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.flatMapAfter f it₁ (some it₂')) out ⋯ | ⟨Std.Iterators.IterStep.skip it₂', h⟩ => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfter f it₁ (some it₂')) ⋯ | ⟨Std.Iterators.IterStep.done, h⟩ => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfter f it₁ none) ⋯ - Std.Iterators.Iter.step_flatMapM 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.Iter β} : (Std.Iterators.Iter.flatMapM f it₁).step = match it₁.step with | ⟨Std.Iterators.IterStep.yield it₁' b, h⟩ => do let __do_lift ← f b pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfterM f it₁' (some __do_lift)) ⋯)) | ⟨Std.Iterators.IterStep.skip it₁', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfterM f it₁' none) ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.Iter.step_flatMapAfterM 📋 Init.Data.Iterators.Lemmas.Combinators.FlatMap
{α β α₂ γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α Id β] [Std.Iterators.Iterator α₂ m γ] {f : β → m (Std.IterM m γ)} {it₁ : Std.Iter β} {it₂ : Option (Std.IterM m γ)} : (Std.Iterators.Iter.flatMapAfterM f it₁ it₂).step = match it₂ with | none => match it₁.step with | ⟨Std.Iterators.IterStep.yield it₁' b, h⟩ => do let __do_lift ← f b pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfterM f it₁' (some __do_lift)) ⋯)) | ⟨Std.Iterators.IterStep.skip it₁', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfterM f it₁' none) ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) | some it₂ => do let __do_lift ← it₂.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it₂' out, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.flatMapAfterM f it₁ (some it₂')) out ⋯)) | ⟨Std.Iterators.IterStep.skip it₂', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfterM f it₁ (some it₂')) ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.flatMapAfterM f it₁ none) ⋯)) - Std.DHashMap.Raw.iter 📋 Std.Data.DHashMap.Iterator
{α : Type u} {β : α → Type v} (m : Std.DHashMap.Raw α β) : Std.Iter ((a : α) × β a) - Std.DHashMap.iter 📋 Std.Data.DHashMap.Iterator
{α : Type u} {β : α → Type v} [BEq α] [Hashable α] (m : Std.DHashMap α β) : Std.Iter ((a : α) × β a) - Std.DHashMap.Raw.keysIter 📋 Std.Data.DHashMap.Iterator
{α : Type u} {β : α → Type u} (m : Std.DHashMap.Raw α β) : Std.Iter α - Std.DHashMap.Raw.valuesIter 📋 Std.Data.DHashMap.Iterator
{α β : Type u} (m : Std.DHashMap.Raw α fun x => β) : Std.Iter β - Std.DHashMap.keysIter 📋 Std.Data.DHashMap.Iterator
{α : Type u} {β : α → Type u} [BEq α] [Hashable α] (m : Std.DHashMap α β) : Std.Iter α - Std.DHashMap.valuesIter 📋 Std.Data.DHashMap.Iterator
{α β : Type u} [BEq α] [Hashable α] (m : Std.DHashMap α fun x => β) : Std.Iter β - Std.Iterators.IterM.Equiv.mapWithPostcondition 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α₁ α₂ β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Std.Iterators.Iterator α₁ m β] [Std.Iterators.Iterator α₂ m β] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : β → Std.Iterators.PostconditionT n γ} {ita : Std.IterM m β} {itb : Std.IterM m β} (h : ita.Equiv itb) : (Std.Iterators.IterM.mapWithPostcondition f ita).Equiv (Std.Iterators.IterM.mapWithPostcondition f itb) - Std.Iterators.IterM.Equiv.mapM 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α₁ α₂ β γ : Type w} {m : Type w → Type w'} {n : Type w → Type w''} [Monad m] [LawfulMonad m] [Monad n] [LawfulMonad n] [Std.Iterators.Iterator α₁ m β] [Std.Iterators.Iterator α₂ m β] [MonadLiftT m n] [LawfulMonadLiftT m n] {f : β → n γ} {ita : Std.IterM m β} {itb : Std.IterM m β} (h : ita.Equiv itb) : (Std.Iterators.IterM.mapM f ita).Equiv (Std.Iterators.IterM.mapM f itb) - Std.Iterators.IterM.Equiv.map 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.FilterMap
{α₁ α₂ β γ : Type w} {m : Type w → Type w'} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α₁ m β] [Std.Iterators.Iterator α₂ m β] {f : β → γ} {ita : Std.IterM m β} {itb : Std.IterM m β} (h : ita.Equiv itb) : (Std.Iterators.IterM.map f ita).Equiv (Std.Iterators.IterM.map f itb) - Std.DHashMap.Raw.toListRev_iter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type v} {m : Std.DHashMap.Raw α β} : m.iter.toListRev = m.toList.reverse - Std.DHashMap.toListRev_iter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type v} [BEq α] [Hashable α] {m : Std.DHashMap α β} : m.iter.toListRev = m.toList.reverse - Std.DHashMap.Raw.toList_iter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type v} {m : Std.DHashMap.Raw α β} : m.iter.toList = m.toList - Std.DHashMap.toArray_iter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type v} [BEq α] [Hashable α] {m : Std.DHashMap α β} : m.iter.toArray = m.toArray - Std.DHashMap.toList_iter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type v} [BEq α] [Hashable α] {m : Std.DHashMap α β} : m.iter.toList = m.toList - Std.DHashMap.Raw.toArray_iter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type v} {m : Std.DHashMap.Raw α β} [BEq α] [Hashable α] (h : m.WF) : m.iter.toArray = m.toArray - Std.DHashMap.toListRev_keysIter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type u} [BEq α] [Hashable α] {m : Std.DHashMap α β} [EquivBEq α] [LawfulHashable α] : m.keysIter.toListRev = m.keys.reverse - Std.DHashMap.Raw.toListRev_keysIter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type u} {m : Std.DHashMap.Raw α β} [BEq α] [Hashable α] [EquivBEq α] [LawfulHashable α] (h : m.WF) : m.keysIter.toListRev = m.keys.reverse - Std.DHashMap.Raw.toListRev_valuesIter 📋 Std.Data.DHashMap.IteratorLemmas
{α β : Type u} {m : Std.DHashMap.Raw α fun x => β} : m.valuesIter.toListRev = (List.map Sigma.snd m.toList).reverse - Std.DHashMap.toListRev_valuesIter 📋 Std.Data.DHashMap.IteratorLemmas
{α β : Type u} [BEq α] [Hashable α] {m : Std.DHashMap α fun x => β} : m.valuesIter.toListRev = (List.map Sigma.snd m.toList).reverse - Std.DHashMap.toArray_keysIter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type u} [BEq α] [Hashable α] {m : Std.DHashMap α β} [EquivBEq α] [LawfulHashable α] : m.keysIter.toArray = m.keysArray - Std.DHashMap.toList_keysIter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type u} [BEq α] [Hashable α] {m : Std.DHashMap α β} [EquivBEq α] [LawfulHashable α] : m.keysIter.toList = m.keys - Std.DHashMap.Raw.toArray_keysIter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type u} {m : Std.DHashMap.Raw α β} [BEq α] [Hashable α] [EquivBEq α] [LawfulHashable α] (h : m.WF) : m.keysIter.toArray = m.keysArray - Std.DHashMap.Raw.toList_keysIter 📋 Std.Data.DHashMap.IteratorLemmas
{α : Type u} {β : α → Type u} {m : Std.DHashMap.Raw α β} [BEq α] [Hashable α] [EquivBEq α] [LawfulHashable α] (h : m.WF) : m.keysIter.toList = m.keys - Std.DHashMap.Raw.toList_valuesIter_eq_toList_map_snd 📋 Std.Data.DHashMap.IteratorLemmas
{α β : Type u} {m : Std.DHashMap.Raw α fun x => β} : m.valuesIter.toList = List.map Sigma.snd m.toList - Std.DHashMap.Raw.toArray_valuesIter 📋 Std.Data.DHashMap.IteratorLemmas
{α β : Type u} {m : Std.DHashMap.Raw α fun x => β} : m.valuesIter.toArray = (List.map Sigma.snd m.toList).toArray - Std.DHashMap.toList_valuesIter_eq_toList_map_snd 📋 Std.Data.DHashMap.IteratorLemmas
{α β : Type u} [BEq α] [Hashable α] {m : Std.DHashMap α fun x => β} : m.valuesIter.toList = List.map Sigma.snd m.toList - Std.DHashMap.toArray_valuesIter 📋 Std.Data.DHashMap.IteratorLemmas
{α β : Type u} [BEq α] [Hashable α] {m : Std.DHashMap α fun x => β} : m.valuesIter.toArray = (List.map Sigma.snd m.toList).toArray - Std.HashMap.Raw.keysIter 📋 Std.Data.HashMap.Iterator
{α β : Type u} (m : Std.HashMap.Raw α β) : Std.Iter α
About
Loogle searches Lean and Mathlib definitions and theorems.
You can use Loogle from within the Lean4 VSCode language extension
using (by default) Ctrl-K Ctrl-S. You can also try the
#loogle command from LeanSearchClient,
the CLI version, the Loogle
VS Code extension, the lean.nvim
integration or the Zulip bot.
Usage
Loogle finds definitions and lemmas in various ways:
By constant:
🔍Real.sin
finds all lemmas whose statement somehow mentions the sine function.By lemma name substring:
🔍"differ"
finds all lemmas that have"differ"somewhere in their lemma name.By subexpression:
🔍_ * (_ ^ _)
finds all lemmas whose statements somewhere include a product where the second argument is raised to some power.The pattern can also be non-linear, as in
🔍Real.sqrt ?a * Real.sqrt ?aIf the pattern has parameters, they are matched in any order. Both of these will find
List.map:
🔍(?a -> ?b) -> List ?a -> List ?b
🔍List ?a -> (?a -> ?b) -> List ?bBy main conclusion:
🔍|- tsum _ = _ * tsum _
finds all lemmas where the conclusion (the subexpression to the right of all→and∀) has the given shape.As before, if the pattern has parameters, they are matched against the hypotheses of the lemma in any order; for example,
🔍|- _ < _ → tsum _ < tsum _
will findtsum_lt_tsumeven though the hypothesisf i < g iis not the last.
If you pass more than one such search filter, separated by commas
Loogle will return lemmas which match all of them. The
search
🔍 Real.sin, "two", tsum, _ * _, _ ^ _, |- _ < _ → _
would find all lemmas which mention the constants Real.sin
and tsum, have "two" as a substring of the
lemma name, include a product and a power somewhere in the type,
and have a hypothesis of the form _ < _ (if
there were any such lemmas). Metavariables (?a) are
assigned independently in each filter.
The #lucky button will directly send you to the
documentation of the first hit.
Source code
You can find the source code for this service at https://github.com/nomeata/loogle. The https://loogle.lean-lang.org/ service is provided by the Lean FRO.
This is Loogle revision 6ff4759 serving mathlib revision edaf32c