category_theory.monad.limits
⟷
Mathlib.CategoryTheory.Monad.Limits
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,9 +3,9 @@ Copyright (c) 2019 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison, Bhavik Mehta
-/
-import Mathbin.CategoryTheory.Monad.Adjunction
-import Mathbin.CategoryTheory.Adjunction.Limits
-import Mathbin.CategoryTheory.Limits.Shapes.Terminal
+import CategoryTheory.Monad.Adjunction
+import CategoryTheory.Adjunction.Limits
+import CategoryTheory.Limits.Shapes.Terminal
#align_import category_theory.monad.limits from "leanprover-community/mathlib"@"86d1873c01a723aba6788f0b9051ae3d23b4c1c3"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,16 +2,13 @@
Copyright (c) 2019 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison, Bhavik Mehta
-
-! This file was ported from Lean 3 source module category_theory.monad.limits
-! leanprover-community/mathlib commit 86d1873c01a723aba6788f0b9051ae3d23b4c1c3
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.CategoryTheory.Monad.Adjunction
import Mathbin.CategoryTheory.Adjunction.Limits
import Mathbin.CategoryTheory.Limits.Shapes.Terminal
+#align_import category_theory.monad.limits from "leanprover-community/mathlib"@"86d1873c01a723aba6788f0b9051ae3d23b4c1c3"
+
/-!
# Limits and colimits in the category of algebras
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -185,6 +185,7 @@ def newCocone : Cocone ((D ⋙ forget T) ⋙ ↑T)
variable [PreservesColimit (D ⋙ forget T) (T : C ⥤ C)]
+#print CategoryTheory.Monad.ForgetCreatesColimits.lambda /-
/-- (Impl)
Define the map `λ : TL ⟶ L`, which will serve as the structure of the coalgebra on `L`, and
we will show is the colimiting object. We use the cocone constructed by `c` and the fact that
@@ -194,11 +195,14 @@ we will show is the colimiting object. We use the cocone constructed by `c` and
def lambda : ((T : C ⥤ C).mapCocone c).pt ⟶ c.pt :=
(isColimitOfPreserves _ t).desc (newCocone c)
#align category_theory.monad.forget_creates_colimits.lambda CategoryTheory.Monad.ForgetCreatesColimits.lambda
+-/
+#print CategoryTheory.Monad.ForgetCreatesColimits.commuting /-
/-- (Impl) The key property defining the map `λ : TL ⟶ L`. -/
theorem commuting (j : J) : (T : C ⥤ C).map (c.ι.app j) ≫ lambda c t = (D.obj j).a ≫ c.ι.app j :=
(isColimitOfPreserves _ t).fac (newCocone c) j
#align category_theory.monad.forget_creates_colimits.commuting CategoryTheory.Monad.ForgetCreatesColimits.commuting
+-/
variable [PreservesColimit ((D ⋙ forget T) ⋙ ↑T) (T : C ⥤ C)]
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -446,7 +446,7 @@ noncomputable def leftAdjointPreservesTerminalOfReflective (R : D ⥤ C) [Reflec
apply is_limit_change_empty_cone D (limit.is_limit F)
apply (as_iso ((adjunction.of_right_adjoint R).counit.app _)).symm.trans
· apply (left_adjoint R).mapIso; letI := monadicCreatesLimits.{v, v} R
- let this := (CategoryTheory.preservesLimitOfCreatesLimitAndHasLimit F R).preserves
+ let this.1 := (CategoryTheory.preservesLimitOfCreatesLimitAndHasLimit F R).preserves
apply (this (limit.is_limit F)).conePointUniqueUpToIso h
infer_instance
#align category_theory.left_adjoint_preserves_terminal_of_reflective CategoryTheory.leftAdjointPreservesTerminalOfReflective
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -399,12 +399,12 @@ theorem hasLimitsOfShape_of_reflective [HasLimitsOfShape J C] (R : D ⥤ C) [Ref
#align category_theory.has_limits_of_shape_of_reflective CategoryTheory.hasLimitsOfShape_of_reflective
-/
-#print CategoryTheory.has_limits_of_reflective /-
+#print CategoryTheory.hasLimits_of_reflective /-
/-- If `C` has limits then any reflective subcategory has limits. -/
-theorem has_limits_of_reflective (R : D ⥤ C) [HasLimitsOfSize.{v, u} C] [Reflective R] :
+theorem hasLimits_of_reflective (R : D ⥤ C) [HasLimitsOfSize.{v, u} C] [Reflective R] :
HasLimitsOfSize.{v, u} D :=
{ HasLimitsOfShape := fun J 𝒥₁ => has_limits_of_shape_of_reflective R }
-#align category_theory.has_limits_of_reflective CategoryTheory.has_limits_of_reflective
+#align category_theory.has_limits_of_reflective CategoryTheory.hasLimits_of_reflective
-/
#print CategoryTheory.hasColimitsOfShape_of_reflective /-
@@ -424,12 +424,12 @@ theorem hasColimitsOfShape_of_reflective (R : D ⥤ C) [Reflective R] [HasColimi
#align category_theory.has_colimits_of_shape_of_reflective CategoryTheory.hasColimitsOfShape_of_reflective
-/
-#print CategoryTheory.has_colimits_of_reflective /-
+#print CategoryTheory.hasColimits_of_reflective /-
/-- If `C` has colimits then any reflective subcategory has colimits. -/
-theorem has_colimits_of_reflective (R : D ⥤ C) [Reflective R] [HasColimitsOfSize.{v, u} C] :
+theorem hasColimits_of_reflective (R : D ⥤ C) [Reflective R] [HasColimitsOfSize.{v, u} C] :
HasColimitsOfSize.{v, u} D :=
{ HasColimitsOfShape := fun J 𝒥 => has_colimits_of_shape_of_reflective R }
-#align category_theory.has_colimits_of_reflective CategoryTheory.has_colimits_of_reflective
+#align category_theory.has_colimits_of_reflective CategoryTheory.hasColimits_of_reflective
-/
#print CategoryTheory.leftAdjointPreservesTerminalOfReflective /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -185,12 +185,6 @@ def newCocone : Cocone ((D ⋙ forget T) ⋙ ↑T)
variable [PreservesColimit (D ⋙ forget T) (T : C ⥤ C)]
-/- warning: category_theory.monad.forget_creates_colimits.lambda -> CategoryTheory.Monad.ForgetCreatesColimits.lambda is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {T : CategoryTheory.Monad.{u3, u4} C _inst_1} {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {D : CategoryTheory.Functor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T)} (c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))), (CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) -> (forall [_inst_3 : CategoryTheory.Limits.PreservesColimit.{u1, u2, u3, u3, u4, u4} C _inst_1 C _inst_1 J _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T)], Quiver.Hom.{succ u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_2 C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T)) (CategoryTheory.Functor.mapCocone.{u1, u3, u3, u2, u4, u4} J _inst_2 C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) c)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {T : CategoryTheory.Monad.{u3, u4} C _inst_1} {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {D : CategoryTheory.Functor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T)} (c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))), (CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) -> (forall [_inst_3 : CategoryTheory.Limits.PreservesColimit.{u1, u2, u3, u3, u4, u4} C _inst_1 C _inst_1 J _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)], Quiver.Hom.{succ u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_2 C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (CategoryTheory.Functor.mapCocone.{u1, u3, u3, u2, u4, u4} J _inst_2 C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T) (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c))
-Case conversion may be inaccurate. Consider using '#align category_theory.monad.forget_creates_colimits.lambda CategoryTheory.Monad.ForgetCreatesColimits.lambdaₓ'. -/
/-- (Impl)
Define the map `λ : TL ⟶ L`, which will serve as the structure of the coalgebra on `L`, and
we will show is the colimiting object. We use the cocone constructed by `c` and the fact that
@@ -201,9 +195,6 @@ def lambda : ((T : C ⥤ C).mapCocone c).pt ⟶ c.pt :=
(isColimitOfPreserves _ t).desc (newCocone c)
#align category_theory.monad.forget_creates_colimits.lambda CategoryTheory.Monad.ForgetCreatesColimits.lambda
-/- warning: category_theory.monad.forget_creates_colimits.commuting -> CategoryTheory.Monad.ForgetCreatesColimits.commuting is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.monad.forget_creates_colimits.commuting CategoryTheory.Monad.ForgetCreatesColimits.commutingₓ'. -/
/-- (Impl) The key property defining the map `λ : TL ⟶ L`. -/
theorem commuting (j : J) : (T : C ⥤ C).map (c.ι.app j) ≫ lambda c t = (D.obj j).a ≫ c.ι.app j :=
(isColimitOfPreserves _ t).fac (newCocone c) j
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -97,11 +97,7 @@ def liftedCone : Cone D where
pt := conePoint D c t
π :=
{ app := fun j => { f := c.π.app j }
- naturality' := fun X Y f => by
- ext1
- dsimp
- erw [c.w f]
- simp }
+ naturality' := fun X Y f => by ext1; dsimp; erw [c.w f]; simp }
#align category_theory.monad.forget_creates_limits.lifted_cone CategoryTheory.Monad.ForgetCreatesLimits.liftedCone
-/
@@ -252,11 +248,7 @@ def liftedCocone : Cocone D where
{ app := fun j =>
{ f := c.ι.app j
h' := commuting _ _ _ }
- naturality' := fun A B f => by
- ext1
- dsimp
- rw [comp_id]
- apply c.w }
+ naturality' := fun A B f => by ext1; dsimp; rw [comp_id]; apply c.w }
#align category_theory.monad.forget_creates_colimits.lifted_cocone CategoryTheory.Monad.ForgetCreatesColimits.liftedCocone
-/
@@ -273,11 +265,7 @@ def liftedCoconeIsColimit : IsColimit (liftedCocone c t)
dsimp
rw [← functor.map_comp_assoc, ← category.assoc, t.fac, commuting, category.assoc, t.fac]
apply algebra.hom.h }
- uniq s m J := by
- ext1
- apply t.hom_ext
- intro j
- simpa using congr_arg algebra.hom.f (J j)
+ uniq s m J := by ext1; apply t.hom_ext; intro j; simpa using congr_arg algebra.hom.f (J j)
#align category_theory.monad.forget_creates_colimits.lifted_cocone_is_colimit CategoryTheory.Monad.ForgetCreatesColimits.liftedCoconeIsColimit
-/
@@ -300,10 +288,7 @@ noncomputable instance forgetCreatesColimit (D : J ⥤ Algebra T)
{ app := fun j =>
{ f := c.ι.app j
h' := commuting _ _ _ }
- naturality' := fun A B f => by
- ext1
- dsimp
- erw [comp_id, c.w] } }
+ naturality' := fun A B f => by ext1; dsimp; erw [comp_id, c.w] } }
validLift := Cocones.ext (Iso.refl _) (by tidy)
makesColimit := liftedCoconeIsColimit _ _ }
#align category_theory.monad.forget_creates_colimit CategoryTheory.Monad.forgetCreatesColimit
@@ -469,8 +454,7 @@ noncomputable def leftAdjointPreservesTerminalOfReflective (R : D ⥤ C) [Reflec
haveI : has_limit F := has_limit_of_reflective F R
apply is_limit_change_empty_cone D (limit.is_limit F)
apply (as_iso ((adjunction.of_right_adjoint R).counit.app _)).symm.trans
- · apply (left_adjoint R).mapIso
- letI := monadicCreatesLimits.{v, v} R
+ · apply (left_adjoint R).mapIso; letI := monadicCreatesLimits.{v, v} R
let this := (CategoryTheory.preservesLimitOfCreatesLimitAndHasLimit F R).preserves
apply (this (limit.is_limit F)).conePointUniqueUpToIso h
infer_instance
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -206,10 +206,7 @@ def lambda : ((T : C ⥤ C).mapCocone c).pt ⟶ c.pt :=
#align category_theory.monad.forget_creates_colimits.lambda CategoryTheory.Monad.ForgetCreatesColimits.lambda
/- warning: category_theory.monad.forget_creates_colimits.commuting -> CategoryTheory.Monad.ForgetCreatesColimits.commuting is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {T : CategoryTheory.Monad.{u3, u4} C _inst_1} {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {D : CategoryTheory.Functor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T)} (c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))) (t : CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) [_inst_3 : CategoryTheory.Limits.PreservesColimit.{u1, u2, u3, u3, u4, u4} C _inst_1 C _inst_1 J _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.obj.{u3, u3, u4, u4} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) j)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.CategoryStruct.comp.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1) (CategoryTheory.Functor.obj.{u3, u3, u4, u4} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) j)) (CategoryTheory.Functor.obj.{u3, u3, u4, u4} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.obj.{u3, max u2 u3, u4, max u1 u3 u2 u4} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) j)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) (CategoryTheory.Functor.map.{u3, u3, u4, u4} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) j) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.obj.{u3, max u2 u3, u4, max u1 u3 u2 u4} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) j) (CategoryTheory.NatTrans.app.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (CategoryTheory.Functor.obj.{u3, max u2 u3, u4, max u1 u3 u2 u4} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.Limits.Cocone.ι.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) j)) (CategoryTheory.Monad.ForgetCreatesColimits.lambda.{u1, u2, u3, u4} C _inst_1 T J _inst_2 D c t _inst_3)) (CategoryTheory.CategoryStruct.comp.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1) (CategoryTheory.Functor.obj.{u3, u3, u4, u4} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) j)) (CategoryTheory.Monad.Algebra.A.{u3, u4} C _inst_1 T (CategoryTheory.Functor.obj.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) D j)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) (CategoryTheory.Monad.Algebra.a.{u3, u4} C _inst_1 T (CategoryTheory.Functor.obj.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) D j)) (CategoryTheory.NatTrans.app.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (CategoryTheory.Functor.obj.{u3, max u2 u3, u4, max u1 u3 u2 u4} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.Limits.Cocone.ι.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) j))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {T : CategoryTheory.Monad.{u3, u4} C _inst_1} {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {D : CategoryTheory.Functor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T)} (c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))) (t : CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) [_inst_3 : CategoryTheory.Limits.PreservesColimit.{u1, u2, u3, u3, u4, u4} C _inst_1 C _inst_1 J _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (Prefunctor.obj.{succ u3, succ u3, u4, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u3, u4, u4} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))) j)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.CategoryStruct.comp.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1) (Prefunctor.obj.{succ u3, succ u3, u4, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u3, u4, u4} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))) j)) (Prefunctor.obj.{succ u3, succ u3, u4, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u3, u4, u4} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (Prefunctor.obj.{succ u3, max (succ u2) (succ u3), u4, max (max (max u2 u1) u3) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u3, max u2 u3, u4, max (max (max u2 u1) u4) u3} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c))) j)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) (Prefunctor.map.{succ u3, succ u3, u4, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u3, u4, u4} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))) j) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (Prefunctor.obj.{succ u3, max (succ u2) (succ u3), u4, max (max (max u2 u1) u3) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u3, max u2 u3, u4, max (max (max u2 u1) u4) u3} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c))) j) (CategoryTheory.NatTrans.app.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u3, max (succ u2) (succ u3), u4, max (max (max u2 u1) u3) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u3, max u2 u3, u4, max (max (max u2 u1) u4) u3} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.Limits.Cocone.ι.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) j)) (CategoryTheory.Monad.ForgetCreatesColimits.lambda.{u1, u2, u3, u4} C _inst_1 T J _inst_2 D c t _inst_3)) (CategoryTheory.CategoryStruct.comp.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1) (Prefunctor.obj.{succ u3, succ u3, u4, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u3, u4, u4} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u3, u4} C _inst_1 T (Prefunctor.obj.{succ u1, succ u3, u2, max u4 u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Category.toCategoryStruct.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T))) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) D) j))) (CategoryTheory.Monad.Algebra.A.{u3, u4} C _inst_1 T (Prefunctor.obj.{succ u1, succ u3, u2, max u4 u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Category.toCategoryStruct.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T))) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) D) j)) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (Prefunctor.obj.{succ u3, max (succ u2) (succ u3), u4, max (max (max u2 u1) u3) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u3, max u2 u3, u4, max (max (max u2 u1) u4) u3} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c))) j) (CategoryTheory.Monad.Algebra.a.{u3, u4} C _inst_1 T (Prefunctor.obj.{succ u1, succ u3, u2, max u4 u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Category.toCategoryStruct.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T))) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) D) j)) (CategoryTheory.NatTrans.app.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u3, max (succ u2) (succ u3), u4, max (max (max u2 u1) u3) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u3, max u2 u3, u4, max (max (max u2 u1) u4) u3} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.Limits.Cocone.ι.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) j))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.monad.forget_creates_colimits.commuting CategoryTheory.Monad.ForgetCreatesColimits.commutingₓ'. -/
/-- (Impl) The key property defining the map `λ : TL ⟶ L`. -/
theorem commuting (j : J) : (T : C ⥤ C).map (c.ι.app j) ≫ lambda c t = (D.obj j).a ≫ c.ι.app j :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/52932b3a083d4142e78a15dc928084a22fea9ba0
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison, Bhavik Mehta
! This file was ported from Lean 3 source module category_theory.monad.limits
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit 86d1873c01a723aba6788f0b9051ae3d23b4c1c3
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -15,6 +15,9 @@ import Mathbin.CategoryTheory.Limits.Shapes.Terminal
/-!
# Limits and colimits in the category of algebras
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file shows that the forgetful functor `forget T : algebra T ⥤ C` for a monad `T : C ⥤ C`
creates limits and creates any colimits which `T` preserves.
This is used to show that `algebra T` has any limits which `C` has, and any colimits which `C` has
mathlib commit https://github.com/leanprover-community/mathlib/commit/730c6d4cab72b9d84fcfb9e95e8796e9cd8f40ba
@@ -48,18 +48,23 @@ namespace ForgetCreatesLimits
variable (D : J ⥤ Algebra T) (c : Cone (D ⋙ T.forget)) (t : IsLimit c)
+#print CategoryTheory.Monad.ForgetCreatesLimits.γ /-
/-- (Impl) The natural transformation used to define the new cone -/
@[simps]
def γ : D ⋙ T.forget ⋙ ↑T ⟶ D ⋙ T.forget where app j := (D.obj j).a
#align category_theory.monad.forget_creates_limits.γ CategoryTheory.Monad.ForgetCreatesLimits.γ
+-/
+#print CategoryTheory.Monad.ForgetCreatesLimits.newCone /-
/-- (Impl) This new cone is used to construct the algebra structure -/
@[simps π_app]
def newCone : Cone (D ⋙ forget T) where
pt := T.obj c.pt
π := (Functor.constComp _ _ ↑T).inv ≫ whiskerRight c.π T ≫ γ D
#align category_theory.monad.forget_creates_limits.new_cone CategoryTheory.Monad.ForgetCreatesLimits.newCone
+-/
+#print CategoryTheory.Monad.ForgetCreatesLimits.conePoint /-
/-- The algebra structure which will be the apex of the new limit cone for `D`. -/
@[simps]
def conePoint : Algebra T where
@@ -80,7 +85,9 @@ def conePoint : Algebra T where
(D.obj j).and_assoc, functor.map_comp, category.assoc]
rfl
#align category_theory.monad.forget_creates_limits.cone_point CategoryTheory.Monad.ForgetCreatesLimits.conePoint
+-/
+#print CategoryTheory.Monad.ForgetCreatesLimits.liftedCone /-
/-- (Impl) Construct the lifted cone in `algebra T` which will be limiting. -/
@[simps]
def liftedCone : Cone D where
@@ -93,7 +100,9 @@ def liftedCone : Cone D where
erw [c.w f]
simp }
#align category_theory.monad.forget_creates_limits.lifted_cone CategoryTheory.Monad.ForgetCreatesLimits.liftedCone
+-/
+#print CategoryTheory.Monad.ForgetCreatesLimits.liftedConeIsLimit /-
/-- (Impl) Prove that the lifted cone is limiting. -/
@[simps]
def liftedConeIsLimit : IsLimit (liftedCone D c t)
@@ -112,9 +121,11 @@ def liftedConeIsLimit : IsLimit (liftedCone D c t)
intro j
simpa [t.fac ((forget T).mapCone s) j] using congr_arg algebra.hom.f (J j)
#align category_theory.monad.forget_creates_limits.lifted_cone_is_limit CategoryTheory.Monad.ForgetCreatesLimits.liftedConeIsLimit
+-/
end ForgetCreatesLimits
+#print CategoryTheory.Monad.forgetCreatesLimits /-
-- Theorem 5.6.5 from [Riehl][riehl2017]
/-- The forgetful functor from the Eilenberg-Moore category creates limits. -/
noncomputable instance forgetCreatesLimits : CreatesLimitsOfSize (forget T)
@@ -126,18 +137,22 @@ noncomputable instance forgetCreatesLimits : CreatesLimitsOfSize (forget T)
validLift := cones.ext (iso.refl _) fun j => (id_comp _).symm
makesLimit := forget_creates_limits.lifted_cone_is_limit _ _ _ } }
#align category_theory.monad.forget_creates_limits CategoryTheory.Monad.forgetCreatesLimits
+-/
+#print CategoryTheory.Monad.hasLimit_of_comp_forget_hasLimit /-
/-- `D ⋙ forget T` has a limit, then `D` has a limit. -/
theorem hasLimit_of_comp_forget_hasLimit (D : J ⥤ Algebra T) [HasLimit (D ⋙ forget T)] :
HasLimit D :=
hasLimit_of_created D (forget T)
#align category_theory.monad.has_limit_of_comp_forget_has_limit CategoryTheory.Monad.hasLimit_of_comp_forget_hasLimit
+-/
namespace ForgetCreatesColimits
-- Let's hide the implementation details in a namespace
variable {D : J ⥤ Algebra T} (c : Cocone (D ⋙ forget T)) (t : IsColimit c)
+#print CategoryTheory.Monad.ForgetCreatesColimits.γ /-
-- We have a diagram D of shape J in the category of algebras, and we assume that we are given a
-- colimit for its image D ⋙ forget T under the forgetful functor, say its apex is L.
-- We'll construct a colimiting coalgebra for D, whose carrier will also be L.
@@ -154,7 +169,9 @@ apex `colimit (D ⋙ forget T)`.
@[simps]
def γ : (D ⋙ forget T) ⋙ ↑T ⟶ D ⋙ forget T where app j := (D.obj j).a
#align category_theory.monad.forget_creates_colimits.γ CategoryTheory.Monad.ForgetCreatesColimits.γ
+-/
+#print CategoryTheory.Monad.ForgetCreatesColimits.newCocone /-
/-- (Impl)
A cocone for the diagram `(D ⋙ forget T) ⋙ T` found by composing the natural transformation `γ`
with the colimiting cocone for `D ⋙ forget T`.
@@ -165,9 +182,16 @@ def newCocone : Cocone ((D ⋙ forget T) ⋙ ↑T)
pt := c.pt
ι := γ ≫ c.ι
#align category_theory.monad.forget_creates_colimits.new_cocone CategoryTheory.Monad.ForgetCreatesColimits.newCocone
+-/
variable [PreservesColimit (D ⋙ forget T) (T : C ⥤ C)]
+/- warning: category_theory.monad.forget_creates_colimits.lambda -> CategoryTheory.Monad.ForgetCreatesColimits.lambda is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {T : CategoryTheory.Monad.{u3, u4} C _inst_1} {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {D : CategoryTheory.Functor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T)} (c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))), (CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) -> (forall [_inst_3 : CategoryTheory.Limits.PreservesColimit.{u1, u2, u3, u3, u4, u4} C _inst_1 C _inst_1 J _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T)], Quiver.Hom.{succ u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_2 C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T)) (CategoryTheory.Functor.mapCocone.{u1, u3, u3, u2, u4, u4} J _inst_2 C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) c)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {T : CategoryTheory.Monad.{u3, u4} C _inst_1} {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {D : CategoryTheory.Functor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T)} (c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))), (CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) -> (forall [_inst_3 : CategoryTheory.Limits.PreservesColimit.{u1, u2, u3, u3, u4, u4} C _inst_1 C _inst_1 J _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)], Quiver.Hom.{succ u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_2 C _inst_1 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (CategoryTheory.Functor.mapCocone.{u1, u3, u3, u2, u4, u4} J _inst_2 C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T) (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c))
+Case conversion may be inaccurate. Consider using '#align category_theory.monad.forget_creates_colimits.lambda CategoryTheory.Monad.ForgetCreatesColimits.lambdaₓ'. -/
/-- (Impl)
Define the map `λ : TL ⟶ L`, which will serve as the structure of the coalgebra on `L`, and
we will show is the colimiting object. We use the cocone constructed by `c` and the fact that
@@ -178,6 +202,12 @@ def lambda : ((T : C ⥤ C).mapCocone c).pt ⟶ c.pt :=
(isColimitOfPreserves _ t).desc (newCocone c)
#align category_theory.monad.forget_creates_colimits.lambda CategoryTheory.Monad.ForgetCreatesColimits.lambda
+/- warning: category_theory.monad.forget_creates_colimits.commuting -> CategoryTheory.Monad.ForgetCreatesColimits.commuting is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {T : CategoryTheory.Monad.{u3, u4} C _inst_1} {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {D : CategoryTheory.Functor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T)} (c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))) (t : CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) [_inst_3 : CategoryTheory.Limits.PreservesColimit.{u1, u2, u3, u3, u4, u4} C _inst_1 C _inst_1 J _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.obj.{u3, u3, u4, u4} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) j)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.CategoryStruct.comp.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1) (CategoryTheory.Functor.obj.{u3, u3, u4, u4} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) j)) (CategoryTheory.Functor.obj.{u3, u3, u4, u4} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.obj.{u3, max u2 u3, u4, max u1 u3 u2 u4} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) j)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) (CategoryTheory.Functor.map.{u3, u3, u4, u4} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) j) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.obj.{u3, max u2 u3, u4, max u1 u3 u2 u4} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) j) (CategoryTheory.NatTrans.app.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (CategoryTheory.Functor.obj.{u3, max u2 u3, u4, max u1 u3 u2 u4} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.Limits.Cocone.ι.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) j)) (CategoryTheory.Monad.ForgetCreatesColimits.lambda.{u1, u2, u3, u4} C _inst_1 T J _inst_2 D c t _inst_3)) (CategoryTheory.CategoryStruct.comp.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1) (CategoryTheory.Functor.obj.{u3, u3, u4, u4} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u4) (succ u3)}) (b : Type.{max u3 u4}) [self : HasLiftT.{max (succ u4) (succ u3), succ (max u3 u4)} a b] => self.0) (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (coeBase.{max (succ u4) (succ u3), succ (max u3 u4)} (CategoryTheory.Monad.{u3, u4} C _inst_1) (CategoryTheory.Functor.{u3, u3, u4, u4} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u3, u4} C _inst_1)))) T) (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) j)) (CategoryTheory.Monad.Algebra.A.{u3, u4} C _inst_1 T (CategoryTheory.Functor.obj.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) D j)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) (CategoryTheory.Monad.Algebra.a.{u3, u4} C _inst_1 T (CategoryTheory.Functor.obj.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) D j)) (CategoryTheory.NatTrans.app.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (CategoryTheory.Functor.obj.{u3, max u2 u3, u4, max u1 u3 u2 u4} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.Limits.Cocone.ι.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) j))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {T : CategoryTheory.Monad.{u3, u4} C _inst_1} {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {D : CategoryTheory.Functor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T)} (c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))) (t : CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) [_inst_3 : CategoryTheory.Limits.PreservesColimit.{u1, u2, u3, u3, u4, u4} C _inst_1 C _inst_1 J _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)] (j : J), Eq.{succ u3} (Quiver.Hom.{succ u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (Prefunctor.obj.{succ u3, succ u3, u4, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u3, u4, u4} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))) j)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.CategoryStruct.comp.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1) (Prefunctor.obj.{succ u3, succ u3, u4, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u3, u4, u4} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))) j)) (Prefunctor.obj.{succ u3, succ u3, u4, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u3, u4, u4} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (Prefunctor.obj.{succ u3, max (succ u2) (succ u3), u4, max (max (max u2 u1) u3) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u3, max u2 u3, u4, max (max (max u2 u1) u4) u3} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c))) j)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) (Prefunctor.map.{succ u3, succ u3, u4, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u3, u4, u4} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T))) j) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (Prefunctor.obj.{succ u3, max (succ u2) (succ u3), u4, max (max (max u2 u1) u3) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u3, max u2 u3, u4, max (max (max u2 u1) u4) u3} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c))) j) (CategoryTheory.NatTrans.app.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u3, max (succ u2) (succ u3), u4, max (max (max u2 u1) u3) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u3, max u2 u3, u4, max (max (max u2 u1) u4) u3} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.Limits.Cocone.ι.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) j)) (CategoryTheory.Monad.ForgetCreatesColimits.lambda.{u1, u2, u3, u4} C _inst_1 T J _inst_2 D c t _inst_3)) (CategoryTheory.CategoryStruct.comp.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1) (Prefunctor.obj.{succ u3, succ u3, u4, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u3, u3, u4, u4} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u3, u4} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u3, u4} C _inst_1 T (Prefunctor.obj.{succ u1, succ u3, u2, max u4 u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Category.toCategoryStruct.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T))) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) D) j))) (CategoryTheory.Monad.Algebra.A.{u3, u4} C _inst_1 T (Prefunctor.obj.{succ u1, succ u3, u2, max u4 u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Category.toCategoryStruct.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T))) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) D) j)) (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 (Prefunctor.obj.{succ u3, max (succ u2) (succ u3), u4, max (max (max u2 u1) u3) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u3, max u2 u3, u4, max (max (max u2 u1) u4) u3} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c))) j) (CategoryTheory.Monad.Algebra.a.{u3, u4} C _inst_1 T (Prefunctor.obj.{succ u1, succ u3, u2, max u4 u3} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.CategoryStruct.toQuiver.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Category.toCategoryStruct.{u3, max u4 u3} (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T))) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, max u4 u3} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) D) j)) (CategoryTheory.NatTrans.app.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) (Prefunctor.obj.{succ u3, max (succ u2) (succ u3), u4, max (max (max u2 u1) u3) u4} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1))) (CategoryTheory.Functor.toPrefunctor.{u3, max u2 u3, u4, max (max (max u2 u1) u4) u3} C _inst_1 (CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.category.{u1, u3, u2, u4} J _inst_2 C _inst_1) (CategoryTheory.Functor.const.{u1, u3, u2, u4} J _inst_2 C _inst_1)) (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c)) (CategoryTheory.Limits.Cocone.ι.{u1, u3, u2, u4} J _inst_2 C _inst_1 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, max u4 u3, u4} J _inst_2 (CategoryTheory.Monad.Algebra.{u3, u4} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u3, u4} C _inst_1 T) C _inst_1 D (CategoryTheory.Monad.forget.{u3, u4} C _inst_1 T)) c) j))
+Case conversion may be inaccurate. Consider using '#align category_theory.monad.forget_creates_colimits.commuting CategoryTheory.Monad.ForgetCreatesColimits.commutingₓ'. -/
/-- (Impl) The key property defining the map `λ : TL ⟶ L`. -/
theorem commuting (j : J) : (T : C ⥤ C).map (c.ι.app j) ≫ lambda c t = (D.obj j).a ≫ c.ι.app j :=
(isColimitOfPreserves _ t).fac (newCocone c) j
@@ -185,6 +215,7 @@ theorem commuting (j : J) : (T : C ⥤ C).map (c.ι.app j) ≫ lambda c t = (D.o
variable [PreservesColimit ((D ⋙ forget T) ⋙ ↑T) (T : C ⥤ C)]
+#print CategoryTheory.Monad.ForgetCreatesColimits.coconePoint /-
/-- (Impl)
Construct the colimiting algebra from the map `λ : TL ⟶ L` given by `lambda`. We are required to
show it satisfies the two algebra laws, which follow from the algebra laws for the image of `D` and
@@ -210,7 +241,9 @@ def coconePoint : Algebra T where
functor.map_comp_assoc, commuting, functor.map_comp, category.assoc, commuting]
apply (D.obj j).assoc_assoc _
#align category_theory.monad.forget_creates_colimits.cocone_point CategoryTheory.Monad.ForgetCreatesColimits.coconePoint
+-/
+#print CategoryTheory.Monad.ForgetCreatesColimits.liftedCocone /-
/-- (Impl) Construct the lifted cocone in `algebra T` which will be colimiting. -/
@[simps]
def liftedCocone : Cocone D where
@@ -225,7 +258,9 @@ def liftedCocone : Cocone D where
rw [comp_id]
apply c.w }
#align category_theory.monad.forget_creates_colimits.lifted_cocone CategoryTheory.Monad.ForgetCreatesColimits.liftedCocone
+-/
+#print CategoryTheory.Monad.ForgetCreatesColimits.liftedCoconeIsColimit /-
/-- (Impl) Prove that the lifted cocone is colimiting. -/
@[simps]
def liftedCoconeIsColimit : IsColimit (liftedCocone c t)
@@ -244,11 +279,13 @@ def liftedCoconeIsColimit : IsColimit (liftedCocone c t)
intro j
simpa using congr_arg algebra.hom.f (J j)
#align category_theory.monad.forget_creates_colimits.lifted_cocone_is_colimit CategoryTheory.Monad.ForgetCreatesColimits.liftedCoconeIsColimit
+-/
end ForgetCreatesColimits
open ForgetCreatesColimits
+#print CategoryTheory.Monad.forgetCreatesColimit /-
-- TODO: the converse of this is true as well
/-- The forgetful functor from the Eilenberg-Moore category for a monad creates any colimit
which the monad itself preserves.
@@ -270,15 +307,21 @@ noncomputable instance forgetCreatesColimit (D : J ⥤ Algebra T)
validLift := Cocones.ext (Iso.refl _) (by tidy)
makesColimit := liftedCoconeIsColimit _ _ }
#align category_theory.monad.forget_creates_colimit CategoryTheory.Monad.forgetCreatesColimit
+-/
+#print CategoryTheory.Monad.forgetCreatesColimitsOfShape /-
noncomputable instance forgetCreatesColimitsOfShape [PreservesColimitsOfShape J (T : C ⥤ C)] :
CreatesColimitsOfShape J (forget T) where CreatesColimit K := by infer_instance
#align category_theory.monad.forget_creates_colimits_of_shape CategoryTheory.Monad.forgetCreatesColimitsOfShape
+-/
+#print CategoryTheory.Monad.forgetCreatesColimits /-
noncomputable instance forgetCreatesColimits [PreservesColimitsOfSize.{v, u} (T : C ⥤ C)] :
CreatesColimitsOfSize.{v, u} (forget T) where CreatesColimitsOfShape J 𝒥₁ := by infer_instance
#align category_theory.monad.forget_creates_colimits CategoryTheory.Monad.forgetCreatesColimits
+-/
+#print CategoryTheory.Monad.forget_creates_colimits_of_monad_preserves /-
/-- For `D : J ⥤ algebra T`, `D ⋙ forget T` has a colimit, then `D` has a colimit provided colimits
of shape `J` are preserved by `T`.
-/
@@ -286,6 +329,7 @@ theorem forget_creates_colimits_of_monad_preserves [PreservesColimitsOfShape J (
(D : J ⥤ Algebra T) [HasColimit (D ⋙ forget T)] : HasColimit D :=
hasColimit_of_created D (forget T)
#align category_theory.monad.forget_creates_colimits_of_monad_preserves CategoryTheory.Monad.forget_creates_colimits_of_monad_preserves
+-/
end Monad
@@ -293,24 +337,31 @@ variable {C : Type u₁} [Category.{v₁} C] {D : Type u₂} [Category.{v₂} D]
variable {J : Type u} [Category.{v} J]
+#print CategoryTheory.comp_comparison_forget_hasLimit /-
instance comp_comparison_forget_hasLimit (F : J ⥤ D) (R : D ⥤ C) [MonadicRightAdjoint R]
[HasLimit (F ⋙ R)] :
HasLimit ((F ⋙ Monad.comparison (Adjunction.ofRightAdjoint R)) ⋙ Monad.forget _) :=
@hasLimitOfIso _ _ _ _ (F ⋙ R) _ _
(isoWhiskerLeft F (Monad.comparisonForget (Adjunction.ofRightAdjoint R)).symm)
#align category_theory.comp_comparison_forget_has_limit CategoryTheory.comp_comparison_forget_hasLimit
+-/
+#print CategoryTheory.comp_comparison_hasLimit /-
instance comp_comparison_hasLimit (F : J ⥤ D) (R : D ⥤ C) [MonadicRightAdjoint R]
[HasLimit (F ⋙ R)] : HasLimit (F ⋙ Monad.comparison (Adjunction.ofRightAdjoint R)) :=
Monad.hasLimit_of_comp_forget_hasLimit (F ⋙ Monad.comparison (Adjunction.ofRightAdjoint R))
#align category_theory.comp_comparison_has_limit CategoryTheory.comp_comparison_hasLimit
+-/
+#print CategoryTheory.monadicCreatesLimits /-
/-- Any monadic functor creates limits. -/
noncomputable def monadicCreatesLimits (R : D ⥤ C) [MonadicRightAdjoint R] :
CreatesLimitsOfSize.{v, u} R :=
createsLimitsOfNatIso (Monad.comparisonForget (Adjunction.ofRightAdjoint R))
#align category_theory.monadic_creates_limits CategoryTheory.monadicCreatesLimits
+-/
+#print CategoryTheory.monadicCreatesColimitOfPreservesColimit /-
/-- The forgetful functor from the Eilenberg-Moore category for a monad creates any colimit
which the monad itself preserves.
-/
@@ -330,7 +381,9 @@ noncomputable def monadicCreatesColimitOfPreservesColimit (R : D ⥤ C) (K : J
· dsimp
refine' preserves_colimit_of_iso_diagram _ (iso_whisker_right i (left_adjoint R ⋙ R)).symm
#align category_theory.monadic_creates_colimit_of_preserves_colimit CategoryTheory.monadicCreatesColimitOfPreservesColimit
+-/
+#print CategoryTheory.monadicCreatesColimitsOfShapeOfPreservesColimitsOfShape /-
/-- A monadic functor creates any colimits of shapes it preserves. -/
noncomputable def monadicCreatesColimitsOfShapeOfPreservesColimitsOfShape (R : D ⥤ C)
[MonadicRightAdjoint R] [PreservesColimitsOfShape J R] : CreatesColimitsOfShape J R :=
@@ -341,34 +394,44 @@ noncomputable def monadicCreatesColimitsOfShapeOfPreservesColimitsOfShape (R : D
infer_instance
⟨fun K => monadic_creates_colimit_of_preserves_colimit _ _⟩
#align category_theory.monadic_creates_colimits_of_shape_of_preserves_colimits_of_shape CategoryTheory.monadicCreatesColimitsOfShapeOfPreservesColimitsOfShape
+-/
+#print CategoryTheory.monadicCreatesColimitsOfPreservesColimits /-
/-- A monadic functor creates colimits if it preserves colimits. -/
noncomputable def monadicCreatesColimitsOfPreservesColimits (R : D ⥤ C) [MonadicRightAdjoint R]
[PreservesColimitsOfSize.{v, u} R] : CreatesColimitsOfSize.{v, u} R
where CreatesColimitsOfShape J 𝒥₁ :=
monadic_creates_colimits_of_shape_of_preserves_colimits_of_shape _
#align category_theory.monadic_creates_colimits_of_preserves_colimits CategoryTheory.monadicCreatesColimitsOfPreservesColimits
+-/
section
+#print CategoryTheory.hasLimit_of_reflective /-
theorem hasLimit_of_reflective (F : J ⥤ D) (R : D ⥤ C) [HasLimit (F ⋙ R)] [Reflective R] :
HasLimit F :=
haveI := monadicCreatesLimits.{v, u} R
has_limit_of_created F R
#align category_theory.has_limit_of_reflective CategoryTheory.hasLimit_of_reflective
+-/
+#print CategoryTheory.hasLimitsOfShape_of_reflective /-
/-- If `C` has limits of shape `J` then any reflective subcategory has limits of shape `J`. -/
theorem hasLimitsOfShape_of_reflective [HasLimitsOfShape J C] (R : D ⥤ C) [Reflective R] :
HasLimitsOfShape J D :=
{ HasLimit := fun F => hasLimit_of_reflective F R }
#align category_theory.has_limits_of_shape_of_reflective CategoryTheory.hasLimitsOfShape_of_reflective
+-/
+#print CategoryTheory.has_limits_of_reflective /-
/-- If `C` has limits then any reflective subcategory has limits. -/
theorem has_limits_of_reflective (R : D ⥤ C) [HasLimitsOfSize.{v, u} C] [Reflective R] :
HasLimitsOfSize.{v, u} D :=
{ HasLimitsOfShape := fun J 𝒥₁ => has_limits_of_shape_of_reflective R }
#align category_theory.has_limits_of_reflective CategoryTheory.has_limits_of_reflective
+-/
+#print CategoryTheory.hasColimitsOfShape_of_reflective /-
/-- If `C` has colimits of shape `J` then any reflective subcategory has colimits of shape `J`. -/
theorem hasColimitsOfShape_of_reflective (R : D ⥤ C) [Reflective R] [HasColimitsOfShape J C] :
HasColimitsOfShape J D :=
@@ -383,13 +446,17 @@ theorem hasColimitsOfShape_of_reflective (R : D ⥤ C) [Reflective R] [HasColimi
apply
(iso_whisker_left F (as_iso (adjunction.of_right_adjoint R).counit) : _) ≪≫ F.right_unitor }
#align category_theory.has_colimits_of_shape_of_reflective CategoryTheory.hasColimitsOfShape_of_reflective
+-/
+#print CategoryTheory.has_colimits_of_reflective /-
/-- If `C` has colimits then any reflective subcategory has colimits. -/
theorem has_colimits_of_reflective (R : D ⥤ C) [Reflective R] [HasColimitsOfSize.{v, u} C] :
HasColimitsOfSize.{v, u} D :=
{ HasColimitsOfShape := fun J 𝒥 => has_colimits_of_shape_of_reflective R }
#align category_theory.has_colimits_of_reflective CategoryTheory.has_colimits_of_reflective
+-/
+#print CategoryTheory.leftAdjointPreservesTerminalOfReflective /-
/-- The reflector always preserves terminal objects. Note this in general doesn't apply to any other
limit.
-/
@@ -408,6 +475,7 @@ noncomputable def leftAdjointPreservesTerminalOfReflective (R : D ⥤ C) [Reflec
apply (this (limit.is_limit F)).conePointUniqueUpToIso h
infer_instance
#align category_theory.left_adjoint_preserves_terminal_of_reflective CategoryTheory.leftAdjointPreservesTerminalOfReflective
+-/
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/cd8fafa2fac98e1a67097e8a91ad9901cfde48af
@@ -63,7 +63,7 @@ def newCone : Cone (D ⋙ forget T) where
/-- The algebra structure which will be the apex of the new limit cone for `D`. -/
@[simps]
def conePoint : Algebra T where
- a := c.pt
+ A := c.pt
a := t.lift (newCone D c)
unit' :=
t.hom_ext fun j =>
@@ -192,12 +192,12 @@ our `commuting` lemma.
-/
@[simps]
def coconePoint : Algebra T where
- a := c.pt
+ A := c.pt
a := lambda c t
unit' := by
apply t.hom_ext
intro j
- rw [show c.ι.app j ≫ T.η.app c.X ≫ _ = T.η.app (D.obj j).a ≫ _ ≫ _ from
+ rw [show c.ι.app j ≫ T.η.app c.X ≫ _ = T.η.app (D.obj j).A ≫ _ ≫ _ from
T.η.naturality_assoc _ _,
commuting, algebra.unit_assoc (D.obj j)]
dsimp; simp
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -56,14 +56,14 @@ def γ : D ⋙ T.forget ⋙ ↑T ⟶ D ⋙ T.forget where app j := (D.obj j).a
/-- (Impl) This new cone is used to construct the algebra structure -/
@[simps π_app]
def newCone : Cone (D ⋙ forget T) where
- x := T.obj c.x
+ pt := T.obj c.pt
π := (Functor.constComp _ _ ↑T).inv ≫ whiskerRight c.π T ≫ γ D
#align category_theory.monad.forget_creates_limits.new_cone CategoryTheory.Monad.ForgetCreatesLimits.newCone
/-- The algebra structure which will be the apex of the new limit cone for `D`. -/
@[simps]
def conePoint : Algebra T where
- a := c.x
+ a := c.pt
a := t.lift (newCone D c)
unit' :=
t.hom_ext fun j =>
@@ -84,7 +84,7 @@ def conePoint : Algebra T where
/-- (Impl) Construct the lifted cone in `algebra T` which will be limiting. -/
@[simps]
def liftedCone : Cone D where
- x := conePoint D c t
+ pt := conePoint D c t
π :=
{ app := fun j => { f := c.π.app j }
naturality' := fun X Y f => by
@@ -162,7 +162,7 @@ with the colimiting cocone for `D ⋙ forget T`.
@[simps]
def newCocone : Cocone ((D ⋙ forget T) ⋙ ↑T)
where
- x := c.x
+ pt := c.pt
ι := γ ≫ c.ι
#align category_theory.monad.forget_creates_colimits.new_cocone CategoryTheory.Monad.ForgetCreatesColimits.newCocone
@@ -174,7 +174,7 @@ we will show is the colimiting object. We use the cocone constructed by `c` and
`T` preserves colimits to produce this morphism.
-/
@[reducible]
-def lambda : ((T : C ⥤ C).mapCocone c).x ⟶ c.x :=
+def lambda : ((T : C ⥤ C).mapCocone c).pt ⟶ c.pt :=
(isColimitOfPreserves _ t).desc (newCocone c)
#align category_theory.monad.forget_creates_colimits.lambda CategoryTheory.Monad.ForgetCreatesColimits.lambda
@@ -192,7 +192,7 @@ our `commuting` lemma.
-/
@[simps]
def coconePoint : Algebra T where
- a := c.x
+ a := c.pt
a := lambda c t
unit' := by
apply t.hom_ext
@@ -214,7 +214,7 @@ def coconePoint : Algebra T where
/-- (Impl) Construct the lifted cocone in `algebra T` which will be colimiting. -/
@[simps]
def liftedCocone : Cocone D where
- x := coconePoint c t
+ pt := coconePoint c t
ι :=
{ app := fun j =>
{ f := c.ι.app j
@@ -258,7 +258,7 @@ noncomputable instance forgetCreatesColimit (D : J ⥤ Algebra T)
[PreservesColimit ((D ⋙ forget T) ⋙ ↑T) (T : C ⥤ C)] : CreatesColimit D (forget T) :=
createsColimitOfReflectsIso fun c t =>
{ liftedCocone :=
- { x := coconePoint c t
+ { pt := coconePoint c t
ι :=
{ app := fun j =>
{ f := c.ι.app j
@@ -296,7 +296,7 @@ variable {J : Type u} [Category.{v} J]
instance comp_comparison_forget_hasLimit (F : J ⥤ D) (R : D ⥤ C) [MonadicRightAdjoint R]
[HasLimit (F ⋙ R)] :
HasLimit ((F ⋙ Monad.comparison (Adjunction.ofRightAdjoint R)) ⋙ Monad.forget _) :=
- @hasLimit_of_iso _ _ _ _ (F ⋙ R) _ _
+ @hasLimitOfIso _ _ _ _ (F ⋙ R) _ _
(isoWhiskerLeft F (Monad.comparisonForget (Adjunction.ofRightAdjoint R)).symm)
#align category_theory.comp_comparison_forget_has_limit CategoryTheory.comp_comparison_forget_hasLimit
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -106,7 +106,7 @@ def liftedConeIsLimit : IsLimit (liftedCone D c t)
rw [category.assoc, category.assoc, t.fac, new_cone_π_app, ← functor.map_comp_assoc,
t.fac, functor.map_cone_π_app]
apply (s.π.app j).h }
- uniq' s m J := by
+ uniq s m J := by
ext1
apply t.hom_ext
intro j
@@ -128,9 +128,10 @@ noncomputable instance forgetCreatesLimits : CreatesLimitsOfSize (forget T)
#align category_theory.monad.forget_creates_limits CategoryTheory.Monad.forgetCreatesLimits
/-- `D ⋙ forget T` has a limit, then `D` has a limit. -/
-theorem hasLimitOfCompForgetHasLimit (D : J ⥤ Algebra T) [HasLimit (D ⋙ forget T)] : HasLimit D :=
- hasLimitOfCreated D (forget T)
-#align category_theory.monad.has_limit_of_comp_forget_has_limit CategoryTheory.Monad.hasLimitOfCompForgetHasLimit
+theorem hasLimit_of_comp_forget_hasLimit (D : J ⥤ Algebra T) [HasLimit (D ⋙ forget T)] :
+ HasLimit D :=
+ hasLimit_of_created D (forget T)
+#align category_theory.monad.has_limit_of_comp_forget_has_limit CategoryTheory.Monad.hasLimit_of_comp_forget_hasLimit
namespace ForgetCreatesColimits
@@ -237,7 +238,7 @@ def liftedCoconeIsColimit : IsColimit (liftedCocone c t)
dsimp
rw [← functor.map_comp_assoc, ← category.assoc, t.fac, commuting, category.assoc, t.fac]
apply algebra.hom.h }
- uniq' s m J := by
+ uniq s m J := by
ext1
apply t.hom_ext
intro j
@@ -281,10 +282,10 @@ noncomputable instance forgetCreatesColimits [PreservesColimitsOfSize.{v, u} (T
/-- For `D : J ⥤ algebra T`, `D ⋙ forget T` has a colimit, then `D` has a colimit provided colimits
of shape `J` are preserved by `T`.
-/
-theorem forgetCreatesColimitsOfMonadPreserves [PreservesColimitsOfShape J (T : C ⥤ C)]
+theorem forget_creates_colimits_of_monad_preserves [PreservesColimitsOfShape J (T : C ⥤ C)]
(D : J ⥤ Algebra T) [HasColimit (D ⋙ forget T)] : HasColimit D :=
- hasColimitOfCreated D (forget T)
-#align category_theory.monad.forget_creates_colimits_of_monad_preserves CategoryTheory.Monad.forgetCreatesColimitsOfMonadPreserves
+ hasColimit_of_created D (forget T)
+#align category_theory.monad.forget_creates_colimits_of_monad_preserves CategoryTheory.Monad.forget_creates_colimits_of_monad_preserves
end Monad
@@ -292,17 +293,17 @@ variable {C : Type u₁} [Category.{v₁} C] {D : Type u₂} [Category.{v₂} D]
variable {J : Type u} [Category.{v} J]
-instance compComparisonForgetHasLimit (F : J ⥤ D) (R : D ⥤ C) [MonadicRightAdjoint R]
+instance comp_comparison_forget_hasLimit (F : J ⥤ D) (R : D ⥤ C) [MonadicRightAdjoint R]
[HasLimit (F ⋙ R)] :
HasLimit ((F ⋙ Monad.comparison (Adjunction.ofRightAdjoint R)) ⋙ Monad.forget _) :=
- @hasLimitOfIso _ _ _ _ (F ⋙ R) _ _
+ @hasLimit_of_iso _ _ _ _ (F ⋙ R) _ _
(isoWhiskerLeft F (Monad.comparisonForget (Adjunction.ofRightAdjoint R)).symm)
-#align category_theory.comp_comparison_forget_has_limit CategoryTheory.compComparisonForgetHasLimit
+#align category_theory.comp_comparison_forget_has_limit CategoryTheory.comp_comparison_forget_hasLimit
-instance compComparisonHasLimit (F : J ⥤ D) (R : D ⥤ C) [MonadicRightAdjoint R] [HasLimit (F ⋙ R)] :
- HasLimit (F ⋙ Monad.comparison (Adjunction.ofRightAdjoint R)) :=
- Monad.hasLimitOfCompForgetHasLimit (F ⋙ Monad.comparison (Adjunction.ofRightAdjoint R))
-#align category_theory.comp_comparison_has_limit CategoryTheory.compComparisonHasLimit
+instance comp_comparison_hasLimit (F : J ⥤ D) (R : D ⥤ C) [MonadicRightAdjoint R]
+ [HasLimit (F ⋙ R)] : HasLimit (F ⋙ Monad.comparison (Adjunction.ofRightAdjoint R)) :=
+ Monad.hasLimit_of_comp_forget_hasLimit (F ⋙ Monad.comparison (Adjunction.ofRightAdjoint R))
+#align category_theory.comp_comparison_has_limit CategoryTheory.comp_comparison_hasLimit
/-- Any monadic functor creates limits. -/
noncomputable def monadicCreatesLimits (R : D ⥤ C) [MonadicRightAdjoint R] :
@@ -350,26 +351,26 @@ noncomputable def monadicCreatesColimitsOfPreservesColimits (R : D ⥤ C) [Monad
section
-theorem hasLimitOfReflective (F : J ⥤ D) (R : D ⥤ C) [HasLimit (F ⋙ R)] [Reflective R] :
+theorem hasLimit_of_reflective (F : J ⥤ D) (R : D ⥤ C) [HasLimit (F ⋙ R)] [Reflective R] :
HasLimit F :=
haveI := monadicCreatesLimits.{v, u} R
has_limit_of_created F R
-#align category_theory.has_limit_of_reflective CategoryTheory.hasLimitOfReflective
+#align category_theory.has_limit_of_reflective CategoryTheory.hasLimit_of_reflective
/-- If `C` has limits of shape `J` then any reflective subcategory has limits of shape `J`. -/
-theorem hasLimitsOfShapeOfReflective [HasLimitsOfShape J C] (R : D ⥤ C) [Reflective R] :
+theorem hasLimitsOfShape_of_reflective [HasLimitsOfShape J C] (R : D ⥤ C) [Reflective R] :
HasLimitsOfShape J D :=
- { HasLimit := fun F => hasLimitOfReflective F R }
-#align category_theory.has_limits_of_shape_of_reflective CategoryTheory.hasLimitsOfShapeOfReflective
+ { HasLimit := fun F => hasLimit_of_reflective F R }
+#align category_theory.has_limits_of_shape_of_reflective CategoryTheory.hasLimitsOfShape_of_reflective
/-- If `C` has limits then any reflective subcategory has limits. -/
-theorem hasLimitsOfReflective (R : D ⥤ C) [HasLimitsOfSize.{v, u} C] [Reflective R] :
+theorem has_limits_of_reflective (R : D ⥤ C) [HasLimitsOfSize.{v, u} C] [Reflective R] :
HasLimitsOfSize.{v, u} D :=
{ HasLimitsOfShape := fun J 𝒥₁ => has_limits_of_shape_of_reflective R }
-#align category_theory.has_limits_of_reflective CategoryTheory.hasLimitsOfReflective
+#align category_theory.has_limits_of_reflective CategoryTheory.has_limits_of_reflective
/-- If `C` has colimits of shape `J` then any reflective subcategory has colimits of shape `J`. -/
-theorem hasColimitsOfShapeOfReflective (R : D ⥤ C) [Reflective R] [HasColimitsOfShape J C] :
+theorem hasColimitsOfShape_of_reflective (R : D ⥤ C) [Reflective R] [HasColimitsOfShape J C] :
HasColimitsOfShape J D :=
{
HasColimit := fun F =>
@@ -381,13 +382,13 @@ theorem hasColimitsOfShapeOfReflective (R : D ⥤ C) [Reflective R] [HasColimits
apply has_colimit.mk ⟨_, (is_colimit.precompose_inv_equiv _ _).symm t⟩
apply
(iso_whisker_left F (as_iso (adjunction.of_right_adjoint R).counit) : _) ≪≫ F.right_unitor }
-#align category_theory.has_colimits_of_shape_of_reflective CategoryTheory.hasColimitsOfShapeOfReflective
+#align category_theory.has_colimits_of_shape_of_reflective CategoryTheory.hasColimitsOfShape_of_reflective
/-- If `C` has colimits then any reflective subcategory has colimits. -/
-theorem hasColimitsOfReflective (R : D ⥤ C) [Reflective R] [HasColimitsOfSize.{v, u} C] :
+theorem has_colimits_of_reflective (R : D ⥤ C) [Reflective R] [HasColimitsOfSize.{v, u} C] :
HasColimitsOfSize.{v, u} D :=
{ HasColimitsOfShape := fun J 𝒥 => has_colimits_of_shape_of_reflective R }
-#align category_theory.has_colimits_of_reflective CategoryTheory.hasColimitsOfReflective
+#align category_theory.has_colimits_of_reflective CategoryTheory.has_colimits_of_reflective
/-- The reflector always preserves terminal objects. Note this in general doesn't apply to any other
limit.
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -324,7 +324,7 @@ noncomputable def monadicCreatesColimitOfPreservesColimit (R : D ⥤ C) (K : J
exact preservesColimitOfIsoDiagram _ (isoWhiskerRight i (leftAdjoint R ⋙ R)).symm
letI : CreatesColimit (K ⋙ A) B := CategoryTheory.Monad.forgetCreatesColimit _
letI : CreatesColimit K (A ⋙ B) := CategoryTheory.compCreatesColimit _ _
- let e := (Monad.comparisonForget (Adjunction.ofRightAdjoint R))
+ let e := Monad.comparisonForget (Adjunction.ofRightAdjoint R)
apply createsColimitOfNatIso e
#align category_theory.monadic_creates_colimit_of_preserves_colimit CategoryTheory.monadicCreatesColimitOfPreservesColimit
@@ -400,7 +400,7 @@ noncomputable def leftAdjointPreservesTerminalOfReflective (R : D ⥤ C) [Reflec
apply (asIso ((Adjunction.ofRightAdjoint R).counit.app _)).symm.trans
apply (leftAdjoint R).mapIso
letI := monadicCreatesLimits.{v, v} R
- let A := (CategoryTheory.preservesLimitOfCreatesLimitAndHasLimit F R)
+ let A := CategoryTheory.preservesLimitOfCreatesLimitAndHasLimit F R
apply (A.preserves (limit.isLimit F)).conePointUniqueUpToIso h
apply preservesLimitOfIsoDiagram _ (Functor.emptyExt (F ⋙ R) _)
#align category_theory.left_adjoint_preserves_terminal_of_reflective CategoryTheory.leftAdjointPreservesTerminalOfReflective
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -36,9 +36,7 @@ universe v u v₁ v₂ u₁ u₂
namespace Monad
variable {C : Type u₁} [Category.{v₁} C]
-
variable {T : Monad C}
-
variable {J : Type u} [Category.{v} J]
namespace ForgetCreatesLimits
@@ -279,7 +277,6 @@ theorem forget_creates_colimits_of_monad_preserves [PreservesColimitsOfShape J (
end Monad
variable {C : Type u₁} [Category.{v₁} C] {D : Type u₂} [Category.{v₂} D]
-
variable {J : Type u} [Category.{v} J]
instance comp_comparison_forget_hasLimit (F : J ⥤ D) (R : D ⥤ C) [MonadicRightAdjoint R]
refine
s (#10762)
I replaced a few "terminal" refine/refine'
s with exact
.
The strategy was very simple-minded: essentially any refine
whose following line had smaller indentation got replaced by exact
and then I cleaned up the mess.
This PR certainly leaves some further terminal refine
s, but maybe the current change is beneficial.
@@ -318,13 +318,13 @@ noncomputable def monadicCreatesColimitOfPreservesColimit (R : D ⥤ C) (K : J
(Adjunction.toMonad (Adjunction.ofRightAdjoint R)))
(Adjunction.toMonad (Adjunction.ofRightAdjoint R)).toFunctor := by
dsimp
- refine' preservesColimitOfIsoDiagram _ i.symm
+ exact preservesColimitOfIsoDiagram _ i.symm
letI : PreservesColimit
(((K ⋙ A) ⋙ Monad.forget (Adjunction.toMonad (Adjunction.ofRightAdjoint R))) ⋙
(Adjunction.toMonad (Adjunction.ofRightAdjoint R)).toFunctor)
(Adjunction.toMonad (Adjunction.ofRightAdjoint R)).toFunctor := by
dsimp
- refine' preservesColimitOfIsoDiagram _ (isoWhiskerRight i (leftAdjoint R ⋙ R)).symm
+ exact preservesColimitOfIsoDiagram _ (isoWhiskerRight i (leftAdjoint R ⋙ R)).symm
letI : CreatesColimit (K ⋙ A) B := CategoryTheory.Monad.forgetCreatesColimit _
letI : CreatesColimit K (A ⋙ B) := CategoryTheory.compCreatesColimit _ _
let e := (Monad.comparisonForget (Adjunction.ofRightAdjoint R))
@@ -343,8 +343,8 @@ noncomputable def monadicCreatesColimitsOfShapeOfPreservesColimitsOfShape (R : D
/-- A monadic functor creates colimits if it preserves colimits. -/
noncomputable def monadicCreatesColimitsOfPreservesColimits (R : D ⥤ C) [MonadicRightAdjoint R]
- [PreservesColimitsOfSize.{v, u} R] : CreatesColimitsOfSize.{v, u} R
- where CreatesColimitsOfShape :=
+ [PreservesColimitsOfSize.{v, u} R] : CreatesColimitsOfSize.{v, u} R where
+ CreatesColimitsOfShape :=
monadicCreatesColimitsOfShapeOfPreservesColimitsOfShape _
#align category_theory.monadic_creates_colimits_of_preserves_colimits CategoryTheory.monadicCreatesColimitsOfPreservesColimits
@@ -2,16 +2,13 @@
Copyright (c) 2019 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison, Bhavik Mehta
-
-! This file was ported from Lean 3 source module category_theory.monad.limits
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.Monad.Adjunction
import Mathlib.CategoryTheory.Adjunction.Limits
import Mathlib.CategoryTheory.Limits.Shapes.Terminal
+#align_import category_theory.monad.limits from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
/-!
# Limits and colimits in the category of algebras
@@ -259,7 +259,7 @@ noncomputable instance forgetCreatesColimit (D : J ⥤ Algebra T)
ext1
dsimp
erw [comp_id, c.w] } }
- validLift := Cocones.ext (Iso.refl _) (by aesop_cat)
+ validLift := Cocones.ext (Iso.refl _)
makesColimit := liftedCoconeIsColimit _ _ }
#align category_theory.monad.forget_creates_colimit CategoryTheory.Monad.forgetCreatesColimit
@@ -366,10 +366,10 @@ theorem hasLimitsOfShape_of_reflective [HasLimitsOfShape J C] (R : D ⥤ C) [Ref
#align category_theory.has_limits_of_shape_of_reflective CategoryTheory.hasLimitsOfShape_of_reflective
/-- If `C` has limits then any reflective subcategory has limits. -/
-theorem has_limits_of_reflective (R : D ⥤ C) [HasLimitsOfSize.{v, u} C] [Reflective R] :
+theorem hasLimits_of_reflective (R : D ⥤ C) [HasLimitsOfSize.{v, u} C] [Reflective R] :
HasLimitsOfSize.{v, u} D :=
⟨fun _ => hasLimitsOfShape_of_reflective R⟩
-#align category_theory.has_limits_of_reflective CategoryTheory.has_limits_of_reflective
+#align category_theory.has_limits_of_reflective CategoryTheory.hasLimits_of_reflective
/-- If `C` has colimits of shape `J` then any reflective subcategory has colimits of shape `J`. -/
theorem hasColimitsOfShape_of_reflective (R : D ⥤ C) [Reflective R] [HasColimitsOfShape J C] :
@@ -385,10 +385,10 @@ theorem hasColimitsOfShape_of_reflective (R : D ⥤ C) [Reflective R] [HasColimi
#align category_theory.has_colimits_of_shape_of_reflective CategoryTheory.hasColimitsOfShape_of_reflective
/-- If `C` has colimits then any reflective subcategory has colimits. -/
-theorem has_colimits_of_reflective (R : D ⥤ C) [Reflective R] [HasColimitsOfSize.{v, u} C] :
+theorem hasColimits_of_reflective (R : D ⥤ C) [Reflective R] [HasColimitsOfSize.{v, u} C] :
HasColimitsOfSize.{v, u} D :=
⟨fun _ => hasColimitsOfShape_of_reflective R⟩
-#align category_theory.has_colimits_of_reflective CategoryTheory.has_colimits_of_reflective
+#align category_theory.has_colimits_of_reflective CategoryTheory.hasColimits_of_reflective
/-- The reflector always preserves terminal objects. Note this in general doesn't apply to any other
limit.
fix-comments.py
on all files.@@ -271,7 +271,7 @@ noncomputable instance forgetCreatesColimits [PreservesColimitsOfSize.{v, u} (T
CreatesColimitsOfSize.{v, u} (forget T) where CreatesColimitsOfShape := by infer_instance
#align category_theory.monad.forget_creates_colimits CategoryTheory.Monad.forgetCreatesColimits
-/-- For `D : J ⥤ algebra T`, `D ⋙ forget T` has a colimit, then `D` has a colimit provided colimits
+/-- For `D : J ⥤ Algebra T`, `D ⋙ forget T` has a colimit, then `D` has a colimit provided colimits
of shape `J` are preserved by `T`.
-/
theorem forget_creates_colimits_of_monad_preserves [PreservesColimitsOfShape J (T : C ⥤ C)]
All dependencies are ported!