Module docstring
{}
{}
Option.mem_toList
      theorem
     {a : α} {o : Option α} : a ∈ o.toList ↔ a ∈ o
        @[simp] theorem mem_toList {a : α} {o : Option α} : a ∈ o.toLista ∈ o.toList ↔ a ∈ o := by
  cases o <;> simp [eq_comm]
        Option.forIn'_none
      theorem
     [Monad m] (b : β) (f : (a : α) → a ∈ none → β → m (ForInStep β)) : forIn' none b f = pure b
        
      Option.forIn'_some
      theorem
     [Monad m] [LawfulMonad m] (a : α) (b : β) (f : (a' : α) → a' ∈ some a → β → m (ForInStep β)) :
  forIn' (some a) b f = bind (f a rfl b) (fun r => pure (ForInStep.value r))
        @[simp] theorem forIn'_some [Monad m] [LawfulMonad m] (a : α) (b : β) (f : (a' : α) → a' ∈ some a → β → m (ForInStep β)) :
    forIn' (some a) b f = bind (f a rfl b) (fun r => pure (ForInStep.value r)) := by
  simp only [forIn', bind_pure_comp]
  rw [map_eq_pure_bind]
  congr
  funext x
  split <;> rfl
        Option.forIn_none
      theorem
     [Monad m] (b : β) (f : α → β → m (ForInStep β)) : forIn none b f = pure b
        
      Option.forIn_some
      theorem
     [Monad m] [LawfulMonad m] (a : α) (b : β) (f : α → β → m (ForInStep β)) :
  forIn (some a) b f = bind (f a b) (fun r => pure (ForInStep.value r))
        @[simp] theorem forIn_some [Monad m] [LawfulMonad m] (a : α) (b : β) (f : α → β → m (ForInStep β)) :
    forIn (some a) b f = bind (f a b) (fun r => pure (ForInStep.value r)) := by
  simp only [forIn, forIn', bind_pure_comp]
  rw [map_eq_pure_bind]
  congr
  funext x
  split <;> rfl
        Option.forIn'_toList
      theorem
     [Monad m] (o : Option α) (b : β) (f : (a : α) → a ∈ o.toList → β → m (ForInStep β)) :
  forIn' o.toList b f = forIn' o b fun a m b => f a (by simpa using m) b
        @[simp] theorem forIn'_toList [Monad m] (o : Option α) (b : β) (f : (a : α) → a ∈ o.toList → β → m (ForInStep β)) :
    forIn' o.toList b f = forIn' o b fun a m b => f a (by simpa using m) b := by
  cases o <;> rfl
        Option.forIn_toList
      theorem
     [Monad m] (o : Option α) (b : β) (f : α → β → m (ForInStep β)) : forIn o.toList b f = forIn o b f
        
      Option.foldlM_toList
      theorem
     [Monad m] [LawfulMonad m] (o : Option β) (a : α) (f : α → β → m α) :
  o.toList.foldlM f a = o.elim (pure a) (fun b => f a b)
        @[simp] theorem foldlM_toList [Monad m] [LawfulMonad m] (o : Option β) (a : α) (f : α → β → m α) :
    o.toList.foldlM f a = o.elim (pure a) (fun b => f a b) := by
  cases o <;> simp
        Option.foldrM_toList
      theorem
     [Monad m] [LawfulMonad m] (o : Option β) (a : α) (f : β → α → m α) :
  o.toList.foldrM f a = o.elim (pure a) (fun b => f b a)
        @[simp] theorem foldrM_toList [Monad m] [LawfulMonad m] (o : Option β) (a : α) (f : β → α → m α) :
    o.toList.foldrM f a = o.elim (pure a) (fun b => f b a) := by
  cases o <;> simp
        Option.foldl_toList
      theorem
     (o : Option β) (a : α) (f : α → β → α) : o.toList.foldl f a = o.elim a (fun b => f a b)
        @[simp] theorem foldl_toList (o : Option β) (a : α) (f : α → β → α) :
    o.toList.foldl f a = o.elim a (fun b => f a b) := by
  cases o <;> simp
        Option.foldr_toList
      theorem
     (o : Option β) (a : α) (f : β → α → α) : o.toList.foldr f a = o.elim a (fun b => f b a)
        @[simp] theorem foldr_toList (o : Option β) (a : α) (f : β → α → α) :
    o.toList.foldr f a = o.elim a (fun b => f b a) := by
  cases o <;> simp
        Option.pairwise_toList
      theorem
     {P : α → α → Prop} {o : Option α} : o.toList.Pairwise P
        @[simp]
theorem pairwise_toList {P : α → α → Prop} {o : Option α} : o.toList.Pairwise P := by
  cases o <;> simp
        Option.head?_toList
      theorem
     {o : Option α} : o.toList.head? = o
        @[simp]
theorem head?_toList {o : Option α} : o.toList.head? = o := by
  cases o <;> simp