Loogle!
Result
Found 868 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} α - 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} α) - 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} α) - 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.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.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.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 (max u v) → Type u_1} [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 (max u v) → Type u_1} [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.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.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.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 with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← (f out).operation match __do_lift with | ⟨{ down := false }, h'⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.filterWithPostcondition f it') ⋯) | ⟨{ down := true }, h'⟩ => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.filterWithPostcondition f it') out ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.filterWithPostcondition f it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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 with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← f out match __do_lift with | { down := false } => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.filterM f it') ⋯) | { down := true } => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.filterM f it') out ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.filterM f it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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 : it.Step := __do_lift.down pure ⟨Std.Iterators.Types.ULiftIterator.Monadic.modifyStep ↑step, ⋯⟩ - 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.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.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.filterWithPostcondition f it') ⋯) | ⟨{ down := true }, h'⟩ => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.filterWithPostcondition f it') out ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.filterWithPostcondition f it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.filterM f it') ⋯) | { down := true } => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.filterM f it') out ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.filterM f it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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.Slice.Array.internalIter_eq 📋 Init.Data.Slice.Array.Lemmas
{α : Type u} {s : Subarray α} : Std.Slice.Internal.iter s = Std.Iterators.Iter.map (fun x => match x with | { down := i } => s.array[↑i]) ((Std.PRange.Internal.iter { lower := s.start, upper := s.stop }).attachWith (fun x => x < s.array.size) ⋯).uLift - Std.Slice.Array.toList_internalIter 📋 Init.Data.Slice.Array.Lemmas
{α : Type u} {s : Subarray α} : (Std.Slice.Internal.iter s).toList = List.map (fun i => s.array[↑i]) ({ lower := s.start, upper := s.stop }.toList.attachWith (fun x => x < s.array.size) ⋯) - 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'} {n : Type w → Type w''} {β : Type w} [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'} {n : Type w → Type w''} {β : Type w} [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'} {n : Type w → Type w''} {β : Type w} [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.TakeWhile α m β P) m n - Std.Iterators.TakeWhile.instIteratorLoop 📋 Std.Data.Iterators.Combinators.Monadic.TakeWhile
{α : Type w} {m : Type w → Type w'} {n : Type w → Type w''} {β : Type w} {P : β → Std.Iterators.PostconditionT m (ULift.{w, 0} Bool)} [Monad m] [Monad n] [Std.Iterators.Iterator α m β] [Std.Iterators.IteratorLoop α m n] [MonadLiftT 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 w → Type u_1} {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 with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← (P out).operation match __do_lift with | ⟨{ down := true }, h'⟩ => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.takeWhileWithPostcondition P it') out ⋯) | ⟨{ down := false }, h'⟩ => pure (Std.Iterators.PlausibleIterStep.done ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.takeWhileWithPostcondition P it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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 with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← P out match __do_lift with | { down := true } => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.takeWhileM P it') out ⋯) | { down := false } => pure (Std.Iterators.PlausibleIterStep.done ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.takeWhileM P it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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 with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => match P out with | true => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.takeWhile P it') out ⋯) | false => pure (Std.Iterators.PlausibleIterStep.done ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.takeWhile P it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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 with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← (P out).operation match __do_lift with | ⟨{ down := true }, h''⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P true it') ⋯) | ⟨{ down := false }, h''⟩ => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P false it') out ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P true it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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 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.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P true it') ⋯) | ⟨{ down := false }, h''⟩ => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P false it') out ⋯) else pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P false it') out ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileWithPostcondition P dropping it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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 with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => do let __do_lift ← P out match __do_lift with | { down := true } => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileM P true it') ⋯) | { down := false } => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileM P false it') out ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileM P true it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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 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.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileM P true it') ⋯) | { down := false } => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileM P false it') out ⋯) else pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhileM P false it') out ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhileM P dropping it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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 with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => match P out with | true => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhile P true it') ⋯) | false => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhile P false it') out ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhile P true it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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 with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => if h' : dropping = true then match P out with | true => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhile P true it') ⋯) | false => pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhile P false it') out ⋯) else pure (Std.Iterators.PlausibleIterStep.yield (Std.Iterators.IterM.Intermediate.dropWhile P false it') out ⋯) | ⟨Std.Iterators.IterStep.skip it', h⟩ => pure (Std.Iterators.PlausibleIterStep.skip (Std.Iterators.IterM.Intermediate.dropWhile P dropping it') ⋯) | ⟨Std.Iterators.IterStep.done, h⟩ => pure (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 - Std.Iterators.Iter.toList_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).toList = List.dropWhile P it.toList - Std.Iterators.Iter.toArray_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).toArray = (List.dropWhile P it.toList).toArray - Std.Iterators.Iter.toList_intermediateDropWhile_of_finite 📋 Std.Data.Iterators.Lemmas.Combinators.DropWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {P : β → Bool} {dropping : Bool} [Std.Iterators.Finite α Id] [Std.Iterators.IteratorCollect α Id Id] [Std.Iterators.LawfulIteratorCollect α Id Id] {it : Std.Iter β} : (Std.Iterators.Iter.Intermediate.dropWhile P dropping it).toList = if dropping = true then List.dropWhile P it.toList else it.toList - Std.Iterators.Iter.step_dropWhile 📋 Std.Data.Iterators.Lemmas.Combinators.DropWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {P : β → Bool} {it : Std.Iter β} : (Std.Iterators.Iter.dropWhile P it).step = match it.step with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => match P out with | true => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.Intermediate.dropWhile P true it') ⋯ | false => Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.Intermediate.dropWhile P false it') out ⋯ | ⟨Std.Iterators.IterStep.skip it', h⟩ => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.Intermediate.dropWhile P true it') ⋯ | ⟨Std.Iterators.IterStep.done, h⟩ => Std.Iterators.PlausibleIterStep.done ⋯ - Std.Iterators.Iter.step_intermediateDropWhile 📋 Std.Data.Iterators.Lemmas.Combinators.DropWhile
{α β : Type u_1} [Std.Iterators.Iterator α Id β] {it : Std.Iter β} {P : β → Bool} {dropping : Bool} : (Std.Iterators.Iter.Intermediate.dropWhile P dropping it).step = match it.step with | ⟨Std.Iterators.IterStep.yield it' out, h⟩ => if h' : dropping = true then match P out with | true => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.Intermediate.dropWhile P true it') ⋯ | false => Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.Intermediate.dropWhile P false it') out ⋯ else Std.Iterators.PlausibleIterStep.yield (Std.Iterators.Iter.Intermediate.dropWhile P false it') out ⋯ | ⟨Std.Iterators.IterStep.skip it', h⟩ => Std.Iterators.PlausibleIterStep.skip (Std.Iterators.Iter.Intermediate.dropWhile P dropping it') ⋯ | ⟨Std.Iterators.IterStep.done, h⟩ => Std.Iterators.PlausibleIterStep.done ⋯ - MLList.isEmpty 📋 Batteries.Data.MLList.Basic
{m : Type u_1 → Type u_1} {α : Type u_1} [Monad m] (xs : MLList m α) : m (ULift.{u_1, 0} Bool) - MLList.filterM 📋 Batteries.Data.MLList.Basic
{m : Type u_1 → Type u_1} {α : Type u_1} [Monad m] (p : α → m (ULift.{u_1, 0} Bool)) (L : MLList m α) : MLList m α - MLList.takeUpToFirstM 📋 Batteries.Data.MLList.Basic
{m : Type u_1 → Type u_1} {α : Type u_1} [Monad m] (L : MLList m α) (f : α → m (ULift.{u_1, 0} Bool)) : MLList m α - MLList.takeWhileM 📋 Batteries.Data.MLList.Basic
{m : Type u_1 → Type u_1} {α : Type u_1} [Monad m] (f : α → m (ULift.{u_1, 0} Bool)) (L : MLList m α) : MLList m α - Nondet.filterM 📋 Batteries.Control.Nondet.Basic
{σ : Type} {m : Type → Type} [Monad m] [Lean.MonadBacktrack σ m] {α : Type} (p : α → m (ULift.{0, 0} Bool)) (L : Nondet m α) : Nondet m α - nonempty_ulift 📋 Mathlib.Logic.Nonempty
{α : Type u_1} : Nonempty (ULift.{u_4, u_1} α) ↔ Nonempty α - isEmpty_ulift 📋 Mathlib.Logic.IsEmpty
{α : Type u_4} : IsEmpty (ULift.{u_5, u_4} α) ↔ IsEmpty α - Equiv.ulift 📋 Mathlib.Logic.Equiv.Defs
{α : Type v} : ULift.{u, v} α ≃ α - Equiv.sigmaULiftPLiftEquivSubtype 📋 Mathlib.Logic.Equiv.Defs
{α : Type v} (P : α → Prop) : (i : α) × ULift.{u_1, 0} (PLift (P i)) ≃ Subtype P - Equiv.ulift_apply 📋 Mathlib.Logic.Equiv.Defs
{α : Type v} : ⇑Equiv.ulift = ULift.down - Aesop.filterDiscrTreeM 📋 Aesop.Util.Basic
{m : Type u_1 → Type u_2} {σ : Type u_1} {α : Type} [Monad m] [Inhabited σ] (p : α → m (ULift.{u_1, 0} Bool)) (f : σ → α → m σ) (init : σ) (t : Lean.Meta.DiscrTree α) : m (Lean.Meta.DiscrTree α × σ) - Mathlib.instToExprULiftOfToLevel_mathlib 📋 Mathlib.Tactic.ToExpr
{α✝ : Type s} [Lean.ToExpr α✝] [Lean.ToLevel] [Lean.ToLevel] : Lean.ToExpr (ULift.{r, s} α✝) - ULift.down_injective 📋 Mathlib.Logic.Function.ULift
{α : Type u_1} : Function.Injective ULift.down - ULift.down_inj 📋 Mathlib.Logic.Function.ULift
{α : Type u_1} {a b : ULift.{u_2, u_1} α} : a.down = b.down ↔ a = b - ULift.instBEq_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [BEq α] : BEq (ULift.{v, u} α) - ULift.instHasCompl 📋 Mathlib.Order.ULift
{α : Type u} [HasCompl α] : HasCompl (ULift.{v, u} α) - ULift.instLE_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [LE α] : LE (ULift.{v, u} α) - ULift.instLT_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [LT α] : LT (ULift.{v, u} α) - ULift.instMax_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [Max α] : Max (ULift.{v, u} α) - ULift.instMin_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [Min α] : Min (ULift.{v, u} α) - ULift.instOrd_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [Ord α] : Ord (ULift.{v, u} α) - ULift.instPartialOrder 📋 Mathlib.Order.ULift
{α : Type u} [PartialOrder α] : PartialOrder (ULift.{v, u} α) - ULift.instPreorder 📋 Mathlib.Order.ULift
{α : Type u} [Preorder α] : Preorder (ULift.{v, u} α) - ULift.instSDiff_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [SDiff α] : SDiff (ULift.{v, u} α) - ULift.instOrientedOrd_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [Ord α] [inst : Batteries.OrientedOrd α] : Batteries.OrientedOrd (ULift.{v, u} α) - ULift.instTransOrd_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [Ord α] [inst : Batteries.TransOrd α] : Batteries.TransOrd (ULift.{v, u} α) - ULift.instBEqOrd_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [BEq α] [Ord α] [inst : Batteries.BEqOrd α] : Batteries.BEqOrd (ULift.{v, u} α) - ULift.instLEOrd_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [LE α] [Ord α] [inst : Batteries.LEOrd α] : Batteries.LEOrd (ULift.{v, u} α) - ULift.instLTOrd_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [LT α] [Ord α] [inst : Batteries.LTOrd α] : Batteries.LTOrd (ULift.{v, u} α) - ULift.down_compl 📋 Mathlib.Order.ULift
{α : Type u} [HasCompl α] (a : ULift.{u_1, u} α) : aᶜ.down = a.downᶜ - ULift.up_compl 📋 Mathlib.Order.ULift
{α : Type u} [HasCompl α] (a : α) : { down := aᶜ } = { down := a }ᶜ - ULift.up_le 📋 Mathlib.Order.ULift
{α : Type u} [LE α] {a b : α} : { down := a } ≤ { down := b } ↔ a ≤ b - ULift.up_lt 📋 Mathlib.Order.ULift
{α : Type u} [LT α] {a b : α} : { down := a } < { down := b } ↔ a < b - ULift.up_beq 📋 Mathlib.Order.ULift
{α : Type u} [BEq α] (a b : α) : ({ down := a } == { down := b }) = (a == b) - ULift.up_compare 📋 Mathlib.Order.ULift
{α : Type u} [Ord α] (a b : α) : compare { down := a } { down := b } = compare a b - ULift.down_le 📋 Mathlib.Order.ULift
{α : Type u} [LE α] {a b : ULift.{u_1, u} α} : a.down ≤ b.down ↔ a ≤ b - ULift.down_lt 📋 Mathlib.Order.ULift
{α : Type u} [LT α] {a b : ULift.{u_1, u} α} : a.down < b.down ↔ a < b - ULift.down_beq 📋 Mathlib.Order.ULift
{α : Type u} [BEq α] (a b : ULift.{u_1, u} α) : (a.down == b.down) = (a == b) - ULift.down_compare 📋 Mathlib.Order.ULift
{α : Type u} [Ord α] (a b : ULift.{u_1, u} α) : compare a.down b.down = compare a b - ULift.up_inf 📋 Mathlib.Order.ULift
{α : Type u} [Min α] (a b : α) : { down := a ⊓ b } = { down := a } ⊓ { down := b } - ULift.up_sdiff 📋 Mathlib.Order.ULift
{α : Type u} [SDiff α] (a b : α) : { down := a \ b } = { down := a } \ { down := b } - ULift.up_sup 📋 Mathlib.Order.ULift
{α : Type u} [Max α] (a b : α) : { down := a ⊔ b } = { down := a } ⊔ { down := b } - ULift.down_inf 📋 Mathlib.Order.ULift
{α : Type u} [Min α] (a b : ULift.{u_1, u} α) : (a ⊓ b).down = a.down ⊓ b.down - ULift.down_sdiff 📋 Mathlib.Order.ULift
{α : Type u} [SDiff α] (a b : ULift.{u_1, u} α) : (a \ b).down = a.down \ b.down - ULift.down_sup 📋 Mathlib.Order.ULift
{α : Type u} [Max α] (a b : ULift.{u_1, u} α) : (a ⊔ b).down = a.down ⊔ b.down - ULift.instLawfulOrd_mathlib 📋 Mathlib.Order.ULift
{α : Type u} [LE α] [LT α] [BEq α] [Ord α] [inst : Batteries.LawfulOrd α] : Batteries.LawfulOrd (ULift.{v, u} α) - ULift.instBot 📋 Mathlib.Order.BoundedOrder.Basic
{α : Type u} [Bot α] : Bot (ULift.{v, u} α) - ULift.instTop 📋 Mathlib.Order.BoundedOrder.Basic
{α : Type u} [Top α] : Top (ULift.{v, u} α) - ULift.instBoundedOrder 📋 Mathlib.Order.BoundedOrder.Basic
{α : Type u} [LE α] [BoundedOrder α] : BoundedOrder (ULift.{v, u} α) - ULift.instOrderBot 📋 Mathlib.Order.BoundedOrder.Basic
{α : Type u} [LE α] [OrderBot α] : OrderBot (ULift.{v, u} α) - ULift.instOrderTop 📋 Mathlib.Order.BoundedOrder.Basic
{α : Type u} [LE α] [OrderTop α] : OrderTop (ULift.{v, u} α) - ULift.down_bot 📋 Mathlib.Order.BoundedOrder.Basic
{α : Type u} [Bot α] : ⊥.down = ⊥ - ULift.down_top 📋 Mathlib.Order.BoundedOrder.Basic
{α : Type u} [Top α] : ⊤.down = ⊤ - ULift.up_bot 📋 Mathlib.Order.BoundedOrder.Basic
{α : Type u} [Bot α] : { down := ⊥ } = ⊥ - ULift.up_top 📋 Mathlib.Order.BoundedOrder.Basic
{α : Type u} [Top α] : { down := ⊤ } = ⊤ - ULift.instDistribLattice 📋 Mathlib.Order.Lattice
{α : Type u} [DistribLattice α] : DistribLattice (ULift.{v, u} α) - ULift.instLattice 📋 Mathlib.Order.Lattice
{α : Type u} [Lattice α] : Lattice (ULift.{v, u} α) - ULift.instLinearOrder 📋 Mathlib.Order.Lattice
{α : Type u} [LinearOrder α] : LinearOrder (ULift.{v, u} α)
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 ?a
If 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 ?b
By 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_tsum
even though the hypothesisf i < g i
is 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 2c2d6a2
serving mathlib revision 3f03775