Loogle!
Result
Found 974 declarations mentioning ULift. Of these, only the first 200 are shown.
- ULift 📋 Init.Prelude
(α : Type s) : Type (max s r) - ULift.down 📋 Init.Prelude
{α : Type s} (self : ULift.{r, s} α) : α - ULift.up 📋 Init.Prelude
{α : Type s} (down : α) : ULift.{r, s} α - instInhabitedULift 📋 Init.Prelude
{α : Type u_1} [Inhabited α] : Inhabited (ULift.{u_2, u_1} α) - ULift.up_down 📋 Init.Prelude
{α : Type u} (b : ULift.{v, u} α) : { down := b.down } = b - ULift.up.sizeOf_spec 📋 Init.SizeOf
{α : Type s} [SizeOf α] (down : α) : sizeOf { down := down } = 1 + sizeOf down - ULift.up.injEq 📋 Init.Core
{α : Type s} (down down✝ : α) : ({ down := down } = { down := down✝ }) = (down = down✝) - instReprULift 📋 Init.Data.Repr
{α : Type u_1} [Repr α] : Repr (ULift.{v, u_1} α) - instToStringULift 📋 Init.Data.ToString.Basic
{α : Type u} [ToString α] : ToString (ULift.{v, u} α) - Std.Iterators.IteratorSize.mk 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] (size : Std.IterM m β → m (ULift.{w, 0} ℕ)) : Std.Iterators.IteratorSize α m - Std.Iterators.IteratorSize.size 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α : Type w} {m : Type w → Type w'} {β : Type w} {inst✝ : Std.Iterators.Iterator α m β} [self : Std.Iterators.IteratorSize α m] : Std.IterM m β → m (ULift.{w, 0} ℕ) - Std.Iterators.IteratorSizePartial.mk 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] (size : Std.IterM m β → m (ULift.{w, 0} ℕ)) : Std.Iterators.IteratorSizePartial α m - Std.Iterators.IteratorSizePartial.size 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α : Type w} {m : Type w → Type w'} {β : Type w} {inst✝ : Std.Iterators.Iterator α m β} [self : Std.Iterators.IteratorSizePartial α m] : Std.IterM m β → m (ULift.{w, 0} ℕ) - Std.Iterators.IterM.DefaultConsumers.sizePartial 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α : Type w} {m : Type w → Type w'} [Monad m] {β : Type w} [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoopPartial α m m] (it : Std.IterM m β) : m (ULift.{w, 0} ℕ) - Std.Iterators.IterM.Partial.all 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoopPartial α m m] (p : β → Bool) (it : Std.Iterators.IterM.Partial m β) : m (ULift.{w, 0} Bool) - Std.Iterators.IterM.Partial.any 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoopPartial α m m] (p : β → Bool) (it : Std.Iterators.IterM.Partial m β) : m (ULift.{w, 0} Bool) - Std.Iterators.IterM.Partial.allM 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoopPartial α m m] (p : β → m (ULift.{w, 0} Bool)) (it : Std.Iterators.IterM.Partial m β) : m (ULift.{w, 0} Bool) - Std.Iterators.IterM.Partial.anyM 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoopPartial α m m] (p : β → m (ULift.{w, 0} Bool)) (it : Std.Iterators.IterM.Partial m β) : m (ULift.{w, 0} Bool) - Std.Iterators.IterM.DefaultConsumers.size 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α : Type w} {m : Type w → Type w'} [Monad m] {β : Type w} [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.Finite α m] (it : Std.IterM m β) : m (ULift.{w, 0} ℕ) - Std.Iterators.IterM.all 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.Finite α m] (p : β → Bool) (it : Std.IterM m β) : m (ULift.{w, 0} Bool) - Std.Iterators.IterM.any 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.Finite α m] (p : β → Bool) (it : Std.IterM m β) : m (ULift.{w, 0} Bool) - Std.Iterators.IterM.allM 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.Finite α m] (p : β → m (ULift.{w, 0} Bool)) (it : Std.IterM m β) : m (ULift.{w, 0} Bool) - Std.Iterators.IterM.anyM 📋 Init.Data.Iterators.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.Finite α m] (p : β → m (ULift.{w, 0} Bool)) (it : Std.IterM m β) : m (ULift.{w, 0} Bool) - Std.Iterators.IterM.filterWithPostcondition 📋 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 (ULift.{w, 0} Bool)) (it : Std.IterM m β) : Std.IterM n β - Std.Iterators.IterM.filterM 📋 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 (ULift.{w, 0} Bool)) (it : Std.IterM m β) : Std.IterM n β - Std.Iterators.Iter.filterWithPostcondition 📋 Init.Data.Iterators.Combinators.FilterMap
{α β : Type w} [Std.Iterators.Iterator α Id β] {m : Type w → Type w'} [Monad m] (f : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)) (it : Std.Iter β) : Std.IterM m β - Std.Iterators.Iter.filterM 📋 Init.Data.Iterators.Combinators.FilterMap
{α β : Type w} [Std.Iterators.Iterator α Id β] {m : Type w → Type w'} [Monad m] (f : β → m (ULift.{w, 0} Bool)) (it : Std.Iter β) : Std.IterM m β - Std.Iterators.ULiftT.run 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{n : Type (max u v) → Type v'} {α : Type u} (x : Std.Iterators.ULiftT n α) : n (ULift.{v, u} α) - Std.Iterators.Types.ULiftIterator.instIterator 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} [Std.Iterators.Iterator α m β] [Monad n] : Std.Iterators.Iterator (Std.Iterators.Types.ULiftIterator α m n β lift) n (ULift.{v, u} β) - Std.Iterators.IterM.uLift 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {β : Type u} (it : Std.IterM m β) (n : Type (max u v) → Type v') [lift : MonadLiftT m (Std.Iterators.ULiftT n)] : Std.IterM n (ULift.{v, u} β) - Std.Iterators.Types.ULiftIterator.Monadic.modifyStep 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} (step : Std.Iterators.IterStep (Std.IterM m β) β) : Std.Iterators.IterStep (Std.IterM n (ULift.{v, u} β)) (ULift.{v, u} β) - Std.Iterators.ULiftT.run_pure 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{n : Type (max u v) → Type v'} [Monad n] {α : Type u} {a : α} : (pure a).run = pure { down := a } - Std.Iterators.Types.ULiftIterator.instFinite 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad n] : Std.Iterators.Finite (Std.Iterators.Types.ULiftIterator α m n β lift) n - Std.Iterators.Types.ULiftIterator.instFinitenessRelation 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Monad n] : Std.Iterators.FinitenessRelation (Std.Iterators.Types.ULiftIterator α m n β lift) n - Std.Iterators.Types.ULiftIterator.instIteratorCollect 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} {o : Type (max u v) → Type u_1} [Monad n] [Monad o] [Std.Iterators.Iterator α m β] : Std.Iterators.IteratorCollect (Std.Iterators.Types.ULiftIterator α m n β lift) n o - Std.Iterators.Types.ULiftIterator.instIteratorCollectPartial 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} {o : Type (max u v) → Type u_1} [Monad n] [Monad o] [Std.Iterators.Iterator α m β] : Std.Iterators.IteratorCollectPartial (Std.Iterators.Types.ULiftIterator α m n β lift) n o - Std.Iterators.Types.ULiftIterator.instIteratorLoop 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} {o : Type x → Type x'} [Monad n] [Monad o] [Std.Iterators.Iterator α m β] : Std.Iterators.IteratorLoop (Std.Iterators.Types.ULiftIterator α m n β lift) n o - Std.Iterators.Types.ULiftIterator.instIteratorLoopPartial 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} {o : Type x → Type x'} [Monad n] [Monad o] [Std.Iterators.Iterator α m β] : Std.Iterators.IteratorLoopPartial (Std.Iterators.Types.ULiftIterator α m n β lift) n o - Std.Iterators.Types.ULiftIterator.instIteratorSizePartial 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} [Monad n] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorSize α m] : Std.Iterators.IteratorSizePartial (Std.Iterators.Types.ULiftIterator α m n β lift) n - Std.Iterators.Types.ULiftIterator.instProductive 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} [Std.Iterators.Iterator α m β] [Std.Iterators.Productive α m] [Monad n] : Std.Iterators.Productive (Std.Iterators.Types.ULiftIterator α m n β lift) n - Std.Iterators.Types.ULiftIterator.instProductivenessRelation 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} [Std.Iterators.Iterator α m β] [Std.Iterators.Productive α m] [Monad n] : Std.Iterators.ProductivenessRelation (Std.Iterators.Types.ULiftIterator α m n β lift) n - Std.Iterators.ULiftT.run_bind 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{n : Type (max u v) → Type v'} [Monad n] {α β : Type u} {x : Std.Iterators.ULiftT n α} {f : α → Std.Iterators.ULiftT n β} : (x >>= f).run = do let a ← x.run (f a.down).run - Std.Iterators.Types.ULiftIterator.instIteratorSize 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} {lift : ⦃γ : Type u⦄ → m γ → Std.Iterators.ULiftT n γ} [Monad n] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorSize α m] [Std.Iterators.Finite (Std.Iterators.Types.ULiftIterator α m n β lift) n] : Std.Iterators.IteratorSize (Std.Iterators.Types.ULiftIterator α m n β lift) n - Std.Iterators.ULiftT.run_map 📋 Init.Data.Iterators.Combinators.Monadic.ULift
{n : Type (max u v) → Type v'} [Monad n] {α β : Type u} {x : Std.Iterators.ULiftT n α} {f : α → β} : (f <$> x).run = do let a ← x.run pure { down := f a.down } - Std.Iterators.Iter.uLift 📋 Init.Data.Iterators.Combinators.ULift
{α β : Type u} (it : Std.Iter β) : Std.Iter (ULift.{v, u} β) - Std.Iterators.Types.ULiftIterator.modifyStep 📋 Init.Data.Iterators.Combinators.ULift
{α β : Type u} (step : Std.Iterators.IterStep (Std.Iter β) β) : Std.Iterators.IterStep (Std.Iter (ULift.{v, u} β)) (ULift.{v, u} β) - Std.Iterators.IterM.all.congr_simp 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.Finite α m] (p p✝ : β → Bool) (e_p : p = p✝) (it it✝ : Std.IterM m β) (e_it : it = it✝) : Std.Iterators.IterM.all p it = Std.Iterators.IterM.all p✝ it✝ - Std.Iterators.IterM.any.congr_simp 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.Finite α m] (p p✝ : β → Bool) (e_p : p = p✝) (it it✝ : Std.IterM m β) (e_it : it = it✝) : Std.Iterators.IterM.any p it = Std.Iterators.IterM.any p✝ it✝ - Std.Iterators.IterM.allM.congr_simp 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.Finite α m] (p p✝ : β → m (ULift.{w, 0} Bool)) (e_p : p = p✝) (it it✝ : Std.IterM m β) (e_it : it = it✝) : Std.Iterators.IterM.allM p it = Std.Iterators.IterM.allM p✝ it✝ - Std.Iterators.IterM.anyM.congr_simp 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : Type w} {m : Type w → Type w'} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoop α m m] [Std.Iterators.Finite α m] (p p✝ : β → m (ULift.{w, 0} Bool)) (e_p : p = p✝) (it it✝ : Std.IterM m β) (e_it : it = it✝) : Std.Iterators.IterM.anyM p it = Std.Iterators.IterM.anyM p✝ it✝ - Std.Iterators.IterM.all_eq_allM 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → Bool} : Std.Iterators.IterM.all p it = Std.Iterators.IterM.allM (fun x => pure { down := p x }) it - Std.Iterators.IterM.any_eq_anyM 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → Bool} : Std.Iterators.IterM.any p it = Std.Iterators.IterM.anyM (fun x => pure { down := p x }) it - Std.Iterators.IterM.allM_pure 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → ULift.{w, 0} Bool} : Std.Iterators.IterM.allM (fun x => pure (p x)) it = Std.Iterators.IterM.all (fun x => (p x).down) it - Std.Iterators.IterM.anyM_pure 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → ULift.{w, 0} Bool} : Std.Iterators.IterM.anyM (fun x => pure (p x)) it = Std.Iterators.IterM.any (fun x => (p x).down) it - Std.Iterators.IterM.all_eq_not_any_not 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → Bool} : Std.Iterators.IterM.all p it = (fun x => { down := !x.down }) <$> Std.Iterators.IterM.any (fun x => !p x) it - Std.Iterators.IterM.allM_eq_not_anyM_not 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p it = (fun x => { down := !x.down }) <$> Std.Iterators.IterM.anyM (fun x => (fun x => { down := !x.down }) <$> p x) it - Std.Iterators.IterM.all_eq_forIn 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → Bool} : Std.Iterators.IterM.all p it = forIn it { down := true } fun x x_1 => if p x = true then pure (ForInStep.yield { down := true }) else pure (ForInStep.done { down := false }) - Std.Iterators.IterM.any_eq_forIn 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → Bool} : Std.Iterators.IterM.any p it = forIn it { down := false } fun x x_1 => if p x = true then pure (ForInStep.done { down := true }) else pure (ForInStep.yield { down := false }) - Std.Iterators.IterM.allM_eq_forIn 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p it = forIn it { down := true } fun x x_1 => do let __do_lift ← p x if __do_lift.down = true then pure (ForInStep.yield { down := true }) else pure (ForInStep.done { down := false }) - Std.Iterators.IterM.anyM_eq_forIn 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.anyM p it = forIn it { down := false } fun x x_1 => do let __do_lift ← p x if __do_lift.down = true then pure (ForInStep.done { down := true }) else pure (ForInStep.yield { down := false }) - Std.Iterators.IterM.all_eq_match_step 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → Bool} : Std.Iterators.IterM.all p it = do let __do_lift ← it.step match ↑__do_lift.inflate with | Std.Iterators.IterStep.yield it' x => if p x = true then Std.Iterators.IterM.all p it' else pure { down := false } | Std.Iterators.IterStep.skip it' => Std.Iterators.IterM.all p it' | Std.Iterators.IterStep.done => pure { down := true } - Std.Iterators.IterM.any_eq_match_step 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → Bool} : Std.Iterators.IterM.any p it = do let __do_lift ← it.step match ↑__do_lift.inflate with | Std.Iterators.IterStep.yield it' x => if p x = true then pure { down := true } else Std.Iterators.IterM.any p it' | Std.Iterators.IterStep.skip it' => Std.Iterators.IterM.any p it' | Std.Iterators.IterStep.done => pure { down := false } - Std.Iterators.IterM.allM_eq_match_step 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p it = do let __do_lift ← it.step match ↑__do_lift.inflate with | Std.Iterators.IterStep.yield it' x => do let __do_lift ← p x if __do_lift.down = true then Std.Iterators.IterM.allM p it' else pure { down := false } | Std.Iterators.IterStep.skip it' => Std.Iterators.IterM.allM p it' | Std.Iterators.IterStep.done => pure { down := true } - Std.Iterators.IterM.anyM_eq_match_step 📋 Init.Data.Iterators.Lemmas.Consumers.Monadic.Loop
{α β : 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] {it : Std.IterM m β} {p : β → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.anyM p it = do let __do_lift ← it.step match ↑__do_lift.inflate with | Std.Iterators.IterStep.yield it' x => do let __do_lift ← p x if __do_lift.down = true then pure { down := true } else Std.Iterators.IterM.anyM p it' | Std.Iterators.IterStep.skip it' => Std.Iterators.IterM.anyM p it' | Std.Iterators.IterStep.done => pure { down := false } - Std.Iterators.Iter.size.eq_1 📋 Init.Data.Range.Polymorphic.Lemmas
{α β : Type w} [Std.Iterators.Iterator α Id β] [Std.Iterators.IteratorSize α Id] (it : Std.Iter β) : it.size = (Std.Iterators.IteratorSize.size it.toIterM).run.down - instDecidableEqULift 📋 Init.Data.ULift
{α✝ : Type u_1} [DecidableEq α✝] : DecidableEq (ULift.{u_2, u_1} α✝) - instSubsingletonULift 📋 Init.Data.ULift
{α : Type u_1} [Subsingleton α] : Subsingleton (ULift.{u_2, u_1} α) - instDecidableEqULift.decEq 📋 Init.Data.ULift
{α✝ : Type u_1} [DecidableEq α✝] (x✝ x✝¹ : ULift.{u_2, u_1} α✝) : Decidable (x✝ = x✝¹) - 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.all_filterMap 📋 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 : β → Option β'} {p : β' → Bool} : Std.Iterators.IterM.all p (Std.Iterators.IterM.filterMap f it) = Std.Iterators.IterM.all (fun x => match f x with | some fx => p fx | none => true) it - Std.Iterators.IterM.any_filterMap 📋 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 : β → Option β'} {p : β' → Bool} : Std.Iterators.IterM.any p (Std.Iterators.IterM.filterMap f it) = Std.Iterators.IterM.any (fun x => match f x with | some fx => p fx | none => false) it - Std.Iterators.IterM.allM_filterMap 📋 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 : β → Option β'} {p : β' → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p (Std.Iterators.IterM.filterMap f it) = Std.Iterators.IterM.allM (fun x => match f x with | some fx => p fx | none => pure { down := true }) it - Std.Iterators.IterM.anyM_filterMap 📋 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 : β → Option β'} {p : β' → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.anyM p (Std.Iterators.IterM.filterMap f it) = Std.Iterators.IterM.anyM (fun x => match f x with | some fx => p fx | none => pure { down := false }) it - Std.Iterators.IterM.allM_filter 📋 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 : β → Bool} {p : β → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.allM p (Std.Iterators.IterM.filter f it) = Std.Iterators.IterM.allM (fun x => if f x = true then p x else pure { down := true }) it - Std.Iterators.IterM.anyM_filter 📋 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 : β → Bool} {p : β → m (ULift.{w, 0} Bool)} : Std.Iterators.IterM.anyM p (Std.Iterators.IterM.filter f it) = Std.Iterators.IterM.anyM (fun x => if f x = true then p x else pure { down := false }) 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.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.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.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.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.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.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.step_filterWithPostcondition 📋 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 β} {f : β → Std.Iterators.PostconditionT n (ULift.{w, 0} Bool)} [Monad n] [LawfulMonad n] [MonadLiftT m n] : (Std.Iterators.IterM.filterWithPostcondition f it).step = do let __do_lift ← liftM it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← (f out).operation match __do_lift with | ⟨{ down := false }, h'⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.filterWithPostcondition f it') ⋯)) | ⟨{ down := true }, h'⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.filterWithPostcondition f it') out ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.filterWithPostcondition f it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_filterM 📋 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 β} {f : β → n (ULift.{w, 0} Bool)} [Monad n] [LawfulMonad n] [MonadLiftT m n] : (Std.Iterators.IterM.filterM f it).step = do let __do_lift ← liftM it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← f out match __do_lift with | { down := false } => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.filterM f it') ⋯)) | { down := true } => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.filterM f it') out ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.filterM f it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.uLift.eq_1 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {β : Type u} (it : Std.IterM m β) (n : Type (max u v) → Type v') [lift : MonadLiftT m (Std.Iterators.ULiftT n)] : it.uLift n = { internalState := { inner := it } } - Std.Iterators.IterM.toListRev_uLift 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} [Std.Iterators.Iterator α m β] [Monad m] [Monad n] {it : Std.IterM m β} [MonadLiftT m (Std.Iterators.ULiftT n)] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [LawfulMonad m] [LawfulMonad n] [Std.Iterators.LawfulIteratorCollect α m m] [LawfulMonadLiftT m (Std.Iterators.ULiftT n)] : (it.uLift n).toListRev = (fun l => List.map ULift.up l.down) <$> (monadLift it.toListRev).run - Std.Iterators.IterM.toArray_uLift 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} [Std.Iterators.Iterator α m β] [Monad m] [Monad n] {it : Std.IterM m β} [MonadLiftT m (Std.Iterators.ULiftT n)] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [LawfulMonad m] [LawfulMonad n] [Std.Iterators.LawfulIteratorCollect α m m] [LawfulMonadLiftT m (Std.Iterators.ULiftT n)] : (it.uLift n).toArray = (fun l => Array.map ULift.up l.down) <$> (monadLift it.toArray).run - Std.Iterators.IterM.toList_uLift 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} [Std.Iterators.Iterator α m β] [Monad m] [Monad n] {it : Std.IterM m β} [MonadLiftT m (Std.Iterators.ULiftT n)] [Std.Iterators.Finite α m] [Std.Iterators.IteratorCollect α m m] [LawfulMonad m] [LawfulMonad n] [Std.Iterators.LawfulIteratorCollect α m m] [LawfulMonadLiftT m (Std.Iterators.ULiftT n)] : (it.uLift n).toList = (fun l => List.map ULift.up l.down) <$> (monadLift it.toList).run - Std.Iterators.IterM.step_uLift 📋 Init.Data.Iterators.Lemmas.Combinators.Monadic.ULift
{α : Type u} {m : Type u → Type u'} {n : Type (max u v) → Type v'} {β : Type u} [Std.Iterators.Iterator α m β] [Monad n] {it : Std.IterM m β} [MonadLiftT m (Std.Iterators.ULiftT n)] : (it.uLift n).step = do let __do_lift ← (monadLift it.step).run have step : Std.Shrink it.Step := __do_lift.down pure (Std.Shrink.deflate ⟨Std.Iterators.Types.ULiftIterator.Monadic.modifyStep ↑step.inflate, ⋯⟩) - Std.Iterators.Iter.filterWithPostcondition_eq_toIter_filterMapWithPostcondition_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 (ULift.{w, 0} Bool)} : Std.Iterators.Iter.filterWithPostcondition f it = Std.Iterators.IterM.filterWithPostcondition f it.toIterM - Std.Iterators.Iter.filterM_eq_toIter_filterM_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 (ULift.{w, 0} Bool)} : Std.Iterators.Iter.filterM f it = Std.Iterators.IterM.filterM f it.toIterM - 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.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_filterWithPostcondition 📋 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 (ULift.{w, 0} Bool)} [Monad n] [LawfulMonad n] [MonadLiftT m n] : (Std.Iterators.Iter.filterWithPostcondition f it).step = match it.step with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← (f out).operation match __do_lift with | ⟨{ down := false }, h'⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.filterWithPostcondition f it') ⋯)) | ⟨{ down := true }, h'⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.filterWithPostcondition f it') out ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.filterWithPostcondition f it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.Iter.step_filterM 📋 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 : β → n (ULift.{w, 0} Bool)} [Monad n] [LawfulMonad n] [MonadLiftT m n] : (Std.Iterators.Iter.filterM f it).step = match it.step with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← f out match __do_lift with | { down := false } => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.filterM f it') ⋯)) | { down := true } => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.filterM f it') out ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.filterM f it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.Iter.uLift_eq_toIter_uLift_toIterM 📋 Init.Data.Iterators.Lemmas.Combinators.ULift
{α β : Type u} {it : Std.Iter β} : it.uLift = (it.toIterM.uLift Id).toIter - Std.Iterators.Iter.toListRev_uLift 📋 Init.Data.Iterators.Lemmas.Combinators.ULift
{α β : Type u} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} [Std.Iterators.Finite α Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] : it.uLift.toListRev = List.map ULift.up it.toListRev - Std.Iterators.Iter.toArray_uLift 📋 Init.Data.Iterators.Lemmas.Combinators.ULift
{α β : Type u} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} [Std.Iterators.Finite α Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] : it.uLift.toArray = Array.map ULift.up it.toArray - Std.Iterators.Iter.toList_uLift 📋 Init.Data.Iterators.Lemmas.Combinators.ULift
{α β : Type u} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} [Std.Iterators.Finite α Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] : it.uLift.toList = List.map ULift.up it.toList - Std.Iterators.Iter.step_uLift 📋 Init.Data.Iterators.Lemmas.Combinators.ULift
{α β : Type u} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} : it.uLift.step = ⟨Std.Iterators.Types.ULiftIterator.modifyStep ↑it.step, ⋯⟩ - Std.Iterators.TakeWhile 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
(α : Type w) (m : Type w → Type w') (β : Type w) (P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)) : Type w - Std.Iterators.TakeWhile.inner 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} (self : Std.Iterators.TakeWhile α m β P) : Std.IterM m β - Std.Iterators.TakeWhile.mk 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} (inner : Std.IterM m β) : Std.Iterators.TakeWhile α m β P - Std.Iterators.IterM.takeWhileWithPostcondition 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} (P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)) (it : Std.IterM m β) : Std.IterM m β - Std.Iterators.TakeWhile.instIterator 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.Iterator (Std.Iterators.TakeWhile α m β P) m β - Std.Iterators.TakeWhile.PlausibleStep 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} (it : Std.IterM m β) (step : Std.Iterators.IterStep (Std.IterM m β) β) : Prop - Std.Iterators.TakeWhile.instFinite 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.Finite (Std.Iterators.TakeWhile α m β P) m - Std.Iterators.TakeWhile.instIteratorCollectPartial 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {n : Type w → Type u_1} [Monad m] [Monad n] [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.IteratorCollectPartial (Std.Iterators.TakeWhile α m β P) m n - Std.Iterators.TakeWhile.instProductive 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Productive α m] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.Productive (Std.Iterators.TakeWhile α m β P) m - Std.Iterators.instIteratorSizePartialTakeWhileOfIteratorLoopPartial 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{m : Type w → Type w'} {β α : Type w} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoopPartial α m m] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.IteratorSizePartial (Std.Iterators.TakeWhile α m β P) m - Std.Iterators.IterM.takeWhileM 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] (P : β → m (ULift.{w, 0} Bool)) (it : Std.IterM m β) : Std.IterM m β - Std.Iterators.TakeWhile.instIteratorCollect 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {n : Type w → Type u_1} [Monad m] [Monad n] [Std.Iterators.Iterator α m β] [Std.Iterators.Productive α m] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.IteratorCollect (Std.Iterators.TakeWhile α m β P) m n - Std.Iterators.instIteratorSizeTakeWhileOfFiniteOfIteratorLoop 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{m : Type w → Type w'} {β α : Type w} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorLoop α m m] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.IteratorSize (Std.Iterators.TakeWhile α m β P) m - Std.Iterators.TakeWhile.instIteratorForPartial 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {n : Type u_1 → Type u_2} [Monad m] [Monad n] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoopPartial α m n] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.IteratorLoopPartial (Std.Iterators.TakeWhile α m β P) m n - Std.Iterators.TakeWhile.instIteratorLoop 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {n : Type u_1 → Type u_2} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} [Monad m] [Monad n] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoop α m n] : Std.Iterators.IteratorLoop (Std.Iterators.TakeWhile α m β P) m n - Std.Iterators.TakeWhile.mk.injEq 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} (inner inner✝ : Std.IterM m β) : ({ inner := inner } = { inner := inner✝ }) = (inner = inner✝) - Std.Iterators.IterM.takeWhile 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] (P : β → Bool) (it : Std.IterM m β) : Std.IterM m β - Std.Iterators.TakeWhile.PlausibleStep.done 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} {it : Std.IterM m β} : it.internalState.inner.IsPlausibleStep Std.Iterators.IterStep.done → Std.Iterators.TakeWhile.PlausibleStep it Std.Iterators.IterStep.done - Std.Iterators.TakeWhile.mk.sizeOf_spec 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} [SizeOf α] [(a : Type w) → SizeOf (m a)] [SizeOf β] (inner : Std.IterM m β) : sizeOf { inner := inner } = 1 + sizeOf inner - Std.Iterators.TakeWhile.PlausibleStep.skip 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} {it : Std.IterM m β} {it' : Std.IterM m β} : it.internalState.inner.IsPlausibleStep (Std.Iterators.IterStep.skip it') → Std.Iterators.TakeWhile.PlausibleStep it (Std.Iterators.IterStep.skip (Std.Iterators.IterM.takeWhileWithPostcondition P it')) - Std.Iterators.TakeWhile.PlausibleStep.rejected 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} {it : Std.IterM m β} {it' : Std.IterM m β} {out : β} : it.internalState.inner.IsPlausibleStep (Std.Iterators.IterStep.yield it' out) → (P out).Property { down := false } → Std.Iterators.TakeWhile.PlausibleStep it Std.Iterators.IterStep.done - Std.Iterators.TakeWhile.PlausibleStep.yield 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} {it : Std.IterM m β} {it' : Std.IterM m β} {out : β} : it.internalState.inner.IsPlausibleStep (Std.Iterators.IterStep.yield it' out) → (P out).Property { down := true } → Std.Iterators.TakeWhile.PlausibleStep it (Std.Iterators.IterStep.yield (Std.Iterators.IterM.takeWhileWithPostcondition P it') out) - Std.Iterators.DropWhile 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
(α : Type w) (m : Type w → Type w') (β : Type w) (P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)) : Type w - Std.Iterators.DropWhile.dropping 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} (self : Std.Iterators.DropWhile α m β P) : Bool - Std.Iterators.DropWhile.inner 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} (self : Std.Iterators.DropWhile α m β P) : Std.IterM m β - Std.Iterators.DropWhile.mk 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} (dropping : Bool) (inner : Std.IterM m β) : Std.Iterators.DropWhile α m β P - Std.Iterators.IterM.dropWhileWithPostcondition 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} (P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)) (it : Std.IterM m β) : Std.IterM m β - Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} (P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)) (dropping : Bool) (it : Std.IterM m β) : Std.IterM m β - Std.Iterators.DropWhile.instIterator 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.Iterator (Std.Iterators.DropWhile α m β P) m β - Std.Iterators.DropWhile.PlausibleStep 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} (it : Std.IterM m β) (step : Std.Iterators.IterStep (Std.IterM m β) β) : Prop - Std.Iterators.DropWhile.instFinite 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.Finite (Std.Iterators.DropWhile α m β P) m - Std.Iterators.DropWhile.instIteratorCollectPartial 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {n : Type w → Type u_1} [Monad m] [Monad n] [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.IteratorCollectPartial (Std.Iterators.DropWhile α m β P) m n - Std.Iterators.DropWhile.instIteratorLoop 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {n : Type u_1 → Type u_2} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} [Monad m] [Monad n] [Std.Iterators.Iterator α m β] : Std.Iterators.IteratorLoop (Std.Iterators.DropWhile α m β P) m n - Std.Iterators.instIteratorSizePartialDropWhileOfIteratorLoopPartial 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{m : Type w → Type w'} {β α : Type w} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoopPartial α m m] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.IteratorSizePartial (Std.Iterators.DropWhile α m β P) m - Std.Iterators.DropWhile.instIteratorCollect 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {n : Type w → Type u_1} [Monad m] [Monad n] [Std.Iterators.Iterator α m β] [Std.Iterators.Productive α m] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.IteratorCollect (Std.Iterators.DropWhile α m β P) m n - Std.Iterators.IterM.dropWhileM 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] (P : β → m (ULift.{w, 0} Bool)) (it : Std.IterM m β) : Std.IterM m β - Std.Iterators.instIteratorSizeDropWhileOfFiniteOfIteratorLoop 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{m : Type w → Type w'} {β α : Type w} [Monad m] [Std.Iterators.Iterator α m β] [Std.Iterators.Finite α m] [Std.Iterators.IteratorLoop α m m] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.IteratorSize (Std.Iterators.DropWhile α m β P) m - Std.Iterators.IterM.Intermediate.dropWhileM 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] (P : β → m (ULift.{w, 0} Bool)) (dropping : Bool) (it : Std.IterM m β) : Std.IterM m β - Std.Iterators.DropWhile.instIteratorForPartial 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {n : Type w → Type u_1} [Monad m] [Monad n] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoopPartial α m n] [MonadLiftT m n] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} : Std.Iterators.IteratorLoopPartial (Std.Iterators.DropWhile α m β P) m n - Std.Iterators.DropWhile.mk.injEq 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} (dropping : Bool) (inner : Std.IterM m β) (dropping✝ : Bool) (inner✝ : Std.IterM m β) : ({ dropping := dropping, inner := inner } = { dropping := dropping✝, inner := inner✝ }) = (dropping = dropping✝ ∧ inner = inner✝) - Std.Iterators.IterM.dropWhile 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] (P : β → Bool) (it : Std.IterM m β) : Std.IterM m β - Std.Iterators.IterM.Intermediate.dropWhile 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] (P : β → Bool) (dropping : Bool) (it : Std.IterM m β) : Std.IterM m β - Std.Iterators.DropWhile.PlausibleStep.done 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} {it : Std.IterM m β} : it.internalState.inner.IsPlausibleStep Std.Iterators.IterStep.done → Std.Iterators.DropWhile.PlausibleStep it Std.Iterators.IterStep.done - Std.Iterators.DropWhile.mk.sizeOf_spec 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} [SizeOf α] [(a : Type w) → SizeOf (m a)] [SizeOf β] (dropping : Bool) (inner : Std.IterM m β) : sizeOf { dropping := dropping, inner := inner } = 1 + sizeOf dropping + sizeOf inner - Std.Iterators.DropWhile.PlausibleStep.skip 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} {it : Std.IterM m β} {it' : Std.IterM m β} : it.internalState.inner.IsPlausibleStep (Std.Iterators.IterStep.skip it') → Std.Iterators.DropWhile.PlausibleStep it (Std.Iterators.IterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P it.internalState.dropping it')) - Std.Iterators.DropWhile.PlausibleStep.yield 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} {it : Std.IterM m β} {it' : Std.IterM m β} {out : β} : it.internalState.inner.IsPlausibleStep (Std.Iterators.IterStep.yield it' out) → it.internalState.dropping = false → Std.Iterators.DropWhile.PlausibleStep it (Std.Iterators.IterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P false it') out) - Std.Iterators.DropWhile.PlausibleStep.dropped 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} {it : Std.IterM m β} {it' : Std.IterM m β} {out : β} : it.internalState.inner.IsPlausibleStep (Std.Iterators.IterStep.yield it' out) → it.internalState.dropping = true → (P out).Property { down := true } → Std.Iterators.DropWhile.PlausibleStep it (Std.Iterators.IterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P true it')) - Std.Iterators.DropWhile.PlausibleStep.start 📋 Std.Data.Iterators.Combinators.Monadic.DropWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Std.Iterators.Iterator α m β] {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} {it : Std.IterM m β} {it' : Std.IterM m β} {out : β} : it.internalState.inner.IsPlausibleStep (Std.Iterators.IterStep.yield it' out) → it.internalState.dropping = true → (P out).Property { down := false } → Std.Iterators.DropWhile.PlausibleStep it (Std.Iterators.IterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P false it') out) - Std.Iterators.Iter.takeWhile 📋 Std.Data.Iterators.Combinators.TakeWhile
{α β : Type w} (P : β → Bool) (it : Std.Iter β) : Std.Iter β - Std.Iterators.Iter.dropWhile 📋 Std.Data.Iterators.Combinators.DropWhile
{α β : Type w} (P : β → Bool) (it : Std.Iter β) : Std.Iter β - Std.Iterators.Iter.Intermediate.dropWhile 📋 Std.Data.Iterators.Combinators.DropWhile
{β α : Type u_1} (P : β → Bool) (dropping : Bool) (it : Std.Iter β) : Std.Iter β - Std.Iterators.IterM.takeWhileWithPostcondition.eq_1 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} (P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)) (it : Std.IterM m β) : Std.Iterators.IterM.takeWhileWithPostcondition P it = Std.Iterators.toIterM { inner := it } m β - Std.Iterators.IterM.takeWhileM.eq_1 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] (P : β → m (ULift.{w, 0} Bool)) (it : Std.IterM m β) : Std.Iterators.IterM.takeWhileM P it = Std.Iterators.IterM.takeWhileWithPostcondition (Std.Iterators.PostconditionT.lift ∘ P) it - Std.Iterators.IterM.takeWhile.eq_1 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {β : Type w} [Monad m] (P : β → Bool) (it : Std.IterM m β) : Std.Iterators.IterM.takeWhile P it = Std.Iterators.IterM.takeWhileM (pure ∘ ULift.up ∘ P) it - Std.Iterators.IterM.step_takeWhileWithPostcondition 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.TakeWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → Std.Iterators.PostconditionT m (ULift.{u_1, 0} Bool)} : (Std.Iterators.IterM.takeWhileWithPostcondition P it).step = do let __do_lift ← it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← (P out).operation match __do_lift with | ⟨{ down := true }, h'⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.takeWhileWithPostcondition P it') out ⋯)) | ⟨{ down := false }, h'⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.takeWhileWithPostcondition P it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_takeWhileM 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.TakeWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → m (ULift.{u_1, 0} Bool)} : (Std.Iterators.IterM.takeWhileM P it).step = do let __do_lift ← it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← P out match __do_lift with | { down := true } => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.takeWhileM P it') out ⋯)) | { down := false } => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.takeWhileM P it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_takeWhile 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.TakeWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → Bool} : (Std.Iterators.IterM.takeWhile P it).step = do let __do_lift ← it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => match P out with | true => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.takeWhile P it') out ⋯)) | false => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.takeWhile P it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.dropWhileWithPostcondition_eq_intermediateDropWhileWithPostcondition 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.DropWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → Std.Iterators.PostconditionT m (ULift.{u_1, 0} Bool)} : Std.Iterators.IterM.dropWhileWithPostcondition P it = Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P true it - Std.Iterators.IterM.dropWhileM_eq_intermediateDropWhileM 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.DropWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → m (ULift.{u_1, 0} Bool)} : Std.Iterators.IterM.dropWhileM P it = Std.Iterators.IterM.Intermediate.dropWhileM P true it - Std.Iterators.IterM.Intermediate.dropWhileM_eq_dropWhileWithPostcondition 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.DropWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → m (ULift.{u_1, 0} Bool)} {dropping : Bool} : Std.Iterators.IterM.Intermediate.dropWhileM P dropping it = Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition (Std.Iterators.PostconditionT.lift ∘ P) dropping it - Std.Iterators.IterM.dropWhile_eq_intermediateDropWhile 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.DropWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → Bool} : Std.Iterators.IterM.dropWhile P it = Std.Iterators.IterM.Intermediate.dropWhile P true it - Std.Iterators.IterM.Intermediate.dropWhile_eq_dropWhileM 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.DropWhile
{dropping : Bool} {α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → Bool} : Std.Iterators.IterM.Intermediate.dropWhile P dropping it = Std.Iterators.IterM.Intermediate.dropWhileM (pure ∘ ULift.up ∘ P) dropping it - Std.Iterators.IterM.step_dropWhileWithPostcondition 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.DropWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → Std.Iterators.PostconditionT m (ULift.{u_1, 0} Bool)} : (Std.Iterators.IterM.dropWhileWithPostcondition P it).step = do let __do_lift ← it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← (P out).operation match __do_lift with | ⟨{ down := true }, h''⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P true it') ⋯)) | ⟨{ down := false }, h''⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P false it') out ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P true it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_intermediateDropWhileWithPostcondition 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.DropWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → Std.Iterators.PostconditionT m (ULift.{u_1, 0} Bool)} {dropping : Bool} : (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P dropping it).step = do let __do_lift ← it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => if h' : dropping = true then do let __do_lift ← (P out).operation match __do_lift with | ⟨{ down := true }, h''⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P true it') ⋯)) | ⟨{ down := false }, h''⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P false it') out ⋯)) else pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P false it') out ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P dropping it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_dropWhileM 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.DropWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → m (ULift.{u_1, 0} Bool)} : (Std.Iterators.IterM.dropWhileM P it).step = do let __do_lift ← it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← P out match __do_lift with | { down := true } => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileM P true it') ⋯)) | { down := false } => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileM P false it') out ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileM P true it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_intermediateDropWhileM 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.DropWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → m (ULift.{u_1, 0} Bool)} {dropping : Bool} : (Std.Iterators.IterM.Intermediate.dropWhileM P dropping it).step = do let __do_lift ← it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => if h' : dropping = true then do let __do_lift ← P out match __do_lift with | { down := true } => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileM P true it') ⋯)) | { down := false } => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileM P false it') out ⋯)) else pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileM P false it') out ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileM P dropping it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_dropWhile 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.DropWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → Bool} : (Std.Iterators.IterM.dropWhile P it).step = do let __do_lift ← it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => match P out with | true => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhile P true it') ⋯)) | false => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhile P false it') out ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhile P true it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.step_intermediateDropWhile 📋 Std.Data.Iterators.Lemmas.Combinators.Monadic.DropWhile
{α : Type u_1} {m : Type u_1 → Type u_2} {β : Type u_1} [Monad m] [LawfulMonad m] [Std.Iterators.Iterator α m β] {it : Std.IterM m β} {P : β → Bool} {dropping : Bool} : (Std.Iterators.IterM.Intermediate.dropWhile P dropping it).step = do let __do_lift ← it.step match __do_lift.inflate with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => if h' : dropping = true then match P out with | true => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhile P true it') ⋯)) | false => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhile P false it') out ⋯)) else pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhile P false it') out ⋯)) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhile P dropping it') ⋯)) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (Std.Shrink.deflate (Std.Iterators.PlausibleIterStep.done ⋯)) - Std.Iterators.IterM.Equiv.filterWithPostcondition 📋 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 (ULift.{w, 0} Bool)} {ita : Std.IterM m β} {itb : Std.IterM m β} (h : ita.Equiv itb) : (Std.Iterators.IterM.filterWithPostcondition f ita).Equiv (Std.Iterators.IterM.filterWithPostcondition f itb) - Std.Iterators.IterM.Equiv.filterM 📋 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 (ULift.{w, 0} Bool)} {ita : Std.IterM m β} {itb : Std.IterM m β} (h : ita.Equiv itb) : (Std.Iterators.IterM.filterM f ita).Equiv (Std.Iterators.IterM.filterM f itb) - Std.Iterators.Iter.takeWhile_eq 📋 Std.Data.Iterators.Lemmas.Combinators.TakeWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {P : β → Bool} {it : Std.Iter β} : Std.Iterators.Iter.takeWhile P it = (Std.Iterators.IterM.takeWhile P it.toIterM).toIter - Std.Iterators.Iter.toListRev_takeWhile_of_finite 📋 Std.Data.Iterators.Lemmas.Combinators.TakeWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {P : β → Bool} [Std.Iterators.Finite α Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] {it : Std.Iter β} : (Std.Iterators.Iter.takeWhile P it).toListRev = (List.takeWhile P it.toList).reverse - Std.Iterators.Iter.atIdxSlow?_takeWhile 📋 Std.Data.Iterators.Lemmas.Combinators.TakeWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] [Std.Iterators.Productive α Id] {l : ℕ} {it : Std.Iter β} {P : β → Bool} : Std.Iterators.Iter.atIdxSlow? l (Std.Iterators.Iter.takeWhile P it) = if ∀ k ≤ l, Option.any P (Std.Iterators.Iter.atIdxSlow? k it) = true then Std.Iterators.Iter.atIdxSlow? l it else none - Std.Iterators.Iter.toArray_takeWhile_of_finite 📋 Std.Data.Iterators.Lemmas.Combinators.TakeWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {P : β → Bool} [Std.Iterators.Finite α Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] {it : Std.Iter β} : (Std.Iterators.Iter.takeWhile P it).toArray = Array.takeWhile P it.toArray - Std.Iterators.Iter.toList_takeWhile_of_finite 📋 Std.Data.Iterators.Lemmas.Combinators.TakeWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {P : β → Bool} [Std.Iterators.Finite α Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] {it : Std.Iter β} : (Std.Iterators.Iter.takeWhile P it).toList = List.takeWhile P it.toList - Std.Iterators.Iter.step_takeWhile 📋 Std.Data.Iterators.Lemmas.Combinators.TakeWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {P : β → Bool} {it : Std.Iter β} : (Std.Iterators.Iter.takeWhile P it).step = match it.step with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => match P out with | true => Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.takeWhile P it') out ⋯ | false => Std.Iterators.PlausibleIterStep.done ⋯ | ⟨Std.Iterators.IterStep.skip it', h⟩ => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.takeWhile P it') ⋯ | ⟨Std.Iterators.IterStep.done, h⟩ => Std.Iterators.PlausibleIterStep.done ⋯ - Std.Iterators.Iter.dropWhile_eq_intermediateDropWhile 📋 Std.Data.Iterators.Lemmas.Combinators.DropWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {P : β → Bool} {it : Std.Iter β} : Std.Iterators.Iter.dropWhile P it = Std.Iterators.Iter.Intermediate.dropWhile P true it - Std.Iterators.Iter.dropWhile_eq_dropWhile_toIterM 📋 Std.Data.Iterators.Lemmas.Combinators.DropWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {P : β → Bool} {it : Std.Iter β} : Std.Iterators.Iter.dropWhile P it = (Std.Iterators.IterM.dropWhile P it.toIterM).toIter - Std.Iterators.Iter.Intermediate.dropWhile_eq_dropWhile_toIterM 📋 Std.Data.Iterators.Lemmas.Combinators.DropWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {P : β → Bool} {it : Std.Iter β} {dropping : Bool} : Std.Iterators.Iter.Intermediate.dropWhile P dropping it = (Std.Iterators.IterM.Intermediate.dropWhile P dropping it.toIterM).toIter - Std.Iterators.Iter.toListRev_dropWhile_of_finite 📋 Std.Data.Iterators.Lemmas.Combinators.DropWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {P : β → Bool} [Std.Iterators.Finite α Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] {it : Std.Iter β} : (Std.Iterators.Iter.dropWhile P it).toListRev = (List.dropWhile P it.toList).reverse
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 187ba29 serving mathlib revision c55dac5