category_theory.monoidal.Mon_
β·
Mathlib.CategoryTheory.Monoidal.Mon_
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)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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
@@ -174,7 +174,7 @@ def forget : Mon_ C β₯€ C where
end
#print Mon_.forget_faithful /-
-instance forget_faithful : Faithful (@forget C _ _) where
+instance forget_faithful : CategoryTheory.Functor.Faithful (@forget C _ _) where
#align Mon_.forget_faithful Mon_.forget_faithful
-/
@@ -182,7 +182,7 @@ instance {A B : Mon_ C} (f : A βΆ B) [e : IsIso ((forget C).map f)] : IsIso f.H
e
/-- The forgetful functor from monoid objects to the ambient category reflects isomorphisms. -/
-instance : ReflectsIsomorphisms (forget C)
+instance : CategoryTheory.Functor.ReflectsIsomorphisms (forget C)
where reflects X Y f e :=
β¨β¨{ Hom := inv f.hom
mul_hom' := by
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,11 +3,11 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-/
-import CategoryTheory.Monoidal.Braided
+import CategoryTheory.Monoidal.Braided.Basic
import CategoryTheory.Monoidal.Discrete
import CategoryTheory.Monoidal.CoherenceLemmas
import CategoryTheory.Limits.Shapes.Terminal
-import Algebra.PunitInstances
+import Algebra.PUnitInstances
#align_import category_theory.monoidal.Mon_ from "leanprover-community/mathlib"@"7e5137f579de09a059a5ce98f364a04e221aabf0"
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,11 +3,11 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-/
-import Mathbin.CategoryTheory.Monoidal.Braided
-import Mathbin.CategoryTheory.Monoidal.Discrete
-import Mathbin.CategoryTheory.Monoidal.CoherenceLemmas
-import Mathbin.CategoryTheory.Limits.Shapes.Terminal
-import Mathbin.Algebra.PunitInstances
+import CategoryTheory.Monoidal.Braided
+import CategoryTheory.Monoidal.Discrete
+import CategoryTheory.Monoidal.CoherenceLemmas
+import CategoryTheory.Limits.Shapes.Terminal
+import Algebra.PunitInstances
#align_import category_theory.monoidal.Mon_ from "leanprover-community/mathlib"@"7e5137f579de09a059a5ce98f364a04e221aabf0"
mathlib commit https://github.com/leanprover-community/mathlib/commit/442a83d738cb208d3600056c489be16900ba701d
@@ -56,12 +56,6 @@ structure Mon_ where
#align Mon_ Mon_
-/
-restate_axiom Mon_.one_mul'
-
-restate_axiom Mon_.mul_one'
-
-restate_axiom Mon_.mul_assoc'
-
attribute [reassoc] Mon_.one_mul Mon_.mul_one
-- We prove a more general `@[simp]` lemma below.
@@ -122,10 +116,6 @@ structure Hom (M N : Mon_ C) where
#align Mon_.hom Mon_.Hom
-/
-restate_axiom hom.one_hom'
-
-restate_axiom hom.mul_hom'
-
attribute [simp, reassoc] hom.one_hom hom.mul_hom
#print Mon_.id /-
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,11 +2,6 @@
Copyright (c) 2020 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module category_theory.monoidal.Mon_
-! leanprover-community/mathlib commit 7e5137f579de09a059a5ce98f364a04e221aabf0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.CategoryTheory.Monoidal.Braided
import Mathbin.CategoryTheory.Monoidal.Discrete
@@ -14,6 +9,8 @@ import Mathbin.CategoryTheory.Monoidal.CoherenceLemmas
import Mathbin.CategoryTheory.Limits.Shapes.Terminal
import Mathbin.Algebra.PunitInstances
+#align_import category_theory.monoidal.Mon_ from "leanprover-community/mathlib"@"7e5137f579de09a059a5ce98f364a04e221aabf0"
+
/-!
# The category of monoids in a monoidal category.
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -382,6 +382,7 @@ open EquivLaxMonoidalFunctorPunit
attribute [local simp] eq_to_iso_map
+#print Mon_.equivLaxMonoidalFunctorPUnit /-
/--
Monoid objects in `C` are "just" lax monoidal functors from the trivial monoidal category to `C`.
-/
@@ -393,6 +394,7 @@ def equivLaxMonoidalFunctorPUnit : LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C
unitIso := unitIso C
counitIso := counitIso C
#align Mon_.equiv_lax_monoidal_functor_punit Mon_.equivLaxMonoidalFunctorPUnit
+-/
end Mon_
@@ -477,6 +479,7 @@ variable [BraidedCategory C]
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.Mon_tensor_one_mul /-
theorem Mon_tensor_one_mul (M N : Mon_ C) :
((Ξ»_ (π_ C)).inv β« (M.one β N.one) β π (M.pt β N.pt)) β«
tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
@@ -488,6 +491,7 @@ theorem Mon_tensor_one_mul (M N : Mon_ C) :
symm
exact tensor_left_unitality C M.X N.X
#align Mon_.Mon_tensor_one_mul Mon_.Mon_tensor_one_mul
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -495,6 +499,7 @@ theorem Mon_tensor_one_mul (M N : Mon_ C) :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.Mon_tensor_mul_one /-
theorem Mon_tensor_mul_one (M N : Mon_ C) :
(π (M.pt β N.pt) β (Ξ»_ (π_ C)).inv β« (M.one β N.one)) β«
tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
@@ -506,6 +511,7 @@ theorem Mon_tensor_mul_one (M N : Mon_ C) :
symm
exact tensor_right_unitality C M.X N.X
#align Mon_.Mon_tensor_mul_one Mon_.Mon_tensor_mul_one
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -519,6 +525,7 @@ theorem Mon_tensor_mul_one (M N : Mon_ C) :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.Mon_tensor_mul_assoc /-
theorem Mon_tensor_mul_assoc (M N : Mon_ C) :
(tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) β π (M.pt β N.pt)) β«
tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
@@ -534,6 +541,7 @@ theorem Mon_tensor_mul_assoc (M N : Mon_ C) :
slice_lhs 2 3 => rw [β tensor_comp, tensor_id]
simp only [category.assoc]
#align Mon_.Mon_tensor_mul_assoc Mon_.Mon_tensor_mul_assoc
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -544,6 +552,7 @@ theorem Mon_tensor_mul_assoc (M N : Mon_ C) :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.mul_associator /-
theorem mul_associator {M N P : Mon_ C} :
(tensor_ΞΌ C (M.pt β N.pt, P.pt) (M.pt β N.pt, P.pt) β«
(tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) β P.mul)) β«
@@ -559,9 +568,11 @@ theorem mul_associator {M N P : Mon_ C} :
slice_lhs 1 3 => rw [associator_monoidal]
simp only [category.assoc]
#align Mon_.mul_associator Mon_.mul_associator
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.mul_leftUnitor /-
theorem mul_leftUnitor {M : Mon_ C} :
(tensor_ΞΌ C (π_ C, M.pt) (π_ C, M.pt) β« ((Ξ»_ (π_ C)).Hom β M.mul)) β« (Ξ»_ M.pt).Hom =
((Ξ»_ M.pt).Hom β (Ξ»_ M.pt).Hom) β« M.mul :=
@@ -571,9 +582,11 @@ theorem mul_leftUnitor {M : Mon_ C} :
slice_lhs 1 3 => rw [β left_unitor_monoidal]
simp only [category.assoc, category.id_comp]
#align Mon_.mul_left_unitor Mon_.mul_leftUnitor
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.mul_rightUnitor /-
theorem mul_rightUnitor {M : Mon_ C} :
(tensor_ΞΌ C (M.pt, π_ C) (M.pt, π_ C) β« (M.mul β (Ξ»_ (π_ C)).Hom)) β« (Ο_ M.pt).Hom =
((Ο_ M.pt).Hom β (Ο_ M.pt).Hom) β« M.mul :=
@@ -583,6 +596,7 @@ theorem mul_rightUnitor {M : Mon_ C} :
slice_lhs 1 3 => rw [β right_unitor_monoidal]
simp only [category.assoc, category.id_comp]
#align Mon_.mul_right_unitor Mon_.mul_rightUnitor
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
! This file was ported from Lean 3 source module category_theory.monoidal.Mon_
-! leanprover-community/mathlib commit a836c6dba9bd1ee2a0cdc9af0006a596f243031c
+! leanprover-community/mathlib commit 7e5137f579de09a059a5ce98f364a04e221aabf0
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -17,6 +17,9 @@ import Mathbin.Algebra.PunitInstances
/-!
# The category of monoids in a monoidal category.
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
We define monoids in a monoidal category `C` and show that the category of monoids is equivalent to
the category of lax monoidal functors from the unit monoidal category to `C`. We also show that if
`C` is braided, then the category of monoids is naturally monoidal.
mathlib commit https://github.com/leanprover-community/mathlib/commit/58a272265b5e05f258161260dd2c5d247213cbd3
@@ -32,6 +32,7 @@ open CategoryTheory.MonoidalCategory
variable (C : Type uβ) [Category.{vβ} C] [MonoidalCategory.{vβ} C]
+#print Mon_ /-
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@@ -53,6 +54,7 @@ structure Mon_ where
-- The heuristic is that unitors and associators "don't have much weight".
mul_assoc' : (mul β π X) β« mul = (Ξ±_ X X X).Hom β« (π X β mul) β« mul := by obviously
#align Mon_ Mon_
+-/
restate_axiom Mon_.one_mul'
@@ -67,6 +69,7 @@ attribute [simp, reassoc] Mon_.mul_assoc
namespace Mon_
+#print Mon_.trivial /-
/-- The trivial monoid object. We later show this is initial in `Mon_ C`.
-/
@[simps]
@@ -77,6 +80,7 @@ def trivial : Mon_ C where
mul_assoc' := by coherence
mul_one' := by coherence
#align Mon_.trivial Mon_.trivial
+-/
instance : Inhabited (Mon_ C) :=
β¨trivial Cβ©
@@ -84,23 +88,30 @@ instance : Inhabited (Mon_ C) :=
variable {C} {M : Mon_ C}
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.one_mul_hom /-
@[simp]
theorem one_mul_hom {Z : C} (f : Z βΆ M.pt) : (M.one β f) β« M.mul = (Ξ»_ Z).Hom β« f := by
rw [β id_tensor_comp_tensor_id, category.assoc, M.one_mul, left_unitor_naturality]
#align Mon_.one_mul_hom Mon_.one_mul_hom
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.mul_one_hom /-
@[simp]
theorem mul_one_hom {Z : C} (f : Z βΆ M.pt) : (f β M.one) β« M.mul = (Ο_ Z).Hom β« f := by
rw [β tensor_id_comp_id_tensor, category.assoc, M.mul_one, right_unitor_naturality]
#align Mon_.mul_one_hom Mon_.mul_one_hom
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.assoc_flip /-
theorem assoc_flip :
(π M.pt β M.mul) β« M.mul = (Ξ±_ M.pt M.pt M.pt).inv β« (M.mul β π M.pt) β« M.mul := by simp
#align Mon_.assoc_flip Mon_.assoc_flip
+-/
+#print Mon_.Hom /-
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- A morphism of monoid objects. -/
@[ext]
@@ -109,6 +120,7 @@ structure Hom (M N : Mon_ C) where
one_hom' : M.one β« hom = N.one := by obviously
mul_hom' : M.mul β« hom = (hom β hom) β« N.mul := by obviously
#align Mon_.hom Mon_.Hom
+-/
restate_axiom hom.one_hom'
@@ -116,51 +128,65 @@ restate_axiom hom.mul_hom'
attribute [simp, reassoc] hom.one_hom hom.mul_hom
+#print Mon_.id /-
/-- The identity morphism on a monoid object. -/
@[simps]
def id (M : Mon_ C) : Hom M M where Hom := π M.pt
#align Mon_.id Mon_.id
+-/
+#print Mon_.homInhabited /-
instance homInhabited (M : Mon_ C) : Inhabited (Hom M M) :=
β¨id Mβ©
#align Mon_.hom_inhabited Mon_.homInhabited
+-/
+#print Mon_.comp /-
/-- Composition of morphisms of monoid objects. -/
@[simps]
def comp {M N O : Mon_ C} (f : Hom M N) (g : Hom N O) : Hom M O where Hom := f.Hom β« g.Hom
#align Mon_.comp Mon_.comp
+-/
instance : Category (Mon_ C) where
Hom M N := Hom M N
id := id
comp M N O f g := comp f g
+#print Mon_.id_hom' /-
@[simp]
theorem id_hom' (M : Mon_ C) : (π M : Hom M M).Hom = π M.pt :=
rfl
#align Mon_.id_hom' Mon_.id_hom'
+-/
+#print Mon_.comp_hom' /-
@[simp]
theorem comp_hom' {M N K : Mon_ C} (f : M βΆ N) (g : N βΆ K) :
(f β« g : Hom M K).Hom = f.Hom β« g.Hom :=
rfl
#align Mon_.comp_hom' Mon_.comp_hom'
+-/
section
variable (C)
+#print Mon_.forget /-
/-- The forgetful functor from monoid objects to the ambient category. -/
@[simps]
def forget : Mon_ C β₯€ C where
obj A := A.pt
map A B f := f.Hom
#align Mon_.forget Mon_.forget
+-/
end
+#print Mon_.forget_faithful /-
instance forget_faithful : Faithful (@forget C _ _) where
#align Mon_.forget_faithful Mon_.forget_faithful
+-/
instance {A B : Mon_ C} (f : A βΆ B) [e : IsIso ((forget C).map f)] : IsIso f.Hom :=
e
@@ -175,6 +201,7 @@ instance : ReflectsIsomorphisms (forget C)
by tidyβ©β©
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.isoOfIso /-
/-- Construct an isomorphism of monoids by giving an isomorphism between the underlying objects
and checking compatibility with unit and multiplication only in the forward direction.
-/
@@ -193,7 +220,9 @@ def isoOfIso {M N : Mon_ C} (f : M.pt β
N.pt) (one_f : M.one β« f.Hom = N.one
slice_rhs 2 3 => rw [mul_f]
simp }
#align Mon_.iso_of_iso Mon_.isoOfIso
+-/
+#print Mon_.uniqueHomFromTrivial /-
instance uniqueHomFromTrivial (A : Mon_ C) : Unique (trivial C βΆ A)
where
default :=
@@ -205,6 +234,7 @@ instance uniqueHomFromTrivial (A : Mon_ C) : Unique (trivial C βΆ A)
rw [β category.id_comp f.hom]
erw [f.one_hom]
#align Mon_.unique_hom_from_trivial Mon_.uniqueHomFromTrivial
+-/
open CategoryTheory.Limits
@@ -217,6 +247,7 @@ namespace CategoryTheory.LaxMonoidalFunctor
variable {C} {D : Type uβ} [Category.{vβ} D] [MonoidalCategory.{vβ} D]
+#print CategoryTheory.LaxMonoidalFunctor.mapMon /-
-- TODO: map_Mod F A : Mod A β₯€ Mod (F.map_Mon A)
/-- A lax monoidal functor takes monoid objects to monoid objects.
@@ -262,15 +293,18 @@ def mapMon (F : LaxMonoidalFunctor C D) : Mon_ C β₯€ Mon_ D
map_id' A := by ext; simp
map_comp' A B C f g := by ext; simp
#align category_theory.lax_monoidal_functor.map_Mon CategoryTheory.LaxMonoidalFunctor.mapMon
+-/
variable (C D)
+#print CategoryTheory.LaxMonoidalFunctor.mapMonFunctor /-
/-- `map_Mon` is functorial in the lax monoidal functor. -/
def mapMonFunctor : LaxMonoidalFunctor C D β₯€ Mon_ C β₯€ Mon_ D
where
obj := mapMon
map F G Ξ± := { app := fun A => { Hom := Ξ±.app A.pt } }
#align category_theory.lax_monoidal_functor.map_Mon_functor CategoryTheory.LaxMonoidalFunctor.mapMonFunctor
+-/
end CategoryTheory.LaxMonoidalFunctor
@@ -280,14 +314,17 @@ open CategoryTheory.LaxMonoidalFunctor
namespace EquivLaxMonoidalFunctorPunit
+#print Mon_.EquivLaxMonoidalFunctorPUnit.laxMonoidalToMon /-
/-- Implementation of `Mon_.equiv_lax_monoidal_functor_punit`. -/
@[simps]
def laxMonoidalToMon : LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C β₯€ Mon_ C
where
obj F := (F.mapMon : Mon_ _ β₯€ Mon_ C).obj (trivial (Discrete PUnit))
map F G Ξ± := ((mapMonFunctor (Discrete PUnit) C).map Ξ±).app _
-#align Mon_.equiv_lax_monoidal_functor_punit.lax_monoidal_to_Mon Mon_.EquivLaxMonoidalFunctorPunit.laxMonoidalToMon
+#align Mon_.equiv_lax_monoidal_functor_punit.lax_monoidal_to_Mon Mon_.EquivLaxMonoidalFunctorPUnit.laxMonoidalToMon
+-/
+#print Mon_.EquivLaxMonoidalFunctorPUnit.monToLaxMonoidal /-
/-- Implementation of `Mon_.equiv_lax_monoidal_functor_punit`. -/
@[simps]
def monToLaxMonoidal : Mon_ C β₯€ LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C
@@ -304,12 +341,14 @@ def monToLaxMonoidal : Mon_ C β₯€ LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C
naturality' := fun _ _ _ => by dsimp; rw [category.id_comp, category.comp_id]
unit' := f.OneHom
tensor' := fun _ _ => f.MulHom }
-#align Mon_.equiv_lax_monoidal_functor_punit.Mon_to_lax_monoidal Mon_.EquivLaxMonoidalFunctorPunit.monToLaxMonoidal
+#align Mon_.equiv_lax_monoidal_functor_punit.Mon_to_lax_monoidal Mon_.EquivLaxMonoidalFunctorPUnit.monToLaxMonoidal
+-/
attribute [local tidy] tactic.discrete_cases
attribute [local simp] eq_to_iso_map
+#print Mon_.EquivLaxMonoidalFunctorPUnit.unitIso /-
/-- Implementation of `Mon_.equiv_lax_monoidal_functor_punit`. -/
@[simps]
def unitIso :
@@ -319,8 +358,10 @@ def unitIso :
MonoidalNatIso.ofComponents (fun _ => F.toFunctor.mapIso (eqToIso (by ext))) (by tidy)
(by tidy) (by tidy))
(by tidy)
-#align Mon_.equiv_lax_monoidal_functor_punit.unit_iso Mon_.EquivLaxMonoidalFunctorPunit.unitIso
+#align Mon_.equiv_lax_monoidal_functor_punit.unit_iso Mon_.EquivLaxMonoidalFunctorPUnit.unitIso
+-/
+#print Mon_.EquivLaxMonoidalFunctorPUnit.counitIso /-
/-- Implementation of `Mon_.equiv_lax_monoidal_functor_punit`. -/
@[simps]
def counitIso : monToLaxMonoidal C β laxMonoidalToMon C β
π (Mon_ C) :=
@@ -329,7 +370,8 @@ def counitIso : monToLaxMonoidal C β laxMonoidalToMon C β
π (Mon_ C) :=
{ Hom := { Hom := π _ }
inv := { Hom := π _ } })
(by tidy)
-#align Mon_.equiv_lax_monoidal_functor_punit.counit_iso Mon_.EquivLaxMonoidalFunctorPunit.counitIso
+#align Mon_.equiv_lax_monoidal_functor_punit.counit_iso Mon_.EquivLaxMonoidalFunctorPUnit.counitIso
+-/
end EquivLaxMonoidalFunctorPunit
@@ -341,13 +383,13 @@ attribute [local simp] eq_to_iso_map
Monoid objects in `C` are "just" lax monoidal functors from the trivial monoidal category to `C`.
-/
@[simps]
-def equivLaxMonoidalFunctorPunit : LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C β Mon_ C
+def equivLaxMonoidalFunctorPUnit : LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C β Mon_ C
where
Functor := laxMonoidalToMon C
inverse := monToLaxMonoidal C
unitIso := unitIso C
counitIso := counitIso C
-#align Mon_.equiv_lax_monoidal_functor_punit Mon_.equivLaxMonoidalFunctorPunit
+#align Mon_.equiv_lax_monoidal_functor_punit Mon_.equivLaxMonoidalFunctorPUnit
end Mon_
@@ -391,6 +433,7 @@ variable {C}
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.one_associator /-
-- The proofs that associators and unitors preserve monoid units don't require braiding.
theorem one_associator {M N P : Mon_ C} :
((Ξ»_ (π_ C)).inv β« ((Ξ»_ (π_ C)).inv β« (M.one β N.one) β P.one)) β« (Ξ±_ M.pt N.pt P.pt).Hom =
@@ -405,18 +448,23 @@ theorem one_associator {M N P : Mon_ C} :
slice_lhs 1 2 => rw [left_unitor_inv_naturality]
simp only [category.assoc]
#align Mon_.one_associator Mon_.one_associator
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.one_leftUnitor /-
theorem one_leftUnitor {M : Mon_ C} :
((Ξ»_ (π_ C)).inv β« (π (π_ C) β M.one)) β« (Ξ»_ M.pt).Hom = M.one := by
slice_lhs 2 3 => rw [left_unitor_naturality]; simp
#align Mon_.one_left_unitor Mon_.one_leftUnitor
+-/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.one_rightUnitor /-
theorem one_rightUnitor {M : Mon_ C} :
((Ξ»_ (π_ C)).inv β« (M.one β π (π_ C))) β« (Ο_ M.pt).Hom = M.one := by
slice_lhs 2 3 => rw [right_unitor_naturality, β unitors_equal]; simp
#align Mon_.one_right_unitor Mon_.one_rightUnitor
+-/
variable [BraidedCategory C]
@@ -537,6 +585,7 @@ theorem mul_rightUnitor {M : Mon_ C} :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
+#print Mon_.monMonoidal /-
instance monMonoidal : MonoidalCategory (Mon_ C)
where
tensorObj M N :=
@@ -568,6 +617,7 @@ instance monMonoidal : MonoidalCategory (Mon_ C)
pentagon' := by intros; ext; dsimp; apply pentagon
triangle' := by intros; ext; dsimp; apply triangle
#align Mon_.Mon_monoidal Mon_.monMonoidal
+-/
end Mon_
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -428,7 +428,7 @@ variable [BraidedCategory C]
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem Mon_tensor_one_mul (M N : Mon_ C) :
((Ξ»_ (π_ C)).inv β« (M.one β N.one) β π (M.pt β N.pt)) β«
- tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
+ tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
(Ξ»_ (M.pt β N.pt)).Hom :=
by
rw [β category.id_comp (π (M.X β N.X)), tensor_comp]
@@ -446,7 +446,7 @@ theorem Mon_tensor_one_mul (M N : Mon_ C) :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem Mon_tensor_mul_one (M N : Mon_ C) :
(π (M.pt β N.pt) β (Ξ»_ (π_ C)).inv β« (M.one β N.one)) β«
- tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
+ tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
(Ο_ (M.pt β N.pt)).Hom :=
by
rw [β category.id_comp (π (M.X β N.X)), tensor_comp]
@@ -469,11 +469,11 @@ theorem Mon_tensor_mul_one (M N : Mon_ C) :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem Mon_tensor_mul_assoc (M N : Mon_ C) :
- (tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) β π (M.pt β N.pt)) β«
- tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
+ (tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) β π (M.pt β N.pt)) β«
+ tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
(Ξ±_ (M.pt β N.pt) (M.pt β N.pt) (M.pt β N.pt)).Hom β«
- (π (M.pt β N.pt) β tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul)) β«
- tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) :=
+ (π (M.pt β N.pt) β tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul)) β«
+ tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) :=
by
rw [β category.id_comp (π (M.X β N.X)), tensor_comp]
slice_lhs 2 3 => rw [β tensor_id, tensor_ΞΌ_natural]
@@ -494,12 +494,12 @@ theorem Mon_tensor_mul_assoc (M N : Mon_ C) :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem mul_associator {M N P : Mon_ C} :
- (tensorΞΌ C (M.pt β N.pt, P.pt) (M.pt β N.pt, P.pt) β«
- (tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) β P.mul)) β«
+ (tensor_ΞΌ C (M.pt β N.pt, P.pt) (M.pt β N.pt, P.pt) β«
+ (tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) β P.mul)) β«
(Ξ±_ M.pt N.pt P.pt).Hom =
((Ξ±_ M.pt N.pt P.pt).Hom β (Ξ±_ M.pt N.pt P.pt).Hom) β«
- tensorΞΌ C (M.pt, N.pt β P.pt) (M.pt, N.pt β P.pt) β«
- (M.mul β tensorΞΌ C (N.pt, P.pt) (N.pt, P.pt) β« (N.mul β P.mul)) :=
+ tensor_ΞΌ C (M.pt, N.pt β P.pt) (M.pt, N.pt β P.pt) β«
+ (M.mul β tensor_ΞΌ C (N.pt, P.pt) (N.pt, P.pt) β« (N.mul β P.mul)) :=
by
simp
slice_lhs 2 3 => rw [β category.id_comp P.mul, tensor_comp]
@@ -512,7 +512,7 @@ theorem mul_associator {M N P : Mon_ C} :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem mul_leftUnitor {M : Mon_ C} :
- (tensorΞΌ C (π_ C, M.pt) (π_ C, M.pt) β« ((Ξ»_ (π_ C)).Hom β M.mul)) β« (Ξ»_ M.pt).Hom =
+ (tensor_ΞΌ C (π_ C, M.pt) (π_ C, M.pt) β« ((Ξ»_ (π_ C)).Hom β M.mul)) β« (Ξ»_ M.pt).Hom =
((Ξ»_ M.pt).Hom β (Ξ»_ M.pt).Hom) β« M.mul :=
by
rw [β category.comp_id (Ξ»_ (π_ C)).Hom, β category.id_comp M.mul, tensor_comp]
@@ -524,7 +524,7 @@ theorem mul_leftUnitor {M : Mon_ C} :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem mul_rightUnitor {M : Mon_ C} :
- (tensorΞΌ C (M.pt, π_ C) (M.pt, π_ C) β« (M.mul β (Ξ»_ (π_ C)).Hom)) β« (Ο_ M.pt).Hom =
+ (tensor_ΞΌ C (M.pt, π_ C) (M.pt, π_ C) β« (M.mul β (Ξ»_ (π_ C)).Hom)) β« (Ο_ M.pt).Hom =
((Ο_ M.pt).Hom β (Ο_ M.pt).Hom) β« M.mul :=
by
rw [β category.id_comp M.mul, β category.comp_id (Ξ»_ (π_ C)).Hom, tensor_comp]
@@ -542,7 +542,7 @@ instance monMonoidal : MonoidalCategory (Mon_ C)
tensorObj M N :=
{ pt := M.pt β N.pt
one := (Ξ»_ (π_ C)).inv β« (M.one β N.one)
- mul := tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul)
+ mul := tensor_ΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul)
one_mul' := Mon_tensor_one_mul M N
mul_one' := Mon_tensor_mul_one M N
mul_assoc' := Mon_tensor_mul_assoc M N }
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -556,17 +556,17 @@ instance monMonoidal : MonoidalCategory (Mon_ C)
slice_rhs 1 2 => rw [tensor_ΞΌ_natural]
slice_lhs 2 3 => rw [β tensor_comp, hom.mul_hom f, hom.mul_hom g, tensor_comp]
simp only [category.assoc] }
- tensor_id' := by intros ; ext; apply tensor_id
- tensor_comp' := by intros ; ext; apply tensor_comp
+ tensor_id' := by intros; ext; apply tensor_id
+ tensor_comp' := by intros; ext; apply tensor_comp
tensorUnit := trivial C
associator M N P := isoOfIso (Ξ±_ M.pt N.pt P.pt) one_associator mul_associator
- associator_naturality' := by intros ; ext; dsimp; apply associator_naturality
+ associator_naturality' := by intros; ext; dsimp; apply associator_naturality
leftUnitor M := isoOfIso (Ξ»_ M.pt) one_leftUnitor mul_leftUnitor
- leftUnitor_naturality' := by intros ; ext; dsimp; apply left_unitor_naturality
+ leftUnitor_naturality' := by intros; ext; dsimp; apply left_unitor_naturality
rightUnitor M := isoOfIso (Ο_ M.pt) one_rightUnitor mul_rightUnitor
- rightUnitor_naturality' := by intros ; ext; dsimp; apply right_unitor_naturality
- pentagon' := by intros ; ext; dsimp; apply pentagon
- triangle' := by intros ; ext; dsimp; apply triangle
+ rightUnitor_naturality' := by intros; ext; dsimp; apply right_unitor_naturality
+ pentagon' := by intros; ext; dsimp; apply pentagon
+ triangle' := by intros; ext; dsimp; apply triangle
#align Mon_.Mon_monoidal Mon_.monMonoidal
end Mon_
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -187,9 +187,7 @@ def isoOfIso {M N : Mon_ C} (f : M.pt β
N.pt) (one_f : M.one β« f.Hom = N.one
mul_hom' := mul_f }
inv :=
{ Hom := f.inv
- one_hom' := by
- rw [β one_f]
- simp
+ one_hom' := by rw [β one_f]; simp
mul_hom' := by
rw [β cancel_mono f.hom]
slice_rhs 2 3 => rw [mul_f]
@@ -200,12 +198,8 @@ instance uniqueHomFromTrivial (A : Mon_ C) : Unique (trivial C βΆ A)
where
default :=
{ Hom := A.one
- one_hom' := by
- dsimp
- simp
- mul_hom' := by
- dsimp
- simp [A.one_mul, unitors_equal] }
+ one_hom' := by dsimp; simp
+ mul_hom' := by dsimp; simp [A.one_mul, unitors_equal] }
uniq f := by
ext; simp
rw [β category.id_comp f.hom]
@@ -260,19 +254,13 @@ def mapMon (F : LaxMonoidalFunctor C D) : Mon_ C β₯€ Mon_ D
simp only [category.assoc] }
map A B f :=
{ Hom := F.map f.Hom
- one_hom' := by
- dsimp
- rw [category.assoc, β F.to_functor.map_comp, f.one_hom]
+ one_hom' := by dsimp; rw [category.assoc, β F.to_functor.map_comp, f.one_hom]
mul_hom' := by
dsimp
rw [category.assoc, F.ΞΌ_natural_assoc, β F.to_functor.map_comp, β F.to_functor.map_comp,
f.mul_hom] }
- map_id' A := by
- ext
- simp
- map_comp' A B C f g := by
- ext
- simp
+ map_id' A := by ext; simp
+ map_comp' A B C f g := by ext; simp
#align category_theory.lax_monoidal_functor.map_Mon CategoryTheory.LaxMonoidalFunctor.mapMon
variable (C D)
@@ -313,9 +301,7 @@ def monToLaxMonoidal : Mon_ C β₯€ LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C
map_comp' := fun _ _ _ _ _ => (Category.id_comp (π A.pt)).symm }
map A B f :=
{ app := fun _ => f.Hom
- naturality' := fun _ _ _ => by
- dsimp
- rw [category.id_comp, category.comp_id]
+ naturality' := fun _ _ _ => by dsimp; rw [category.id_comp, category.comp_id]
unit' := f.OneHom
tensor' := fun _ _ => f.MulHom }
#align Mon_.equiv_lax_monoidal_functor_punit.Mon_to_lax_monoidal Mon_.EquivLaxMonoidalFunctorPunit.monToLaxMonoidal
@@ -422,18 +408,14 @@ theorem one_associator {M N P : Mon_ C} :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem one_leftUnitor {M : Mon_ C} :
- ((Ξ»_ (π_ C)).inv β« (π (π_ C) β M.one)) β« (Ξ»_ M.pt).Hom = M.one :=
- by
- slice_lhs 2 3 => rw [left_unitor_naturality]
- simp
+ ((Ξ»_ (π_ C)).inv β« (π (π_ C) β M.one)) β« (Ξ»_ M.pt).Hom = M.one := by
+ slice_lhs 2 3 => rw [left_unitor_naturality]; simp
#align Mon_.one_left_unitor Mon_.one_leftUnitor
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem one_rightUnitor {M : Mon_ C} :
- ((Ξ»_ (π_ C)).inv β« (M.one β π (π_ C))) β« (Ο_ M.pt).Hom = M.one :=
- by
- slice_lhs 2 3 => rw [right_unitor_naturality, β unitors_equal]
- simp
+ ((Ξ»_ (π_ C)).inv β« (M.one β π (π_ C))) β« (Ο_ M.pt).Hom = M.one := by
+ slice_lhs 2 3 => rw [right_unitor_naturality, β unitors_equal]; simp
#align Mon_.one_right_unitor Mon_.one_rightUnitor
variable [BraidedCategory C]
@@ -574,43 +556,17 @@ instance monMonoidal : MonoidalCategory (Mon_ C)
slice_rhs 1 2 => rw [tensor_ΞΌ_natural]
slice_lhs 2 3 => rw [β tensor_comp, hom.mul_hom f, hom.mul_hom g, tensor_comp]
simp only [category.assoc] }
- tensor_id' := by
- intros
- ext
- apply tensor_id
- tensor_comp' := by
- intros
- ext
- apply tensor_comp
+ tensor_id' := by intros ; ext; apply tensor_id
+ tensor_comp' := by intros ; ext; apply tensor_comp
tensorUnit := trivial C
associator M N P := isoOfIso (Ξ±_ M.pt N.pt P.pt) one_associator mul_associator
- associator_naturality' := by
- intros
- ext
- dsimp
- apply associator_naturality
+ associator_naturality' := by intros ; ext; dsimp; apply associator_naturality
leftUnitor M := isoOfIso (Ξ»_ M.pt) one_leftUnitor mul_leftUnitor
- leftUnitor_naturality' := by
- intros
- ext
- dsimp
- apply left_unitor_naturality
+ leftUnitor_naturality' := by intros ; ext; dsimp; apply left_unitor_naturality
rightUnitor M := isoOfIso (Ο_ M.pt) one_rightUnitor mul_rightUnitor
- rightUnitor_naturality' := by
- intros
- ext
- dsimp
- apply right_unitor_naturality
- pentagon' := by
- intros
- ext
- dsimp
- apply pentagon
- triangle' := by
- intros
- ext
- dsimp
- apply triangle
+ rightUnitor_naturality' := by intros ; ext; dsimp; apply right_unitor_naturality
+ pentagon' := by intros ; ext; dsimp; apply pentagon
+ triangle' := by intros ; ext; dsimp; apply triangle
#align Mon_.Mon_monoidal Mon_.monMonoidal
end Mon_
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -60,10 +60,10 @@ restate_axiom Mon_.mul_one'
restate_axiom Mon_.mul_assoc'
-attribute [reassoc.1] Mon_.one_mul Mon_.mul_one
+attribute [reassoc] Mon_.one_mul Mon_.mul_one
-- We prove a more general `@[simp]` lemma below.
-attribute [simp, reassoc.1] Mon_.mul_assoc
+attribute [simp, reassoc] Mon_.mul_assoc
namespace Mon_
@@ -114,7 +114,7 @@ restate_axiom hom.one_hom'
restate_axiom hom.mul_hom'
-attribute [simp, reassoc.1] hom.one_hom hom.mul_hom
+attribute [simp, reassoc] hom.one_hom hom.mul_hom
/-- The identity morphism on a monoid object. -/
@[simps]
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -42,7 +42,7 @@ variable (C : Type uβ) [Category.{vβ} C] [MonoidalCategory.{vβ} C]
When the monoidal category is preadditive, this is also sometimes called an "algebra object".
-/
structure Mon_ where
- x : C
+ pt : C
one : π_ C βΆ X
mul : X β X βΆ X
one_mul' : (one β π X) β« mul = (Ξ»_ X).Hom := by obviously
@@ -71,7 +71,7 @@ namespace Mon_
-/
@[simps]
def trivial : Mon_ C where
- x := π_ C
+ pt := π_ C
one := π _
mul := (Ξ»_ _).Hom
mul_assoc' := by coherence
@@ -85,27 +85,27 @@ variable {C} {M : Mon_ C}
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@[simp]
-theorem one_mul_hom {Z : C} (f : Z βΆ M.x) : (M.one β f) β« M.mul = (Ξ»_ Z).Hom β« f := by
+theorem one_mul_hom {Z : C} (f : Z βΆ M.pt) : (M.one β f) β« M.mul = (Ξ»_ Z).Hom β« f := by
rw [β id_tensor_comp_tensor_id, category.assoc, M.one_mul, left_unitor_naturality]
#align Mon_.one_mul_hom Mon_.one_mul_hom
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
@[simp]
-theorem mul_one_hom {Z : C} (f : Z βΆ M.x) : (f β M.one) β« M.mul = (Ο_ Z).Hom β« f := by
+theorem mul_one_hom {Z : C} (f : Z βΆ M.pt) : (f β M.one) β« M.mul = (Ο_ Z).Hom β« f := by
rw [β tensor_id_comp_id_tensor, category.assoc, M.mul_one, right_unitor_naturality]
#align Mon_.mul_one_hom Mon_.mul_one_hom
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-theorem assoc_flip : (π M.x β M.mul) β« M.mul = (Ξ±_ M.x M.x M.x).inv β« (M.mul β π M.x) β« M.mul := by
- simp
+theorem assoc_flip :
+ (π M.pt β M.mul) β« M.mul = (Ξ±_ M.pt M.pt M.pt).inv β« (M.mul β π M.pt) β« M.mul := by simp
#align Mon_.assoc_flip Mon_.assoc_flip
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/-- A morphism of monoid objects. -/
@[ext]
structure Hom (M N : Mon_ C) where
- Hom : M.x βΆ N.x
+ Hom : M.pt βΆ N.pt
one_hom' : M.one β« hom = N.one := by obviously
mul_hom' : M.mul β« hom = (hom β hom) β« N.mul := by obviously
#align Mon_.hom Mon_.Hom
@@ -118,7 +118,7 @@ attribute [simp, reassoc.1] hom.one_hom hom.mul_hom
/-- The identity morphism on a monoid object. -/
@[simps]
-def id (M : Mon_ C) : Hom M M where Hom := π M.x
+def id (M : Mon_ C) : Hom M M where Hom := π M.pt
#align Mon_.id Mon_.id
instance homInhabited (M : Mon_ C) : Inhabited (Hom M M) :=
@@ -136,7 +136,7 @@ instance : Category (Mon_ C) where
comp M N O f g := comp f g
@[simp]
-theorem id_hom' (M : Mon_ C) : (π M : Hom M M).Hom = π M.x :=
+theorem id_hom' (M : Mon_ C) : (π M : Hom M M).Hom = π M.pt :=
rfl
#align Mon_.id_hom' Mon_.id_hom'
@@ -153,7 +153,7 @@ variable (C)
/-- The forgetful functor from monoid objects to the ambient category. -/
@[simps]
def forget : Mon_ C β₯€ C where
- obj A := A.x
+ obj A := A.pt
map A B f := f.Hom
#align Mon_.forget Mon_.forget
@@ -178,7 +178,7 @@ instance : ReflectsIsomorphisms (forget C)
/-- Construct an isomorphism of monoids by giving an isomorphism between the underlying objects
and checking compatibility with unit and multiplication only in the forward direction.
-/
-def isoOfIso {M N : Mon_ C} (f : M.x β
N.x) (one_f : M.one β« f.Hom = N.one)
+def isoOfIso {M N : Mon_ C} (f : M.pt β
N.pt) (one_f : M.one β« f.Hom = N.one)
(mul_f : M.mul β« f.Hom = (f.Hom β f.Hom) β« N.mul) : M β
N
where
Hom :=
@@ -232,7 +232,7 @@ That is, a lax monoidal functor `F : C β₯€ D` induces a functor `Mon_ C β₯€ Mon_
def mapMon (F : LaxMonoidalFunctor C D) : Mon_ C β₯€ Mon_ D
where
obj A :=
- { x := F.obj A.x
+ { pt := F.obj A.pt
one := F.Ξ΅ β« F.map A.one
mul := F.ΞΌ _ _ β« F.map A.mul
one_mul' := by
@@ -281,7 +281,7 @@ variable (C D)
def mapMonFunctor : LaxMonoidalFunctor C D β₯€ Mon_ C β₯€ Mon_ D
where
obj := mapMon
- map F G Ξ± := { app := fun A => { Hom := Ξ±.app A.x } }
+ map F G Ξ± := { app := fun A => { Hom := Ξ±.app A.pt } }
#align category_theory.lax_monoidal_functor.map_Mon_functor CategoryTheory.LaxMonoidalFunctor.mapMonFunctor
end CategoryTheory.LaxMonoidalFunctor
@@ -305,12 +305,12 @@ def laxMonoidalToMon : LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C β₯€ Mon_ C
def monToLaxMonoidal : Mon_ C β₯€ LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C
where
obj A :=
- { obj := fun _ => A.x
+ { obj := fun _ => A.pt
map := fun _ _ _ => π _
Ξ΅ := A.one
ΞΌ := fun _ _ => A.mul
map_id' := fun _ => rfl
- map_comp' := fun _ _ _ _ _ => (Category.id_comp (π A.x)).symm }
+ map_comp' := fun _ _ _ _ _ => (Category.id_comp (π A.pt)).symm }
map A B f :=
{ app := fun _ => f.Hom
naturality' := fun _ _ _ => by
@@ -407,7 +407,7 @@ variable {C}
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
-- The proofs that associators and unitors preserve monoid units don't require braiding.
theorem one_associator {M N P : Mon_ C} :
- ((Ξ»_ (π_ C)).inv β« ((Ξ»_ (π_ C)).inv β« (M.one β N.one) β P.one)) β« (Ξ±_ M.x N.x P.x).Hom =
+ ((Ξ»_ (π_ C)).inv β« ((Ξ»_ (π_ C)).inv β« (M.one β N.one) β P.one)) β« (Ξ±_ M.pt N.pt P.pt).Hom =
(Ξ»_ (π_ C)).inv β« (M.one β (Ξ»_ (π_ C)).inv β« (N.one β P.one)) :=
by
simp
@@ -422,7 +422,7 @@ theorem one_associator {M N P : Mon_ C} :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem one_leftUnitor {M : Mon_ C} :
- ((Ξ»_ (π_ C)).inv β« (π (π_ C) β M.one)) β« (Ξ»_ M.x).Hom = M.one :=
+ ((Ξ»_ (π_ C)).inv β« (π (π_ C) β M.one)) β« (Ξ»_ M.pt).Hom = M.one :=
by
slice_lhs 2 3 => rw [left_unitor_naturality]
simp
@@ -430,7 +430,7 @@ theorem one_leftUnitor {M : Mon_ C} :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem one_rightUnitor {M : Mon_ C} :
- ((Ξ»_ (π_ C)).inv β« (M.one β π (π_ C))) β« (Ο_ M.x).Hom = M.one :=
+ ((Ξ»_ (π_ C)).inv β« (M.one β π (π_ C))) β« (Ο_ M.pt).Hom = M.one :=
by
slice_lhs 2 3 => rw [right_unitor_naturality, β unitors_equal]
simp
@@ -445,9 +445,9 @@ variable [BraidedCategory C]
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem Mon_tensor_one_mul (M N : Mon_ C) :
- ((Ξ»_ (π_ C)).inv β« (M.one β N.one) β π (M.x β N.x)) β«
- tensorΞΌ C (M.x, N.x) (M.x, N.x) β« (M.mul β N.mul) =
- (Ξ»_ (M.x β N.x)).Hom :=
+ ((Ξ»_ (π_ C)).inv β« (M.one β N.one) β π (M.pt β N.pt)) β«
+ tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
+ (Ξ»_ (M.pt β N.pt)).Hom :=
by
rw [β category.id_comp (π (M.X β N.X)), tensor_comp]
slice_lhs 2 3 => rw [β tensor_id, tensor_ΞΌ_natural]
@@ -463,9 +463,9 @@ theorem Mon_tensor_one_mul (M N : Mon_ C) :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem Mon_tensor_mul_one (M N : Mon_ C) :
- (π (M.x β N.x) β (Ξ»_ (π_ C)).inv β« (M.one β N.one)) β«
- tensorΞΌ C (M.x, N.x) (M.x, N.x) β« (M.mul β N.mul) =
- (Ο_ (M.x β N.x)).Hom :=
+ (π (M.pt β N.pt) β (Ξ»_ (π_ C)).inv β« (M.one β N.one)) β«
+ tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
+ (Ο_ (M.pt β N.pt)).Hom :=
by
rw [β category.id_comp (π (M.X β N.X)), tensor_comp]
slice_lhs 2 3 => rw [β tensor_id, tensor_ΞΌ_natural]
@@ -487,11 +487,11 @@ theorem Mon_tensor_mul_one (M N : Mon_ C) :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem Mon_tensor_mul_assoc (M N : Mon_ C) :
- (tensorΞΌ C (M.x, N.x) (M.x, N.x) β« (M.mul β N.mul) β π (M.x β N.x)) β«
- tensorΞΌ C (M.x, N.x) (M.x, N.x) β« (M.mul β N.mul) =
- (Ξ±_ (M.x β N.x) (M.x β N.x) (M.x β N.x)).Hom β«
- (π (M.x β N.x) β tensorΞΌ C (M.x, N.x) (M.x, N.x) β« (M.mul β N.mul)) β«
- tensorΞΌ C (M.x, N.x) (M.x, N.x) β« (M.mul β N.mul) :=
+ (tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) β π (M.pt β N.pt)) β«
+ tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) =
+ (Ξ±_ (M.pt β N.pt) (M.pt β N.pt) (M.pt β N.pt)).Hom β«
+ (π (M.pt β N.pt) β tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul)) β«
+ tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) :=
by
rw [β category.id_comp (π (M.X β N.X)), tensor_comp]
slice_lhs 2 3 => rw [β tensor_id, tensor_ΞΌ_natural]
@@ -512,12 +512,12 @@ theorem Mon_tensor_mul_assoc (M N : Mon_ C) :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem mul_associator {M N P : Mon_ C} :
- (tensorΞΌ C (M.x β N.x, P.x) (M.x β N.x, P.x) β«
- (tensorΞΌ C (M.x, N.x) (M.x, N.x) β« (M.mul β N.mul) β P.mul)) β«
- (Ξ±_ M.x N.x P.x).Hom =
- ((Ξ±_ M.x N.x P.x).Hom β (Ξ±_ M.x N.x P.x).Hom) β«
- tensorΞΌ C (M.x, N.x β P.x) (M.x, N.x β P.x) β«
- (M.mul β tensorΞΌ C (N.x, P.x) (N.x, P.x) β« (N.mul β P.mul)) :=
+ (tensorΞΌ C (M.pt β N.pt, P.pt) (M.pt β N.pt, P.pt) β«
+ (tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul) β P.mul)) β«
+ (Ξ±_ M.pt N.pt P.pt).Hom =
+ ((Ξ±_ M.pt N.pt P.pt).Hom β (Ξ±_ M.pt N.pt P.pt).Hom) β«
+ tensorΞΌ C (M.pt, N.pt β P.pt) (M.pt, N.pt β P.pt) β«
+ (M.mul β tensorΞΌ C (N.pt, P.pt) (N.pt, P.pt) β« (N.mul β P.mul)) :=
by
simp
slice_lhs 2 3 => rw [β category.id_comp P.mul, tensor_comp]
@@ -530,8 +530,8 @@ theorem mul_associator {M N P : Mon_ C} :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem mul_leftUnitor {M : Mon_ C} :
- (tensorΞΌ C (π_ C, M.x) (π_ C, M.x) β« ((Ξ»_ (π_ C)).Hom β M.mul)) β« (Ξ»_ M.x).Hom =
- ((Ξ»_ M.x).Hom β (Ξ»_ M.x).Hom) β« M.mul :=
+ (tensorΞΌ C (π_ C, M.pt) (π_ C, M.pt) β« ((Ξ»_ (π_ C)).Hom β M.mul)) β« (Ξ»_ M.pt).Hom =
+ ((Ξ»_ M.pt).Hom β (Ξ»_ M.pt).Hom) β« M.mul :=
by
rw [β category.comp_id (Ξ»_ (π_ C)).Hom, β category.id_comp M.mul, tensor_comp]
slice_lhs 3 4 => rw [left_unitor_naturality]
@@ -542,8 +542,8 @@ theorem mul_leftUnitor {M : Mon_ C} :
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
/- ./././Mathport/Syntax/Translate/Expr.lean:177:8: unsupported: ambiguous notation -/
theorem mul_rightUnitor {M : Mon_ C} :
- (tensorΞΌ C (M.x, π_ C) (M.x, π_ C) β« (M.mul β (Ξ»_ (π_ C)).Hom)) β« (Ο_ M.x).Hom =
- ((Ο_ M.x).Hom β (Ο_ M.x).Hom) β« M.mul :=
+ (tensorΞΌ C (M.pt, π_ C) (M.pt, π_ C) β« (M.mul β (Ξ»_ (π_ C)).Hom)) β« (Ο_ M.pt).Hom =
+ ((Ο_ M.pt).Hom β (Ο_ M.pt).Hom) β« M.mul :=
by
rw [β category.id_comp M.mul, β category.comp_id (Ξ»_ (π_ C)).Hom, tensor_comp]
slice_lhs 3 4 => rw [right_unitor_naturality]
@@ -558,9 +558,9 @@ theorem mul_rightUnitor {M : Mon_ C} :
instance monMonoidal : MonoidalCategory (Mon_ C)
where
tensorObj M N :=
- { x := M.x β N.x
+ { pt := M.pt β N.pt
one := (Ξ»_ (π_ C)).inv β« (M.one β N.one)
- mul := tensorΞΌ C (M.x, N.x) (M.x, N.x) β« (M.mul β N.mul)
+ mul := tensorΞΌ C (M.pt, N.pt) (M.pt, N.pt) β« (M.mul β N.mul)
one_mul' := Mon_tensor_one_mul M N
mul_one' := Mon_tensor_mul_one M N
mul_assoc' := Mon_tensor_mul_assoc M N }
@@ -583,19 +583,19 @@ instance monMonoidal : MonoidalCategory (Mon_ C)
ext
apply tensor_comp
tensorUnit := trivial C
- associator M N P := isoOfIso (Ξ±_ M.x N.x P.x) one_associator mul_associator
+ associator M N P := isoOfIso (Ξ±_ M.pt N.pt P.pt) one_associator mul_associator
associator_naturality' := by
intros
ext
dsimp
apply associator_naturality
- leftUnitor M := isoOfIso (Ξ»_ M.x) one_leftUnitor mul_leftUnitor
+ leftUnitor M := isoOfIso (Ξ»_ M.pt) one_leftUnitor mul_leftUnitor
leftUnitor_naturality' := by
intros
ext
dsimp
apply left_unitor_naturality
- rightUnitor M := isoOfIso (Ο_ M.x) one_rightUnitor mul_rightUnitor
+ rightUnitor M := isoOfIso (Ο_ M.pt) one_rightUnitor mul_rightUnitor
rightUnitor_naturality' := by
intros
ext
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
These notions on functors are now Functor.Full
, Functor.Faithful
, Functor.EssSurj
, Functor.IsEquivalence
, Functor.ReflectsIsomorphisms
. Deprecated aliases are introduced for the previous names.
@@ -145,14 +145,14 @@ def forget : Mon_ C β₯€ C where
end
-instance forget_faithful : Faithful (@forget C _ _) where
+instance forget_faithful : (forget C).Faithful where
#align Mon_.forget_faithful Mon_.forget_faithful
instance {A B : Mon_ C} (f : A βΆ B) [e : IsIso ((forget C).map f)] : IsIso f.hom :=
e
/-- The forgetful functor from monoid objects to the ambient category reflects isomorphisms. -/
-instance : ReflectsIsomorphisms (forget C) where
+instance : (forget C).ReflectsIsomorphisms where
reflects f e :=
β¨β¨{ hom := inv f.hom
mul_hom := by
@@ -3,7 +3,7 @@ Copyright (c) 2020 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-/
-import Mathlib.CategoryTheory.Monoidal.Braided
+import Mathlib.CategoryTheory.Monoidal.Braided.Basic
import Mathlib.CategoryTheory.Monoidal.Discrete
import Mathlib.CategoryTheory.Monoidal.CoherenceLemmas
import Mathlib.CategoryTheory.Limits.Shapes.Terminal
@@ -73,12 +73,12 @@ variable {M : Mon_ C}
@[simp]
theorem one_mul_hom {Z : C} (f : Z βΆ M.X) : (M.one β f) β« M.mul = (Ξ»_ Z).hom β« f := by
- rw [tensorHom_def'_assoc, M.one_mul, leftUnitor_naturality']
+ rw [tensorHom_def'_assoc, M.one_mul, leftUnitor_naturality]
#align Mon_.one_mul_hom Mon_.one_mul_hom
@[simp]
theorem mul_one_hom {Z : C} (f : Z βΆ M.X) : (f β M.one) β« M.mul = (Ο_ Z).hom β« f := by
- rw [tensorHom_def_assoc, M.mul_one, rightUnitor_naturality']
+ rw [tensorHom_def_assoc, M.mul_one, rightUnitor_naturality]
#align Mon_.mul_one_hom Mon_.mul_one_hom
theorem assoc_flip :
@@ -163,6 +163,7 @@ instance : ReflectsIsomorphisms (forget C) where
/-- Construct an isomorphism of monoids by giving an isomorphism between the underlying objects
and checking compatibility with unit and multiplication only in the forward direction.
-/
+@[simps]
def isoOfIso {M N : Mon_ C} (f : M.X β
N.X) (one_f : M.one β« f.hom = N.one)
(mul_f : M.mul β« f.hom = (f.hom β f.hom) β« N.mul) : M β
N where
hom :=
@@ -212,15 +213,15 @@ def mapMon (F : LaxMonoidalFunctor C D) : Mon_ C β₯€ Mon_ D where
one := F.Ξ΅ β« F.map A.one
mul := F.ΞΌ _ _ β« F.map A.mul
one_mul := by
- simp only [comp_whiskerRight, Category.assoc, ΞΌ_natural_left'_assoc, left_unitality']
+ simp only [comp_whiskerRight, Category.assoc, ΞΌ_natural_left_assoc, left_unitality]
slice_lhs 3 4 => rw [β F.toFunctor.map_comp, A.one_mul]
mul_one := by
- simp only [MonoidalCategory.whiskerLeft_comp, Category.assoc, ΞΌ_natural_right'_assoc,
- right_unitality']
+ simp only [MonoidalCategory.whiskerLeft_comp, Category.assoc, ΞΌ_natural_right_assoc,
+ right_unitality]
slice_lhs 3 4 => rw [β F.toFunctor.map_comp, A.mul_one]
mul_assoc := by
- simp only [comp_whiskerRight, Category.assoc, ΞΌ_natural_left'_assoc,
- MonoidalCategory.whiskerLeft_comp, ΞΌ_natural_right'_assoc]
+ simp only [comp_whiskerRight, Category.assoc, ΞΌ_natural_left_assoc,
+ MonoidalCategory.whiskerLeft_comp, ΞΌ_natural_right_assoc]
slice_lhs 3 4 => rw [β F.toFunctor.map_comp, A.mul_assoc]
simp }
map f :=
@@ -258,8 +259,6 @@ def laxMonoidalToMon : LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C β₯€ Mon_ C
map Ξ± := ((mapMonFunctor (Discrete PUnit) C).map Ξ±).app _
#align Mon_.equiv_lax_monoidal_functor_punit.lax_monoidal_to_Mon Mon_.EquivLaxMonoidalFunctorPUnit.laxMonoidalToMon
-attribute [local simp] id_tensorHom tensorHom_id
-
/-- Implementation of `Mon_.equivLaxMonoidalFunctorPUnit`. -/
@[simps]
def monToLaxMonoidal : Mon_ C β₯€ LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C where
@@ -377,14 +376,12 @@ theorem one_associator {M N P : Mon_ C} :
slice_lhs 1 3 => rw [β Category.id_comp P.one, tensor_comp]
slice_lhs 2 3 => rw [associator_naturality]
slice_rhs 1 2 => rw [β Category.id_comp M.one, tensor_comp]
- slice_lhs 1 2 => rw [β leftUnitor_tensor_inv]
+ slice_lhs 1 2 => rw [tensorHom_id, β leftUnitor_tensor_inv]
rw [β cancel_epi (Ξ»_ (π_ C)).inv]
slice_lhs 1 2 => rw [leftUnitor_inv_naturality]
simp
#align Mon_.one_associator Mon_.one_associator
-attribute [local simp] id_tensorHom tensorHom_id
-
theorem one_leftUnitor {M : Mon_ C} :
((Ξ»_ (π_ C)).inv β« (π (π_ C) β M.one)) β« (Ξ»_ M.X).hom = M.one := by
simp
@@ -454,7 +451,7 @@ theorem mul_leftUnitor {M : Mon_ C} :
((Ξ»_ M.X).hom β (Ξ»_ M.X).hom) β« M.mul := by
rw [β Category.comp_id (Ξ»_ (π_ C)).hom, β Category.id_comp M.mul, tensor_comp]
simp only [tensorHom_id, id_tensorHom]
- slice_lhs 3 4 => rw [leftUnitor_naturality']
+ slice_lhs 3 4 => rw [leftUnitor_naturality]
slice_lhs 1 3 => rw [β leftUnitor_monoidal]
simp only [Category.assoc, Category.id_comp]
#align Mon_.mul_left_unitor Mon_.mul_leftUnitor
@@ -464,7 +461,7 @@ theorem mul_rightUnitor {M : Mon_ C} :
((Ο_ M.X).hom β (Ο_ M.X).hom) β« M.mul := by
rw [β Category.id_comp M.mul, β Category.comp_id (Ξ»_ (π_ C)).hom, tensor_comp]
simp only [tensorHom_id, id_tensorHom]
- slice_lhs 3 4 => rw [rightUnitor_naturality']
+ slice_lhs 3 4 => rw [rightUnitor_naturality]
slice_lhs 1 3 => rw [β rightUnitor_monoidal]
simp only [Category.assoc, Category.id_comp]
#align Mon_.mul_right_unitor Mon_.mul_rightUnitor
@@ -277,7 +277,7 @@ def monToLaxMonoidal : Mon_ C β₯€ LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C
tensor := fun _ _ => f.mul_hom }
#align Mon_.equiv_lax_monoidal_functor_punit.Mon_to_lax_monoidal Mon_.EquivLaxMonoidalFunctorPUnit.monToLaxMonoidal
-attribute [local aesop safe tactic (rule_sets [CategoryTheory])]
+attribute [local aesop safe tactic (rule_sets := [CategoryTheory])]
CategoryTheory.Discrete.discreteCases
attribute [local simp] eqToIso_map
@@ -469,6 +469,7 @@ theorem mul_rightUnitor {M : Mon_ C} :
simp only [Category.assoc, Category.id_comp]
#align Mon_.mul_right_unitor Mon_.mul_rightUnitor
+@[simps tensorObj_X tensorHom_hom]
instance monMonoidalStruct : MonoidalCategoryStruct (Mon_ C) :=
let tensorObj (M N : Mon_ C) : Mon_ C :=
{ X := M.X β N.X
@@ -497,14 +498,39 @@ instance monMonoidalStruct : MonoidalCategoryStruct (Mon_ C) :=
leftUnitor := fun M β¦ isoOfIso (Ξ»_ M.X) one_leftUnitor mul_leftUnitor
rightUnitor := fun M β¦ isoOfIso (Ο_ M.X) one_rightUnitor mul_rightUnitor }
-instance monMonoidal : MonoidalCategory (Mon_ C) := .ofTensorHom
- (tensor_id := by intros; ext; apply tensor_id)
- (tensor_comp := by intros; ext; apply tensor_comp)
- (associator_naturality := by intros; ext; dsimp; apply associator_naturality)
- (leftUnitor_naturality := by intros; ext; dsimp; apply leftUnitor_naturality)
- (rightUnitor_naturality := by intros; ext; dsimp; apply rightUnitor_naturality)
- (pentagon := by intros; ext; dsimp; apply pentagon)
- (triangle := by intros; ext; dsimp; apply triangle)
+@[simp]
+theorem tensorUnit_X : (π_ (Mon_ C)).X = π_ C := rfl
+
+@[simp]
+theorem whiskerLeft_hom {X Y : Mon_ C} (f : X βΆ Y) (Z : Mon_ C) :
+ (f β· Z).hom = f.hom β· Z.X := by
+ rw [β tensorHom_id]; rfl
+
+@[simp]
+theorem whiskerRight_hom (X : Mon_ C) {Y Z : Mon_ C} (f : Y βΆ Z) :
+ (X β f).hom = X.X β f.hom := by
+ rw [β id_tensorHom]; rfl
+
+@[simp]
+theorem leftUnitor_hom_hom (X : Mon_ C) : (Ξ»_ X).hom.hom = (Ξ»_ X.X).hom := rfl
+
+@[simp]
+theorem leftUnitor_inv_hom (X : Mon_ C) : (Ξ»_ X).inv.hom = (Ξ»_ X.X).inv := rfl
+
+@[simp]
+theorem rightUnitor_hom_hom (X : Mon_ C) : (Ο_ X).hom.hom = (Ο_ X.X).hom := rfl
+
+@[simp]
+theorem rightUnitor_inv_hom (X : Mon_ C) : (Ο_ X).inv.hom = (Ο_ X.X).inv := rfl
+
+@[simp]
+theorem associator_hom_hom (X Y Z : Mon_ C) : (Ξ±_ X Y Z).hom.hom = (Ξ±_ X.X Y.X Z.X).hom := rfl
+
+@[simp]
+theorem associator_inv_hom (X Y Z : Mon_ C) : (Ξ±_ X Y Z).inv.hom = (Ξ±_ X.X Y.X Z.X).inv := rfl
+
+instance monMonoidal : MonoidalCategory (Mon_ C) where
+ tensorHom_def := by intros; ext; simp [tensorHom_def]
#align Mon_.Mon_monoidal Mon_.monMonoidal
end Mon_
This PR introduces basic definitions for Kan extensions of functors. It prepares for future development of derived functors and a refactor of the file CategoryTheory.Limits.KanExtension
.
Co-authored-by: JoΓ«l Riou <37772949+joelriou@users.noreply.github.com>
@@ -412,7 +412,7 @@ theorem Mon_tensor_mul_one (M N : Mon_ C) :
(M.X β N.X) β ((Ξ»_ (π_ C)).inv β« (M.one β N.one)) β«
tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul) =
(Ο_ (M.X β N.X)).hom := by
- simp only [whiskerLeft_comp_assoc]
+ simp only [MonoidalCategory.whiskerLeft_comp_assoc]
slice_lhs 2 3 => rw [tensor_ΞΌ_natural_right]
slice_lhs 3 4 => rw [β tensor_comp, mul_one M, mul_one N]
symm
@@ -425,7 +425,7 @@ theorem Mon_tensor_mul_assoc (M N : Mon_ C) :
(Ξ±_ (M.X β N.X) (M.X β N.X) (M.X β N.X)).hom β«
((M.X β N.X) β (tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul))) β«
tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul) := by
- simp only [comp_whiskerRight_assoc, whiskerLeft_comp_assoc]
+ simp only [comp_whiskerRight_assoc, MonoidalCategory.whiskerLeft_comp_assoc]
slice_lhs 2 3 => rw [tensor_ΞΌ_natural_left]
slice_lhs 3 4 => rw [β tensor_comp, mul_assoc M, mul_assoc N, tensor_comp, tensor_comp]
slice_lhs 1 3 => rw [tensor_associativity]
@@ -36,17 +36,19 @@ structure Mon_ where
X : C
one : π_ C βΆ X
mul : X β X βΆ X
- one_mul : (one β π X) β« mul = (Ξ»_ X).hom := by aesop_cat
- mul_one : (π X β one) β« mul = (Ο_ X).hom := by aesop_cat
+ one_mul : (one β· X) β« mul = (Ξ»_ X).hom := by aesop_cat
+ mul_one : (X β one) β« mul = (Ο_ X).hom := by aesop_cat
-- Obviously there is some flexibility stating this axiom.
-- This one has left- and right-hand sides matching the statement of `Monoid.mul_assoc`,
-- and chooses to place the associator on the right-hand side.
-- The heuristic is that unitors and associators "don't have much weight".
- mul_assoc : (mul β π X) β« mul = (Ξ±_ X X X).hom β« (π X β mul) β« mul := by aesop_cat
+ mul_assoc : (mul β· X) β« mul = (Ξ±_ X X X).hom β« (X β mul) β« mul := by aesop_cat
#align Mon_ Mon_
attribute [reassoc] Mon_.one_mul Mon_.mul_one
+attribute [simp] Mon_.one_mul Mon_.mul_one
+
-- We prove a more general `@[simp]` lemma below.
attribute [reassoc (attr := simp)] Mon_.mul_assoc
@@ -71,16 +73,16 @@ variable {M : Mon_ C}
@[simp]
theorem one_mul_hom {Z : C} (f : Z βΆ M.X) : (M.one β f) β« M.mul = (Ξ»_ Z).hom β« f := by
- rw [β id_tensor_comp_tensor_id, Category.assoc, M.one_mul, leftUnitor_naturality]
+ rw [tensorHom_def'_assoc, M.one_mul, leftUnitor_naturality']
#align Mon_.one_mul_hom Mon_.one_mul_hom
@[simp]
theorem mul_one_hom {Z : C} (f : Z βΆ M.X) : (f β M.one) β« M.mul = (Ο_ Z).hom β« f := by
- rw [β tensor_id_comp_id_tensor, Category.assoc, M.mul_one, rightUnitor_naturality]
+ rw [tensorHom_def_assoc, M.mul_one, rightUnitor_naturality']
#align Mon_.mul_one_hom Mon_.mul_one_hom
theorem assoc_flip :
- (π M.X β M.mul) β« M.mul = (Ξ±_ M.X M.X M.X).inv β« (M.mul β π M.X) β« M.mul := by simp
+ (M.X β M.mul) β« M.mul = (Ξ±_ M.X M.X M.X).inv β« (M.mul β· M.X) β« M.mul := by simp
#align Mon_.assoc_flip Mon_.assoc_flip
/-- A morphism of monoid objects. -/
@@ -210,28 +212,17 @@ def mapMon (F : LaxMonoidalFunctor C D) : Mon_ C β₯€ Mon_ D where
one := F.Ξ΅ β« F.map A.one
mul := F.ΞΌ _ _ β« F.map A.mul
one_mul := by
- conv_lhs => rw [comp_tensor_id, β F.toFunctor.map_id]
- slice_lhs 2 3 => rw [F.ΞΌ_natural]
+ simp only [comp_whiskerRight, Category.assoc, ΞΌ_natural_left'_assoc, left_unitality']
slice_lhs 3 4 => rw [β F.toFunctor.map_comp, A.one_mul]
- rw [F.toFunctor.map_id]
- rw [F.left_unitality]
mul_one := by
- conv_lhs => rw [id_tensor_comp, β F.toFunctor.map_id]
- slice_lhs 2 3 => rw [F.ΞΌ_natural]
+ simp only [MonoidalCategory.whiskerLeft_comp, Category.assoc, ΞΌ_natural_right'_assoc,
+ right_unitality']
slice_lhs 3 4 => rw [β F.toFunctor.map_comp, A.mul_one]
- rw [F.toFunctor.map_id]
- rw [F.right_unitality]
mul_assoc := by
- conv_lhs => rw [comp_tensor_id, β F.toFunctor.map_id]
- slice_lhs 2 3 => rw [F.ΞΌ_natural]
+ simp only [comp_whiskerRight, Category.assoc, ΞΌ_natural_left'_assoc,
+ MonoidalCategory.whiskerLeft_comp, ΞΌ_natural_right'_assoc]
slice_lhs 3 4 => rw [β F.toFunctor.map_comp, A.mul_assoc]
- conv_lhs => rw [F.toFunctor.map_id]
- conv_lhs => rw [F.toFunctor.map_comp, F.toFunctor.map_comp]
- conv_rhs => rw [id_tensor_comp, β F.toFunctor.map_id]
- slice_rhs 3 4 => rw [F.ΞΌ_natural]
- conv_rhs => rw [F.toFunctor.map_id]
- slice_rhs 1 3 => rw [β F.associativity]
- simp only [Category.assoc] }
+ simp }
map f :=
{ hom := F.map f.hom
one_hom := by dsimp; rw [Category.assoc, β F.toFunctor.map_comp, f.one_hom]
@@ -267,6 +258,8 @@ def laxMonoidalToMon : LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C β₯€ Mon_ C
map Ξ± := ((mapMonFunctor (Discrete PUnit) C).map Ξ±).app _
#align Mon_.equiv_lax_monoidal_functor_punit.lax_monoidal_to_Mon Mon_.EquivLaxMonoidalFunctorPUnit.laxMonoidalToMon
+attribute [local simp] id_tensorHom tensorHom_id
+
/-- Implementation of `Mon_.equivLaxMonoidalFunctorPUnit`. -/
@[simps]
def monToLaxMonoidal : Mon_ C β₯€ LaxMonoidalFunctor (Discrete PUnit.{u + 1}) C where
@@ -387,59 +380,57 @@ theorem one_associator {M N P : Mon_ C} :
slice_lhs 1 2 => rw [β leftUnitor_tensor_inv]
rw [β cancel_epi (Ξ»_ (π_ C)).inv]
slice_lhs 1 2 => rw [leftUnitor_inv_naturality]
- simp only [Category.assoc]
+ simp
#align Mon_.one_associator Mon_.one_associator
+attribute [local simp] id_tensorHom tensorHom_id
+
theorem one_leftUnitor {M : Mon_ C} :
((Ξ»_ (π_ C)).inv β« (π (π_ C) β M.one)) β« (Ξ»_ M.X).hom = M.one := by
- slice_lhs 2 3 => rw [leftUnitor_naturality]
simp
#align Mon_.one_left_unitor Mon_.one_leftUnitor
theorem one_rightUnitor {M : Mon_ C} :
((Ξ»_ (π_ C)).inv β« (M.one β π (π_ C))) β« (Ο_ M.X).hom = M.one := by
- slice_lhs 2 3 => rw [rightUnitor_naturality, β unitors_equal]
- simp
+ simp [β unitors_equal]
#align Mon_.one_right_unitor Mon_.one_rightUnitor
variable [BraidedCategory C]
theorem Mon_tensor_one_mul (M N : Mon_ C) :
- ((Ξ»_ (π_ C)).inv β« (M.one β N.one) β π (M.X β N.X)) β«
+ (((Ξ»_ (π_ C)).inv β« (M.one β N.one)) β· (M.X β N.X)) β«
tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul) =
(Ξ»_ (M.X β N.X)).hom := by
- rw [β Category.id_comp (π (M.X β N.X)), tensor_comp]
- slice_lhs 2 3 => rw [β tensor_id, tensor_ΞΌ_natural]
+ simp only [comp_whiskerRight_assoc]
+ slice_lhs 2 3 => rw [tensor_ΞΌ_natural_left]
slice_lhs 3 4 => rw [β tensor_comp, one_mul M, one_mul N]
symm
exact tensor_left_unitality C M.X N.X
#align Mon_.Mon_tensor_one_mul Mon_.Mon_tensor_one_mul
theorem Mon_tensor_mul_one (M N : Mon_ C) :
- (π (M.X β N.X) β (Ξ»_ (π_ C)).inv β« (M.one β N.one)) β«
+ (M.X β N.X) β ((Ξ»_ (π_ C)).inv β« (M.one β N.one)) β«
tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul) =
(Ο_ (M.X β N.X)).hom := by
- rw [β Category.id_comp (π (M.X β N.X)), tensor_comp]
- slice_lhs 2 3 => rw [β tensor_id, tensor_ΞΌ_natural]
+ simp only [whiskerLeft_comp_assoc]
+ slice_lhs 2 3 => rw [tensor_ΞΌ_natural_right]
slice_lhs 3 4 => rw [β tensor_comp, mul_one M, mul_one N]
symm
exact tensor_right_unitality C M.X N.X
#align Mon_.Mon_tensor_mul_one Mon_.Mon_tensor_mul_one
theorem Mon_tensor_mul_assoc (M N : Mon_ C) :
- (tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul) β π (M.X β N.X)) β«
+ ((tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul)) β· (M.X β N.X)) β«
tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul) =
(Ξ±_ (M.X β N.X) (M.X β N.X) (M.X β N.X)).hom β«
- (π (M.X β N.X) β tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul)) β«
+ ((M.X β N.X) β (tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul))) β«
tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul) := by
- rw [β Category.id_comp (π (M.X β N.X)), tensor_comp]
- slice_lhs 2 3 => rw [β tensor_id, tensor_ΞΌ_natural]
+ simp only [comp_whiskerRight_assoc, whiskerLeft_comp_assoc]
+ slice_lhs 2 3 => rw [tensor_ΞΌ_natural_left]
slice_lhs 3 4 => rw [β tensor_comp, mul_assoc M, mul_assoc N, tensor_comp, tensor_comp]
- -- Porting note: needed to add `dsimp` here.
- slice_lhs 1 3 => dsimp; rw [tensor_associativity]
- slice_lhs 3 4 => rw [β tensor_ΞΌ_natural]
- slice_lhs 2 3 => rw [β tensor_comp, tensor_id]
- simp only [Category.assoc]
+ slice_lhs 1 3 => rw [tensor_associativity]
+ slice_lhs 3 4 => rw [β tensor_ΞΌ_natural_right]
+ simp
#align Mon_.Mon_tensor_mul_assoc Mon_.Mon_tensor_mul_assoc
theorem mul_associator {M N P : Mon_ C} :
@@ -453,6 +444,7 @@ theorem mul_associator {M N P : Mon_ C} :
slice_lhs 2 3 => rw [β Category.id_comp P.mul, tensor_comp]
slice_lhs 3 4 => rw [associator_naturality]
slice_rhs 3 4 => rw [β Category.id_comp M.mul, tensor_comp]
+ simp only [tensorHom_id, id_tensorHom]
slice_lhs 1 3 => rw [associator_monoidal]
simp only [Category.assoc]
#align Mon_.mul_associator Mon_.mul_associator
@@ -461,7 +453,8 @@ theorem mul_leftUnitor {M : Mon_ C} :
(tensor_ΞΌ C (π_ C, M.X) (π_ C, M.X) β« ((Ξ»_ (π_ C)).hom β M.mul)) β« (Ξ»_ M.X).hom =
((Ξ»_ M.X).hom β (Ξ»_ M.X).hom) β« M.mul := by
rw [β Category.comp_id (Ξ»_ (π_ C)).hom, β Category.id_comp M.mul, tensor_comp]
- slice_lhs 3 4 => rw [leftUnitor_naturality]
+ simp only [tensorHom_id, id_tensorHom]
+ slice_lhs 3 4 => rw [leftUnitor_naturality']
slice_lhs 1 3 => rw [β leftUnitor_monoidal]
simp only [Category.assoc, Category.id_comp]
#align Mon_.mul_left_unitor Mon_.mul_leftUnitor
@@ -470,7 +463,8 @@ theorem mul_rightUnitor {M : Mon_ C} :
(tensor_ΞΌ C (M.X, π_ C) (M.X, π_ C) β« (M.mul β (Ξ»_ (π_ C)).hom)) β« (Ο_ M.X).hom =
((Ο_ M.X).hom β (Ο_ M.X).hom) β« M.mul := by
rw [β Category.id_comp M.mul, β Category.comp_id (Ξ»_ (π_ C)).hom, tensor_comp]
- slice_lhs 3 4 => rw [rightUnitor_naturality]
+ simp only [tensorHom_id, id_tensorHom]
+ slice_lhs 3 4 => rw [rightUnitor_naturality']
slice_lhs 1 3 => rw [β rightUnitor_monoidal]
simp only [Category.assoc, Category.id_comp]
#align Mon_.mul_right_unitor Mon_.mul_rightUnitor
MonoidalCategory
into a Struct
class (#7279)
This matches the approach for CategoryStruct
, and allows us to use the notation within MonoidalCategory
.
It also makes it easier to induce the lawful structure along a faithful functor, as again it means by the time we are providing the proof fields, the notation is already available.
This also eliminates tensorUnit
vs tensorUnit'
, adding a custom pretty-printer to provide the unprimed version with appropriate notation.
@@ -475,15 +475,16 @@ theorem mul_rightUnitor {M : Mon_ C} :
simp only [Category.assoc, Category.id_comp]
#align Mon_.mul_right_unitor Mon_.mul_rightUnitor
-instance monMonoidal : MonoidalCategory (Mon_ C) := .ofTensorHom
- (tensorObj := fun M N β¦
+instance monMonoidalStruct : MonoidalCategoryStruct (Mon_ C) :=
+ let tensorObj (M N : Mon_ C) : Mon_ C :=
{ X := M.X β N.X
one := (Ξ»_ (π_ C)).inv β« (M.one β N.one)
mul := tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul)
one_mul := Mon_tensor_one_mul M N
mul_one := Mon_tensor_mul_one M N
- mul_assoc := Mon_tensor_mul_assoc M N })
- (tensorHom := fun f g β¦
+ mul_assoc := Mon_tensor_mul_assoc M N }
+ let tensorHom {Xβ Yβ Xβ Yβ : Mon_ C} (f : Xβ βΆ Yβ) (g : Xβ βΆ Yβ) :
+ tensorObj _ _ βΆ tensorObj _ _ :=
{ hom := f.hom β g.hom
one_hom := by
dsimp
@@ -492,15 +493,21 @@ instance monMonoidal : MonoidalCategory (Mon_ C) := .ofTensorHom
dsimp
slice_rhs 1 2 => rw [tensor_ΞΌ_natural]
slice_lhs 2 3 => rw [β tensor_comp, Hom.mul_hom f, Hom.mul_hom g, tensor_comp]
- simp only [Category.assoc] })
+ simp only [Category.assoc] }
+ { tensorObj := tensorObj
+ tensorHom := tensorHom
+ whiskerRight := fun f Y => tensorHom f (π Y)
+ whiskerLeft := fun X _ _ g => tensorHom (π X) g
+ tensorUnit := trivial C
+ associator := fun M N P β¦ isoOfIso (Ξ±_ M.X N.X P.X) one_associator mul_associator
+ leftUnitor := fun M β¦ isoOfIso (Ξ»_ M.X) one_leftUnitor mul_leftUnitor
+ rightUnitor := fun M β¦ isoOfIso (Ο_ M.X) one_rightUnitor mul_rightUnitor }
+
+instance monMonoidal : MonoidalCategory (Mon_ C) := .ofTensorHom
(tensor_id := by intros; ext; apply tensor_id)
(tensor_comp := by intros; ext; apply tensor_comp)
- (tensorUnit' := trivial C)
- (associator := fun M N P β¦ isoOfIso (Ξ±_ M.X N.X P.X) one_associator mul_associator)
(associator_naturality := by intros; ext; dsimp; apply associator_naturality)
- (leftUnitor := fun M β¦ isoOfIso (Ξ»_ M.X) one_leftUnitor mul_leftUnitor)
(leftUnitor_naturality := by intros; ext; dsimp; apply leftUnitor_naturality)
- (rightUnitor := fun M β¦ isoOfIso (Ο_ M.X) one_rightUnitor mul_rightUnitor)
(rightUnitor_naturality := by intros; ext; dsimp; apply rightUnitor_naturality)
(pentagon := by intros; ext; dsimp; apply pentagon)
(triangle := by intros; ext; dsimp; apply triangle)
@@ -380,7 +380,7 @@ variable {C}
theorem one_associator {M N P : Mon_ C} :
((Ξ»_ (π_ C)).inv β« ((Ξ»_ (π_ C)).inv β« (M.one β N.one) β P.one)) β« (Ξ±_ M.X N.X P.X).hom =
(Ξ»_ (π_ C)).inv β« (M.one β (Ξ»_ (π_ C)).inv β« (N.one β P.one)) := by
- simp
+ simp only [Category.assoc, Iso.cancel_iso_inv_left]
slice_lhs 1 3 => rw [β Category.id_comp P.one, tensor_comp]
slice_lhs 2 3 => rw [associator_naturality]
slice_rhs 1 2 => rw [β Category.id_comp M.one, tensor_comp]
@@ -449,7 +449,7 @@ theorem mul_associator {M N P : Mon_ C} :
((Ξ±_ M.X N.X P.X).hom β (Ξ±_ M.X N.X P.X).hom) β«
tensor_ΞΌ C (M.X, N.X β P.X) (M.X, N.X β P.X) β«
(M.mul β tensor_ΞΌ C (N.X, P.X) (N.X, P.X) β« (N.mul β P.mul)) := by
- simp
+ simp only [tensor_obj, prodMonoidal_tensorObj, Category.assoc]
slice_lhs 2 3 => rw [β Category.id_comp P.mul, tensor_comp]
slice_lhs 3 4 => rw [associator_naturality]
slice_rhs 3 4 => rw [β Category.id_comp M.mul, tensor_comp]
@@ -475,15 +475,15 @@ theorem mul_rightUnitor {M : Mon_ C} :
simp only [Category.assoc, Category.id_comp]
#align Mon_.mul_right_unitor Mon_.mul_rightUnitor
-instance monMonoidal : MonoidalCategory (Mon_ C) where
- tensorObj M N :=
+instance monMonoidal : MonoidalCategory (Mon_ C) := .ofTensorHom
+ (tensorObj := fun M N β¦
{ X := M.X β N.X
one := (Ξ»_ (π_ C)).inv β« (M.one β N.one)
mul := tensor_ΞΌ C (M.X, N.X) (M.X, N.X) β« (M.mul β N.mul)
one_mul := Mon_tensor_one_mul M N
mul_one := Mon_tensor_mul_one M N
- mul_assoc := Mon_tensor_mul_assoc M N }
- tensorHom f g :=
+ mul_assoc := Mon_tensor_mul_assoc M N })
+ (tensorHom := fun f g β¦
{ hom := f.hom β g.hom
one_hom := by
dsimp
@@ -492,18 +492,18 @@ instance monMonoidal : MonoidalCategory (Mon_ C) where
dsimp
slice_rhs 1 2 => rw [tensor_ΞΌ_natural]
slice_lhs 2 3 => rw [β tensor_comp, Hom.mul_hom f, Hom.mul_hom g, tensor_comp]
- simp only [Category.assoc] }
- tensor_id := by intros; ext; apply tensor_id
- tensor_comp := by intros; ext; apply tensor_comp
- tensorUnit' := trivial C
- associator M N P := isoOfIso (Ξ±_ M.X N.X P.X) one_associator mul_associator
- associator_naturality := by intros; ext; dsimp; apply associator_naturality
- leftUnitor M := isoOfIso (Ξ»_ M.X) one_leftUnitor mul_leftUnitor
- leftUnitor_naturality := by intros; ext; dsimp; apply leftUnitor_naturality
- rightUnitor M := isoOfIso (Ο_ M.X) one_rightUnitor mul_rightUnitor
- rightUnitor_naturality := by intros; ext; dsimp; apply rightUnitor_naturality
- pentagon := by intros; ext; dsimp; apply pentagon
- triangle := by intros; ext; dsimp; apply triangle
+ simp only [Category.assoc] })
+ (tensor_id := by intros; ext; apply tensor_id)
+ (tensor_comp := by intros; ext; apply tensor_comp)
+ (tensorUnit' := trivial C)
+ (associator := fun M N P β¦ isoOfIso (Ξ±_ M.X N.X P.X) one_associator mul_associator)
+ (associator_naturality := by intros; ext; dsimp; apply associator_naturality)
+ (leftUnitor := fun M β¦ isoOfIso (Ξ»_ M.X) one_leftUnitor mul_leftUnitor)
+ (leftUnitor_naturality := by intros; ext; dsimp; apply leftUnitor_naturality)
+ (rightUnitor := fun M β¦ isoOfIso (Ο_ M.X) one_rightUnitor mul_rightUnitor)
+ (rightUnitor_naturality := by intros; ext; dsimp; apply rightUnitor_naturality)
+ (pentagon := by intros; ext; dsimp; apply pentagon)
+ (triangle := by intros; ext; dsimp; apply triangle)
#align Mon_.Mon_monoidal Mon_.monMonoidal
end Mon_
@@ -2,11 +2,6 @@
Copyright (c) 2020 Scott Morrison. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module category_theory.monoidal.Mon_
-! leanprover-community/mathlib commit a836c6dba9bd1ee2a0cdc9af0006a596f243031c
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.Monoidal.Braided
import Mathlib.CategoryTheory.Monoidal.Discrete
@@ -14,6 +9,8 @@ import Mathlib.CategoryTheory.Monoidal.CoherenceLemmas
import Mathlib.CategoryTheory.Limits.Shapes.Terminal
import Mathlib.Algebra.PUnitInstances
+#align_import category_theory.monoidal.Mon_ from "leanprover-community/mathlib"@"a836c6dba9bd1ee2a0cdc9af0006a596f243031c"
+
/-!
# The category of monoids in a monoidal category.
The unported dependencies are