category_theory.monad.algebra
⟷
Mathlib.CategoryTheory.Monad.Algebra
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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -205,13 +205,13 @@ theorem algebra_iso_of_iso {A B : Algebra T} (f : A ⟶ B) [IsIso f.f] : IsIso f
-/
#print CategoryTheory.Monad.forget_reflects_iso /-
-instance forget_reflects_iso : ReflectsIsomorphisms T.forget
+instance forget_reflects_iso : CategoryTheory.Functor.ReflectsIsomorphisms T.forget
where reflects A B := algebra_iso_of_iso T
#align category_theory.monad.forget_reflects_iso CategoryTheory.Monad.forget_reflects_iso
-/
#print CategoryTheory.Monad.forget_faithful /-
-instance forget_faithful : Faithful T.forget where
+instance forget_faithful : CategoryTheory.Functor.Faithful T.forget where
#align category_theory.monad.forget_faithful CategoryTheory.Monad.forget_faithful
-/
@@ -495,13 +495,13 @@ theorem coalgebra_iso_of_iso {A B : Coalgebra G} (f : A ⟶ B) [IsIso f.f] : IsI
-/
#print CategoryTheory.Comonad.forget_reflects_iso /-
-instance forget_reflects_iso : ReflectsIsomorphisms G.forget
+instance forget_reflects_iso : CategoryTheory.Functor.ReflectsIsomorphisms G.forget
where reflects A B := coalgebra_iso_of_iso G
#align category_theory.comonad.forget_reflects_iso CategoryTheory.Comonad.forget_reflects_iso
-/
#print CategoryTheory.Comonad.forget_faithful /-
-instance forget_faithful : Faithful (forget G) where
+instance forget_faithful : CategoryTheory.Functor.Faithful (forget G) where
#align category_theory.comonad.forget_faithful CategoryTheory.Comonad.forget_faithful
-/
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.Basic
-import Mathbin.CategoryTheory.Adjunction.Basic
-import Mathbin.CategoryTheory.Functor.EpiMono
+import CategoryTheory.Monad.Basic
+import CategoryTheory.Adjunction.Basic
+import CategoryTheory.Functor.EpiMono
#align_import category_theory.monad.algebra from "leanprover-community/mathlib"@"86d1873c01a723aba6788f0b9051ae3d23b4c1c3"
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -49,10 +49,6 @@ structure Algebra (T : Monad C) : Type max u₁ v₁ where
#align category_theory.monad.algebra CategoryTheory.Monad.Algebra
-/
-restate_axiom algebra.unit'
-
-restate_axiom algebra.assoc'
-
attribute [reassoc] algebra.unit algebra.assoc
namespace Algebra
@@ -68,8 +64,6 @@ structure Hom (A B : Algebra T) where
#align category_theory.monad.algebra.hom CategoryTheory.Monad.Algebra.Hom
-/
-restate_axiom hom.h'
-
attribute [simp, reassoc] hom.h
namespace Hom
@@ -348,10 +342,6 @@ structure Coalgebra (G : Comonad C) : Type max u₁ v₁ where
#align category_theory.comonad.coalgebra CategoryTheory.Comonad.Coalgebra
-/
-restate_axiom coalgebra.counit'
-
-restate_axiom coalgebra.coassoc'
-
attribute [reassoc] coalgebra.counit coalgebra.coassoc
namespace Coalgebra
@@ -367,8 +357,6 @@ structure Hom (A B : Coalgebra G) where
#align category_theory.comonad.coalgebra.hom CategoryTheory.Comonad.Coalgebra.Hom
-/
-restate_axiom hom.h'
-
attribute [simp, reassoc] hom.h
namespace Hom
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.algebra
-! 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.Basic
import Mathbin.CategoryTheory.Adjunction.Basic
import Mathbin.CategoryTheory.Functor.EpiMono
+#align_import category_theory.monad.algebra from "leanprover-community/mathlib"@"86d1873c01a723aba6788f0b9051ae3d23b4c1c3"
+
/-!
# Eilenberg-Moore (co)algebras for a (co)monad
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -135,6 +135,7 @@ instance eilenbergMoore : Category (Algebra T) where
#align category_theory.monad.algebra.EilenbergMoore CategoryTheory.Monad.Algebra.eilenbergMoore
-/
+#print CategoryTheory.Monad.Algebra.isoMk /-
/--
To construct an isomorphism of algebras, it suffices to give an isomorphism of the carriers which
commutes with the structure morphisms.
@@ -147,6 +148,7 @@ def isoMk {A B : Algebra T} (h : A.A ≅ B.A) (w : (T : C ⥤ C).map h.Hom ≫ B
{ f := h.inv
h' := by rw [h.eq_comp_inv, category.assoc, ← w, ← functor.map_comp_assoc]; simp }
#align category_theory.monad.algebra.iso_mk CategoryTheory.Monad.Algebra.isoMk
+-/
end Algebra
@@ -255,6 +257,7 @@ theorem ofRightAdjoint_forget : Adjunction.ofRightAdjoint T.forget = T.adj :=
#align category_theory.monad.of_right_adjoint_forget CategoryTheory.Monad.ofRightAdjoint_forget
-/
+#print CategoryTheory.Monad.algebraFunctorOfMonadHom /-
/--
Given a monad morphism from `T₂` to `T₁`, we get a functor from the algebras of `T₁` to algebras of
`T₂`.
@@ -269,7 +272,9 @@ def algebraFunctorOfMonadHom {T₁ T₂ : Monad C} (h : T₂ ⟶ T₁) : Algebra
assoc' := by dsimp; simp [A.assoc] }
map A₁ A₂ f := { f := f.f }
#align category_theory.monad.algebra_functor_of_monad_hom CategoryTheory.Monad.algebraFunctorOfMonadHom
+-/
+#print CategoryTheory.Monad.algebraFunctorOfMonadHomId /-
/--
The identity monad morphism induces the identity functor from the category of algebras to itself.
-/
@@ -278,7 +283,9 @@ def algebraFunctorOfMonadHomId {T₁ : Monad C} : algebraFunctorOfMonadHom (𝟙
NatIso.ofComponents (fun X => Algebra.isoMk (Iso.refl _) (by dsimp; simp)) fun X Y f => by ext;
dsimp; simp
#align category_theory.monad.algebra_functor_of_monad_hom_id CategoryTheory.Monad.algebraFunctorOfMonadHomId
+-/
+#print CategoryTheory.Monad.algebraFunctorOfMonadHomComp /-
/-- A composition of monad morphisms gives the composition of corresponding functors.
-/
@[simps (config := { rhsMd := semireducible })]
@@ -287,7 +294,9 @@ def algebraFunctorOfMonadHomComp {T₁ T₂ T₃ : Monad C} (f : T₁ ⟶ T₂)
NatIso.ofComponents (fun X => Algebra.isoMk (Iso.refl _) (by dsimp; simp)) fun X Y f => by ext;
dsimp; simp
#align category_theory.monad.algebra_functor_of_monad_hom_comp CategoryTheory.Monad.algebraFunctorOfMonadHomComp
+-/
+#print CategoryTheory.Monad.algebraFunctorOfMonadHomEq /-
/-- If `f` and `g` are two equal morphisms of monads, then the functors of algebras induced by them
are isomorphic.
We define it like this as opposed to using `eq_to_iso` so that the components are nicer to prove
@@ -299,7 +308,9 @@ def algebraFunctorOfMonadHomEq {T₁ T₂ : Monad C} {f g : T₁ ⟶ T₂} (h :
NatIso.ofComponents (fun X => Algebra.isoMk (Iso.refl _) (by dsimp; simp [h])) fun X Y f => by
ext; dsimp; simp
#align category_theory.monad.algebra_functor_of_monad_hom_eq CategoryTheory.Monad.algebraFunctorOfMonadHomEq
+-/
+#print CategoryTheory.Monad.algebraEquivOfIsoMonads /-
/-- Isomorphic monads give equivalent categories of algebras. Furthermore, they are equivalent as
categories over `C`, that is, we have `algebra_equiv_of_iso_monads h ⋙ forget = forget`.
-/
@@ -315,12 +326,15 @@ def algebraEquivOfIsoMonads {T₁ T₂ : Monad C} (h : T₁ ≅ T₂) : Algebra
(algebraFunctorOfMonadHomComp _ _).symm ≪≫
algebraFunctorOfMonadHomEq (by simp) ≪≫ algebraFunctorOfMonadHomId
#align category_theory.monad.algebra_equiv_of_iso_monads CategoryTheory.Monad.algebraEquivOfIsoMonads
+-/
+#print CategoryTheory.Monad.algebra_equiv_of_iso_monads_comp_forget /-
@[simp]
theorem algebra_equiv_of_iso_monads_comp_forget {T₁ T₂ : Monad C} (h : T₁ ⟶ T₂) :
algebraFunctorOfMonadHom h ⋙ forget _ = forget _ :=
rfl
#align category_theory.monad.algebra_equiv_of_iso_monads_comp_forget CategoryTheory.Monad.algebra_equiv_of_iso_monads_comp_forget
+-/
end Monad
@@ -417,6 +431,7 @@ instance eilenbergMoore : Category (Coalgebra G) where
#align category_theory.comonad.coalgebra.EilenbergMoore CategoryTheory.Comonad.Coalgebra.eilenbergMoore
-/
+#print CategoryTheory.Comonad.Coalgebra.isoMk /-
/--
To construct an isomorphism of coalgebras, it suffices to give an isomorphism of the carriers which
commutes with the structure morphisms.
@@ -429,6 +444,7 @@ def isoMk {A B : Coalgebra G} (h : A.A ≅ B.A) (w : A.a ≫ (G : C ⥤ C).map h
{ f := h.inv
h' := by rw [h.eq_inv_comp, ← reassoc_of w, ← functor.map_comp]; simp }
#align category_theory.comonad.coalgebra.iso_mk CategoryTheory.Comonad.Coalgebra.isoMk
+-/
end Coalgebra
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -135,9 +135,6 @@ instance eilenbergMoore : Category (Algebra T) where
#align category_theory.monad.algebra.EilenbergMoore CategoryTheory.Monad.Algebra.eilenbergMoore
-/
-/- warning: category_theory.monad.algebra.iso_mk -> CategoryTheory.Monad.Algebra.isoMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra.iso_mk CategoryTheory.Monad.Algebra.isoMkₓ'. -/
/--
To construct an isomorphism of algebras, it suffices to give an isomorphism of the carriers which
commutes with the structure morphisms.
@@ -258,12 +255,6 @@ theorem ofRightAdjoint_forget : Adjunction.ofRightAdjoint T.forget = T.adj :=
#align category_theory.monad.of_right_adjoint_forget CategoryTheory.Monad.ofRightAdjoint_forget
-/
-/- warning: category_theory.monad.algebra_functor_of_monad_hom -> CategoryTheory.Monad.algebraFunctorOfMonadHom is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1}, (Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₂ T₁) -> (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1}, (Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₂ T₁) -> (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂))
-Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_functor_of_monad_hom CategoryTheory.Monad.algebraFunctorOfMonadHomₓ'. -/
/--
Given a monad morphism from `T₂` to `T₁`, we get a functor from the algebras of `T₁` to algebras of
`T₂`.
@@ -279,12 +270,6 @@ def algebraFunctorOfMonadHom {T₁ T₂ : Monad C} (h : T₂ ⟶ T₁) : Algebra
map A₁ A₂ f := { f := f.f }
#align category_theory.monad.algebra_functor_of_monad_hom CategoryTheory.Monad.algebraFunctorOfMonadHom
-/- warning: category_theory.monad.algebra_functor_of_monad_hom_id -> CategoryTheory.Monad.algebraFunctorOfMonadHomId is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1}, CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₁ T₁ (CategoryTheory.CategoryStruct.id.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1)) T₁)) (CategoryTheory.Functor.id.{u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1}, CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₁ T₁ (CategoryTheory.CategoryStruct.id.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1)) T₁)) (CategoryTheory.Functor.id.{u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁))
-Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_functor_of_monad_hom_id CategoryTheory.Monad.algebraFunctorOfMonadHomIdₓ'. -/
/--
The identity monad morphism induces the identity functor from the category of algebras to itself.
-/
@@ -294,12 +279,6 @@ def algebraFunctorOfMonadHomId {T₁ : Monad C} : algebraFunctorOfMonadHom (𝟙
dsimp; simp
#align category_theory.monad.algebra_functor_of_monad_hom_id CategoryTheory.Monad.algebraFunctorOfMonadHomId
-/- warning: category_theory.monad.algebra_functor_of_monad_hom_comp -> CategoryTheory.Monad.algebraFunctorOfMonadHomComp is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₃ : CategoryTheory.Monad.{u1, u2} C _inst_1} (f : Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₁ T₂) (g : Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₂ T₃), CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₃ T₁ (CategoryTheory.CategoryStruct.comp.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1)) T₁ T₂ T₃ f g)) (CategoryTheory.Functor.comp.{u1, u1, u1, max u2 u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₃ T₂ g) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ f))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₃ : CategoryTheory.Monad.{u1, u2} C _inst_1} (f : Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₁ T₂) (g : Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₂ T₃), CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₃ T₁ (CategoryTheory.CategoryStruct.comp.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1)) T₁ T₂ T₃ f g)) (CategoryTheory.Functor.comp.{u1, u1, u1, max u2 u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₃ T₂ g) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ f))
-Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_functor_of_monad_hom_comp CategoryTheory.Monad.algebraFunctorOfMonadHomCompₓ'. -/
/-- A composition of monad morphisms gives the composition of corresponding functors.
-/
@[simps (config := { rhsMd := semireducible })]
@@ -309,12 +288,6 @@ def algebraFunctorOfMonadHomComp {T₁ T₂ T₃ : Monad C} (f : T₁ ⟶ T₂)
dsimp; simp
#align category_theory.monad.algebra_functor_of_monad_hom_comp CategoryTheory.Monad.algebraFunctorOfMonadHomComp
-/- warning: category_theory.monad.algebra_functor_of_monad_hom_eq -> CategoryTheory.Monad.algebraFunctorOfMonadHomEq is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} {f : Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₁ T₂} {g : Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₁ T₂}, (Eq.{succ (max u2 u1)} (Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₁ T₂) f g) -> (CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ f) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ g))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} {f : Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₁ T₂} {g : Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₁ T₂}, (Eq.{max (succ u2) (succ u1)} (Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₁ T₂) f g) -> (CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ f) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ g))
-Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_functor_of_monad_hom_eq CategoryTheory.Monad.algebraFunctorOfMonadHomEqₓ'. -/
/-- If `f` and `g` are two equal morphisms of monads, then the functors of algebras induced by them
are isomorphic.
We define it like this as opposed to using `eq_to_iso` so that the components are nicer to prove
@@ -327,12 +300,6 @@ def algebraFunctorOfMonadHomEq {T₁ T₂ : Monad C} {f g : T₁ ⟶ T₂} (h :
ext; dsimp; simp
#align category_theory.monad.algebra_functor_of_monad_hom_eq CategoryTheory.Monad.algebraFunctorOfMonadHomEq
-/- warning: category_theory.monad.algebra_equiv_of_iso_monads -> CategoryTheory.Monad.algebraEquivOfIsoMonads is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1}, (CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1) T₁ T₂) -> (CategoryTheory.Equivalence.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂))
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1}, (CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1) T₁ T₂) -> (CategoryTheory.Equivalence.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂))
-Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_equiv_of_iso_monads CategoryTheory.Monad.algebraEquivOfIsoMonadsₓ'. -/
/-- Isomorphic monads give equivalent categories of algebras. Furthermore, they are equivalent as
categories over `C`, that is, we have `algebra_equiv_of_iso_monads h ⋙ forget = forget`.
-/
@@ -349,12 +316,6 @@ def algebraEquivOfIsoMonads {T₁ T₂ : Monad C} (h : T₁ ≅ T₂) : Algebra
algebraFunctorOfMonadHomEq (by simp) ≪≫ algebraFunctorOfMonadHomId
#align category_theory.monad.algebra_equiv_of_iso_monads CategoryTheory.Monad.algebraEquivOfIsoMonads
-/- warning: category_theory.monad.algebra_equiv_of_iso_monads_comp_forget -> CategoryTheory.Monad.algebra_equiv_of_iso_monads_comp_forget is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} (h : Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₁ T₂), Eq.{succ (max u2 u1)} (CategoryTheory.Functor.{u1, u1, max u2 u1, u2} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) C _inst_1) (CategoryTheory.Functor.comp.{u1, u1, u1, max u2 u1, max u2 u1, u2} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) C _inst_1 (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ h) (CategoryTheory.Monad.forget.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.forget.{u1, u2} C _inst_1 T₂)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} (h : Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₁ T₂), Eq.{max (succ u2) (succ u1)} (CategoryTheory.Functor.{u1, u1, max u2 u1, u2} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) C _inst_1) (CategoryTheory.Functor.comp.{u1, u1, u1, max u2 u1, max u2 u1, u2} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) C _inst_1 (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ h) (CategoryTheory.Monad.forget.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.forget.{u1, u2} C _inst_1 T₂)
-Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_equiv_of_iso_monads_comp_forget CategoryTheory.Monad.algebra_equiv_of_iso_monads_comp_forgetₓ'. -/
@[simp]
theorem algebra_equiv_of_iso_monads_comp_forget {T₁ T₂ : Monad C} (h : T₁ ⟶ T₂) :
algebraFunctorOfMonadHom h ⋙ forget _ = forget _ :=
@@ -456,9 +417,6 @@ instance eilenbergMoore : Category (Coalgebra G) where
#align category_theory.comonad.coalgebra.EilenbergMoore CategoryTheory.Comonad.Coalgebra.eilenbergMoore
-/
-/- warning: category_theory.comonad.coalgebra.iso_mk -> CategoryTheory.Comonad.Coalgebra.isoMk is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.comonad.coalgebra.iso_mk CategoryTheory.Comonad.Coalgebra.isoMkₓ'. -/
/--
To construct an isomorphism of coalgebras, it suffices to give an isomorphism of the carriers which
commutes with the structure morphisms.
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -148,9 +148,7 @@ def isoMk {A B : Algebra T} (h : A.A ≅ B.A) (w : (T : C ⥤ C).map h.Hom ≫ B
Hom := { f := h.Hom }
inv :=
{ f := h.inv
- h' := by
- rw [h.eq_comp_inv, category.assoc, ← w, ← functor.map_comp_assoc]
- simp }
+ h' := by rw [h.eq_comp_inv, category.assoc, ← w, ← functor.map_comp_assoc]; simp }
#align category_theory.monad.algebra.iso_mk CategoryTheory.Monad.Algebra.isoMk
end Algebra
@@ -197,13 +195,8 @@ def adj : T.free ⊣ T.forget :=
{ toFun := fun f => T.η.app X ≫ f.f
invFun := fun f =>
{ f := T.map f ≫ Y.a
- h' := by
- dsimp
- simp [← Y.assoc, ← T.μ.naturality_assoc] }
- left_inv := fun f => by
- ext
- dsimp
- simp
+ h' := by dsimp; simp [← Y.assoc, ← T.μ.naturality_assoc] }
+ left_inv := fun f => by ext; dsimp; simp
right_inv := fun f =>
by
dsimp only [forget_obj, monad_to_functor_eq_coe]
@@ -217,10 +210,7 @@ def adj : T.free ⊣ T.forget :=
-/
theorem algebra_iso_of_iso {A B : Algebra T} (f : A ⟶ B) [IsIso f.f] : IsIso f :=
⟨⟨{ f := inv f.f
- h' := by
- rw [is_iso.eq_comp_inv f.f, category.assoc, ← f.h]
- simp },
- by tidy⟩⟩
+ h' := by rw [is_iso.eq_comp_inv f.f, category.assoc, ← f.h]; simp }, by tidy⟩⟩
#align category_theory.monad.algebra_iso_of_iso CategoryTheory.Monad.algebra_iso_of_iso
-/
@@ -284,12 +274,8 @@ def algebraFunctorOfMonadHom {T₁ T₂ : Monad C} (h : T₂ ⟶ T₁) : Algebra
obj A :=
{ A := A.A
a := h.app A.A ≫ A.a
- unit' := by
- dsimp
- simp [A.unit]
- assoc' := by
- dsimp
- simp [A.assoc] }
+ unit' := by dsimp; simp [A.unit]
+ assoc' := by dsimp; simp [A.assoc] }
map A₁ A₂ f := { f := f.f }
#align category_theory.monad.algebra_functor_of_monad_hom CategoryTheory.Monad.algebraFunctorOfMonadHom
@@ -304,16 +290,8 @@ The identity monad morphism induces the identity functor from the category of al
-/
@[simps (config := { rhsMd := semireducible })]
def algebraFunctorOfMonadHomId {T₁ : Monad C} : algebraFunctorOfMonadHom (𝟙 T₁) ≅ 𝟭 _ :=
- NatIso.ofComponents
- (fun X =>
- Algebra.isoMk (Iso.refl _)
- (by
- dsimp
- simp))
- fun X Y f => by
- ext
- dsimp
- simp
+ NatIso.ofComponents (fun X => Algebra.isoMk (Iso.refl _) (by dsimp; simp)) fun X Y f => by ext;
+ dsimp; simp
#align category_theory.monad.algebra_functor_of_monad_hom_id CategoryTheory.Monad.algebraFunctorOfMonadHomId
/- warning: category_theory.monad.algebra_functor_of_monad_hom_comp -> CategoryTheory.Monad.algebraFunctorOfMonadHomComp is a dubious translation:
@@ -327,16 +305,8 @@ Case conversion may be inaccurate. Consider using '#align category_theory.monad.
@[simps (config := { rhsMd := semireducible })]
def algebraFunctorOfMonadHomComp {T₁ T₂ T₃ : Monad C} (f : T₁ ⟶ T₂) (g : T₂ ⟶ T₃) :
algebraFunctorOfMonadHom (f ≫ g) ≅ algebraFunctorOfMonadHom g ⋙ algebraFunctorOfMonadHom f :=
- NatIso.ofComponents
- (fun X =>
- Algebra.isoMk (Iso.refl _)
- (by
- dsimp
- simp))
- fun X Y f => by
- ext
- dsimp
- simp
+ NatIso.ofComponents (fun X => Algebra.isoMk (Iso.refl _) (by dsimp; simp)) fun X Y f => by ext;
+ dsimp; simp
#align category_theory.monad.algebra_functor_of_monad_hom_comp CategoryTheory.Monad.algebraFunctorOfMonadHomComp
/- warning: category_theory.monad.algebra_functor_of_monad_hom_eq -> CategoryTheory.Monad.algebraFunctorOfMonadHomEq is a dubious translation:
@@ -353,16 +323,8 @@ lemmas about.
@[simps (config := { rhsMd := semireducible })]
def algebraFunctorOfMonadHomEq {T₁ T₂ : Monad C} {f g : T₁ ⟶ T₂} (h : f = g) :
algebraFunctorOfMonadHom f ≅ algebraFunctorOfMonadHom g :=
- NatIso.ofComponents
- (fun X =>
- Algebra.isoMk (Iso.refl _)
- (by
- dsimp
- simp [h]))
- fun X Y f => by
- ext
- dsimp
- simp
+ NatIso.ofComponents (fun X => Algebra.isoMk (Iso.refl _) (by dsimp; simp [h])) fun X Y f => by
+ ext; dsimp; simp
#align category_theory.monad.algebra_functor_of_monad_hom_eq CategoryTheory.Monad.algebraFunctorOfMonadHomEq
/- warning: category_theory.monad.algebra_equiv_of_iso_monads -> CategoryTheory.Monad.algebraEquivOfIsoMonads is a dubious translation:
@@ -507,9 +469,7 @@ def isoMk {A B : Coalgebra G} (h : A.A ≅ B.A) (w : A.a ≫ (G : C ⥤ C).map h
Hom := { f := h.Hom }
inv :=
{ f := h.inv
- h' := by
- rw [h.eq_inv_comp, ← reassoc_of w, ← functor.map_comp]
- simp }
+ h' := by rw [h.eq_inv_comp, ← reassoc_of w, ← functor.map_comp]; simp }
#align category_theory.comonad.coalgebra.iso_mk CategoryTheory.Comonad.Coalgebra.isoMk
end Coalgebra
@@ -555,12 +515,9 @@ def adj : G.forget ⊣ G.cofree :=
homEquiv := fun X Y =>
{ toFun := fun f =>
{ f := X.a ≫ G.map f
- h' := by
- dsimp
- simp [← coalgebra.coassoc_assoc] }
+ h' := by dsimp; simp [← coalgebra.coassoc_assoc] }
invFun := fun g => g.f ≫ G.ε.app Y
- left_inv := fun f => by
- dsimp
+ left_inv := fun f => by dsimp;
rw [category.assoc, G.ε.naturality, functor.id_map, X.counit_assoc]
right_inv := fun g => by
ext1; dsimp
@@ -574,10 +531,7 @@ def adj : G.forget ⊣ G.cofree :=
-/
theorem coalgebra_iso_of_iso {A B : Coalgebra G} (f : A ⟶ B) [IsIso f.f] : IsIso f :=
⟨⟨{ f := inv f.f
- h' := by
- rw [is_iso.eq_inv_comp f.f, ← f.h_assoc]
- simp },
- by tidy⟩⟩
+ h' := by rw [is_iso.eq_inv_comp f.f, ← f.h_assoc]; simp }, by tidy⟩⟩
#align category_theory.comonad.coalgebra_iso_of_iso CategoryTheory.Comonad.coalgebra_iso_of_iso
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -136,10 +136,7 @@ instance eilenbergMoore : Category (Algebra T) where
-/
/- warning: category_theory.monad.algebra.iso_mk -> CategoryTheory.Monad.Algebra.isoMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T : CategoryTheory.Monad.{u1, u2} C _inst_1} {A : CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T} {B : CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T} (h : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u1, u2} C _inst_1)))) T) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u1, u2} C _inst_1)))) T) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u1, u2} C _inst_1)))) T) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (CategoryTheory.Functor.map.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u1, u2} C _inst_1)))) T) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) h)) (CategoryTheory.Monad.Algebra.a.{u1, u2} C _inst_1 T B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u1, u2} C _inst_1)))) T) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (CategoryTheory.Monad.Algebra.a.{u1, u2} C _inst_1 T A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) h))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T) A B)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T : CategoryTheory.Monad.{u1, u2} C _inst_1} {A : CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T} {B : CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T} (h : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u1, u2} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u1, u2} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u1, u2} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (Prefunctor.map.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u1, u2} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) h)) (CategoryTheory.Monad.Algebra.a.{u1, u2} C _inst_1 T B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u1, u2} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (CategoryTheory.Monad.Algebra.a.{u1, u2} C _inst_1 T A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) h))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T) A B)
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra.iso_mk CategoryTheory.Monad.Algebra.isoMkₓ'. -/
/--
To construct an isomorphism of algebras, it suffices to give an isomorphism of the carriers which
@@ -498,10 +495,7 @@ instance eilenbergMoore : Category (Coalgebra G) where
-/
/- warning: category_theory.comonad.coalgebra.iso_mk -> CategoryTheory.Comonad.Coalgebra.isoMk is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {G : CategoryTheory.Comonad.{u1, u2} C _inst_1} {A : CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G} {B : CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G} (h : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeComonad.{u1, u2} C _inst_1)))) G) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeComonad.{u1, u2} C _inst_1)))) G) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeComonad.{u1, u2} C _inst_1)))) G) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)) (CategoryTheory.Comonad.Coalgebra.a.{u1, u2} C _inst_1 G A) (CategoryTheory.Functor.map.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeComonad.{u1, u2} C _inst_1)))) G) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) h))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeComonad.{u1, u2} C _inst_1)))) G) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) h) (CategoryTheory.Comonad.Coalgebra.a.{u1, u2} C _inst_1 G B))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G) (CategoryTheory.Comonad.Coalgebra.eilenbergMoore.{u1, u2} C _inst_1 G) A B)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {G : CategoryTheory.Comonad.{u1, u2} C _inst_1} {A : CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G} {B : CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G} (h : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Comonad.toFunctor.{u1, u2} C _inst_1 G)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Comonad.toFunctor.{u1, u2} C _inst_1 G)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Comonad.toFunctor.{u1, u2} C _inst_1 G)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)) (CategoryTheory.Comonad.Coalgebra.a.{u1, u2} C _inst_1 G A) (Prefunctor.map.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Comonad.toFunctor.{u1, u2} C _inst_1 G)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) h))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Comonad.toFunctor.{u1, u2} C _inst_1 G)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) h) (CategoryTheory.Comonad.Coalgebra.a.{u1, u2} C _inst_1 G B))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G) (CategoryTheory.Comonad.Coalgebra.eilenbergMoore.{u1, u2} C _inst_1 G) A B)
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.comonad.coalgebra.iso_mk CategoryTheory.Comonad.Coalgebra.isoMkₓ'. -/
/--
To construct an isomorphism of coalgebras, it suffices to give an isomorphism of the carriers which
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -56,7 +56,7 @@ restate_axiom algebra.unit'
restate_axiom algebra.assoc'
-attribute [reassoc.1] algebra.unit algebra.assoc
+attribute [reassoc] algebra.unit algebra.assoc
namespace Algebra
@@ -73,7 +73,7 @@ structure Hom (A B : Algebra T) where
restate_axiom hom.h'
-attribute [simp, reassoc.1] hom.h
+attribute [simp, reassoc] hom.h
namespace Hom
@@ -421,7 +421,7 @@ restate_axiom coalgebra.counit'
restate_axiom coalgebra.coassoc'
-attribute [reassoc.1] coalgebra.counit coalgebra.coassoc
+attribute [reassoc] coalgebra.counit coalgebra.coassoc
namespace Coalgebra
@@ -438,7 +438,7 @@ structure Hom (A B : Coalgebra G) where
restate_axiom hom.h'
-attribute [simp, reassoc.1] hom.h
+attribute [simp, reassoc] hom.h
namespace Hom
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.algebra
-! leanprover-community/mathlib commit 14b69e9f3c16630440a2cbd46f1ddad0d561dee7
+! 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.Functor.EpiMono
/-!
# Eilenberg-Moore (co)algebras for a (co)monad
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
This file defines Eilenberg-Moore (co)algebras for a (co)monad,
and provides the category instance for them.
mathlib commit https://github.com/leanprover-community/mathlib/commit/cd8fafa2fac98e1a67097e8a91ad9901cfde48af
@@ -38,14 +38,16 @@ variable {C : Type u₁} [Category.{v₁} C]
namespace Monad
+#print CategoryTheory.Monad.Algebra /-
/-- An Eilenberg-Moore algebra for a monad `T`.
cf Definition 5.2.3 in [Riehl][riehl2017]. -/
structure Algebra (T : Monad C) : Type max u₁ v₁ where
- a : C
+ A : C
a : (T : C ⥤ C).obj A ⟶ A
unit' : T.η.app A ≫ a = 𝟙 A := by obviously
assoc' : T.μ.app A ≫ a = (T : C ⥤ C).map a ≫ a := by obviously
#align category_theory.monad.algebra CategoryTheory.Monad.Algebra
+-/
restate_axiom algebra.unit'
@@ -57,12 +59,14 @@ namespace Algebra
variable {T : Monad C}
+#print CategoryTheory.Monad.Algebra.Hom /-
/-- A morphism of Eilenberg–Moore algebras for the monad `T`. -/
@[ext]
structure Hom (A B : Algebra T) where
- f : A.a ⟶ B.a
+ f : A.A ⟶ B.A
h' : (T : C ⥤ C).map f ≫ B.a = A.a ≫ f := by obviously
#align category_theory.monad.algebra.hom CategoryTheory.Monad.Algebra.Hom
+-/
restate_axiom hom.h'
@@ -70,16 +74,20 @@ attribute [simp, reassoc.1] hom.h
namespace Hom
+#print CategoryTheory.Monad.Algebra.Hom.id /-
/-- The identity homomorphism for an Eilenberg–Moore algebra. -/
-def id (A : Algebra T) : Hom A A where f := 𝟙 A.a
+def id (A : Algebra T) : Hom A A where f := 𝟙 A.A
#align category_theory.monad.algebra.hom.id CategoryTheory.Monad.Algebra.Hom.id
+-/
instance (A : Algebra T) : Inhabited (Hom A A) :=
⟨{ f := 𝟙 _ }⟩
+#print CategoryTheory.Monad.Algebra.Hom.comp /-
/-- Composition of Eilenberg–Moore algebra homomorphisms. -/
def comp {P Q R : Algebra T} (f : Hom P Q) (g : Hom Q R) : Hom P R where f := f.f ≫ g.f
#align category_theory.monad.algebra.hom.comp CategoryTheory.Monad.Algebra.Hom.comp
+-/
end Hom
@@ -88,38 +96,54 @@ instance : CategoryStruct (Algebra T) where
id := Hom.id
comp := @Hom.comp _ _ _
+#print CategoryTheory.Monad.Algebra.comp_eq_comp /-
@[simp]
theorem comp_eq_comp {A A' A'' : Algebra T} (f : A ⟶ A') (g : A' ⟶ A'') :
Algebra.Hom.comp f g = f ≫ g :=
rfl
#align category_theory.monad.algebra.comp_eq_comp CategoryTheory.Monad.Algebra.comp_eq_comp
+-/
+#print CategoryTheory.Monad.Algebra.id_eq_id /-
@[simp]
theorem id_eq_id (A : Algebra T) : Algebra.Hom.id A = 𝟙 A :=
rfl
#align category_theory.monad.algebra.id_eq_id CategoryTheory.Monad.Algebra.id_eq_id
+-/
+#print CategoryTheory.Monad.Algebra.id_f /-
@[simp]
-theorem id_f (A : Algebra T) : (𝟙 A : A ⟶ A).f = 𝟙 A.a :=
+theorem id_f (A : Algebra T) : (𝟙 A : A ⟶ A).f = 𝟙 A.A :=
rfl
#align category_theory.monad.algebra.id_f CategoryTheory.Monad.Algebra.id_f
+-/
+#print CategoryTheory.Monad.Algebra.comp_f /-
@[simp]
theorem comp_f {A A' A'' : Algebra T} (f : A ⟶ A') (g : A' ⟶ A'') : (f ≫ g).f = f.f ≫ g.f :=
rfl
#align category_theory.monad.algebra.comp_f CategoryTheory.Monad.Algebra.comp_f
+-/
+#print CategoryTheory.Monad.Algebra.eilenbergMoore /-
/-- The category of Eilenberg-Moore algebras for a monad.
cf Definition 5.2.4 in [Riehl][riehl2017]. -/
instance eilenbergMoore : Category (Algebra T) where
#align category_theory.monad.algebra.EilenbergMoore CategoryTheory.Monad.Algebra.eilenbergMoore
+-/
+/- warning: category_theory.monad.algebra.iso_mk -> CategoryTheory.Monad.Algebra.isoMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T : CategoryTheory.Monad.{u1, u2} C _inst_1} {A : CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T} {B : CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T} (h : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u1, u2} C _inst_1)))) T) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u1, u2} C _inst_1)))) T) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u1, u2} C _inst_1)))) T) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (CategoryTheory.Functor.map.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u1, u2} C _inst_1)))) T) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) h)) (CategoryTheory.Monad.Algebra.a.{u1, u2} C _inst_1 T B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeMonad.{u1, u2} C _inst_1)))) T) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (CategoryTheory.Monad.Algebra.a.{u1, u2} C _inst_1 T A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) h))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T) A B)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T : CategoryTheory.Monad.{u1, u2} C _inst_1} {A : CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T} {B : CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T} (h : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u1, u2} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u1, u2} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u1, u2} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (Prefunctor.map.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u1, u2} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) h)) (CategoryTheory.Monad.Algebra.a.{u1, u2} C _inst_1 T B)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Monad.toFunctor.{u1, u2} C _inst_1 T)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A)) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) (CategoryTheory.Monad.Algebra.a.{u1, u2} C _inst_1 T A) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T A) (CategoryTheory.Monad.Algebra.A.{u1, u2} C _inst_1 T B) h))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T) A B)
+Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra.iso_mk CategoryTheory.Monad.Algebra.isoMkₓ'. -/
/--
To construct an isomorphism of algebras, it suffices to give an isomorphism of the carriers which
commutes with the structure morphisms.
-/
@[simps]
-def isoMk {A B : Algebra T} (h : A.a ≅ B.a) (w : (T : C ⥤ C).map h.Hom ≫ B.a = A.a ≫ h.Hom) : A ≅ B
+def isoMk {A B : Algebra T} (h : A.A ≅ B.A) (w : (T : C ⥤ C).map h.Hom ≫ B.a = A.a ≫ h.Hom) : A ≅ B
where
Hom := { f := h.Hom }
inv :=
@@ -133,29 +157,34 @@ end Algebra
variable (T : Monad C)
+#print CategoryTheory.Monad.forget /-
/-- The forgetful functor from the Eilenberg-Moore category, forgetting the algebraic structure. -/
@[simps]
def forget : Algebra T ⥤ C where
- obj A := A.a
+ obj A := A.A
map A B f := f.f
#align category_theory.monad.forget CategoryTheory.Monad.forget
+-/
+#print CategoryTheory.Monad.free /-
/-- The free functor from the Eilenberg-Moore category, constructing an algebra for any object. -/
@[simps]
def free : C ⥤ Algebra T
where
obj X :=
- { a := T.obj X
+ { A := T.obj X
a := T.μ.app X
assoc' := (T.and_assoc _).symm }
map X Y f :=
{ f := T.map f
h' := T.μ.naturality _ }
#align category_theory.monad.free CategoryTheory.Monad.free
+-/
instance [Inhabited C] : Inhabited (Algebra T) :=
⟨(free T).obj default⟩
+#print CategoryTheory.Monad.adj /-
-- The other two `simps` projection lemmas can be derived from these two, so `simp_nf` complains if
-- those are added too
/-- The adjunction between the free and forgetful constructions for Eilenberg-Moore algebras for
@@ -181,7 +210,9 @@ def adj : T.free ⊣ T.forget :=
rw [← T.η.naturality_assoc, Y.unit]
apply category.comp_id } }
#align category_theory.monad.adj CategoryTheory.Monad.adj
+-/
+#print CategoryTheory.Monad.algebra_iso_of_iso /-
/-- Given an algebra morphism whose carrier part is an isomorphism, we get an algebra isomorphism.
-/
theorem algebra_iso_of_iso {A B : Algebra T} (f : A ⟶ B) [IsIso f.f] : IsIso f :=
@@ -191,39 +222,58 @@ theorem algebra_iso_of_iso {A B : Algebra T} (f : A ⟶ B) [IsIso f.f] : IsIso f
simp },
by tidy⟩⟩
#align category_theory.monad.algebra_iso_of_iso CategoryTheory.Monad.algebra_iso_of_iso
+-/
+#print CategoryTheory.Monad.forget_reflects_iso /-
instance forget_reflects_iso : ReflectsIsomorphisms T.forget
where reflects A B := algebra_iso_of_iso T
#align category_theory.monad.forget_reflects_iso CategoryTheory.Monad.forget_reflects_iso
+-/
+#print CategoryTheory.Monad.forget_faithful /-
instance forget_faithful : Faithful T.forget where
#align category_theory.monad.forget_faithful CategoryTheory.Monad.forget_faithful
+-/
+#print CategoryTheory.Monad.algebra_epi_of_epi /-
/-- Given an algebra morphism whose carrier part is an epimorphism, we get an algebra epimorphism.
-/
theorem algebra_epi_of_epi {X Y : Algebra T} (f : X ⟶ Y) [h : Epi f.f] : Epi f :=
(forget T).epi_of_epi_map h
#align category_theory.monad.algebra_epi_of_epi CategoryTheory.Monad.algebra_epi_of_epi
+-/
+#print CategoryTheory.Monad.algebra_mono_of_mono /-
/-- Given an algebra morphism whose carrier part is a monomorphism, we get an algebra monomorphism.
-/
theorem algebra_mono_of_mono {X Y : Algebra T} (f : X ⟶ Y) [h : Mono f.f] : Mono f :=
(forget T).mono_of_mono_map h
#align category_theory.monad.algebra_mono_of_mono CategoryTheory.Monad.algebra_mono_of_mono
+-/
instance : IsRightAdjoint T.forget :=
⟨T.free, T.adj⟩
+#print CategoryTheory.Monad.leftAdjoint_forget /-
@[simp]
theorem leftAdjoint_forget : leftAdjoint T.forget = T.free :=
rfl
#align category_theory.monad.left_adjoint_forget CategoryTheory.Monad.leftAdjoint_forget
+-/
+#print CategoryTheory.Monad.ofRightAdjoint_forget /-
@[simp]
theorem ofRightAdjoint_forget : Adjunction.ofRightAdjoint T.forget = T.adj :=
rfl
#align category_theory.monad.of_right_adjoint_forget CategoryTheory.Monad.ofRightAdjoint_forget
+-/
+/- warning: category_theory.monad.algebra_functor_of_monad_hom -> CategoryTheory.Monad.algebraFunctorOfMonadHom is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1}, (Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₂ T₁) -> (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1}, (Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₂ T₁) -> (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂))
+Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_functor_of_monad_hom CategoryTheory.Monad.algebraFunctorOfMonadHomₓ'. -/
/--
Given a monad morphism from `T₂` to `T₁`, we get a functor from the algebras of `T₁` to algebras of
`T₂`.
@@ -232,8 +282,8 @@ Given a monad morphism from `T₂` to `T₁`, we get a functor from the algebras
def algebraFunctorOfMonadHom {T₁ T₂ : Monad C} (h : T₂ ⟶ T₁) : Algebra T₁ ⥤ Algebra T₂
where
obj A :=
- { a := A.a
- a := h.app A.a ≫ A.a
+ { A := A.A
+ a := h.app A.A ≫ A.a
unit' := by
dsimp
simp [A.unit]
@@ -243,6 +293,12 @@ def algebraFunctorOfMonadHom {T₁ T₂ : Monad C} (h : T₂ ⟶ T₁) : Algebra
map A₁ A₂ f := { f := f.f }
#align category_theory.monad.algebra_functor_of_monad_hom CategoryTheory.Monad.algebraFunctorOfMonadHom
+/- warning: category_theory.monad.algebra_functor_of_monad_hom_id -> CategoryTheory.Monad.algebraFunctorOfMonadHomId is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1}, CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₁ T₁ (CategoryTheory.CategoryStruct.id.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1)) T₁)) (CategoryTheory.Functor.id.{u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1}, CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₁ T₁ (CategoryTheory.CategoryStruct.id.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1)) T₁)) (CategoryTheory.Functor.id.{u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁))
+Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_functor_of_monad_hom_id CategoryTheory.Monad.algebraFunctorOfMonadHomIdₓ'. -/
/--
The identity monad morphism induces the identity functor from the category of algebras to itself.
-/
@@ -260,6 +316,12 @@ def algebraFunctorOfMonadHomId {T₁ : Monad C} : algebraFunctorOfMonadHom (𝟙
simp
#align category_theory.monad.algebra_functor_of_monad_hom_id CategoryTheory.Monad.algebraFunctorOfMonadHomId
+/- warning: category_theory.monad.algebra_functor_of_monad_hom_comp -> CategoryTheory.Monad.algebraFunctorOfMonadHomComp is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₃ : CategoryTheory.Monad.{u1, u2} C _inst_1} (f : Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₁ T₂) (g : Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₂ T₃), CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₃ T₁ (CategoryTheory.CategoryStruct.comp.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1)) T₁ T₂ T₃ f g)) (CategoryTheory.Functor.comp.{u1, u1, u1, max u2 u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₃ T₂ g) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ f))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₃ : CategoryTheory.Monad.{u1, u2} C _inst_1} (f : Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₁ T₂) (g : Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₂ T₃), CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₃ T₁ (CategoryTheory.CategoryStruct.comp.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1)) T₁ T₂ T₃ f g)) (CategoryTheory.Functor.comp.{u1, u1, u1, max u2 u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₃) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₃ T₂ g) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ f))
+Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_functor_of_monad_hom_comp CategoryTheory.Monad.algebraFunctorOfMonadHomCompₓ'. -/
/-- A composition of monad morphisms gives the composition of corresponding functors.
-/
@[simps (config := { rhsMd := semireducible })]
@@ -277,6 +339,12 @@ def algebraFunctorOfMonadHomComp {T₁ T₂ T₃ : Monad C} (f : T₁ ⟶ T₂)
simp
#align category_theory.monad.algebra_functor_of_monad_hom_comp CategoryTheory.Monad.algebraFunctorOfMonadHomComp
+/- warning: category_theory.monad.algebra_functor_of_monad_hom_eq -> CategoryTheory.Monad.algebraFunctorOfMonadHomEq is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} {f : Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₁ T₂} {g : Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₁ T₂}, (Eq.{succ (max u2 u1)} (Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₁ T₂) f g) -> (CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ f) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ g))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} {f : Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₁ T₂} {g : Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₁ T₂}, (Eq.{max (succ u2) (succ u1)} (Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₁ T₂) f g) -> (CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Functor.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Functor.category.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ f) (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ g))
+Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_functor_of_monad_hom_eq CategoryTheory.Monad.algebraFunctorOfMonadHomEqₓ'. -/
/-- If `f` and `g` are two equal morphisms of monads, then the functors of algebras induced by them
are isomorphic.
We define it like this as opposed to using `eq_to_iso` so that the components are nicer to prove
@@ -297,6 +365,12 @@ def algebraFunctorOfMonadHomEq {T₁ T₂ : Monad C} {f g : T₁ ⟶ T₂} (h :
simp
#align category_theory.monad.algebra_functor_of_monad_hom_eq CategoryTheory.Monad.algebraFunctorOfMonadHomEq
+/- warning: category_theory.monad.algebra_equiv_of_iso_monads -> CategoryTheory.Monad.algebraEquivOfIsoMonads is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1}, (CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1) T₁ T₂) -> (CategoryTheory.Equivalence.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂))
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1}, (CategoryTheory.Iso.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1) T₁ T₂) -> (CategoryTheory.Equivalence.{u1, u1, max u2 u1, max u2 u1} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂))
+Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_equiv_of_iso_monads CategoryTheory.Monad.algebraEquivOfIsoMonadsₓ'. -/
/-- Isomorphic monads give equivalent categories of algebras. Furthermore, they are equivalent as
categories over `C`, that is, we have `algebra_equiv_of_iso_monads h ⋙ forget = forget`.
-/
@@ -313,6 +387,12 @@ def algebraEquivOfIsoMonads {T₁ T₂ : Monad C} (h : T₁ ≅ T₂) : Algebra
algebraFunctorOfMonadHomEq (by simp) ≪≫ algebraFunctorOfMonadHomId
#align category_theory.monad.algebra_equiv_of_iso_monads CategoryTheory.Monad.algebraEquivOfIsoMonads
+/- warning: category_theory.monad.algebra_equiv_of_iso_monads_comp_forget -> CategoryTheory.Monad.algebra_equiv_of_iso_monads_comp_forget is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} (h : Quiver.Hom.{succ (max u2 u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Monad.category.{u1, u2} C _inst_1))) T₁ T₂), Eq.{succ (max u2 u1)} (CategoryTheory.Functor.{u1, u1, max u2 u1, u2} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) C _inst_1) (CategoryTheory.Functor.comp.{u1, u1, u1, max u2 u1, max u2 u1, u2} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) C _inst_1 (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ h) (CategoryTheory.Monad.forget.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.forget.{u1, u2} C _inst_1 T₂)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {T₁ : CategoryTheory.Monad.{u1, u2} C _inst_1} {T₂ : CategoryTheory.Monad.{u1, u2} C _inst_1} (h : Quiver.Hom.{max (succ u2) (succ u1), max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, max u2 u1} (CategoryTheory.Monad.{u1, u2} C _inst_1) (CategoryTheory.instCategoryMonad.{u1, u2} C _inst_1))) T₁ T₂), Eq.{max (succ u2) (succ u1)} (CategoryTheory.Functor.{u1, u1, max u2 u1, u2} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) C _inst_1) (CategoryTheory.Functor.comp.{u1, u1, u1, max u2 u1, max u2 u1, u2} (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₂) (CategoryTheory.Monad.Algebra.{u1, u2} C _inst_1 T₁) (CategoryTheory.Monad.Algebra.eilenbergMoore.{u1, u2} C _inst_1 T₁) C _inst_1 (CategoryTheory.Monad.algebraFunctorOfMonadHom.{u1, u2} C _inst_1 T₂ T₁ h) (CategoryTheory.Monad.forget.{u1, u2} C _inst_1 T₁)) (CategoryTheory.Monad.forget.{u1, u2} C _inst_1 T₂)
+Case conversion may be inaccurate. Consider using '#align category_theory.monad.algebra_equiv_of_iso_monads_comp_forget CategoryTheory.Monad.algebra_equiv_of_iso_monads_comp_forgetₓ'. -/
@[simp]
theorem algebra_equiv_of_iso_monads_comp_forget {T₁ T₂ : Monad C} (h : T₁ ⟶ T₂) :
algebraFunctorOfMonadHom h ⋙ forget _ = forget _ :=
@@ -323,14 +403,16 @@ end Monad
namespace Comonad
+#print CategoryTheory.Comonad.Coalgebra /-
/-- An Eilenberg-Moore coalgebra for a comonad `T`. -/
@[nolint has_nonempty_instance]
structure Coalgebra (G : Comonad C) : Type max u₁ v₁ where
- a : C
+ A : C
a : A ⟶ (G : C ⥤ C).obj A
counit' : a ≫ G.ε.app A = 𝟙 A := by obviously
coassoc' : a ≫ G.δ.app A = a ≫ G.map a := by obviously
#align category_theory.comonad.coalgebra CategoryTheory.Comonad.Coalgebra
+-/
restate_axiom coalgebra.counit'
@@ -342,12 +424,14 @@ namespace Coalgebra
variable {G : Comonad C}
+#print CategoryTheory.Comonad.Coalgebra.Hom /-
/-- A morphism of Eilenberg-Moore coalgebras for the comonad `G`. -/
@[ext, nolint has_nonempty_instance]
structure Hom (A B : Coalgebra G) where
- f : A.a ⟶ B.a
+ f : A.A ⟶ B.A
h' : A.a ≫ (G : C ⥤ C).map f = f ≫ B.a := by obviously
#align category_theory.comonad.coalgebra.hom CategoryTheory.Comonad.Coalgebra.Hom
+-/
restate_axiom hom.h'
@@ -355,13 +439,17 @@ attribute [simp, reassoc.1] hom.h
namespace Hom
+#print CategoryTheory.Comonad.Coalgebra.Hom.id /-
/-- The identity homomorphism for an Eilenberg–Moore coalgebra. -/
-def id (A : Coalgebra G) : Hom A A where f := 𝟙 A.a
+def id (A : Coalgebra G) : Hom A A where f := 𝟙 A.A
#align category_theory.comonad.coalgebra.hom.id CategoryTheory.Comonad.Coalgebra.Hom.id
+-/
+#print CategoryTheory.Comonad.Coalgebra.Hom.comp /-
/-- Composition of Eilenberg–Moore coalgebra homomorphisms. -/
def comp {P Q R : Coalgebra G} (f : Hom P Q) (g : Hom Q R) : Hom P R where f := f.f ≫ g.f
#align category_theory.comonad.coalgebra.hom.comp CategoryTheory.Comonad.Coalgebra.Hom.comp
+-/
end Hom
@@ -371,37 +459,53 @@ instance : CategoryStruct (Coalgebra G) where
id := Hom.id
comp := @Hom.comp _ _ _
+#print CategoryTheory.Comonad.Coalgebra.comp_eq_comp /-
@[simp]
theorem comp_eq_comp {A A' A'' : Coalgebra G} (f : A ⟶ A') (g : A' ⟶ A'') :
Coalgebra.Hom.comp f g = f ≫ g :=
rfl
#align category_theory.comonad.coalgebra.comp_eq_comp CategoryTheory.Comonad.Coalgebra.comp_eq_comp
+-/
+#print CategoryTheory.Comonad.Coalgebra.id_eq_id /-
@[simp]
theorem id_eq_id (A : Coalgebra G) : Coalgebra.Hom.id A = 𝟙 A :=
rfl
#align category_theory.comonad.coalgebra.id_eq_id CategoryTheory.Comonad.Coalgebra.id_eq_id
+-/
+#print CategoryTheory.Comonad.Coalgebra.id_f /-
@[simp]
-theorem id_f (A : Coalgebra G) : (𝟙 A : A ⟶ A).f = 𝟙 A.a :=
+theorem id_f (A : Coalgebra G) : (𝟙 A : A ⟶ A).f = 𝟙 A.A :=
rfl
#align category_theory.comonad.coalgebra.id_f CategoryTheory.Comonad.Coalgebra.id_f
+-/
+#print CategoryTheory.Comonad.Coalgebra.comp_f /-
@[simp]
theorem comp_f {A A' A'' : Coalgebra G} (f : A ⟶ A') (g : A' ⟶ A'') : (f ≫ g).f = f.f ≫ g.f :=
rfl
#align category_theory.comonad.coalgebra.comp_f CategoryTheory.Comonad.Coalgebra.comp_f
+-/
+#print CategoryTheory.Comonad.Coalgebra.eilenbergMoore /-
/-- The category of Eilenberg-Moore coalgebras for a comonad. -/
instance eilenbergMoore : Category (Coalgebra G) where
#align category_theory.comonad.coalgebra.EilenbergMoore CategoryTheory.Comonad.Coalgebra.eilenbergMoore
+-/
+/- warning: category_theory.comonad.coalgebra.iso_mk -> CategoryTheory.Comonad.Coalgebra.isoMk is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {G : CategoryTheory.Comonad.{u1, u2} C _inst_1} {A : CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G} {B : CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G} (h : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeComonad.{u1, u2} C _inst_1)))) G) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeComonad.{u1, u2} C _inst_1)))) G) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A)) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeComonad.{u1, u2} C _inst_1)))) G) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)) (CategoryTheory.Comonad.Coalgebra.a.{u1, u2} C _inst_1 G A) (CategoryTheory.Functor.map.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeComonad.{u1, u2} C _inst_1)))) G) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) h))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) (CategoryTheory.Functor.obj.{u1, u1, u2, u2} C _inst_1 C _inst_1 ((fun (a : Sort.{max (succ u2) (succ u1)}) (b : Type.{max u1 u2}) [self : HasLiftT.{max (succ u2) (succ u1), succ (max u1 u2)} a b] => self.0) (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (HasLiftT.mk.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CoeTCₓ.coe.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (coeBase.{max (succ u2) (succ u1), succ (max u1 u2)} (CategoryTheory.Comonad.{u1, u2} C _inst_1) (CategoryTheory.Functor.{u1, u1, u2, u2} C _inst_1 C _inst_1) (CategoryTheory.coeComonad.{u1, u2} C _inst_1)))) G) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) h) (CategoryTheory.Comonad.Coalgebra.a.{u1, u2} C _inst_1 G B))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G) (CategoryTheory.Comonad.Coalgebra.eilenbergMoore.{u1, u2} C _inst_1 G) A B)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {G : CategoryTheory.Comonad.{u1, u2} C _inst_1} {A : CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G} {B : CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G} (h : CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)), (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Comonad.toFunctor.{u1, u2} C _inst_1 G)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Comonad.toFunctor.{u1, u2} C _inst_1 G)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A)) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Comonad.toFunctor.{u1, u2} C _inst_1 G)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)) (CategoryTheory.Comonad.Coalgebra.a.{u1, u2} C _inst_1 G A) (Prefunctor.map.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Comonad.toFunctor.{u1, u2} C _inst_1 G)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) h))) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) (Prefunctor.obj.{succ u1, succ u1, u2, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u1, u2, u2} C _inst_1 C _inst_1 (CategoryTheory.Comonad.toFunctor.{u1, u2} C _inst_1 G)) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B)) (CategoryTheory.Iso.hom.{u1, u2} C _inst_1 (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G A) (CategoryTheory.Comonad.Coalgebra.A.{u1, u2} C _inst_1 G B) h) (CategoryTheory.Comonad.Coalgebra.a.{u1, u2} C _inst_1 G B))) -> (CategoryTheory.Iso.{u1, max u2 u1} (CategoryTheory.Comonad.Coalgebra.{u1, u2} C _inst_1 G) (CategoryTheory.Comonad.Coalgebra.eilenbergMoore.{u1, u2} C _inst_1 G) A B)
+Case conversion may be inaccurate. Consider using '#align category_theory.comonad.coalgebra.iso_mk CategoryTheory.Comonad.Coalgebra.isoMkₓ'. -/
/--
To construct an isomorphism of coalgebras, it suffices to give an isomorphism of the carriers which
commutes with the structure morphisms.
-/
@[simps]
-def isoMk {A B : Coalgebra G} (h : A.a ≅ B.a) (w : A.a ≫ (G : C ⥤ C).map h.Hom = h.Hom ≫ B.a) :
+def isoMk {A B : Coalgebra G} (h : A.A ≅ B.A) (w : A.a ≫ (G : C ⥤ C).map h.Hom = h.Hom ≫ B.a) :
A ≅ B where
Hom := { f := h.Hom }
inv :=
@@ -415,28 +519,33 @@ end Coalgebra
variable (G : Comonad C)
+#print CategoryTheory.Comonad.forget /-
/-- The forgetful functor from the Eilenberg-Moore category, forgetting the coalgebraic
structure. -/
@[simps]
def forget : Coalgebra G ⥤ C where
- obj A := A.a
+ obj A := A.A
map A B f := f.f
#align category_theory.comonad.forget CategoryTheory.Comonad.forget
+-/
+#print CategoryTheory.Comonad.cofree /-
/-- The cofree functor from the Eilenberg-Moore category, constructing a coalgebra for any
object. -/
@[simps]
def cofree : C ⥤ Coalgebra G
where
obj X :=
- { a := G.obj X
+ { A := G.obj X
a := G.δ.app X
coassoc' := (G.coassoc _).symm }
map X Y f :=
{ f := G.map f
h' := (G.δ.naturality _).symm }
#align category_theory.comonad.cofree CategoryTheory.Comonad.cofree
+-/
+#print CategoryTheory.Comonad.adj /-
-- The other two `simps` projection lemmas can be derived from these two, so `simp_nf` complains if
-- those are added too
/-- The adjunction between the cofree and forgetful constructions for Eilenberg-Moore coalgebras
@@ -461,7 +570,9 @@ def adj : G.forget ⊣ G.cofree :=
rw [functor.map_comp, g.h_assoc, cofree_obj_a, comonad.right_counit]
apply comp_id } }
#align category_theory.comonad.adj CategoryTheory.Comonad.adj
+-/
+#print CategoryTheory.Comonad.coalgebra_iso_of_iso /-
/-- Given a coalgebra morphism whose carrier part is an isomorphism, we get a coalgebra isomorphism.
-/
theorem coalgebra_iso_of_iso {A B : Coalgebra G} (f : A ⟶ B) [IsIso f.f] : IsIso f :=
@@ -471,38 +582,51 @@ theorem coalgebra_iso_of_iso {A B : Coalgebra G} (f : A ⟶ B) [IsIso f.f] : IsI
simp },
by tidy⟩⟩
#align category_theory.comonad.coalgebra_iso_of_iso CategoryTheory.Comonad.coalgebra_iso_of_iso
+-/
+#print CategoryTheory.Comonad.forget_reflects_iso /-
instance forget_reflects_iso : ReflectsIsomorphisms G.forget
where reflects A B := coalgebra_iso_of_iso G
#align category_theory.comonad.forget_reflects_iso CategoryTheory.Comonad.forget_reflects_iso
+-/
+#print CategoryTheory.Comonad.forget_faithful /-
instance forget_faithful : Faithful (forget G) where
#align category_theory.comonad.forget_faithful CategoryTheory.Comonad.forget_faithful
+-/
+#print CategoryTheory.Comonad.algebra_epi_of_epi /-
/-- Given a coalgebra morphism whose carrier part is an epimorphism, we get an algebra epimorphism.
-/
theorem algebra_epi_of_epi {X Y : Coalgebra G} (f : X ⟶ Y) [h : Epi f.f] : Epi f :=
(forget G).epi_of_epi_map h
#align category_theory.comonad.algebra_epi_of_epi CategoryTheory.Comonad.algebra_epi_of_epi
+-/
+#print CategoryTheory.Comonad.algebra_mono_of_mono /-
/-- Given a coalgebra morphism whose carrier part is a monomorphism, we get an algebra monomorphism.
-/
theorem algebra_mono_of_mono {X Y : Coalgebra G} (f : X ⟶ Y) [h : Mono f.f] : Mono f :=
(forget G).mono_of_mono_map h
#align category_theory.comonad.algebra_mono_of_mono CategoryTheory.Comonad.algebra_mono_of_mono
+-/
instance : IsLeftAdjoint G.forget :=
⟨_, G.adj⟩
+#print CategoryTheory.Comonad.rightAdjoint_forget /-
@[simp]
theorem rightAdjoint_forget : rightAdjoint G.forget = G.cofree :=
rfl
#align category_theory.comonad.right_adjoint_forget CategoryTheory.Comonad.rightAdjoint_forget
+-/
+#print CategoryTheory.Comonad.ofLeftAdjoint_forget /-
@[simp]
theorem ofLeftAdjoint_forget : Adjunction.ofLeftAdjoint G.forget = G.adj :=
rfl
#align category_theory.comonad.of_left_adjoint_forget CategoryTheory.Comonad.ofLeftAdjoint_forget
+-/
end Comonad
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -324,8 +324,8 @@ end Monad
namespace Comonad
/-- An Eilenberg-Moore coalgebra for a comonad `T`. -/
--- Porting note: no need to nolint here.
---@[nolint has_nonempty_instance]
+-- Porting note(#5171): linter not ported yet
+-- @[nolint has_nonempty_instance]
structure Coalgebra (G : Comonad C) : Type max u₁ v₁ where
/-- The underlying object associated to a coalgebra. -/
A : C
@@ -359,6 +359,7 @@ namespace Coalgebra
variable {G : Comonad C}
/-- A morphism of Eilenberg-Moore coalgebras for the comonad `G`. -/
+-- Porting note(#5171): linter not ported yet
--@[ext, nolint has_nonempty_instance]
@[ext]
structure Hom (A B : Coalgebra G) where
These notions on functors are now Functor.Full
, Functor.Faithful
, Functor.EssSurj
, Functor.IsEquivalence
, Functor.ReflectsIsomorphisms
. Deprecated aliases are introduced for the previous names.
@@ -219,12 +219,12 @@ theorem algebra_iso_of_iso {A B : Algebra T} (f : A ⟶ B) [IsIso f.f] : IsIso f
by aesop_cat⟩⟩
#align category_theory.monad.algebra_iso_of_iso CategoryTheory.Monad.algebra_iso_of_iso
-instance forget_reflects_iso : ReflectsIsomorphisms T.forget where
+instance forget_reflects_iso : T.forget.ReflectsIsomorphisms where
-- Porting note: Is this the right approach to introduce instances?
reflects {_ _} f := fun [IsIso f.f] => algebra_iso_of_iso T f
#align category_theory.monad.forget_reflects_iso CategoryTheory.Monad.forget_reflects_iso
-instance forget_faithful : Faithful T.forget where
+instance forget_faithful : T.forget.Faithful where
#align category_theory.monad.forget_faithful CategoryTheory.Monad.forget_faithful
/-- Given an algebra morphism whose carrier part is an epimorphism, we get an algebra epimorphism.
@@ -499,12 +499,12 @@ theorem coalgebra_iso_of_iso {A B : Coalgebra G} (f : A ⟶ B) [IsIso f.f] : IsI
by aesop_cat⟩⟩
#align category_theory.comonad.coalgebra_iso_of_iso CategoryTheory.Comonad.coalgebra_iso_of_iso
-instance forget_reflects_iso : ReflectsIsomorphisms G.forget where
+instance forget_reflects_iso : G.forget.ReflectsIsomorphisms where
-- Porting note: Is this the right approach to introduce instances?
reflects {_ _} f := fun [IsIso f.f] => coalgebra_iso_of_iso G f
#align category_theory.comonad.forget_reflects_iso CategoryTheory.Comonad.forget_reflects_iso
-instance forget_faithful : Faithful (forget G) where
+instance forget_faithful : (forget G).Faithful where
#align category_theory.comonad.forget_faithful CategoryTheory.Comonad.forget_faithful
/-- Given a coalgebra morphism whose carrier part is an epimorphism, we get an algebra epimorphism.
@@ -204,7 +204,7 @@ def adj : T.free ⊣ T.forget :=
homEquiv_naturality_right := by
intros
-- This doesn't look good:
- simp
+ simp? says simp only [forget_obj, free_obj_A, forget_map]
dsimp
simp }
#align category_theory.monad.adj CategoryTheory.Monad.adj
@@ -199,7 +199,14 @@ def adj : T.free ⊣ T.forget :=
right_inv := fun f => by
dsimp only [forget_obj]
rw [← T.η.naturality_assoc, Y.unit]
- apply Category.comp_id } }
+ apply Category.comp_id },
+ -- This used to be automatic before leanprover/lean4#2644
+ homEquiv_naturality_right := by
+ intros
+ -- This doesn't look good:
+ simp
+ dsimp
+ simp }
#align category_theory.monad.adj CategoryTheory.Monad.adj
/-- Given an algebra morphism whose carrier part is an isomorphism, we get an algebra isomorphism.
@@ -199,14 +199,7 @@ def adj : T.free ⊣ T.forget :=
right_inv := fun f => by
dsimp only [forget_obj]
rw [← T.η.naturality_assoc, Y.unit]
- apply Category.comp_id },
- -- This used to be automatic before leanprover/lean4#2644
- homEquiv_naturality_right := by
- intros
- -- This doesn't look good:
- simp
- dsimp
- simp }
+ apply Category.comp_id } }
#align category_theory.monad.adj CategoryTheory.Monad.adj
/-- Given an algebra morphism whose carrier part is an isomorphism, we get an algebra isomorphism.
@@ -199,7 +199,14 @@ def adj : T.free ⊣ T.forget :=
right_inv := fun f => by
dsimp only [forget_obj]
rw [← T.η.naturality_assoc, Y.unit]
- apply Category.comp_id } }
+ apply Category.comp_id },
+ -- This used to be automatic before leanprover/lean4#2644
+ homEquiv_naturality_right := by
+ intros
+ -- This doesn't look good:
+ simp
+ dsimp
+ simp }
#align category_theory.monad.adj CategoryTheory.Monad.adj
/-- Given an algebra morphism whose carrier part is an isomorphism, we get an algebra isomorphism.
@@ -212,9 +212,9 @@ theorem algebra_iso_of_iso {A B : Algebra T} (f : A ⟶ B) [IsIso f.f] : IsIso f
by aesop_cat⟩⟩
#align category_theory.monad.algebra_iso_of_iso CategoryTheory.Monad.algebra_iso_of_iso
-instance forget_reflects_iso : ReflectsIsomorphisms T.forget
- -- Porting note: Is this the right approach to introduce instances?
- where reflects {_ _} f := fun [IsIso f.f] => algebra_iso_of_iso T f
+instance forget_reflects_iso : ReflectsIsomorphisms T.forget where
+ -- Porting note: Is this the right approach to introduce instances?
+ reflects {_ _} f := fun [IsIso f.f] => algebra_iso_of_iso T f
#align category_theory.monad.forget_reflects_iso CategoryTheory.Monad.forget_reflects_iso
instance forget_faithful : Faithful T.forget where
@@ -492,9 +492,9 @@ theorem coalgebra_iso_of_iso {A B : Coalgebra G} (f : A ⟶ B) [IsIso f.f] : IsI
by aesop_cat⟩⟩
#align category_theory.comonad.coalgebra_iso_of_iso CategoryTheory.Comonad.coalgebra_iso_of_iso
-instance forget_reflects_iso : ReflectsIsomorphisms G.forget
- -- Porting note: Is this the right approach to introduce instances?
- where reflects {_ _} f := fun [IsIso f.f] => coalgebra_iso_of_iso G f
+instance forget_reflects_iso : ReflectsIsomorphisms G.forget where
+ -- Porting note: Is this the right approach to introduce instances?
+ reflects {_ _} f := fun [IsIso f.f] => coalgebra_iso_of_iso G f
#align category_theory.comonad.forget_reflects_iso CategoryTheory.Comonad.forget_reflects_iso
instance forget_faithful : Faithful (forget G) where
@@ -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.algebra
-! leanprover-community/mathlib commit 14b69e9f3c16630440a2cbd46f1ddad0d561dee7
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.Monad.Basic
import Mathlib.CategoryTheory.Adjunction.Basic
import Mathlib.CategoryTheory.Functor.EpiMono
+#align_import category_theory.monad.algebra from "leanprover-community/mathlib"@"14b69e9f3c16630440a2cbd46f1ddad0d561dee7"
+
/-!
# Eilenberg-Moore (co)algebras for a (co)monad
@@ -145,8 +145,8 @@ To construct an isomorphism of algebras, it suffices to give an isomorphism of t
commutes with the structure morphisms.
-/
@[simps]
-def isoMk {A B : Algebra T} (h : A.A ≅ B.A) (w : (T : C ⥤ C).map h.hom ≫ B.a = A.a ≫ h.hom) :
- A ≅ B where
+def isoMk {A B : Algebra T} (h : A.A ≅ B.A)
+ (w : (T : C ⥤ C).map h.hom ≫ B.a = A.a ≫ h.hom := by aesop_cat) : A ≅ B where
hom := { f := h.hom }
inv :=
{ f := h.inv
@@ -272,16 +272,7 @@ The identity monad morphism induces the identity functor from the category of al
-- Porting note: `semireducible -> default`
@[simps (config := { rhsMd := .default })]
def algebraFunctorOfMonadHomId {T₁ : Monad C} : algebraFunctorOfMonadHom (𝟙 T₁) ≅ 𝟭 _ :=
- NatIso.ofComponents
- (fun X =>
- Algebra.isoMk (Iso.refl _)
- (by
- dsimp
- simp))
- fun f => by
- ext
- dsimp
- simp
+ NatIso.ofComponents fun X => Algebra.isoMk (Iso.refl _)
#align category_theory.monad.algebra_functor_of_monad_hom_id CategoryTheory.Monad.algebraFunctorOfMonadHomId
/-- A composition of monad morphisms gives the composition of corresponding functors.
@@ -289,16 +280,7 @@ def algebraFunctorOfMonadHomId {T₁ : Monad C} : algebraFunctorOfMonadHom (𝟙
@[simps (config := { rhsMd := .default })]
def algebraFunctorOfMonadHomComp {T₁ T₂ T₃ : Monad C} (f : T₁ ⟶ T₂) (g : T₂ ⟶ T₃) :
algebraFunctorOfMonadHom (f ≫ g) ≅ algebraFunctorOfMonadHom g ⋙ algebraFunctorOfMonadHom f :=
- NatIso.ofComponents
- (fun X =>
- Algebra.isoMk (Iso.refl _)
- (by
- dsimp
- simp))
- fun f => by
- ext
- dsimp
- simp
+ NatIso.ofComponents fun X => Algebra.isoMk (Iso.refl _)
#align category_theory.monad.algebra_functor_of_monad_hom_comp CategoryTheory.Monad.algebraFunctorOfMonadHomComp
/-- If `f` and `g` are two equal morphisms of monads, then the functors of algebras induced by them
@@ -309,16 +291,7 @@ lemmas about.
@[simps (config := { rhsMd := .default })]
def algebraFunctorOfMonadHomEq {T₁ T₂ : Monad C} {f g : T₁ ⟶ T₂} (h : f = g) :
algebraFunctorOfMonadHom f ≅ algebraFunctorOfMonadHom g :=
- NatIso.ofComponents
- (fun X =>
- Algebra.isoMk (Iso.refl _)
- (by
- dsimp
- simp [h]))
- fun f => by
- ext
- dsimp
- simp
+ NatIso.ofComponents fun X => Algebra.isoMk (Iso.refl _)
#align category_theory.monad.algebra_functor_of_monad_hom_eq CategoryTheory.Monad.algebraFunctorOfMonadHomEq
/-- Isomorphic monads give equivalent categories of algebras. Furthermore, they are equivalent as
@@ -453,8 +426,8 @@ To construct an isomorphism of coalgebras, it suffices to give an isomorphism of
commutes with the structure morphisms.
-/
@[simps]
-def isoMk {A B : Coalgebra G} (h : A.A ≅ B.A) (w : A.a ≫ (G : C ⥤ C).map h.hom = h.hom ≫ B.a) :
- A ≅ B where
+def isoMk {A B : Coalgebra G} (h : A.A ≅ B.A)
+ (w : A.a ≫ (G : C ⥤ C).map h.hom = h.hom ≫ B.a := by aesop_cat) : A ≅ B where
hom := { f := h.hom }
inv :=
{ f := h.inv
All dependencies are ported!