category_theory.localization.predicate
⟷
Mathlib.CategoryTheory.Localization.Predicate
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -369,7 +369,7 @@ theorem liftNatTrans_app (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting
(τ : F₁ ⟶ F₂) (X : C) :
(liftNatTrans L W F₁ F₂ F₁' F₂' τ).app (L.obj X) =
(Lifting.iso L W F₁ F₁').Hom.app X ≫ τ.app X ≫ (Lifting.iso L W F₂ F₂').inv.app X :=
- congr_app (Functor.image_preimage (whiskeringLeftFunctor' L W E) _) X
+ congr_app (Functor.map_preimage (whiskeringLeftFunctor' L W E) _) X
#align category_theory.localization.lift_nat_trans_app CategoryTheory.Localization.liftNatTrans_app
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -53,7 +53,8 @@ identifies the category `D` with the localized category of `C` with respect
to `W : morphism_property C`. -/
class IsLocalization : Prop where
inverts : W.IsInvertedBy L
- nonempty_isEquivalence : Nonempty (IsEquivalence (Localization.Construction.lift L inverts))
+ nonempty_isEquivalence :
+ Nonempty (CategoryTheory.Functor.IsEquivalence (Localization.Construction.lift L inverts))
#align category_theory.functor.is_localization CategoryTheory.Functor.IsLocalization
-/
@@ -175,7 +176,7 @@ def isoOfHom {X Y : C} (f : X ⟶ Y) (hf : W f) : L.obj X ≅ L.obj Y :=
#align category_theory.localization.iso_of_hom CategoryTheory.Localization.isoOfHom
-/
-instance : IsEquivalence (Localization.Construction.lift L (inverts L W)) :=
+instance : CategoryTheory.Functor.IsEquivalence (Localization.Construction.lift L (inverts L W)) :=
(inferInstance : L.IsLocalization W).nonempty_isEquivalence.some
#print CategoryTheory.Localization.equivalenceFromModel /-
@@ -210,7 +211,7 @@ def compEquivalenceFromModelInverseIso : L ⋙ (equivalenceFromModel L W).invers
-/
#print CategoryTheory.Localization.essSurj /-
-theorem essSurj : EssSurj L :=
+theorem essSurj : CategoryTheory.Functor.EssSurj L :=
⟨fun X =>
⟨(Construction.objEquiv W).invFun ((equivalenceFromModel L W).inverse.obj X),
Nonempty.intro
@@ -228,7 +229,7 @@ def whiskeringLeftFunctor : (D ⥤ E) ⥤ W.FunctorsInverting E :=
#align category_theory.localization.whiskering_left_functor CategoryTheory.Localization.whiskeringLeftFunctor
-/
-instance : IsEquivalence (whiskeringLeftFunctor L W E) :=
+instance : CategoryTheory.Functor.IsEquivalence (whiskeringLeftFunctor L W E) :=
by
refine'
is_equivalence.of_iso _
@@ -288,17 +289,17 @@ theorem whiskeringLeftFunctor'_obj (F : D ⥤ E) : (whiskeringLeftFunctor' L W E
#align category_theory.localization.whiskering_left_functor'_obj CategoryTheory.Localization.whiskeringLeftFunctor'_obj
-/
-instance : Full (whiskeringLeftFunctor' L W E) := by rw [whiskering_left_functor'_eq];
- infer_instance
+instance : CategoryTheory.Functor.Full (whiskeringLeftFunctor' L W E) := by
+ rw [whiskering_left_functor'_eq]; infer_instance
-instance : Faithful (whiskeringLeftFunctor' L W E) := by rw [whiskering_left_functor'_eq];
- infer_instance
+instance : CategoryTheory.Functor.Faithful (whiskeringLeftFunctor' L W E) := by
+ rw [whiskering_left_functor'_eq]; infer_instance
#print CategoryTheory.Localization.natTrans_ext /-
theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
(h : ∀ X : C, τ.app (L.obj X) = τ'.app (L.obj X)) : τ = τ' :=
by
- haveI : CategoryTheory.EssSurj L := ess_surj L W
+ haveI : CategoryTheory.Functor.EssSurj L := ess_surj L W
ext Y
rw [← cancel_epi (F₁.map (L.obj_obj_preimage_iso Y).Hom), τ.naturality, τ'.naturality, h]
#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.natTrans_ext
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -447,7 +447,7 @@ open Localization
theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W] : L₂.IsLocalization W :=
by
have h := localization.inverts L₁ W
- rw [morphism_property.is_inverted_by.iff_of_iso W e] at h
+ rw [morphism_property.is_inverted_by.iff_of_iso W e] at h
let F₁ := localization.construction.lift L₁ (localization.inverts L₁ W)
let F₂ := localization.construction.lift L₂ h
exact
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -305,7 +305,7 @@ theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
-/
#print CategoryTheory.Localization.Lifting /-
-/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:400:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
/-- When `L : C ⥤ D` is a localization functor for `W : morphism_property C` and
`F : C ⥤ E` is a functor, we shall say that `F' : D ⥤ E` lifts `F` if the obvious diagram
is commutative up to an isomorphism. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -305,7 +305,7 @@ theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
-/
#print CategoryTheory.Localization.Lifting /-
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:404:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
/-- When `L : C ⥤ D` is a localization functor for `W : morphism_property C` and
`F : C ⥤ E` is a functor, we shall say that `F' : D ⥤ E` lifts `F` if the obvious diagram
is commutative up to an isomorphism. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2022 Joël Riou. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joël Riou
-/
-import Mathbin.CategoryTheory.Localization.Construction
+import CategoryTheory.Localization.Construction
#align_import category_theory.localization.predicate from "leanprover-community/mathlib"@"31ca6f9cf5f90a6206092cd7f84b359dcb6d52e0"
@@ -305,7 +305,7 @@ theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
-/
#print CategoryTheory.Localization.Lifting /-
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
/-- When `L : C ⥤ D` is a localization functor for `W : morphism_property C` and
`F : C ⥤ E` is a functor, we shall say that `F' : D ⥤ E` lifts `F` if the obvious diagram
is commutative up to an isomorphism. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -47,16 +47,18 @@ variable {C D : Type _} [Category C] [Category D] (L : C ⥤ D) (W : MorphismPro
namespace Functor
+#print CategoryTheory.Functor.IsLocalization /-
/-- The predicate expressing that, up to equivalence, a functor `L : C ⥤ D`
identifies the category `D` with the localized category of `C` with respect
to `W : morphism_property C`. -/
class IsLocalization : Prop where
inverts : W.IsInvertedBy L
nonempty_isEquivalence : Nonempty (IsEquivalence (Localization.Construction.lift L inverts))
-#align category_theory.functor.is_localization CategoryTheory.Functor.IsLocalizationₓ
+#align category_theory.functor.is_localization CategoryTheory.Functor.IsLocalization
+-/
#print CategoryTheory.Functor.q_isLocalization /-
-instance q_isLocalization : W.Q.IsLocalizationₓ W
+instance q_isLocalization : W.Q.IsLocalization W
where
inverts := W.Q_inverts
nonempty_isEquivalence :=
@@ -145,8 +147,7 @@ theorem IsLocalization.mk' (h₁ : Localization.StrictUniversalPropertyFixedTarg
-/
#print CategoryTheory.Functor.IsLocalization.for_id /-
-theorem IsLocalization.for_id (hW : W ⊆ MorphismProperty.isomorphisms C) :
- (𝟭 C).IsLocalizationₓ W :=
+theorem IsLocalization.for_id (hW : W ⊆ MorphismProperty.isomorphisms C) : (𝟭 C).IsLocalization W :=
IsLocalization.mk' _ _ (Localization.strictUniversalPropertyFixedTargetId W _ hW)
(Localization.strictUniversalPropertyFixedTargetId W _ hW)
#align category_theory.functor.is_localization.for_id CategoryTheory.Functor.IsLocalization.for_id
@@ -156,11 +157,11 @@ end Functor
namespace Localization
-variable [L.IsLocalizationₓ W]
+variable [L.IsLocalization W]
#print CategoryTheory.Localization.inverts /-
theorem inverts : W.IsInvertedBy L :=
- (inferInstance : L.IsLocalizationₓ W).inverts
+ (inferInstance : L.IsLocalization W).inverts
#align category_theory.localization.inverts CategoryTheory.Localization.inverts
-/
@@ -175,7 +176,7 @@ def isoOfHom {X Y : C} (f : X ⟶ Y) (hf : W f) : L.obj X ≅ L.obj Y :=
-/
instance : IsEquivalence (Localization.Construction.lift L (inverts L W)) :=
- (inferInstance : L.IsLocalizationₓ W).nonempty_isEquivalence.some
+ (inferInstance : L.IsLocalization W).nonempty_isEquivalence.some
#print CategoryTheory.Localization.equivalenceFromModel /-
/-- A chosen equivalence of categories `W.localization ≅ D` for a functor
@@ -303,13 +304,15 @@ theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.natTrans_ext
-/
+#print CategoryTheory.Localization.Lifting /-
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
/-- When `L : C ⥤ D` is a localization functor for `W : morphism_property C` and
`F : C ⥤ E` is a functor, we shall say that `F' : D ⥤ E` lifts `F` if the obvious diagram
is commutative up to an isomorphism. -/
class Lifting (F : C ⥤ E) (F' : D ⥤ E) where
Iso : L ⋙ F' ≅ F
-#align category_theory.localization.lifting CategoryTheory.Localization.Liftingₓ
+#align category_theory.localization.lifting CategoryTheory.Localization.Lifting
+-/
variable {W}
@@ -317,13 +320,13 @@ variable {W}
/-- Given a localization functor `L : C ⥤ D` for `W : morphism_property C` and
a functor `F : C ⥤ E` which inverts `W`, this is a choice of functor
`D ⥤ E` which lifts `F`. -/
-def lift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalizationₓ W] : D ⥤ E :=
+def lift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalization W] : D ⥤ E :=
(functorEquivalence L W E).inverse.obj ⟨F, hF⟩
#align category_theory.localization.lift CategoryTheory.Localization.lift
-/
#print CategoryTheory.Localization.liftingLift /-
-instance liftingLift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalizationₓ W] :
+instance liftingLift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalization W] :
Lifting L W F (lift F hF L) :=
⟨(inducedFunctor _).mapIso ((functorEquivalence L W E).counitIso.app ⟨F, hF⟩)⟩
#align category_theory.localization.lifting_lift CategoryTheory.Localization.liftingLift
@@ -333,7 +336,7 @@ instance liftingLift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L
/-- The canonical isomorphism `L ⋙ lift F hF L ≅ F` for any functor `F : C ⥤ E`
which inverts `W`, when `L : C ⥤ D` is a localization functor for `W`. -/
@[simps]
-def fac (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalizationₓ W] :
+def fac (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalization W] :
L ⋙ lift F hF L ≅ F :=
Lifting.iso _ W _ _
#align category_theory.localization.fac CategoryTheory.Localization.fac
@@ -441,7 +444,7 @@ namespace IsLocalization
open Localization
#print CategoryTheory.Functor.IsLocalization.of_iso /-
-theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalizationₓ W] : L₂.IsLocalizationₓ W :=
+theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W] : L₂.IsLocalization W :=
by
have h := localization.inverts L₁ W
rw [morphism_property.is_inverted_by.iff_of_iso W e] at h
@@ -458,7 +461,7 @@ theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalizationₓ
/-- If `L : C ⥤ D` is a localization for `W : morphism_property C`, then it is also
the case of a functor obtained by post-composing `L` with an equivalence of categories. -/
theorem of_equivalence_target {E : Type _} [Category E] (L' : C ⥤ E) (eq : D ≌ E)
- [L.IsLocalizationₓ W] (e : L ⋙ Eq.Functor ≅ L') : L'.IsLocalizationₓ W :=
+ [L.IsLocalization W] (e : L ⋙ Eq.Functor ≅ L') : L'.IsLocalization W :=
by
have h : W.is_inverted_by L' :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/32a7e535287f9c73f2e4d2aef306a39190f0b504
@@ -47,18 +47,16 @@ variable {C D : Type _} [Category C] [Category D] (L : C ⥤ D) (W : MorphismPro
namespace Functor
-#print CategoryTheory.Functor.IsLocalization /-
/-- The predicate expressing that, up to equivalence, a functor `L : C ⥤ D`
identifies the category `D` with the localized category of `C` with respect
to `W : morphism_property C`. -/
class IsLocalization : Prop where
inverts : W.IsInvertedBy L
nonempty_isEquivalence : Nonempty (IsEquivalence (Localization.Construction.lift L inverts))
-#align category_theory.functor.is_localization CategoryTheory.Functor.IsLocalization
--/
+#align category_theory.functor.is_localization CategoryTheory.Functor.IsLocalizationₓ
#print CategoryTheory.Functor.q_isLocalization /-
-instance q_isLocalization : W.Q.IsLocalization W
+instance q_isLocalization : W.Q.IsLocalizationₓ W
where
inverts := W.Q_inverts
nonempty_isEquivalence :=
@@ -147,7 +145,8 @@ theorem IsLocalization.mk' (h₁ : Localization.StrictUniversalPropertyFixedTarg
-/
#print CategoryTheory.Functor.IsLocalization.for_id /-
-theorem IsLocalization.for_id (hW : W ⊆ MorphismProperty.isomorphisms C) : (𝟭 C).IsLocalization W :=
+theorem IsLocalization.for_id (hW : W ⊆ MorphismProperty.isomorphisms C) :
+ (𝟭 C).IsLocalizationₓ W :=
IsLocalization.mk' _ _ (Localization.strictUniversalPropertyFixedTargetId W _ hW)
(Localization.strictUniversalPropertyFixedTargetId W _ hW)
#align category_theory.functor.is_localization.for_id CategoryTheory.Functor.IsLocalization.for_id
@@ -157,11 +156,11 @@ end Functor
namespace Localization
-variable [L.IsLocalization W]
+variable [L.IsLocalizationₓ W]
#print CategoryTheory.Localization.inverts /-
theorem inverts : W.IsInvertedBy L :=
- (inferInstance : L.IsLocalization W).inverts
+ (inferInstance : L.IsLocalizationₓ W).inverts
#align category_theory.localization.inverts CategoryTheory.Localization.inverts
-/
@@ -176,7 +175,7 @@ def isoOfHom {X Y : C} (f : X ⟶ Y) (hf : W f) : L.obj X ≅ L.obj Y :=
-/
instance : IsEquivalence (Localization.Construction.lift L (inverts L W)) :=
- (inferInstance : L.IsLocalization W).nonempty_isEquivalence.some
+ (inferInstance : L.IsLocalizationₓ W).nonempty_isEquivalence.some
#print CategoryTheory.Localization.equivalenceFromModel /-
/-- A chosen equivalence of categories `W.localization ≅ D` for a functor
@@ -304,15 +303,13 @@ theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.natTrans_ext
-/
-#print CategoryTheory.Localization.Lifting /-
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
/-- When `L : C ⥤ D` is a localization functor for `W : morphism_property C` and
`F : C ⥤ E` is a functor, we shall say that `F' : D ⥤ E` lifts `F` if the obvious diagram
is commutative up to an isomorphism. -/
class Lifting (F : C ⥤ E) (F' : D ⥤ E) where
Iso : L ⋙ F' ≅ F
-#align category_theory.localization.lifting CategoryTheory.Localization.Lifting
--/
+#align category_theory.localization.lifting CategoryTheory.Localization.Liftingₓ
variable {W}
@@ -320,13 +317,13 @@ variable {W}
/-- Given a localization functor `L : C ⥤ D` for `W : morphism_property C` and
a functor `F : C ⥤ E` which inverts `W`, this is a choice of functor
`D ⥤ E` which lifts `F`. -/
-def lift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalization W] : D ⥤ E :=
+def lift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalizationₓ W] : D ⥤ E :=
(functorEquivalence L W E).inverse.obj ⟨F, hF⟩
#align category_theory.localization.lift CategoryTheory.Localization.lift
-/
#print CategoryTheory.Localization.liftingLift /-
-instance liftingLift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalization W] :
+instance liftingLift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalizationₓ W] :
Lifting L W F (lift F hF L) :=
⟨(inducedFunctor _).mapIso ((functorEquivalence L W E).counitIso.app ⟨F, hF⟩)⟩
#align category_theory.localization.lifting_lift CategoryTheory.Localization.liftingLift
@@ -336,7 +333,7 @@ instance liftingLift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L
/-- The canonical isomorphism `L ⋙ lift F hF L ≅ F` for any functor `F : C ⥤ E`
which inverts `W`, when `L : C ⥤ D` is a localization functor for `W`. -/
@[simps]
-def fac (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalization W] :
+def fac (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalizationₓ W] :
L ⋙ lift F hF L ≅ F :=
Lifting.iso _ W _ _
#align category_theory.localization.fac CategoryTheory.Localization.fac
@@ -444,7 +441,7 @@ namespace IsLocalization
open Localization
#print CategoryTheory.Functor.IsLocalization.of_iso /-
-theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W] : L₂.IsLocalization W :=
+theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalizationₓ W] : L₂.IsLocalizationₓ W :=
by
have h := localization.inverts L₁ W
rw [morphism_property.is_inverted_by.iff_of_iso W e] at h
@@ -461,7 +458,7 @@ theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W]
/-- If `L : C ⥤ D` is a localization for `W : morphism_property C`, then it is also
the case of a functor obtained by post-composing `L` with an equivalence of categories. -/
theorem of_equivalence_target {E : Type _} [Category E] (L' : C ⥤ E) (eq : D ≌ E)
- [L.IsLocalization W] (e : L ⋙ Eq.Functor ≅ L') : L'.IsLocalization W :=
+ [L.IsLocalizationₓ W] (e : L ⋙ Eq.Functor ≅ L') : L'.IsLocalizationₓ W :=
by
have h : W.is_inverted_by L' :=
by
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2022 Joël Riou. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joël Riou
-
-! This file was ported from Lean 3 source module category_theory.localization.predicate
-! leanprover-community/mathlib commit 31ca6f9cf5f90a6206092cd7f84b359dcb6d52e0
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.CategoryTheory.Localization.Construction
+#align_import category_theory.localization.predicate from "leanprover-community/mathlib"@"31ca6f9cf5f90a6206092cd7f84b359dcb6d52e0"
+
/-!
# Predicate for localized categories
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -123,6 +123,7 @@ end Localization
namespace Functor
+#print CategoryTheory.Functor.IsLocalization.mk' /-
theorem IsLocalization.mk' (h₁ : Localization.StrictUniversalPropertyFixedTarget L W D)
(h₂ : Localization.StrictUniversalPropertyFixedTarget L W W.Localization) :
IsLocalization L W :=
@@ -146,11 +147,14 @@ theorem IsLocalization.mk' (h₁ : Localization.StrictUniversalPropertyFixedTarg
simpa only [eq_to_iso.hom, eq_to_hom_app, eq_to_hom_map, eq_to_hom_trans,
eq_to_hom_refl] } }
#align category_theory.functor.is_localization.mk' CategoryTheory.Functor.IsLocalization.mk'
+-/
+#print CategoryTheory.Functor.IsLocalization.for_id /-
theorem IsLocalization.for_id (hW : W ⊆ MorphismProperty.isomorphisms C) : (𝟭 C).IsLocalization W :=
IsLocalization.mk' _ _ (Localization.strictUniversalPropertyFixedTargetId W _ hW)
(Localization.strictUniversalPropertyFixedTargetId W _ hW)
#align category_theory.functor.is_localization.for_id CategoryTheory.Functor.IsLocalization.for_id
+-/
end Functor
@@ -158,10 +162,13 @@ namespace Localization
variable [L.IsLocalization W]
+#print CategoryTheory.Localization.inverts /-
theorem inverts : W.IsInvertedBy L :=
(inferInstance : L.IsLocalization W).inverts
#align category_theory.localization.inverts CategoryTheory.Localization.inverts
+-/
+#print CategoryTheory.Localization.isoOfHom /-
/-- The isomorphism `L.obj X ≅ L.obj Y` that is deduced from a morphism `f : X ⟶ Y` which
belongs to `W`, when `L.is_localization W`. -/
@[simps]
@@ -169,16 +176,19 @@ def isoOfHom {X Y : C} (f : X ⟶ Y) (hf : W f) : L.obj X ≅ L.obj Y :=
haveI : is_iso (L.map f) := inverts L W f hf
as_iso (L.map f)
#align category_theory.localization.iso_of_hom CategoryTheory.Localization.isoOfHom
+-/
instance : IsEquivalence (Localization.Construction.lift L (inverts L W)) :=
(inferInstance : L.IsLocalization W).nonempty_isEquivalence.some
+#print CategoryTheory.Localization.equivalenceFromModel /-
/-- A chosen equivalence of categories `W.localization ≅ D` for a functor
`L : C ⥤ D` which satisfies `L.is_localization W`. This shall be used in
order to deduce properties of `L` from properties of `W.Q`. -/
def equivalenceFromModel : W.Localization ≌ D :=
(Localization.Construction.lift L (inverts L W)).asEquivalence
#align category_theory.localization.equivalence_from_model CategoryTheory.Localization.equivalenceFromModel
+-/
#print CategoryTheory.Localization.qCompEquivalenceFromModelFunctorIso /-
/-- Via the equivalence of categories `equivalence_from_model L W : W.localization ≌ D`,
@@ -202,6 +212,7 @@ def compEquivalenceFromModelInverseIso : L ⋙ (equivalenceFromModel L W).invers
#align category_theory.localization.comp_equivalence_from_model_inverse_iso CategoryTheory.Localization.compEquivalenceFromModelInverseIso
-/
+#print CategoryTheory.Localization.essSurj /-
theorem essSurj : EssSurj L :=
⟨fun X =>
⟨(Construction.objEquiv W).invFun ((equivalenceFromModel L W).inverse.obj X),
@@ -209,6 +220,7 @@ theorem essSurj : EssSurj L :=
((qCompEquivalenceFromModelFunctorIso L W).symm.app _ ≪≫
(equivalenceFromModel L W).counitIso.app X)⟩⟩
#align category_theory.localization.ess_surj CategoryTheory.Localization.essSurj
+-/
#print CategoryTheory.Localization.whiskeringLeftFunctor /-
/-- The functor `(D ⥤ E) ⥤ W.functors_inverting E` induced by the composition
@@ -245,33 +257,39 @@ instance : IsEquivalence (whiskeringLeftFunctor L W E) :=
change (W.Q ⋙ localization.construction.lift L (inverts L W)) ⋙ _ = L ⋙ _
rw [construction.fac]
+#print CategoryTheory.Localization.functorEquivalence /-
/-- The equivalence of categories `(D ⥤ E) ≌ (W.functors_inverting E)` induced by
the composition with a localization functor `L : C ⥤ D` with respect to
`W : morphism_property C`. -/
def functorEquivalence : D ⥤ E ≌ W.FunctorsInverting E :=
(whiskeringLeftFunctor L W E).asEquivalence
#align category_theory.localization.functor_equivalence CategoryTheory.Localization.functorEquivalence
+-/
-include W
-
+#print CategoryTheory.Localization.whiskeringLeftFunctor' /-
/-- The functor `(D ⥤ E) ⥤ (C ⥤ E)` given by the composition with a localization
functor `L : C ⥤ D` with respect to `W : morphism_property C`. -/
@[nolint unused_arguments]
def whiskeringLeftFunctor' : (D ⥤ E) ⥤ C ⥤ E :=
(whiskeringLeft C D E).obj L
#align category_theory.localization.whiskering_left_functor' CategoryTheory.Localization.whiskeringLeftFunctor'
+-/
+#print CategoryTheory.Localization.whiskeringLeftFunctor'_eq /-
theorem whiskeringLeftFunctor'_eq :
whiskeringLeftFunctor' L W E = Localization.whiskeringLeftFunctor L W E ⋙ inducedFunctor _ :=
rfl
#align category_theory.localization.whiskering_left_functor'_eq CategoryTheory.Localization.whiskeringLeftFunctor'_eq
+-/
variable {E}
+#print CategoryTheory.Localization.whiskeringLeftFunctor'_obj /-
@[simp]
theorem whiskeringLeftFunctor'_obj (F : D ⥤ E) : (whiskeringLeftFunctor' L W E).obj F = L ⋙ F :=
rfl
#align category_theory.localization.whiskering_left_functor'_obj CategoryTheory.Localization.whiskeringLeftFunctor'_obj
+-/
instance : Full (whiskeringLeftFunctor' L W E) := by rw [whiskering_left_functor'_eq];
infer_instance
@@ -279,6 +297,7 @@ instance : Full (whiskeringLeftFunctor' L W E) := by rw [whiskering_left_functor
instance : Faithful (whiskeringLeftFunctor' L W E) := by rw [whiskering_left_functor'_eq];
infer_instance
+#print CategoryTheory.Localization.natTrans_ext /-
theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
(h : ∀ X : C, τ.app (L.obj X) = τ'.app (L.obj X)) : τ = τ' :=
by
@@ -286,14 +305,17 @@ theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
ext Y
rw [← cancel_epi (F₁.map (L.obj_obj_preimage_iso Y).Hom), τ.naturality, τ'.naturality, h]
#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.natTrans_ext
+-/
-/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
+#print CategoryTheory.Localization.Lifting /-
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
/-- When `L : C ⥤ D` is a localization functor for `W : morphism_property C` and
`F : C ⥤ E` is a functor, we shall say that `F' : D ⥤ E` lifts `F` if the obvious diagram
is commutative up to an isomorphism. -/
class Lifting (F : C ⥤ E) (F' : D ⥤ E) where
Iso : L ⋙ F' ≅ F
#align category_theory.localization.lifting CategoryTheory.Localization.Lifting
+-/
variable {W}
@@ -343,6 +365,7 @@ def liftNatTrans (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting L W F₁
#align category_theory.localization.lift_nat_trans CategoryTheory.Localization.liftNatTrans
-/
+#print CategoryTheory.Localization.liftNatTrans_app /-
@[simp]
theorem liftNatTrans_app (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting L W F₁ F₁'] [Lifting L W F₂ F₂']
(τ : F₁ ⟶ F₂) (X : C) :
@@ -350,7 +373,9 @@ theorem liftNatTrans_app (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting
(Lifting.iso L W F₁ F₁').Hom.app X ≫ τ.app X ≫ (Lifting.iso L W F₂ F₂').inv.app X :=
congr_app (Functor.image_preimage (whiskeringLeftFunctor' L W E) _) X
#align category_theory.localization.lift_nat_trans_app CategoryTheory.Localization.liftNatTrans_app
+-/
+#print CategoryTheory.Localization.comp_liftNatTrans /-
@[simp, reassoc]
theorem comp_liftNatTrans (F₁ F₂ F₃ : C ⥤ E) (F₁' F₂' F₃' : D ⥤ E) [h₁ : Lifting L W F₁ F₁']
[h₂ : Lifting L W F₂ F₂'] [h₃ : Lifting L W F₃ F₃'] (τ : F₁ ⟶ F₂) (τ' : F₂ ⟶ F₃) :
@@ -359,13 +384,16 @@ theorem comp_liftNatTrans (F₁ F₂ F₃ : C ⥤ E) (F₁' F₂' F₃' : D ⥤
natTrans_ext L W _ _ fun X => by
simp only [nat_trans.comp_app, lift_nat_trans_app, assoc, iso.inv_hom_id_app_assoc]
#align category_theory.localization.comp_lift_nat_trans CategoryTheory.Localization.comp_liftNatTrans
+-/
+#print CategoryTheory.Localization.liftNatTrans_id /-
@[simp]
theorem liftNatTrans_id (F : C ⥤ E) (F' : D ⥤ E) [h : Lifting L W F F'] :
liftNatTrans L W F F F' F' (𝟙 F) = 𝟙 F' :=
natTrans_ext L W _ _ fun X => by
simpa only [lift_nat_trans_app, nat_trans.id_app, id_comp, iso.hom_inv_id_app]
#align category_theory.localization.lift_nat_trans_id CategoryTheory.Localization.liftNatTrans_id
+-/
#print CategoryTheory.Localization.liftNatIso /-
/-- Given a localization functor `L : C ⥤ D` for `W : morphism_property C`,
@@ -382,11 +410,13 @@ def liftNatIso (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [h₁ : Lifting L W
namespace Lifting
+#print CategoryTheory.Localization.Lifting.compRight /-
@[simps]
instance compRight {E' : Type _} [Category E'] (F : C ⥤ E) (F' : D ⥤ E) [Lifting L W F F']
(G : E ⥤ E') : Lifting L W (F ⋙ G) (F' ⋙ G) :=
⟨isoWhiskerRight (iso L W F F') G⟩
#align category_theory.localization.lifting.comp_right CategoryTheory.Localization.Lifting.compRight
+-/
#print CategoryTheory.Localization.Lifting.id /-
@[simps]
@@ -395,6 +425,7 @@ instance id : Lifting L W L (𝟭 D) :=
#align category_theory.localization.lifting.id CategoryTheory.Localization.Lifting.id
-/
+#print CategoryTheory.Localization.Lifting.ofIsos /-
/-- Given a localization functor `L : C ⥤ D` for `W : morphism_property C`,
if `F₁' : D ⥤ E` lifts a functor `F₁ : C ⥤ D`, then a functor `F₂'` which
is isomorphic to `F₁'` also lifts a functor `F₂` that is isomorphic to `F₁`. -/
@@ -403,6 +434,7 @@ def ofIsos {F₁ F₂ : C ⥤ E} {F₁' F₂' : D ⥤ E} (e : F₁ ≅ F₂) (e'
Lifting L W F₂ F₂' :=
⟨isoWhiskerLeft L e'.symm ≪≫ iso L W F₁ F₁' ≪≫ e⟩
#align category_theory.localization.lifting.of_isos CategoryTheory.Localization.Lifting.ofIsos
+-/
end Lifting
@@ -414,6 +446,7 @@ namespace IsLocalization
open Localization
+#print CategoryTheory.Functor.IsLocalization.of_iso /-
theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W] : L₂.IsLocalization W :=
by
have h := localization.inverts L₁ W
@@ -425,7 +458,9 @@ theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W]
nonempty_isEquivalence :=
Nonempty.intro (is_equivalence.of_iso (lift_nat_iso W.Q W L₁ L₂ F₁ F₂ e) inferInstance) }
#align category_theory.functor.is_localization.of_iso CategoryTheory.Functor.IsLocalization.of_iso
+-/
+#print CategoryTheory.Functor.IsLocalization.of_equivalence_target /-
/-- If `L : C ⥤ D` is a localization for `W : morphism_property C`, then it is also
the case of a functor obtained by post-composing `L` with an equivalence of categories. -/
theorem of_equivalence_target {E : Type _} [Category E] (L' : C ⥤ E) (eq : D ≌ E)
@@ -442,6 +477,7 @@ theorem of_equivalence_target {E : Type _} [Category E] (L' : C ⥤ E) (eq : D
{ inverts := h
nonempty_isEquivalence := Nonempty.intro (is_equivalence.of_iso e' inferInstance) }
#align category_theory.functor.is_localization.of_equivalence_target CategoryTheory.Functor.IsLocalization.of_equivalence_target
+-/
end IsLocalization
mathlib commit https://github.com/leanprover-community/mathlib/commit/7e5137f579de09a059a5ce98f364a04e221aabf0
@@ -199,7 +199,6 @@ def compEquivalenceFromModelInverseIso : L ⋙ (equivalenceFromModel L W).invers
(Functor.associator _ _ _)
_ ≅ W.Q ⋙ 𝟭 _ := (isoWhiskerLeft _ (equivalenceFromModel L W).unitIso.symm)
_ ≅ W.Q := Functor.rightUnitor _
-
#align category_theory.localization.comp_equivalence_from_model_inverse_iso CategoryTheory.Localization.compEquivalenceFromModelInverseIso
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/5f25c089cb34db4db112556f23c50d12da81b297
@@ -288,7 +288,7 @@ theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
rw [← cancel_epi (F₁.map (L.obj_obj_preimage_iso Y).Hom), τ.naturality, τ'.naturality, h]
#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.natTrans_ext
-/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:394:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
/-- When `L : C ⥤ D` is a localization functor for `W : morphism_property C` and
`F : C ⥤ E` is a functor, we shall say that `F' : D ⥤ E` lifts `F` if the obvious diagram
is commutative up to an isomorphism. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -418,7 +418,7 @@ open Localization
theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W] : L₂.IsLocalization W :=
by
have h := localization.inverts L₁ W
- rw [morphism_property.is_inverted_by.iff_of_iso W e] at h
+ rw [morphism_property.is_inverted_by.iff_of_iso W e] at h
let F₁ := localization.construction.lift L₁ (localization.inverts L₁ W)
let F₂ := localization.construction.lift L₂ h
exact
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -123,12 +123,6 @@ end Localization
namespace Functor
-/- warning: category_theory.functor.is_localization.mk' -> CategoryTheory.Functor.IsLocalization.mk' is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1), (CategoryTheory.Localization.StrictUniversalPropertyFixedTarget.{u1, u2, u3, u4, u2, u4} C D _inst_1 _inst_2 L W D _inst_2) -> (CategoryTheory.Localization.StrictUniversalPropertyFixedTarget.{u1, u2, u3, u4, u1, max u1 u3} C D _inst_1 _inst_2 L W (CategoryTheory.MorphismProperty.Localization.{u1, u3} C _inst_1 W) (CategoryTheory.MorphismProperty.Localization.category.{u1, u3} C _inst_1 W)) -> (CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W)
-but is expected to have type
- forall {C : Type.{u4}} {D : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] [_inst_2 : CategoryTheory.Category.{u1, u3} D] (L : CategoryTheory.Functor.{u2, u1, u4, u3} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u2, u4} C _inst_1), (CategoryTheory.Localization.StrictUniversalPropertyFixedTarget.{u4, u3, u2, u1, u3, u1} C D _inst_1 _inst_2 L W D _inst_2) -> (CategoryTheory.Localization.StrictUniversalPropertyFixedTarget.{u4, u3, u2, u1, u4, max u4 u2} C D _inst_1 _inst_2 L W (CategoryTheory.MorphismProperty.Localization.{u4, u2} C _inst_1 W) (CategoryTheory.MorphismProperty.instCategoryLocalization.{u4, u2} C _inst_1 W)) -> (CategoryTheory.Functor.IsLocalization.{u4, u3, u2, u1} C D _inst_1 _inst_2 L W)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.is_localization.mk' CategoryTheory.Functor.IsLocalization.mk'ₓ'. -/
theorem IsLocalization.mk' (h₁ : Localization.StrictUniversalPropertyFixedTarget L W D)
(h₂ : Localization.StrictUniversalPropertyFixedTarget L W W.Localization) :
IsLocalization L W :=
@@ -153,12 +147,6 @@ theorem IsLocalization.mk' (h₁ : Localization.StrictUniversalPropertyFixedTarg
eq_to_hom_refl] } }
#align category_theory.functor.is_localization.mk' CategoryTheory.Functor.IsLocalization.mk'
-/- warning: category_theory.functor.is_localization.for_id -> CategoryTheory.Functor.IsLocalization.for_id is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (W : CategoryTheory.MorphismProperty.{u2, u1} C _inst_1), (HasSubset.Subset.{max u1 u2} (CategoryTheory.MorphismProperty.{u2, u1} C _inst_1) (CategoryTheory.MorphismProperty.hasSubset.{u2, u1} C _inst_1) W (CategoryTheory.MorphismProperty.isomorphisms.{u2, u1} C _inst_1)) -> (CategoryTheory.Functor.IsLocalization.{u1, u1, u2, u2} C C _inst_1 _inst_1 (CategoryTheory.Functor.id.{u2, u1} C _inst_1) W)
-but is expected to have type
- forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (W : CategoryTheory.MorphismProperty.{u1, u2} C _inst_1), (HasSubset.Subset.{max u2 u1} (CategoryTheory.MorphismProperty.{u1, u2} C _inst_1) (CategoryTheory.MorphismProperty.instHasSubsetMorphismProperty.{u1, u2} C _inst_1) W (CategoryTheory.MorphismProperty.isomorphisms.{u1, u2} C _inst_1)) -> (CategoryTheory.Functor.IsLocalization.{u2, u2, u1, u1} C C _inst_1 _inst_1 (CategoryTheory.Functor.id.{u1, u2} C _inst_1) W)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.is_localization.for_id CategoryTheory.Functor.IsLocalization.for_idₓ'. -/
theorem IsLocalization.for_id (hW : W ⊆ MorphismProperty.isomorphisms C) : (𝟭 C).IsLocalization W :=
IsLocalization.mk' _ _ (Localization.strictUniversalPropertyFixedTargetId W _ hW)
(Localization.strictUniversalPropertyFixedTargetId W _ hW)
@@ -170,22 +158,10 @@ namespace Localization
variable [L.IsLocalization W]
-/- warning: category_theory.localization.inverts -> CategoryTheory.Localization.inverts is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.MorphismProperty.IsInvertedBy.{u3, u1, u2, u4} C _inst_1 D _inst_2 W L
-but is expected to have type
- forall {C : Type.{u3}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u4, u3} C] [_inst_2 : CategoryTheory.Category.{u1, u2} D] (L : CategoryTheory.Functor.{u4, u1, u3, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u4, u3} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u3, u2, u4, u1} C D _inst_1 _inst_2 L W], CategoryTheory.MorphismProperty.IsInvertedBy.{u4, u3, u2, u1} C _inst_1 D _inst_2 W L
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.inverts CategoryTheory.Localization.invertsₓ'. -/
theorem inverts : W.IsInvertedBy L :=
(inferInstance : L.IsLocalization W).inverts
#align category_theory.localization.inverts CategoryTheory.Localization.inverts
-/- warning: category_theory.localization.iso_of_hom -> CategoryTheory.Localization.isoOfHom is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] {X : C} {Y : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X Y), (W X Y f) -> (CategoryTheory.Iso.{u4, u2} D _inst_2 (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X) (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L Y))
-but is expected to have type
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] {X : C} {Y : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X Y), (W X Y f) -> (CategoryTheory.Iso.{u4, u2} D _inst_2 (Prefunctor.obj.{succ u3, succ u4, u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} D (CategoryTheory.Category.toCategoryStruct.{u4, u2} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u3, u4, u1, u2} C _inst_1 D _inst_2 L) X) (Prefunctor.obj.{succ u3, succ u4, u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} D (CategoryTheory.Category.toCategoryStruct.{u4, u2} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u3, u4, u1, u2} C _inst_1 D _inst_2 L) Y))
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.iso_of_hom CategoryTheory.Localization.isoOfHomₓ'. -/
/-- The isomorphism `L.obj X ≅ L.obj Y` that is deduced from a morphism `f : X ⟶ Y` which
belongs to `W`, when `L.is_localization W`. -/
@[simps]
@@ -197,12 +173,6 @@ def isoOfHom {X Y : C} (f : X ⟶ Y) (hf : W f) : L.obj X ≅ L.obj Y :=
instance : IsEquivalence (Localization.Construction.lift L (inverts L W)) :=
(inferInstance : L.IsLocalization W).nonempty_isEquivalence.some
-/- warning: category_theory.localization.equivalence_from_model -> CategoryTheory.Localization.equivalenceFromModel is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.Equivalence.{max u1 u3, u4, u1, u2} (CategoryTheory.MorphismProperty.Localization.{u1, u3} C _inst_1 W) (CategoryTheory.MorphismProperty.Localization.category.{u1, u3} C _inst_1 W) D _inst_2
-but is expected to have type
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.Equivalence.{max u1 u3, u4, u1, u2} (CategoryTheory.MorphismProperty.Localization.{u1, u3} C _inst_1 W) D (CategoryTheory.MorphismProperty.instCategoryLocalization.{u1, u3} C _inst_1 W) _inst_2
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.equivalence_from_model CategoryTheory.Localization.equivalenceFromModelₓ'. -/
/-- A chosen equivalence of categories `W.localization ≅ D` for a functor
`L : C ⥤ D` which satisfies `L.is_localization W`. This shall be used in
order to deduce properties of `L` from properties of `W.Q`. -/
@@ -233,12 +203,6 @@ def compEquivalenceFromModelInverseIso : L ⋙ (equivalenceFromModel L W).invers
#align category_theory.localization.comp_equivalence_from_model_inverse_iso CategoryTheory.Localization.compEquivalenceFromModelInverseIso
-/
-/- warning: category_theory.localization.ess_surj -> CategoryTheory.Localization.essSurj is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.EssSurj.{u3, u4, u1, u2} C D _inst_1 _inst_2 L
-but is expected to have type
- forall {C : Type.{u2}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u4, u2} C] [_inst_2 : CategoryTheory.Category.{u3, u1} D] (L : CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u4, u2} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u2, u1, u4, u3} C D _inst_1 _inst_2 L W], CategoryTheory.EssSurj.{u4, u3, u2, u1} C D _inst_1 _inst_2 L
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.ess_surj CategoryTheory.Localization.essSurjₓ'. -/
theorem essSurj : EssSurj L :=
⟨fun X =>
⟨(Construction.objEquiv W).invFun ((equivalenceFromModel L W).inverse.obj X),
@@ -282,12 +246,6 @@ instance : IsEquivalence (whiskeringLeftFunctor L W E) :=
change (W.Q ⋙ localization.construction.lift L (inverts L W)) ⋙ _ = L ⋙ _
rw [construction.fac]
-/- warning: category_theory.localization.functor_equivalence -> CategoryTheory.Localization.functorEquivalence is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) (E : Type.{u5}) [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.Equivalence.{max u2 u6, max u1 u6, max u4 u6 u2 u5, max u3 u6 u1 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.{u3, u1, u5, u6} C _inst_1 W E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.category.{u3, u5, u1, u6} C _inst_1 W E _inst_3)
-but is expected to have type
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) (E : Type.{u5}) [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.Equivalence.{max u2 u6, max u1 u6, max (max (max u5 u2) u6) u4, max (max (max u1 u3) u6) u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.{u3, u1, u5, u6} C _inst_1 W E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.MorphismProperty.instCategoryFunctorsInverting.{u3, u1, u5, u6} C _inst_1 W E _inst_3)
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.functor_equivalence CategoryTheory.Localization.functorEquivalenceₓ'. -/
/-- The equivalence of categories `(D ⥤ E) ≌ (W.functors_inverting E)` induced by
the composition with a localization functor `L : C ⥤ D` with respect to
`W : morphism_property C`. -/
@@ -297,12 +255,6 @@ def functorEquivalence : D ⥤ E ≌ W.FunctorsInverting E :=
include W
-/- warning: category_theory.localization.whiskering_left_functor' -> CategoryTheory.Localization.whiskeringLeftFunctor' is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) (E : Type.{u5}) [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.Functor.{max u2 u6, max u1 u6, max u4 u6 u2 u5, max u3 u6 u1 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3)
-but is expected to have type
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D], (CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) -> (CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) -> (forall (E : Type.{u5}) [_inst_3 : CategoryTheory.Category.{u6, u5} E], CategoryTheory.Functor.{max u2 u6, max u1 u6, max (max (max u5 u2) u6) u4, max (max (max u5 u1) u6) u3} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3))
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.whiskering_left_functor' CategoryTheory.Localization.whiskeringLeftFunctor'ₓ'. -/
/-- The functor `(D ⥤ E) ⥤ (C ⥤ E)` given by the composition with a localization
functor `L : C ⥤ D` with respect to `W : morphism_property C`. -/
@[nolint unused_arguments]
@@ -310,12 +262,6 @@ def whiskeringLeftFunctor' : (D ⥤ E) ⥤ C ⥤ E :=
(whiskeringLeft C D E).obj L
#align category_theory.localization.whiskering_left_functor' CategoryTheory.Localization.whiskeringLeftFunctor'
-/- warning: category_theory.localization.whiskering_left_functor'_eq -> CategoryTheory.Localization.whiskeringLeftFunctor'_eq is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) (E : Type.{u5}) [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], Eq.{succ (max (max u2 u6) (max u1 u6) (max u4 u6 u2 u5) u3 u6 u1 u5)} (CategoryTheory.Functor.{max u2 u6, max u1 u6, max u4 u6 u2 u5, max u3 u6 u1 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3)) (CategoryTheory.Localization.whiskeringLeftFunctor'.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4) (CategoryTheory.Functor.comp.{max u2 u6, max u1 u6, max u1 u6, max u4 u6 u2 u5, max u3 u6 u1 u5, max u3 u6 u1 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.{u3, u1, u5, u6} C _inst_1 W E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.category.{u3, u5, u1, u6} C _inst_1 W E _inst_3) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Localization.whiskeringLeftFunctor.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4) (CategoryTheory.inducedFunctor.{max u1 u6, max u3 u6 u1 u5, max u3 u6 u1 u5} (CategoryTheory.FullSubcategoryₓ.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (fun (F : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) => CategoryTheory.MorphismProperty.IsInvertedBy.{u3, u1, u5, u6} C _inst_1 E _inst_3 W F)) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.FullSubcategoryₓ.obj.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.MorphismProperty.IsInvertedBy.{u3, u1, u5, u6} C _inst_1 E _inst_3 W))))
-but is expected to have type
- forall {C : Type.{u6}} {D : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u4, u6} C] [_inst_2 : CategoryTheory.Category.{u3, u5} D] (L : CategoryTheory.Functor.{u4, u3, u6, u5} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u4, u6} C _inst_1) (E : Type.{u2}) [_inst_3 : CategoryTheory.Category.{u1, u2} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u6, u5, u4, u3} C D _inst_1 _inst_2 L W], Eq.{max (max (max (max (max (succ u6) (succ u5)) (succ u4)) (succ u3)) (succ u2)) (succ u1)} (CategoryTheory.Functor.{max u5 u1, max u6 u1, max (max (max u2 u5) u1) u3, max (max (max u2 u6) u1) u4} (CategoryTheory.Functor.{u3, u1, u5, u2} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u3, u1, u5, u2} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u4, u1, u6, u2} C _inst_1 E _inst_3)) (CategoryTheory.Localization.whiskeringLeftFunctor'.{u6, u5, u4, u3, u2, u1} C D _inst_1 _inst_2 L W E _inst_3) (CategoryTheory.Functor.comp.{max u5 u1, max u6 u1, max u6 u1, max (max (max u5 u3) u2) u1, max (max (max u6 u4) u2) u1, max (max (max u6 u4) u2) u1} (CategoryTheory.Functor.{u3, u1, u5, u2} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u3, u1, u5, u2} D _inst_2 E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.{u4, u6, u2, u1} C _inst_1 W E _inst_3) (CategoryTheory.MorphismProperty.instCategoryFunctorsInverting.{u4, u6, u2, u1} C _inst_1 W E _inst_3) (CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u4, u1, u6, u2} C _inst_1 E _inst_3) (CategoryTheory.Localization.whiskeringLeftFunctor.{u6, u5, u4, u3, u2, u1} C D _inst_1 _inst_2 L W E _inst_3 _inst_4) (CategoryTheory.inducedFunctor.{max u6 u1, max (max (max u6 u4) u2) u1, max (max (max u6 u4) u2) u1} (CategoryTheory.FullSubcategory.{max (max (max u6 u4) u2) u1} (CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) (fun (F : CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) => CategoryTheory.MorphismProperty.IsInvertedBy.{u4, u6, u2, u1} C _inst_1 E _inst_3 W F)) (CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u4, u1, u6, u2} C _inst_1 E _inst_3) (CategoryTheory.FullSubcategory.obj.{max (max (max u6 u4) u2) u1} (CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) (fun (F : CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) => CategoryTheory.MorphismProperty.IsInvertedBy.{u4, u6, u2, u1} C _inst_1 E _inst_3 W F))))
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.whiskering_left_functor'_eq CategoryTheory.Localization.whiskeringLeftFunctor'_eqₓ'. -/
theorem whiskeringLeftFunctor'_eq :
whiskeringLeftFunctor' L W E = Localization.whiskeringLeftFunctor L W E ⋙ inducedFunctor _ :=
rfl
@@ -323,12 +269,6 @@ theorem whiskeringLeftFunctor'_eq :
variable {E}
-/- warning: category_theory.localization.whiskering_left_functor'_obj -> CategoryTheory.Localization.whiskeringLeftFunctor'_obj is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] (F : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3), Eq.{succ (max u3 u6 u1 u5)} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.obj.{max u2 u6, max u1 u6, max u4 u6 u2 u5, max u3 u6 u1 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Localization.whiskeringLeftFunctor'.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4) F) (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_3 L F)
-but is expected to have type
- forall {C : Type.{u2}} {D : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.Category.{u6, u4} D] (L : CategoryTheory.Functor.{u1, u6, u2, u4} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u1, u2} C _inst_1) {E : Type.{u3}} [_inst_3 : CategoryTheory.Category.{u5, u3} E] (_inst_4 : CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3), Eq.{max (max (max (succ u2) (succ u1)) (succ u3)) (succ u5)} (CategoryTheory.Functor.{u1, u5, u2, u3} C _inst_1 E _inst_3) (Prefunctor.obj.{max (succ u4) (succ u5), max (succ u2) (succ u5), max (max (max u4 u6) u3) u5, max (max (max u2 u1) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} D _inst_2 E _inst_3))) (CategoryTheory.Functor.{u1, u5, u2, u3} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u5, max (max (max u2 u1) u3) u5} (CategoryTheory.Functor.{u1, u5, u2, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u5, max (max (max u2 u1) u3) u5} (CategoryTheory.Functor.{u1, u5, u2, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u1, u5, u2, u3} C _inst_1 E _inst_3))) (CategoryTheory.Functor.toPrefunctor.{max u4 u5, max u2 u5, max (max (max u4 u6) u3) u5, max (max (max u2 u1) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u1, u5, u2, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u1, u5, u2, u3} C _inst_1 E _inst_3) (CategoryTheory.Localization.whiskeringLeftFunctor'.{u2, u4, u1, u6, u3, u5} C D _inst_1 _inst_2 L W E _inst_3)) _inst_4) (CategoryTheory.Functor.comp.{u1, u6, u5, u2, u4, u3} C _inst_1 D _inst_2 E _inst_3 L _inst_4)
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.whiskering_left_functor'_obj CategoryTheory.Localization.whiskeringLeftFunctor'_objₓ'. -/
@[simp]
theorem whiskeringLeftFunctor'_obj (F : D ⥤ E) : (whiskeringLeftFunctor' L W E).obj F = L ⋙ F :=
rfl
@@ -340,12 +280,6 @@ instance : Full (whiskeringLeftFunctor' L W E) := by rw [whiskering_left_functor
instance : Faithful (whiskeringLeftFunctor' L W E) := by rw [whiskering_left_functor'_eq];
infer_instance
-/- warning: category_theory.localization.nat_trans_ext -> CategoryTheory.Localization.natTrans_ext is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] {F₁ : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3} {F₂ : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3} (τ : Quiver.Hom.{succ (max u2 u6), max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3))) F₁ F₂) (τ' : Quiver.Hom.{succ (max u2 u6), max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3))) F₁ F₂), (forall (X : C), Eq.{succ u6} (Quiver.Hom.{succ u6, u5} E (CategoryTheory.CategoryStruct.toQuiver.{u6, u5} E (CategoryTheory.Category.toCategoryStruct.{u6, u5} E _inst_3)) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁ (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₂ (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X))) (CategoryTheory.NatTrans.app.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁ F₂ τ (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.NatTrans.app.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁ F₂ τ' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X))) -> (Eq.{succ (max u2 u6)} (Quiver.Hom.{succ (max u2 u6), max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3))) F₁ F₂) τ τ')
-but is expected to have type
- forall {C : Type.{u1}} {D : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Category.{u6, u4} D] (L : CategoryTheory.Functor.{u2, u6, u1, u4} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u2, u1} C _inst_1) {E : Type.{u3}} [_inst_3 : CategoryTheory.Category.{u5, u3} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u4, u2, u6} C D _inst_1 _inst_2 L W] {F₁ : CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3} {F₂ : CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3} (τ : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} D _inst_2 E _inst_3))) F₁ F₂) (τ' : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} D _inst_2 E _inst_3))) F₁ F₂), (forall (X : C), Eq.{succ u5} (Quiver.Hom.{succ u5, u3} E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (Prefunctor.obj.{succ u6, succ u5, u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} D _inst_2 E _inst_3 F₁) (Prefunctor.obj.{succ u2, succ u6, u1, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u6, u1, u4} C _inst_1 D _inst_2 L) X)) (Prefunctor.obj.{succ u6, succ u5, u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} D _inst_2 E _inst_3 F₂) (Prefunctor.obj.{succ u2, succ u6, u1, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u6, u1, u4} C _inst_1 D _inst_2 L) X))) (CategoryTheory.NatTrans.app.{u6, u5, u4, u3} D _inst_2 E _inst_3 F₁ F₂ τ (Prefunctor.obj.{succ u2, succ u6, u1, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u6, u1, u4} C _inst_1 D _inst_2 L) X)) (CategoryTheory.NatTrans.app.{u6, u5, u4, u3} D _inst_2 E _inst_3 F₁ F₂ τ' (Prefunctor.obj.{succ u2, succ u6, u1, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u6, u1, u4} C _inst_1 D _inst_2 L) X))) -> (Eq.{max (succ u4) (succ u5)} (Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} D _inst_2 E _inst_3))) F₁ F₂) τ τ')
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.natTrans_extₓ'. -/
theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
(h : ∀ X : C, τ.app (L.obj X) = τ'.app (L.obj X)) : τ = τ' :=
by
@@ -354,12 +288,6 @@ theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
rw [← cancel_epi (F₁.map (L.obj_obj_preimage_iso Y).Hom), τ.naturality, τ'.naturality, h]
#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.natTrans_ext
-/- warning: category_theory.localization.lifting -> CategoryTheory.Localization.Lifting is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) -> (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) -> Sort.{max (succ u1) (succ u6)}
-but is expected to have type
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D], (CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) -> (forall {W : Type.{u5}} [E : CategoryTheory.Category.{u6, u5} W], (CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) -> (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 W E) -> (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 W E) -> Sort.{max (succ u1) (succ u6)})
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.lifting CategoryTheory.Localization.Liftingₓ'. -/
/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
/-- When `L : C ⥤ D` is a localization functor for `W : morphism_property C` and
`F : C ⥤ E` is a functor, we shall say that `F' : D ⥤ E` lifts `F` if the obvious diagram
@@ -416,9 +344,6 @@ def liftNatTrans (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting L W F₁
#align category_theory.localization.lift_nat_trans CategoryTheory.Localization.liftNatTrans
-/
-/- warning: category_theory.localization.lift_nat_trans_app -> CategoryTheory.Localization.liftNatTrans_app is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.lift_nat_trans_app CategoryTheory.Localization.liftNatTrans_appₓ'. -/
@[simp]
theorem liftNatTrans_app (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting L W F₁ F₁'] [Lifting L W F₂ F₂']
(τ : F₁ ⟶ F₂) (X : C) :
@@ -427,9 +352,6 @@ theorem liftNatTrans_app (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting
congr_app (Functor.image_preimage (whiskeringLeftFunctor' L W E) _) X
#align category_theory.localization.lift_nat_trans_app CategoryTheory.Localization.liftNatTrans_app
-/- warning: category_theory.localization.comp_lift_nat_trans -> CategoryTheory.Localization.comp_liftNatTrans is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.comp_lift_nat_trans CategoryTheory.Localization.comp_liftNatTransₓ'. -/
@[simp, reassoc]
theorem comp_liftNatTrans (F₁ F₂ F₃ : C ⥤ E) (F₁' F₂' F₃' : D ⥤ E) [h₁ : Lifting L W F₁ F₁']
[h₂ : Lifting L W F₂ F₂'] [h₃ : Lifting L W F₃ F₃'] (τ : F₁ ⟶ F₂) (τ' : F₂ ⟶ F₃) :
@@ -439,12 +361,6 @@ theorem comp_liftNatTrans (F₁ F₂ F₃ : C ⥤ E) (F₁' F₂' F₃' : D ⥤
simp only [nat_trans.comp_app, lift_nat_trans_app, assoc, iso.inv_hom_id_app_assoc]
#align category_theory.localization.comp_lift_nat_trans CategoryTheory.Localization.comp_liftNatTrans
-/- warning: category_theory.localization.lift_nat_trans_id -> CategoryTheory.Localization.liftNatTrans_id is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] (F : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) [h : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F F'], Eq.{succ (max u2 u6)} (Quiver.Hom.{succ (max u2 u6), max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3))) F' F') (CategoryTheory.Localization.liftNatTrans.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F F F' F' h h (CategoryTheory.CategoryStruct.id.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3)) F)) (CategoryTheory.CategoryStruct.id.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3)) F')
-but is expected to have type
- forall {C : Type.{u4}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u6, u4} C] [_inst_2 : CategoryTheory.Category.{u2, u1} D] (L : CategoryTheory.Functor.{u6, u2, u4, u1} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u6, u4} C _inst_1) {E : Type.{u3}} [_inst_3 : CategoryTheory.Category.{u5, u3} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u4, u1, u6, u2} C D _inst_1 _inst_2 L W] (F : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) [h : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F F'], Eq.{max (succ u1) (succ u5)} (Quiver.Hom.{max (succ u1) (succ u5), max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u2, u5, u1, u3} D _inst_2 E _inst_3))) F' F') (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F F F' F' h h (CategoryTheory.CategoryStruct.id.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3)) F)) (CategoryTheory.CategoryStruct.id.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u2, u5, u1, u3} D _inst_2 E _inst_3)) F')
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.lift_nat_trans_id CategoryTheory.Localization.liftNatTrans_idₓ'. -/
@[simp]
theorem liftNatTrans_id (F : C ⥤ E) (F' : D ⥤ E) [h : Lifting L W F F'] :
liftNatTrans L W F F F' F' (𝟙 F) = 𝟙 F' :=
@@ -467,12 +383,6 @@ def liftNatIso (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [h₁ : Lifting L W
namespace Lifting
-/- warning: category_theory.localization.lifting.comp_right -> CategoryTheory.Localization.Lifting.compRight is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] {E' : Type.{u7}} [_inst_5 : CategoryTheory.Category.{u8, u7} E'] (F : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) [_inst_6 : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F F'] (G : CategoryTheory.Functor.{u6, u8, u5, u7} E _inst_3 E' _inst_5), CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u7, u8} C D _inst_1 _inst_2 L W E' _inst_5 _inst_4 (CategoryTheory.Functor.comp.{u3, u6, u8, u1, u5, u7} C _inst_1 E _inst_3 E' _inst_5 F G) (CategoryTheory.Functor.comp.{u4, u6, u8, u2, u5, u7} D _inst_2 E _inst_3 E' _inst_5 F' G)
-but is expected to have type
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] {_inst_4 : Type.{u7}} [E' : CategoryTheory.Category.{u8, u7} _inst_4] (_inst_5 : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) [F' : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L E _inst_3 W _inst_5 F] (_inst_6 : CategoryTheory.Functor.{u6, u8, u5, u7} E _inst_3 _inst_4 E'), CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u7, u8} C D _inst_1 _inst_2 L _inst_4 E' W (CategoryTheory.Functor.comp.{u3, u6, u8, u1, u5, u7} C _inst_1 E _inst_3 _inst_4 E' _inst_5 _inst_6) (CategoryTheory.Functor.comp.{u4, u6, u8, u2, u5, u7} D _inst_2 E _inst_3 _inst_4 E' F _inst_6)
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.lifting.comp_right CategoryTheory.Localization.Lifting.compRightₓ'. -/
@[simps]
instance compRight {E' : Type _} [Category E'] (F : C ⥤ E) (F' : D ⥤ E) [Lifting L W F F']
(G : E ⥤ E') : Lifting L W (F ⋙ G) (F' ⋙ G) :=
@@ -486,12 +396,6 @@ instance id : Lifting L W L (𝟭 D) :=
#align category_theory.localization.lifting.id CategoryTheory.Localization.Lifting.id
-/
-/- warning: category_theory.localization.lifting.of_isos -> CategoryTheory.Localization.Lifting.ofIsos is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] {F₁ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3} {F₂ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3} {F₁' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3} {F₂' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3}, (CategoryTheory.Iso.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) F₁ F₂) -> (CategoryTheory.Iso.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) F₁' F₂') -> (forall [_inst_5 : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₁'], CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₂')
-but is expected to have type
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] {_inst_4 : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3} {F₁ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3} {F₂ : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3} {F₁' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3}, (CategoryTheory.Iso.{max u1 u6, max (max (max u1 u3) u5) u6} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) _inst_4 F₁) -> (CategoryTheory.Iso.{max u2 u6, max (max (max u2 u4) u5) u6} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) F₂ F₁') -> (forall [e' : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L E _inst_3 W _inst_4 F₂], CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L E _inst_3 W F₁ F₁')
-Case conversion may be inaccurate. Consider using '#align category_theory.localization.lifting.of_isos CategoryTheory.Localization.Lifting.ofIsosₓ'. -/
/-- Given a localization functor `L : C ⥤ D` for `W : morphism_property C`,
if `F₁' : D ⥤ E` lifts a functor `F₁ : C ⥤ D`, then a functor `F₂'` which
is isomorphic to `F₁'` also lifts a functor `F₂` that is isomorphic to `F₁`. -/
@@ -511,12 +415,6 @@ namespace IsLocalization
open Localization
-/- warning: category_theory.functor.is_localization.of_iso -> CategoryTheory.Functor.IsLocalization.of_iso is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {L₁ : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2} {L₂ : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2}, (CategoryTheory.Iso.{max u1 u4, max u3 u4 u1 u2} (CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (CategoryTheory.Functor.category.{u3, u4, u1, u2} C _inst_1 D _inst_2) L₁ L₂) -> (forall [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L₁ W], CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L₂ W)
-but is expected to have type
- forall {C : Type.{u2}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u4, u2} C] [_inst_2 : CategoryTheory.Category.{u3, u1} D] (W : CategoryTheory.MorphismProperty.{u4, u2} C _inst_1) {L₁ : CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2} {L₂ : CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2}, (CategoryTheory.Iso.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2) (CategoryTheory.Functor.category.{u4, u3, u2, u1} C _inst_1 D _inst_2) L₁ L₂) -> (forall [_inst_4 : CategoryTheory.Functor.IsLocalization.{u2, u1, u4, u3} C D _inst_1 _inst_2 L₁ W], CategoryTheory.Functor.IsLocalization.{u2, u1, u4, u3} C D _inst_1 _inst_2 L₂ W)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.is_localization.of_iso CategoryTheory.Functor.IsLocalization.of_isoₓ'. -/
theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W] : L₂.IsLocalization W :=
by
have h := localization.inverts L₁ W
@@ -529,12 +427,6 @@ theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W]
Nonempty.intro (is_equivalence.of_iso (lift_nat_iso W.Q W L₁ L₂ F₁ F₂ e) inferInstance) }
#align category_theory.functor.is_localization.of_iso CategoryTheory.Functor.IsLocalization.of_iso
-/- warning: category_theory.functor.is_localization.of_equivalence_target -> CategoryTheory.Functor.IsLocalization.of_equivalence_target is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} E] (L' : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_4) (eq : CategoryTheory.Equivalence.{u4, u6, u2, u5} D _inst_2 E _inst_4) [_inst_5 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], (CategoryTheory.Iso.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_4) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_4) (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_4 L (CategoryTheory.Equivalence.functor.{u4, u6, u2, u5} D _inst_2 E _inst_4 eq)) L') -> (CategoryTheory.Functor.IsLocalization.{u1, u5, u3, u6} C E _inst_1 _inst_4 L' W)
-but is expected to have type
- forall {C : Type.{u3}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u4, u3} C] [_inst_2 : CategoryTheory.Category.{u2, u1} D] (L : CategoryTheory.Functor.{u4, u2, u3, u1} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u4, u3} C _inst_1) {E : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u5, u6} E] (L' : CategoryTheory.Functor.{u4, u5, u3, u6} C _inst_1 E _inst_4) (eq : CategoryTheory.Equivalence.{u2, u5, u1, u6} D E _inst_2 _inst_4) [_inst_5 : CategoryTheory.Functor.IsLocalization.{u3, u1, u4, u2} C D _inst_1 _inst_2 L W], (CategoryTheory.Iso.{max u3 u5, max (max (max u6 u3) u5) u4} (CategoryTheory.Functor.{u4, u5, u3, u6} C _inst_1 E _inst_4) (CategoryTheory.Functor.category.{u4, u5, u3, u6} C _inst_1 E _inst_4) (CategoryTheory.Functor.comp.{u4, u2, u5, u3, u1, u6} C _inst_1 D _inst_2 E _inst_4 L (CategoryTheory.Equivalence.functor.{u2, u5, u1, u6} D E _inst_2 _inst_4 eq)) L') -> (CategoryTheory.Functor.IsLocalization.{u3, u6, u4, u5} C E _inst_1 _inst_4 L' W)
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.is_localization.of_equivalence_target CategoryTheory.Functor.IsLocalization.of_equivalence_targetₓ'. -/
/-- If `L : C ⥤ D` is a localization for `W : morphism_property C`, then it is also
the case of a functor obtained by post-composing `L` with an equivalence of categories. -/
theorem of_equivalence_target {E : Type _} [Category E] (L' : C ⥤ E) (eq : D ≌ E)
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -66,11 +66,8 @@ instance q_isLocalization : W.Q.IsLocalization W
inverts := W.Q_inverts
nonempty_isEquivalence :=
by
- suffices localization.construction.lift W.Q W.Q_inverts = 𝟭 _
- by
- apply Nonempty.intro
- rw [this]
- infer_instance
+ suffices localization.construction.lift W.Q W.Q_inverts = 𝟭 _ by apply Nonempty.intro;
+ rw [this]; infer_instance
apply localization.construction.uniq
simpa only [localization.construction.fac]
#align category_theory.functor.Q_is_localization CategoryTheory.Functor.q_isLocalization
@@ -117,13 +114,8 @@ def strictUniversalPropertyFixedTargetId (hW : W ⊆ MorphismProperty.isomorphis
where
inverts X Y f hf := hW f hf
lift F hF := F
- fac F hF := by
- cases F
- rfl
- uniq F₁ F₂ eq := by
- cases F₁
- cases F₂
- exact Eq
+ fac F hF := by cases F; rfl
+ uniq F₁ F₂ eq := by cases F₁; cases F₂; exact Eq
#align category_theory.localization.strict_universal_property_fixed_target_id CategoryTheory.Localization.strictUniversalPropertyFixedTargetId
-/
@@ -342,14 +334,10 @@ theorem whiskeringLeftFunctor'_obj (F : D ⥤ E) : (whiskeringLeftFunctor' L W E
rfl
#align category_theory.localization.whiskering_left_functor'_obj CategoryTheory.Localization.whiskeringLeftFunctor'_obj
-instance : Full (whiskeringLeftFunctor' L W E) :=
- by
- rw [whiskering_left_functor'_eq]
+instance : Full (whiskeringLeftFunctor' L W E) := by rw [whiskering_left_functor'_eq];
infer_instance
-instance : Faithful (whiskeringLeftFunctor' L W E) :=
- by
- rw [whiskering_left_functor'_eq]
+instance : Faithful (whiskeringLeftFunctor' L W E) := by rw [whiskering_left_functor'_eq];
infer_instance
/- warning: category_theory.localization.nat_trans_ext -> CategoryTheory.Localization.natTrans_ext is a dubious translation:
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -429,10 +429,7 @@ def liftNatTrans (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting L W F₁
-/
/- warning: category_theory.localization.lift_nat_trans_app -> CategoryTheory.Localization.liftNatTrans_app is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] (F₁ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F₂ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F₁' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (F₂' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) [_inst_5 : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₁'] [_inst_6 : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₂'] (τ : Quiver.Hom.{succ (max u1 u6), max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3))) F₁ F₂) (X : C), Eq.{succ u6} (Quiver.Hom.{succ u6, u5} E (CategoryTheory.CategoryStruct.toQuiver.{u6, u5} E (CategoryTheory.Category.toCategoryStruct.{u6, u5} E _inst_3)) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₂' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X))) (CategoryTheory.NatTrans.app.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁' F₂' (CategoryTheory.Localization.liftNatTrans.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₂ F₁' F₂' _inst_5 _inst_6 τ) (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.CategoryStruct.comp.{u6, u5} E (CategoryTheory.Category.toCategoryStruct.{u6, u5} E _inst_3) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.Functor.obj.{u3, u6, u1, u5} C _inst_1 E _inst_3 F₁ X) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₂' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.NatTrans.app.{u3, u6, u1, u5} C _inst_1 E _inst_3 (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_3 L F₁') F₁ (CategoryTheory.Iso.hom.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_3 L F₁') F₁ (CategoryTheory.Localization.Lifting.iso.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₁' _inst_5)) X) (CategoryTheory.CategoryStruct.comp.{u6, u5} E (CategoryTheory.Category.toCategoryStruct.{u6, u5} E _inst_3) (CategoryTheory.Functor.obj.{u3, u6, u1, u5} C _inst_1 E _inst_3 F₁ X) (CategoryTheory.Functor.obj.{u3, u6, u1, u5} C _inst_1 E _inst_3 F₂ X) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₂' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.NatTrans.app.{u3, u6, u1, u5} C _inst_1 E _inst_3 F₁ F₂ τ X) (CategoryTheory.NatTrans.app.{u3, u6, u1, u5} C _inst_1 E _inst_3 F₂ (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_3 L F₂') (CategoryTheory.Iso.inv.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_3 L F₂') F₂ (CategoryTheory.Localization.Lifting.iso.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₂' _inst_6)) X)))
-but is expected to have type
- forall {C : Type.{u4}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u6, u4} C] [_inst_2 : CategoryTheory.Category.{u2, u1} D] (L : CategoryTheory.Functor.{u6, u2, u4, u1} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u6, u4} C _inst_1) {E : Type.{u3}} [_inst_3 : CategoryTheory.Category.{u5, u3} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u4, u1, u6, u2} C D _inst_1 _inst_2 L W] (F₁ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₂ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₁' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (F₂' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) [_inst_5 : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₁ F₁'] [_inst_6 : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₂ F₂'] (τ : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3))) F₁ F₂) (X : C), Eq.{succ u5} (Quiver.Hom.{succ u5, u3} E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (Prefunctor.obj.{succ u2, succ u5, u1, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} D (CategoryTheory.Category.toCategoryStruct.{u2, u1} D _inst_2)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u2, u5, u1, u3} D _inst_2 E _inst_3 F₁') (Prefunctor.obj.{succ u6, succ u2, u4, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} D (CategoryTheory.Category.toCategoryStruct.{u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u6, u2, u4, u1} C _inst_1 D _inst_2 L) X)) (Prefunctor.obj.{succ u2, succ u5, u1, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} D (CategoryTheory.Category.toCategoryStruct.{u2, u1} D _inst_2)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u2, u5, u1, u3} D _inst_2 E _inst_3 F₂') (Prefunctor.obj.{succ u6, succ u2, u4, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} D (CategoryTheory.Category.toCategoryStruct.{u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u6, u2, u4, u1} C _inst_1 D _inst_2 L) X))) (CategoryTheory.NatTrans.app.{u2, u5, u1, u3} D _inst_2 E _inst_3 F₁' F₂' (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₂ F₁' F₂' _inst_5 _inst_6 τ) (Prefunctor.obj.{succ u6, succ u2, u4, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} D (CategoryTheory.Category.toCategoryStruct.{u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u6, u2, u4, u1} C _inst_1 D _inst_2 L) X)) (CategoryTheory.CategoryStruct.comp.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₁')) X) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 F₁) X) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₂')) X) (CategoryTheory.NatTrans.app.{u6, u5, u4, u3} C _inst_1 E _inst_3 (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₁') F₁ (CategoryTheory.Iso.hom.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₁') F₁ (CategoryTheory.Localization.Lifting.iso.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 F₁ F₁' _inst_5)) X) (CategoryTheory.CategoryStruct.comp.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 F₁) X) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 F₂) X) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₂')) X) (CategoryTheory.NatTrans.app.{u6, u5, u4, u3} C _inst_1 E _inst_3 F₁ F₂ τ X) (CategoryTheory.NatTrans.app.{u6, u5, u4, u3} C _inst_1 E _inst_3 F₂ (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₂') (CategoryTheory.Iso.inv.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₂') F₂ (CategoryTheory.Localization.Lifting.iso.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 F₂ F₂' _inst_6)) X)))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.localization.lift_nat_trans_app CategoryTheory.Localization.liftNatTrans_appₓ'. -/
@[simp]
theorem liftNatTrans_app (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting L W F₁ F₁'] [Lifting L W F₂ F₂']
@@ -443,10 +440,7 @@ theorem liftNatTrans_app (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting
#align category_theory.localization.lift_nat_trans_app CategoryTheory.Localization.liftNatTrans_app
/- warning: category_theory.localization.comp_lift_nat_trans -> CategoryTheory.Localization.comp_liftNatTrans is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] (F₁ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F₂ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F₃ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F₁' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (F₂' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (F₃' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) [h₁ : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₁'] [h₂ : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₂'] [h₃ : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₃ F₃'] (τ : Quiver.Hom.{succ (max u1 u6), max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3))) F₁ F₂) (τ' : Quiver.Hom.{succ (max u1 u6), max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3))) F₂ F₃), Eq.{succ (max u2 u6)} (Quiver.Hom.{succ (max u2 u6), max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3))) F₁' F₃') (CategoryTheory.CategoryStruct.comp.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3)) F₁' F₂' F₃' (CategoryTheory.Localization.liftNatTrans.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₂ F₁' F₂' h₁ h₂ τ) (CategoryTheory.Localization.liftNatTrans.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₃ F₂' F₃' h₂ h₃ τ')) (CategoryTheory.Localization.liftNatTrans.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₃ F₁' F₃' h₁ h₃ (CategoryTheory.CategoryStruct.comp.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3)) F₁ F₂ F₃ τ τ'))
-but is expected to have type
- forall {C : Type.{u4}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u6, u4} C] [_inst_2 : CategoryTheory.Category.{u2, u1} D] (L : CategoryTheory.Functor.{u6, u2, u4, u1} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u6, u4} C _inst_1) {E : Type.{u3}} [_inst_3 : CategoryTheory.Category.{u5, u3} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u4, u1, u6, u2} C D _inst_1 _inst_2 L W] (F₁ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₂ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₃ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₁' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (F₂' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (F₃' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) [h₁ : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₁ F₁'] [h₂ : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₂ F₂'] [h₃ : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₃ F₃'] (τ : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3))) F₁ F₂) (τ' : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3))) F₂ F₃), Eq.{max (succ u1) (succ u5)} (Quiver.Hom.{succ (max u1 u5), max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u2, u5, u1, u3} D _inst_2 E _inst_3))) F₁' F₃') (CategoryTheory.CategoryStruct.comp.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u2, u5, u1, u3} D _inst_2 E _inst_3)) F₁' F₂' F₃' (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₂ F₁' F₂' h₁ h₂ τ) (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₃ F₂' F₃' h₂ h₃ τ')) (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₃ F₁' F₃' h₁ h₃ (CategoryTheory.CategoryStruct.comp.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3)) F₁ F₂ F₃ τ τ'))
+<too large>
Case conversion may be inaccurate. Consider using '#align category_theory.localization.comp_lift_nat_trans CategoryTheory.Localization.comp_liftNatTransₓ'. -/
@[simp, reassoc]
theorem comp_liftNatTrans (F₁ F₂ F₃ : C ⥤ E) (F₁' F₂' F₃' : D ⥤ E) [h₁ : Lifting L W F₁ F₁']
mathlib commit https://github.com/leanprover-community/mathlib/commit/75e7fca56381d056096ce5d05e938f63a6567828
@@ -448,7 +448,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u4}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u6, u4} C] [_inst_2 : CategoryTheory.Category.{u2, u1} D] (L : CategoryTheory.Functor.{u6, u2, u4, u1} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u6, u4} C _inst_1) {E : Type.{u3}} [_inst_3 : CategoryTheory.Category.{u5, u3} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u4, u1, u6, u2} C D _inst_1 _inst_2 L W] (F₁ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₂ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₃ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₁' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (F₂' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (F₃' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) [h₁ : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₁ F₁'] [h₂ : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₂ F₂'] [h₃ : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₃ F₃'] (τ : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3))) F₁ F₂) (τ' : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3))) F₂ F₃), Eq.{max (succ u1) (succ u5)} (Quiver.Hom.{succ (max u1 u5), max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u2, u5, u1, u3} D _inst_2 E _inst_3))) F₁' F₃') (CategoryTheory.CategoryStruct.comp.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u2, u5, u1, u3} D _inst_2 E _inst_3)) F₁' F₂' F₃' (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₂ F₁' F₂' h₁ h₂ τ) (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₃ F₂' F₃' h₂ h₃ τ')) (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₃ F₁' F₃' h₁ h₃ (CategoryTheory.CategoryStruct.comp.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3)) F₁ F₂ F₃ τ τ'))
Case conversion may be inaccurate. Consider using '#align category_theory.localization.comp_lift_nat_trans CategoryTheory.Localization.comp_liftNatTransₓ'. -/
-@[simp, reassoc.1]
+@[simp, reassoc]
theorem comp_liftNatTrans (F₁ F₂ F₃ : C ⥤ E) (F₁' F₂' F₃' : D ⥤ E) [h₁ : Lifting L W F₁ F₁']
[h₂ : Lifting L W F₂ F₂'] [h₃ : Lifting L W F₃ F₃'] (τ : F₁ ⟶ F₂) (τ' : F₂ ⟶ F₃) :
liftNatTrans L W F₁ F₂ F₁' F₂' τ ≫ liftNatTrans L W F₂ F₃ F₂' F₃' τ' =
mathlib commit https://github.com/leanprover-community/mathlib/commit/09079525fd01b3dda35e96adaa08d2f943e1648c
@@ -372,7 +372,7 @@ lean 3 declaration is
but is expected to have type
forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D], (CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) -> (forall {W : Type.{u5}} [E : CategoryTheory.Category.{u6, u5} W], (CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) -> (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 W E) -> (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 W E) -> Sort.{max (succ u1) (succ u6)})
Case conversion may be inaccurate. Consider using '#align category_theory.localization.lifting CategoryTheory.Localization.Liftingₓ'. -/
-/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
+/- ./././Mathport/Syntax/Translate/Command.lean:393:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
/-- When `L : C ⥤ D` is a localization functor for `W : morphism_property C` and
`F : C ⥤ E` is a functor, we shall say that `F' : D ⥤ E` lifts `F` if the obvious diagram
is commutative up to an isomorphism. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/3cacc945118c8c637d89950af01da78307f59325
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joël Riou
! This file was ported from Lean 3 source module category_theory.localization.predicate
-! leanprover-community/mathlib commit 8efef279998820353694feb6ff5631ed0d309ecc
+! leanprover-community/mathlib commit 31ca6f9cf5f90a6206092cd7f84b359dcb6d52e0
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -14,6 +14,9 @@ import Mathbin.CategoryTheory.Localization.Construction
# Predicate for localized categories
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
In this file, a predicate `L.is_localization W` is introduced for a functor `L : C ⥤ D`
and `W : morphism_property C`: it expresses that `L` identifies `D` with the localized
category of `C` with respect to `W` (up to equivalence).
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce86f4e05e9a9b8da5e316b22c76ce76440c56a1
@@ -47,6 +47,7 @@ variable {C D : Type _} [Category C] [Category D] (L : C ⥤ D) (W : MorphismPro
namespace Functor
+#print CategoryTheory.Functor.IsLocalization /-
/-- The predicate expressing that, up to equivalence, a functor `L : C ⥤ D`
identifies the category `D` with the localized category of `C` with respect
to `W : morphism_property C`. -/
@@ -54,7 +55,9 @@ class IsLocalization : Prop where
inverts : W.IsInvertedBy L
nonempty_isEquivalence : Nonempty (IsEquivalence (Localization.Construction.lift L inverts))
#align category_theory.functor.is_localization CategoryTheory.Functor.IsLocalization
+-/
+#print CategoryTheory.Functor.q_isLocalization /-
instance q_isLocalization : W.Q.IsLocalization W
where
inverts := W.Q_inverts
@@ -68,11 +71,13 @@ instance q_isLocalization : W.Q.IsLocalization W
apply localization.construction.uniq
simpa only [localization.construction.fac]
#align category_theory.functor.Q_is_localization CategoryTheory.Functor.q_isLocalization
+-/
end Functor
namespace Localization
+#print CategoryTheory.Localization.StrictUniversalPropertyFixedTarget /-
/-- This universal property states that a functor `L : C ⥤ D` inverts morphisms
in `W` and the all functors `D ⥤ E` (for a fixed category `E`) uniquely factors
through `L`. -/
@@ -82,7 +87,9 @@ structure StrictUniversalPropertyFixedTarget where
fac : ∀ (F : C ⥤ E) (hF : W.IsInvertedBy F), L ⋙ lift F hF = F
uniq : ∀ (F₁ F₂ : D ⥤ E) (h : L ⋙ F₁ = L ⋙ F₂), F₁ = F₂
#align category_theory.localization.strict_universal_property_fixed_target CategoryTheory.Localization.StrictUniversalPropertyFixedTarget
+-/
+#print CategoryTheory.Localization.strictUniversalPropertyFixedTargetQ /-
/-- The localized category `W.localization` that was constructed satisfies
the universal property of the localization. -/
@[simps]
@@ -93,10 +100,12 @@ def strictUniversalPropertyFixedTargetQ : StrictUniversalPropertyFixedTarget W.Q
fac := Construction.fac
uniq := Construction.uniq
#align category_theory.localization.strict_universal_property_fixed_target_Q CategoryTheory.Localization.strictUniversalPropertyFixedTargetQ
+-/
instance : Inhabited (StrictUniversalPropertyFixedTarget W.Q W E) :=
⟨strictUniversalPropertyFixedTargetQ _ _⟩
+#print CategoryTheory.Localization.strictUniversalPropertyFixedTargetId /-
/-- When `W` consists of isomorphisms, the identity satisfies the universal property
of the localization. -/
@[simps]
@@ -113,11 +122,18 @@ def strictUniversalPropertyFixedTargetId (hW : W ⊆ MorphismProperty.isomorphis
cases F₂
exact Eq
#align category_theory.localization.strict_universal_property_fixed_target_id CategoryTheory.Localization.strictUniversalPropertyFixedTargetId
+-/
end Localization
namespace Functor
+/- warning: category_theory.functor.is_localization.mk' -> CategoryTheory.Functor.IsLocalization.mk' is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1), (CategoryTheory.Localization.StrictUniversalPropertyFixedTarget.{u1, u2, u3, u4, u2, u4} C D _inst_1 _inst_2 L W D _inst_2) -> (CategoryTheory.Localization.StrictUniversalPropertyFixedTarget.{u1, u2, u3, u4, u1, max u1 u3} C D _inst_1 _inst_2 L W (CategoryTheory.MorphismProperty.Localization.{u1, u3} C _inst_1 W) (CategoryTheory.MorphismProperty.Localization.category.{u1, u3} C _inst_1 W)) -> (CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W)
+but is expected to have type
+ forall {C : Type.{u4}} {D : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u4} C] [_inst_2 : CategoryTheory.Category.{u1, u3} D] (L : CategoryTheory.Functor.{u2, u1, u4, u3} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u2, u4} C _inst_1), (CategoryTheory.Localization.StrictUniversalPropertyFixedTarget.{u4, u3, u2, u1, u3, u1} C D _inst_1 _inst_2 L W D _inst_2) -> (CategoryTheory.Localization.StrictUniversalPropertyFixedTarget.{u4, u3, u2, u1, u4, max u4 u2} C D _inst_1 _inst_2 L W (CategoryTheory.MorphismProperty.Localization.{u4, u2} C _inst_1 W) (CategoryTheory.MorphismProperty.instCategoryLocalization.{u4, u2} C _inst_1 W)) -> (CategoryTheory.Functor.IsLocalization.{u4, u3, u2, u1} C D _inst_1 _inst_2 L W)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.is_localization.mk' CategoryTheory.Functor.IsLocalization.mk'ₓ'. -/
theorem IsLocalization.mk' (h₁ : Localization.StrictUniversalPropertyFixedTarget L W D)
(h₂ : Localization.StrictUniversalPropertyFixedTarget L W W.Localization) :
IsLocalization L W :=
@@ -142,6 +158,12 @@ theorem IsLocalization.mk' (h₁ : Localization.StrictUniversalPropertyFixedTarg
eq_to_hom_refl] } }
#align category_theory.functor.is_localization.mk' CategoryTheory.Functor.IsLocalization.mk'
+/- warning: category_theory.functor.is_localization.for_id -> CategoryTheory.Functor.IsLocalization.for_id is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] (W : CategoryTheory.MorphismProperty.{u2, u1} C _inst_1), (HasSubset.Subset.{max u1 u2} (CategoryTheory.MorphismProperty.{u2, u1} C _inst_1) (CategoryTheory.MorphismProperty.hasSubset.{u2, u1} C _inst_1) W (CategoryTheory.MorphismProperty.isomorphisms.{u2, u1} C _inst_1)) -> (CategoryTheory.Functor.IsLocalization.{u1, u1, u2, u2} C C _inst_1 _inst_1 (CategoryTheory.Functor.id.{u2, u1} C _inst_1) W)
+but is expected to have type
+ forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (W : CategoryTheory.MorphismProperty.{u1, u2} C _inst_1), (HasSubset.Subset.{max u2 u1} (CategoryTheory.MorphismProperty.{u1, u2} C _inst_1) (CategoryTheory.MorphismProperty.instHasSubsetMorphismProperty.{u1, u2} C _inst_1) W (CategoryTheory.MorphismProperty.isomorphisms.{u1, u2} C _inst_1)) -> (CategoryTheory.Functor.IsLocalization.{u2, u2, u1, u1} C C _inst_1 _inst_1 (CategoryTheory.Functor.id.{u1, u2} C _inst_1) W)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.is_localization.for_id CategoryTheory.Functor.IsLocalization.for_idₓ'. -/
theorem IsLocalization.for_id (hW : W ⊆ MorphismProperty.isomorphisms C) : (𝟭 C).IsLocalization W :=
IsLocalization.mk' _ _ (Localization.strictUniversalPropertyFixedTargetId W _ hW)
(Localization.strictUniversalPropertyFixedTargetId W _ hW)
@@ -153,10 +175,22 @@ namespace Localization
variable [L.IsLocalization W]
+/- warning: category_theory.localization.inverts -> CategoryTheory.Localization.inverts is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.MorphismProperty.IsInvertedBy.{u3, u1, u2, u4} C _inst_1 D _inst_2 W L
+but is expected to have type
+ forall {C : Type.{u3}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u4, u3} C] [_inst_2 : CategoryTheory.Category.{u1, u2} D] (L : CategoryTheory.Functor.{u4, u1, u3, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u4, u3} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u3, u2, u4, u1} C D _inst_1 _inst_2 L W], CategoryTheory.MorphismProperty.IsInvertedBy.{u4, u3, u2, u1} C _inst_1 D _inst_2 W L
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.inverts CategoryTheory.Localization.invertsₓ'. -/
theorem inverts : W.IsInvertedBy L :=
(inferInstance : L.IsLocalization W).inverts
#align category_theory.localization.inverts CategoryTheory.Localization.inverts
+/- warning: category_theory.localization.iso_of_hom -> CategoryTheory.Localization.isoOfHom is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] {X : C} {Y : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X Y), (W X Y f) -> (CategoryTheory.Iso.{u4, u2} D _inst_2 (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X) (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L Y))
+but is expected to have type
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] {X : C} {Y : C} (f : Quiver.Hom.{succ u3, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) X Y), (W X Y f) -> (CategoryTheory.Iso.{u4, u2} D _inst_2 (Prefunctor.obj.{succ u3, succ u4, u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} D (CategoryTheory.Category.toCategoryStruct.{u4, u2} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u3, u4, u1, u2} C _inst_1 D _inst_2 L) X) (Prefunctor.obj.{succ u3, succ u4, u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u3, u1} C (CategoryTheory.Category.toCategoryStruct.{u3, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u4, u2} D (CategoryTheory.Category.toCategoryStruct.{u4, u2} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u3, u4, u1, u2} C _inst_1 D _inst_2 L) Y))
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.iso_of_hom CategoryTheory.Localization.isoOfHomₓ'. -/
/-- The isomorphism `L.obj X ≅ L.obj Y` that is deduced from a morphism `f : X ⟶ Y` which
belongs to `W`, when `L.is_localization W`. -/
@[simps]
@@ -168,6 +202,12 @@ def isoOfHom {X Y : C} (f : X ⟶ Y) (hf : W f) : L.obj X ≅ L.obj Y :=
instance : IsEquivalence (Localization.Construction.lift L (inverts L W)) :=
(inferInstance : L.IsLocalization W).nonempty_isEquivalence.some
+/- warning: category_theory.localization.equivalence_from_model -> CategoryTheory.Localization.equivalenceFromModel is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.Equivalence.{max u1 u3, u4, u1, u2} (CategoryTheory.MorphismProperty.Localization.{u1, u3} C _inst_1 W) (CategoryTheory.MorphismProperty.Localization.category.{u1, u3} C _inst_1 W) D _inst_2
+but is expected to have type
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.Equivalence.{max u1 u3, u4, u1, u2} (CategoryTheory.MorphismProperty.Localization.{u1, u3} C _inst_1 W) D (CategoryTheory.MorphismProperty.instCategoryLocalization.{u1, u3} C _inst_1 W) _inst_2
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.equivalence_from_model CategoryTheory.Localization.equivalenceFromModelₓ'. -/
/-- A chosen equivalence of categories `W.localization ≅ D` for a functor
`L : C ⥤ D` which satisfies `L.is_localization W`. This shall be used in
order to deduce properties of `L` from properties of `W.Q`. -/
@@ -175,12 +215,15 @@ def equivalenceFromModel : W.Localization ≌ D :=
(Localization.Construction.lift L (inverts L W)).asEquivalence
#align category_theory.localization.equivalence_from_model CategoryTheory.Localization.equivalenceFromModel
+#print CategoryTheory.Localization.qCompEquivalenceFromModelFunctorIso /-
/-- Via the equivalence of categories `equivalence_from_model L W : W.localization ≌ D`,
one may identify the functors `W.Q` and `L`. -/
def qCompEquivalenceFromModelFunctorIso : W.Q ⋙ (equivalenceFromModel L W).Functor ≅ L :=
eqToIso (Construction.fac _ _)
#align category_theory.localization.Q_comp_equivalence_from_model_functor_iso CategoryTheory.Localization.qCompEquivalenceFromModelFunctorIso
+-/
+#print CategoryTheory.Localization.compEquivalenceFromModelInverseIso /-
/-- Via the equivalence of categories `equivalence_from_model L W : W.localization ≌ D`,
one may identify the functors `L` and `W.Q`. -/
def compEquivalenceFromModelInverseIso : L ⋙ (equivalenceFromModel L W).inverse ≅ W.Q :=
@@ -193,7 +236,14 @@ def compEquivalenceFromModelInverseIso : L ⋙ (equivalenceFromModel L W).invers
_ ≅ W.Q := Functor.rightUnitor _
#align category_theory.localization.comp_equivalence_from_model_inverse_iso CategoryTheory.Localization.compEquivalenceFromModelInverseIso
+-/
+/- warning: category_theory.localization.ess_surj -> CategoryTheory.Localization.essSurj is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.EssSurj.{u3, u4, u1, u2} C D _inst_1 _inst_2 L
+but is expected to have type
+ forall {C : Type.{u2}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u4, u2} C] [_inst_2 : CategoryTheory.Category.{u3, u1} D] (L : CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u4, u2} C _inst_1) [_inst_4 : CategoryTheory.Functor.IsLocalization.{u2, u1, u4, u3} C D _inst_1 _inst_2 L W], CategoryTheory.EssSurj.{u4, u3, u2, u1} C D _inst_1 _inst_2 L
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.ess_surj CategoryTheory.Localization.essSurjₓ'. -/
theorem essSurj : EssSurj L :=
⟨fun X =>
⟨(Construction.objEquiv W).invFun ((equivalenceFromModel L W).inverse.obj X),
@@ -202,12 +252,14 @@ theorem essSurj : EssSurj L :=
(equivalenceFromModel L W).counitIso.app X)⟩⟩
#align category_theory.localization.ess_surj CategoryTheory.Localization.essSurj
+#print CategoryTheory.Localization.whiskeringLeftFunctor /-
/-- The functor `(D ⥤ E) ⥤ W.functors_inverting E` induced by the composition
with a localization functor `L : C ⥤ D` with respect to `W : morphism_property C`. -/
def whiskeringLeftFunctor : (D ⥤ E) ⥤ W.FunctorsInverting E :=
FullSubcategory.lift _ ((whiskeringLeft _ _ E).obj L)
(MorphismProperty.IsInvertedBy.of_comp W L (inverts L W))
#align category_theory.localization.whiskering_left_functor CategoryTheory.Localization.whiskeringLeftFunctor
+-/
instance : IsEquivalence (whiskeringLeftFunctor L W E) :=
by
@@ -235,6 +287,12 @@ instance : IsEquivalence (whiskeringLeftFunctor L W E) :=
change (W.Q ⋙ localization.construction.lift L (inverts L W)) ⋙ _ = L ⋙ _
rw [construction.fac]
+/- warning: category_theory.localization.functor_equivalence -> CategoryTheory.Localization.functorEquivalence is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) (E : Type.{u5}) [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.Equivalence.{max u2 u6, max u1 u6, max u4 u6 u2 u5, max u3 u6 u1 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.{u3, u1, u5, u6} C _inst_1 W E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.category.{u3, u5, u1, u6} C _inst_1 W E _inst_3)
+but is expected to have type
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) (E : Type.{u5}) [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.Equivalence.{max u2 u6, max u1 u6, max (max (max u5 u2) u6) u4, max (max (max u1 u3) u6) u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.{u3, u1, u5, u6} C _inst_1 W E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.MorphismProperty.instCategoryFunctorsInverting.{u3, u1, u5, u6} C _inst_1 W E _inst_3)
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.functor_equivalence CategoryTheory.Localization.functorEquivalenceₓ'. -/
/-- The equivalence of categories `(D ⥤ E) ≌ (W.functors_inverting E)` induced by
the composition with a localization functor `L : C ⥤ D` with respect to
`W : morphism_property C`. -/
@@ -244,6 +302,12 @@ def functorEquivalence : D ⥤ E ≌ W.FunctorsInverting E :=
include W
+/- warning: category_theory.localization.whiskering_left_functor' -> CategoryTheory.Localization.whiskeringLeftFunctor' is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) (E : Type.{u5}) [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], CategoryTheory.Functor.{max u2 u6, max u1 u6, max u4 u6 u2 u5, max u3 u6 u1 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3)
+but is expected to have type
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D], (CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) -> (CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) -> (forall (E : Type.{u5}) [_inst_3 : CategoryTheory.Category.{u6, u5} E], CategoryTheory.Functor.{max u2 u6, max u1 u6, max (max (max u5 u2) u6) u4, max (max (max u5 u1) u6) u3} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3))
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.whiskering_left_functor' CategoryTheory.Localization.whiskeringLeftFunctor'ₓ'. -/
/-- The functor `(D ⥤ E) ⥤ (C ⥤ E)` given by the composition with a localization
functor `L : C ⥤ D` with respect to `W : morphism_property C`. -/
@[nolint unused_arguments]
@@ -251,6 +315,12 @@ def whiskeringLeftFunctor' : (D ⥤ E) ⥤ C ⥤ E :=
(whiskeringLeft C D E).obj L
#align category_theory.localization.whiskering_left_functor' CategoryTheory.Localization.whiskeringLeftFunctor'
+/- warning: category_theory.localization.whiskering_left_functor'_eq -> CategoryTheory.Localization.whiskeringLeftFunctor'_eq is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) (E : Type.{u5}) [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], Eq.{succ (max (max u2 u6) (max u1 u6) (max u4 u6 u2 u5) u3 u6 u1 u5)} (CategoryTheory.Functor.{max u2 u6, max u1 u6, max u4 u6 u2 u5, max u3 u6 u1 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3)) (CategoryTheory.Localization.whiskeringLeftFunctor'.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4) (CategoryTheory.Functor.comp.{max u2 u6, max u1 u6, max u1 u6, max u4 u6 u2 u5, max u3 u6 u1 u5, max u3 u6 u1 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.{u3, u1, u5, u6} C _inst_1 W E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.category.{u3, u5, u1, u6} C _inst_1 W E _inst_3) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Localization.whiskeringLeftFunctor.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4) (CategoryTheory.inducedFunctor.{max u1 u6, max u3 u6 u1 u5, max u3 u6 u1 u5} (CategoryTheory.FullSubcategoryₓ.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (fun (F : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) => CategoryTheory.MorphismProperty.IsInvertedBy.{u3, u1, u5, u6} C _inst_1 E _inst_3 W F)) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.FullSubcategoryₓ.obj.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.MorphismProperty.IsInvertedBy.{u3, u1, u5, u6} C _inst_1 E _inst_3 W))))
+but is expected to have type
+ forall {C : Type.{u6}} {D : Type.{u5}} [_inst_1 : CategoryTheory.Category.{u4, u6} C] [_inst_2 : CategoryTheory.Category.{u3, u5} D] (L : CategoryTheory.Functor.{u4, u3, u6, u5} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u4, u6} C _inst_1) (E : Type.{u2}) [_inst_3 : CategoryTheory.Category.{u1, u2} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u6, u5, u4, u3} C D _inst_1 _inst_2 L W], Eq.{max (max (max (max (max (succ u6) (succ u5)) (succ u4)) (succ u3)) (succ u2)) (succ u1)} (CategoryTheory.Functor.{max u5 u1, max u6 u1, max (max (max u2 u5) u1) u3, max (max (max u2 u6) u1) u4} (CategoryTheory.Functor.{u3, u1, u5, u2} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u3, u1, u5, u2} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u4, u1, u6, u2} C _inst_1 E _inst_3)) (CategoryTheory.Localization.whiskeringLeftFunctor'.{u6, u5, u4, u3, u2, u1} C D _inst_1 _inst_2 L W E _inst_3) (CategoryTheory.Functor.comp.{max u5 u1, max u6 u1, max u6 u1, max (max (max u5 u3) u2) u1, max (max (max u6 u4) u2) u1, max (max (max u6 u4) u2) u1} (CategoryTheory.Functor.{u3, u1, u5, u2} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u3, u1, u5, u2} D _inst_2 E _inst_3) (CategoryTheory.MorphismProperty.FunctorsInverting.{u4, u6, u2, u1} C _inst_1 W E _inst_3) (CategoryTheory.MorphismProperty.instCategoryFunctorsInverting.{u4, u6, u2, u1} C _inst_1 W E _inst_3) (CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u4, u1, u6, u2} C _inst_1 E _inst_3) (CategoryTheory.Localization.whiskeringLeftFunctor.{u6, u5, u4, u3, u2, u1} C D _inst_1 _inst_2 L W E _inst_3 _inst_4) (CategoryTheory.inducedFunctor.{max u6 u1, max (max (max u6 u4) u2) u1, max (max (max u6 u4) u2) u1} (CategoryTheory.FullSubcategory.{max (max (max u6 u4) u2) u1} (CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) (fun (F : CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) => CategoryTheory.MorphismProperty.IsInvertedBy.{u4, u6, u2, u1} C _inst_1 E _inst_3 W F)) (CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u4, u1, u6, u2} C _inst_1 E _inst_3) (CategoryTheory.FullSubcategory.obj.{max (max (max u6 u4) u2) u1} (CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) (fun (F : CategoryTheory.Functor.{u4, u1, u6, u2} C _inst_1 E _inst_3) => CategoryTheory.MorphismProperty.IsInvertedBy.{u4, u6, u2, u1} C _inst_1 E _inst_3 W F))))
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.whiskering_left_functor'_eq CategoryTheory.Localization.whiskeringLeftFunctor'_eqₓ'. -/
theorem whiskeringLeftFunctor'_eq :
whiskeringLeftFunctor' L W E = Localization.whiskeringLeftFunctor L W E ⋙ inducedFunctor _ :=
rfl
@@ -258,6 +328,12 @@ theorem whiskeringLeftFunctor'_eq :
variable {E}
+/- warning: category_theory.localization.whiskering_left_functor'_obj -> CategoryTheory.Localization.whiskeringLeftFunctor'_obj is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] (F : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3), Eq.{succ (max u3 u6 u1 u5)} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.obj.{max u2 u6, max u1 u6, max u4 u6 u2 u5, max u3 u6 u1 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Localization.whiskeringLeftFunctor'.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4) F) (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_3 L F)
+but is expected to have type
+ forall {C : Type.{u2}} {D : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] [_inst_2 : CategoryTheory.Category.{u6, u4} D] (L : CategoryTheory.Functor.{u1, u6, u2, u4} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u1, u2} C _inst_1) {E : Type.{u3}} [_inst_3 : CategoryTheory.Category.{u5, u3} E] (_inst_4 : CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3), Eq.{max (max (max (succ u2) (succ u1)) (succ u3)) (succ u5)} (CategoryTheory.Functor.{u1, u5, u2, u3} C _inst_1 E _inst_3) (Prefunctor.obj.{max (succ u4) (succ u5), max (succ u2) (succ u5), max (max (max u4 u6) u3) u5, max (max (max u2 u1) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} D _inst_2 E _inst_3))) (CategoryTheory.Functor.{u1, u5, u2, u3} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u5, max (max (max u2 u1) u3) u5} (CategoryTheory.Functor.{u1, u5, u2, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u5, max (max (max u2 u1) u3) u5} (CategoryTheory.Functor.{u1, u5, u2, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u1, u5, u2, u3} C _inst_1 E _inst_3))) (CategoryTheory.Functor.toPrefunctor.{max u4 u5, max u2 u5, max (max (max u4 u6) u3) u5, max (max (max u2 u1) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.{u1, u5, u2, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u1, u5, u2, u3} C _inst_1 E _inst_3) (CategoryTheory.Localization.whiskeringLeftFunctor'.{u2, u4, u1, u6, u3, u5} C D _inst_1 _inst_2 L W E _inst_3)) _inst_4) (CategoryTheory.Functor.comp.{u1, u6, u5, u2, u4, u3} C _inst_1 D _inst_2 E _inst_3 L _inst_4)
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.whiskering_left_functor'_obj CategoryTheory.Localization.whiskeringLeftFunctor'_objₓ'. -/
@[simp]
theorem whiskeringLeftFunctor'_obj (F : D ⥤ E) : (whiskeringLeftFunctor' L W E).obj F = L ⋙ F :=
rfl
@@ -273,14 +349,26 @@ instance : Faithful (whiskeringLeftFunctor' L W E) :=
rw [whiskering_left_functor'_eq]
infer_instance
-theorem nat_trans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
+/- warning: category_theory.localization.nat_trans_ext -> CategoryTheory.Localization.natTrans_ext is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] {F₁ : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3} {F₂ : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3} (τ : Quiver.Hom.{succ (max u2 u6), max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3))) F₁ F₂) (τ' : Quiver.Hom.{succ (max u2 u6), max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3))) F₁ F₂), (forall (X : C), Eq.{succ u6} (Quiver.Hom.{succ u6, u5} E (CategoryTheory.CategoryStruct.toQuiver.{u6, u5} E (CategoryTheory.Category.toCategoryStruct.{u6, u5} E _inst_3)) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁ (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₂ (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X))) (CategoryTheory.NatTrans.app.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁ F₂ τ (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.NatTrans.app.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁ F₂ τ' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X))) -> (Eq.{succ (max u2 u6)} (Quiver.Hom.{succ (max u2 u6), max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3))) F₁ F₂) τ τ')
+but is expected to have type
+ forall {C : Type.{u1}} {D : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] [_inst_2 : CategoryTheory.Category.{u6, u4} D] (L : CategoryTheory.Functor.{u2, u6, u1, u4} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u2, u1} C _inst_1) {E : Type.{u3}} [_inst_3 : CategoryTheory.Category.{u5, u3} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u4, u2, u6} C D _inst_1 _inst_2 L W] {F₁ : CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3} {F₂ : CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3} (τ : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} D _inst_2 E _inst_3))) F₁ F₂) (τ' : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} D _inst_2 E _inst_3))) F₁ F₂), (forall (X : C), Eq.{succ u5} (Quiver.Hom.{succ u5, u3} E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (Prefunctor.obj.{succ u6, succ u5, u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} D _inst_2 E _inst_3 F₁) (Prefunctor.obj.{succ u2, succ u6, u1, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u6, u1, u4} C _inst_1 D _inst_2 L) X)) (Prefunctor.obj.{succ u6, succ u5, u4, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} D _inst_2 E _inst_3 F₂) (Prefunctor.obj.{succ u2, succ u6, u1, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u6, u1, u4} C _inst_1 D _inst_2 L) X))) (CategoryTheory.NatTrans.app.{u6, u5, u4, u3} D _inst_2 E _inst_3 F₁ F₂ τ (Prefunctor.obj.{succ u2, succ u6, u1, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u6, u1, u4} C _inst_1 D _inst_2 L) X)) (CategoryTheory.NatTrans.app.{u6, u5, u4, u3} D _inst_2 E _inst_3 F₁ F₂ τ' (Prefunctor.obj.{succ u2, succ u6, u1, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} D (CategoryTheory.Category.toCategoryStruct.{u6, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u2, u6, u1, u4} C _inst_1 D _inst_2 L) X))) -> (Eq.{max (succ u4) (succ u5)} (Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} D _inst_2 E _inst_3))) F₁ F₂) τ τ')
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.natTrans_extₓ'. -/
+theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
(h : ∀ X : C, τ.app (L.obj X) = τ'.app (L.obj X)) : τ = τ' :=
by
haveI : CategoryTheory.EssSurj L := ess_surj L W
ext Y
rw [← cancel_epi (F₁.map (L.obj_obj_preimage_iso Y).Hom), τ.naturality, τ'.naturality, h]
-#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.nat_trans_ext
-
+#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.natTrans_ext
+
+/- warning: category_theory.localization.lifting -> CategoryTheory.Localization.Lifting is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) -> (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) -> Sort.{max (succ u1) (succ u6)}
+but is expected to have type
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D], (CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) -> (forall {W : Type.{u5}} [E : CategoryTheory.Category.{u6, u5} W], (CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) -> (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 W E) -> (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 W E) -> Sort.{max (succ u1) (succ u6)})
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.lifting CategoryTheory.Localization.Liftingₓ'. -/
/- ./././Mathport/Syntax/Translate/Command.lean:388:30: infer kinds are unsupported in Lean 4: #[`Iso] [] -/
/-- When `L : C ⥤ D` is a localization functor for `W : morphism_property C` and
`F : C ⥤ E` is a functor, we shall say that `F' : D ⥤ E` lifts `F` if the obvious diagram
@@ -291,18 +379,23 @@ class Lifting (F : C ⥤ E) (F' : D ⥤ E) where
variable {W}
+#print CategoryTheory.Localization.lift /-
/-- Given a localization functor `L : C ⥤ D` for `W : morphism_property C` and
a functor `F : C ⥤ E` which inverts `W`, this is a choice of functor
`D ⥤ E` which lifts `F`. -/
def lift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalization W] : D ⥤ E :=
(functorEquivalence L W E).inverse.obj ⟨F, hF⟩
#align category_theory.localization.lift CategoryTheory.Localization.lift
+-/
+#print CategoryTheory.Localization.liftingLift /-
instance liftingLift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalization W] :
Lifting L W F (lift F hF L) :=
⟨(inducedFunctor _).mapIso ((functorEquivalence L W E).counitIso.app ⟨F, hF⟩)⟩
#align category_theory.localization.lifting_lift CategoryTheory.Localization.liftingLift
+-/
+#print CategoryTheory.Localization.fac /-
/-- The canonical isomorphism `L ⋙ lift F hF L ≅ F` for any functor `F : C ⥤ E`
which inverts `W`, when `L : C ⥤ D` is a localization functor for `W`. -/
@[simps]
@@ -310,14 +403,18 @@ def fac (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalizati
L ⋙ lift F hF L ≅ F :=
Lifting.iso _ W _ _
#align category_theory.localization.fac CategoryTheory.Localization.fac
+-/
+#print CategoryTheory.Localization.liftingConstructionLift /-
instance liftingConstructionLift (F : C ⥤ D) (hF : W.IsInvertedBy F) :
Lifting W.Q W F (Construction.lift F hF) :=
⟨eqToIso (Construction.fac F hF)⟩
#align category_theory.localization.lifting_construction_lift CategoryTheory.Localization.liftingConstructionLift
+-/
variable (W)
+#print CategoryTheory.Localization.liftNatTrans /-
/-- Given a localization functor `L : C ⥤ D` for `W : morphism_property C`,
if `(F₁' F₂' : D ⥤ E)` are functors which lifts functors `(F₁ F₂ : C ⥤ E)`,
a natural transformation `τ : F₁ ⟶ F₂` uniquely lifts to a natural transformation `F₁' ⟶ F₂'`. -/
@@ -326,7 +423,14 @@ def liftNatTrans (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting L W F₁
(whiskeringLeftFunctor' L W E).preimage
((Lifting.iso L W F₁ F₁').Hom ≫ τ ≫ (Lifting.iso L W F₂ F₂').inv)
#align category_theory.localization.lift_nat_trans CategoryTheory.Localization.liftNatTrans
+-/
+/- warning: category_theory.localization.lift_nat_trans_app -> CategoryTheory.Localization.liftNatTrans_app is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] (F₁ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F₂ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F₁' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (F₂' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) [_inst_5 : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₁'] [_inst_6 : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₂'] (τ : Quiver.Hom.{succ (max u1 u6), max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3))) F₁ F₂) (X : C), Eq.{succ u6} (Quiver.Hom.{succ u6, u5} E (CategoryTheory.CategoryStruct.toQuiver.{u6, u5} E (CategoryTheory.Category.toCategoryStruct.{u6, u5} E _inst_3)) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₂' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X))) (CategoryTheory.NatTrans.app.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁' F₂' (CategoryTheory.Localization.liftNatTrans.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₂ F₁' F₂' _inst_5 _inst_6 τ) (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.CategoryStruct.comp.{u6, u5} E (CategoryTheory.Category.toCategoryStruct.{u6, u5} E _inst_3) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₁' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.Functor.obj.{u3, u6, u1, u5} C _inst_1 E _inst_3 F₁ X) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₂' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.NatTrans.app.{u3, u6, u1, u5} C _inst_1 E _inst_3 (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_3 L F₁') F₁ (CategoryTheory.Iso.hom.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_3 L F₁') F₁ (CategoryTheory.Localization.Lifting.iso.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₁' _inst_5)) X) (CategoryTheory.CategoryStruct.comp.{u6, u5} E (CategoryTheory.Category.toCategoryStruct.{u6, u5} E _inst_3) (CategoryTheory.Functor.obj.{u3, u6, u1, u5} C _inst_1 E _inst_3 F₁ X) (CategoryTheory.Functor.obj.{u3, u6, u1, u5} C _inst_1 E _inst_3 F₂ X) (CategoryTheory.Functor.obj.{u4, u6, u2, u5} D _inst_2 E _inst_3 F₂' (CategoryTheory.Functor.obj.{u3, u4, u1, u2} C _inst_1 D _inst_2 L X)) (CategoryTheory.NatTrans.app.{u3, u6, u1, u5} C _inst_1 E _inst_3 F₁ F₂ τ X) (CategoryTheory.NatTrans.app.{u3, u6, u1, u5} C _inst_1 E _inst_3 F₂ (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_3 L F₂') (CategoryTheory.Iso.inv.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_3 L F₂') F₂ (CategoryTheory.Localization.Lifting.iso.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₂' _inst_6)) X)))
+but is expected to have type
+ forall {C : Type.{u4}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u6, u4} C] [_inst_2 : CategoryTheory.Category.{u2, u1} D] (L : CategoryTheory.Functor.{u6, u2, u4, u1} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u6, u4} C _inst_1) {E : Type.{u3}} [_inst_3 : CategoryTheory.Category.{u5, u3} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u4, u1, u6, u2} C D _inst_1 _inst_2 L W] (F₁ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₂ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₁' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (F₂' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) [_inst_5 : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₁ F₁'] [_inst_6 : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₂ F₂'] (τ : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3))) F₁ F₂) (X : C), Eq.{succ u5} (Quiver.Hom.{succ u5, u3} E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (Prefunctor.obj.{succ u2, succ u5, u1, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} D (CategoryTheory.Category.toCategoryStruct.{u2, u1} D _inst_2)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u2, u5, u1, u3} D _inst_2 E _inst_3 F₁') (Prefunctor.obj.{succ u6, succ u2, u4, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} D (CategoryTheory.Category.toCategoryStruct.{u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u6, u2, u4, u1} C _inst_1 D _inst_2 L) X)) (Prefunctor.obj.{succ u2, succ u5, u1, u3} D (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} D (CategoryTheory.Category.toCategoryStruct.{u2, u1} D _inst_2)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u2, u5, u1, u3} D _inst_2 E _inst_3 F₂') (Prefunctor.obj.{succ u6, succ u2, u4, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} D (CategoryTheory.Category.toCategoryStruct.{u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u6, u2, u4, u1} C _inst_1 D _inst_2 L) X))) (CategoryTheory.NatTrans.app.{u2, u5, u1, u3} D _inst_2 E _inst_3 F₁' F₂' (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₂ F₁' F₂' _inst_5 _inst_6 τ) (Prefunctor.obj.{succ u6, succ u2, u4, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} D (CategoryTheory.Category.toCategoryStruct.{u2, u1} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u6, u2, u4, u1} C _inst_1 D _inst_2 L) X)) (CategoryTheory.CategoryStruct.comp.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₁')) X) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 F₁) X) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₂')) X) (CategoryTheory.NatTrans.app.{u6, u5, u4, u3} C _inst_1 E _inst_3 (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₁') F₁ (CategoryTheory.Iso.hom.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₁') F₁ (CategoryTheory.Localization.Lifting.iso.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 F₁ F₁' _inst_5)) X) (CategoryTheory.CategoryStruct.comp.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 F₁) X) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 F₂) X) (Prefunctor.obj.{succ u6, succ u5, u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u6, u4} C (CategoryTheory.Category.toCategoryStruct.{u6, u4} C _inst_1)) E (CategoryTheory.CategoryStruct.toQuiver.{u5, u3} E (CategoryTheory.Category.toCategoryStruct.{u5, u3} E _inst_3)) (CategoryTheory.Functor.toPrefunctor.{u6, u5, u4, u3} C _inst_1 E _inst_3 (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₂')) X) (CategoryTheory.NatTrans.app.{u6, u5, u4, u3} C _inst_1 E _inst_3 F₁ F₂ τ X) (CategoryTheory.NatTrans.app.{u6, u5, u4, u3} C _inst_1 E _inst_3 F₂ (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₂') (CategoryTheory.Iso.inv.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.comp.{u6, u2, u5, u4, u1, u3} C _inst_1 D _inst_2 E _inst_3 L F₂') F₂ (CategoryTheory.Localization.Lifting.iso.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 F₂ F₂' _inst_6)) X)))
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.lift_nat_trans_app CategoryTheory.Localization.liftNatTrans_appₓ'. -/
@[simp]
theorem liftNatTrans_app (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting L W F₁ F₁'] [Lifting L W F₂ F₂']
(τ : F₁ ⟶ F₂) (X : C) :
@@ -335,22 +439,35 @@ theorem liftNatTrans_app (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting
congr_app (Functor.image_preimage (whiskeringLeftFunctor' L W E) _) X
#align category_theory.localization.lift_nat_trans_app CategoryTheory.Localization.liftNatTrans_app
+/- warning: category_theory.localization.comp_lift_nat_trans -> CategoryTheory.Localization.comp_liftNatTrans is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] (F₁ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F₂ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F₃ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F₁' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (F₂' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (F₃' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) [h₁ : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₁'] [h₂ : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₂'] [h₃ : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₃ F₃'] (τ : Quiver.Hom.{succ (max u1 u6), max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3))) F₁ F₂) (τ' : Quiver.Hom.{succ (max u1 u6), max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3))) F₂ F₃), Eq.{succ (max u2 u6)} (Quiver.Hom.{succ (max u2 u6), max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3))) F₁' F₃') (CategoryTheory.CategoryStruct.comp.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3)) F₁' F₂' F₃' (CategoryTheory.Localization.liftNatTrans.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₂ F₁' F₂' h₁ h₂ τ) (CategoryTheory.Localization.liftNatTrans.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₃ F₂' F₃' h₂ h₃ τ')) (CategoryTheory.Localization.liftNatTrans.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₃ F₁' F₃' h₁ h₃ (CategoryTheory.CategoryStruct.comp.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3)) F₁ F₂ F₃ τ τ'))
+but is expected to have type
+ forall {C : Type.{u4}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u6, u4} C] [_inst_2 : CategoryTheory.Category.{u2, u1} D] (L : CategoryTheory.Functor.{u6, u2, u4, u1} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u6, u4} C _inst_1) {E : Type.{u3}} [_inst_3 : CategoryTheory.Category.{u5, u3} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u4, u1, u6, u2} C D _inst_1 _inst_2 L W] (F₁ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₂ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₃ : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F₁' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (F₂' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (F₃' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) [h₁ : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₁ F₁'] [h₂ : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₂ F₂'] [h₃ : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F₃ F₃'] (τ : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3))) F₁ F₂) (τ' : Quiver.Hom.{max (succ u4) (succ u5), max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3))) F₂ F₃), Eq.{max (succ u1) (succ u5)} (Quiver.Hom.{succ (max u1 u5), max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u2, u5, u1, u3} D _inst_2 E _inst_3))) F₁' F₃') (CategoryTheory.CategoryStruct.comp.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u2, u5, u1, u3} D _inst_2 E _inst_3)) F₁' F₂' F₃' (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₂ F₁' F₂' h₁ h₂ τ) (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₃ F₂' F₃' h₂ h₃ τ')) (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₃ F₁' F₃' h₁ h₃ (CategoryTheory.CategoryStruct.comp.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3)) F₁ F₂ F₃ τ τ'))
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.comp_lift_nat_trans CategoryTheory.Localization.comp_liftNatTransₓ'. -/
@[simp, reassoc.1]
theorem comp_liftNatTrans (F₁ F₂ F₃ : C ⥤ E) (F₁' F₂' F₃' : D ⥤ E) [h₁ : Lifting L W F₁ F₁']
[h₂ : Lifting L W F₂ F₂'] [h₃ : Lifting L W F₃ F₃'] (τ : F₁ ⟶ F₂) (τ' : F₂ ⟶ F₃) :
liftNatTrans L W F₁ F₂ F₁' F₂' τ ≫ liftNatTrans L W F₂ F₃ F₂' F₃' τ' =
liftNatTrans L W F₁ F₃ F₁' F₃' (τ ≫ τ') :=
- nat_trans_ext L W _ _ fun X => by
+ natTrans_ext L W _ _ fun X => by
simp only [nat_trans.comp_app, lift_nat_trans_app, assoc, iso.inv_hom_id_app_assoc]
#align category_theory.localization.comp_lift_nat_trans CategoryTheory.Localization.comp_liftNatTrans
+/- warning: category_theory.localization.lift_nat_trans_id -> CategoryTheory.Localization.liftNatTrans_id is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] (F : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) [h : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F F'], Eq.{succ (max u2 u6)} (Quiver.Hom.{succ (max u2 u6), max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3))) F' F') (CategoryTheory.Localization.liftNatTrans.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F F F' F' h h (CategoryTheory.CategoryStruct.id.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3)) F)) (CategoryTheory.CategoryStruct.id.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3)) F')
+but is expected to have type
+ forall {C : Type.{u4}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u6, u4} C] [_inst_2 : CategoryTheory.Category.{u2, u1} D] (L : CategoryTheory.Functor.{u6, u2, u4, u1} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u6, u4} C _inst_1) {E : Type.{u3}} [_inst_3 : CategoryTheory.Category.{u5, u3} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u4, u1, u6, u2} C D _inst_1 _inst_2 L W] (F : CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (F' : CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) [h : CategoryTheory.Localization.Lifting.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L E _inst_3 W F F'], Eq.{max (succ u1) (succ u5)} (Quiver.Hom.{max (succ u1) (succ u5), max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.CategoryStruct.toQuiver.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u2, u5, u1, u3} D _inst_2 E _inst_3))) F' F') (CategoryTheory.Localization.liftNatTrans.{u4, u1, u6, u2, u3, u5} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F F F' F' h h (CategoryTheory.CategoryStruct.id.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u4 u5, max (max (max u4 u6) u3) u5} (CategoryTheory.Functor.{u6, u5, u4, u3} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u6, u5, u4, u3} C _inst_1 E _inst_3)) F)) (CategoryTheory.CategoryStruct.id.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Category.toCategoryStruct.{max u1 u5, max (max (max u1 u2) u3) u5} (CategoryTheory.Functor.{u2, u5, u1, u3} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u2, u5, u1, u3} D _inst_2 E _inst_3)) F')
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.lift_nat_trans_id CategoryTheory.Localization.liftNatTrans_idₓ'. -/
@[simp]
theorem liftNatTrans_id (F : C ⥤ E) (F' : D ⥤ E) [h : Lifting L W F F'] :
liftNatTrans L W F F F' F' (𝟙 F) = 𝟙 F' :=
- nat_trans_ext L W _ _ fun X => by
+ natTrans_ext L W _ _ fun X => by
simpa only [lift_nat_trans_app, nat_trans.id_app, id_comp, iso.hom_inv_id_app]
#align category_theory.localization.lift_nat_trans_id CategoryTheory.Localization.liftNatTrans_id
+#print CategoryTheory.Localization.liftNatIso /-
/-- Given a localization functor `L : C ⥤ D` for `W : morphism_property C`,
if `(F₁' F₂' : D ⥤ E)` are functors which lifts functors `(F₁ F₂ : C ⥤ E)`,
a natural isomorphism `τ : F₁ ⟶ F₂` lifts to a natural isomorphism `F₁' ⟶ F₂'`. -/
@@ -361,20 +478,35 @@ def liftNatIso (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [h₁ : Lifting L W
Hom := liftNatTrans L W F₁ F₂ F₁' F₂' e.Hom
inv := liftNatTrans L W F₂ F₁ F₂' F₁' e.inv
#align category_theory.localization.lift_nat_iso CategoryTheory.Localization.liftNatIso
+-/
namespace Lifting
+/- warning: category_theory.localization.lifting.comp_right -> CategoryTheory.Localization.Lifting.compRight is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] {E' : Type.{u7}} [_inst_5 : CategoryTheory.Category.{u8, u7} E'] (F : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) [_inst_6 : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F F'] (G : CategoryTheory.Functor.{u6, u8, u5, u7} E _inst_3 E' _inst_5), CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u7, u8} C D _inst_1 _inst_2 L W E' _inst_5 _inst_4 (CategoryTheory.Functor.comp.{u3, u6, u8, u1, u5, u7} C _inst_1 E _inst_3 E' _inst_5 F G) (CategoryTheory.Functor.comp.{u4, u6, u8, u2, u5, u7} D _inst_2 E _inst_3 E' _inst_5 F' G)
+but is expected to have type
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] {_inst_4 : Type.{u7}} [E' : CategoryTheory.Category.{u8, u7} _inst_4] (_inst_5 : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (F : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) [F' : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L E _inst_3 W _inst_5 F] (_inst_6 : CategoryTheory.Functor.{u6, u8, u5, u7} E _inst_3 _inst_4 E'), CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u7, u8} C D _inst_1 _inst_2 L _inst_4 E' W (CategoryTheory.Functor.comp.{u3, u6, u8, u1, u5, u7} C _inst_1 E _inst_3 _inst_4 E' _inst_5 _inst_6) (CategoryTheory.Functor.comp.{u4, u6, u8, u2, u5, u7} D _inst_2 E _inst_3 _inst_4 E' F _inst_6)
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.lifting.comp_right CategoryTheory.Localization.Lifting.compRightₓ'. -/
@[simps]
instance compRight {E' : Type _} [Category E'] (F : C ⥤ E) (F' : D ⥤ E) [Lifting L W F F']
(G : E ⥤ E') : Lifting L W (F ⋙ G) (F' ⋙ G) :=
⟨isoWhiskerRight (iso L W F F') G⟩
#align category_theory.localization.lifting.comp_right CategoryTheory.Localization.Lifting.compRight
+#print CategoryTheory.Localization.Lifting.id /-
@[simps]
instance id : Lifting L W L (𝟭 D) :=
⟨Functor.rightUnitor L⟩
#align category_theory.localization.lifting.id CategoryTheory.Localization.Lifting.id
+-/
+/- warning: category_theory.localization.lifting.of_isos -> CategoryTheory.Localization.Lifting.ofIsos is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W] {F₁ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3} {F₂ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3} {F₁' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3} {F₂' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3}, (CategoryTheory.Iso.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) F₁ F₂) -> (CategoryTheory.Iso.{max u2 u6, max u4 u6 u2 u5} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) F₁' F₂') -> (forall [_inst_5 : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₁ F₁'], CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L W E _inst_3 _inst_4 F₂ F₂')
+but is expected to have type
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_3 : CategoryTheory.Category.{u6, u5} E] {_inst_4 : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3} {F₁ : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3} {F₂ : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3} {F₁' : CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3}, (CategoryTheory.Iso.{max u1 u6, max (max (max u1 u3) u5) u6} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_3) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_3) _inst_4 F₁) -> (CategoryTheory.Iso.{max u2 u6, max (max (max u2 u4) u5) u6} (CategoryTheory.Functor.{u4, u6, u2, u5} D _inst_2 E _inst_3) (CategoryTheory.Functor.category.{u4, u6, u2, u5} D _inst_2 E _inst_3) F₂ F₁') -> (forall [e' : CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L E _inst_3 W _inst_4 F₂], CategoryTheory.Localization.Lifting.{u1, u2, u3, u4, u5, u6} C D _inst_1 _inst_2 L E _inst_3 W F₁ F₁')
+Case conversion may be inaccurate. Consider using '#align category_theory.localization.lifting.of_isos CategoryTheory.Localization.Lifting.ofIsosₓ'. -/
/-- Given a localization functor `L : C ⥤ D` for `W : morphism_property C`,
if `F₁' : D ⥤ E` lifts a functor `F₁ : C ⥤ D`, then a functor `F₂'` which
is isomorphic to `F₁'` also lifts a functor `F₂` that is isomorphic to `F₁`. -/
@@ -394,6 +526,12 @@ namespace IsLocalization
open Localization
+/- warning: category_theory.functor.is_localization.of_iso -> CategoryTheory.Functor.IsLocalization.of_iso is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {L₁ : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2} {L₂ : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2}, (CategoryTheory.Iso.{max u1 u4, max u3 u4 u1 u2} (CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (CategoryTheory.Functor.category.{u3, u4, u1, u2} C _inst_1 D _inst_2) L₁ L₂) -> (forall [_inst_4 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L₁ W], CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L₂ W)
+but is expected to have type
+ forall {C : Type.{u2}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u4, u2} C] [_inst_2 : CategoryTheory.Category.{u3, u1} D] (W : CategoryTheory.MorphismProperty.{u4, u2} C _inst_1) {L₁ : CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2} {L₂ : CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2}, (CategoryTheory.Iso.{max u2 u3, max (max (max u2 u1) u4) u3} (CategoryTheory.Functor.{u4, u3, u2, u1} C _inst_1 D _inst_2) (CategoryTheory.Functor.category.{u4, u3, u2, u1} C _inst_1 D _inst_2) L₁ L₂) -> (forall [_inst_4 : CategoryTheory.Functor.IsLocalization.{u2, u1, u4, u3} C D _inst_1 _inst_2 L₁ W], CategoryTheory.Functor.IsLocalization.{u2, u1, u4, u3} C D _inst_1 _inst_2 L₂ W)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.is_localization.of_iso CategoryTheory.Functor.IsLocalization.of_isoₓ'. -/
theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W] : L₂.IsLocalization W :=
by
have h := localization.inverts L₁ W
@@ -406,6 +544,12 @@ theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W]
Nonempty.intro (is_equivalence.of_iso (lift_nat_iso W.Q W L₁ L₂ F₁ F₂ e) inferInstance) }
#align category_theory.functor.is_localization.of_iso CategoryTheory.Functor.IsLocalization.of_iso
+/- warning: category_theory.functor.is_localization.of_equivalence_target -> CategoryTheory.Functor.IsLocalization.of_equivalence_target is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u1}} {D : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u3, u1} C] [_inst_2 : CategoryTheory.Category.{u4, u2} D] (L : CategoryTheory.Functor.{u3, u4, u1, u2} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u3, u1} C _inst_1) {E : Type.{u5}} [_inst_4 : CategoryTheory.Category.{u6, u5} E] (L' : CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_4) (eq : CategoryTheory.Equivalence.{u4, u6, u2, u5} D _inst_2 E _inst_4) [_inst_5 : CategoryTheory.Functor.IsLocalization.{u1, u2, u3, u4} C D _inst_1 _inst_2 L W], (CategoryTheory.Iso.{max u1 u6, max u3 u6 u1 u5} (CategoryTheory.Functor.{u3, u6, u1, u5} C _inst_1 E _inst_4) (CategoryTheory.Functor.category.{u3, u6, u1, u5} C _inst_1 E _inst_4) (CategoryTheory.Functor.comp.{u3, u4, u6, u1, u2, u5} C _inst_1 D _inst_2 E _inst_4 L (CategoryTheory.Equivalence.functor.{u4, u6, u2, u5} D _inst_2 E _inst_4 eq)) L') -> (CategoryTheory.Functor.IsLocalization.{u1, u5, u3, u6} C E _inst_1 _inst_4 L' W)
+but is expected to have type
+ forall {C : Type.{u3}} {D : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u4, u3} C] [_inst_2 : CategoryTheory.Category.{u2, u1} D] (L : CategoryTheory.Functor.{u4, u2, u3, u1} C _inst_1 D _inst_2) (W : CategoryTheory.MorphismProperty.{u4, u3} C _inst_1) {E : Type.{u6}} [_inst_4 : CategoryTheory.Category.{u5, u6} E] (L' : CategoryTheory.Functor.{u4, u5, u3, u6} C _inst_1 E _inst_4) (eq : CategoryTheory.Equivalence.{u2, u5, u1, u6} D E _inst_2 _inst_4) [_inst_5 : CategoryTheory.Functor.IsLocalization.{u3, u1, u4, u2} C D _inst_1 _inst_2 L W], (CategoryTheory.Iso.{max u3 u5, max (max (max u6 u3) u5) u4} (CategoryTheory.Functor.{u4, u5, u3, u6} C _inst_1 E _inst_4) (CategoryTheory.Functor.category.{u4, u5, u3, u6} C _inst_1 E _inst_4) (CategoryTheory.Functor.comp.{u4, u2, u5, u3, u1, u6} C _inst_1 D _inst_2 E _inst_4 L (CategoryTheory.Equivalence.functor.{u2, u5, u1, u6} D E _inst_2 _inst_4 eq)) L') -> (CategoryTheory.Functor.IsLocalization.{u3, u6, u4, u5} C E _inst_1 _inst_4 L' W)
+Case conversion may be inaccurate. Consider using '#align category_theory.functor.is_localization.of_equivalence_target CategoryTheory.Functor.IsLocalization.of_equivalence_targetₓ'. -/
/-- If `L : C ⥤ D` is a localization for `W : morphism_property C`, then it is also
the case of a functor obtained by post-composing `L` with an equivalence of categories. -/
theorem of_equivalence_target {E : Type _} [Category E] (L' : C ⥤ E) (eq : D ≌ E)
mathlib commit https://github.com/leanprover-community/mathlib/commit/b19481deb571022990f1baa9cbf9172e6757a479
@@ -55,9 +55,9 @@ class IsLocalization : Prop where
nonempty_isEquivalence : Nonempty (IsEquivalence (Localization.Construction.lift L inverts))
#align category_theory.functor.is_localization CategoryTheory.Functor.IsLocalization
-instance q_isLocalization : W.q.IsLocalization W
+instance q_isLocalization : W.Q.IsLocalization W
where
- inverts := W.q_inverts
+ inverts := W.Q_inverts
nonempty_isEquivalence :=
by
suffices localization.construction.lift W.Q W.Q_inverts = 𝟭 _
@@ -86,15 +86,15 @@ structure StrictUniversalPropertyFixedTarget where
/-- The localized category `W.localization` that was constructed satisfies
the universal property of the localization. -/
@[simps]
-def strictUniversalPropertyFixedTargetQ : StrictUniversalPropertyFixedTarget W.q W E
+def strictUniversalPropertyFixedTargetQ : StrictUniversalPropertyFixedTarget W.Q W E
where
- inverts := W.q_inverts
+ inverts := W.Q_inverts
lift := Construction.lift
fac := Construction.fac
uniq := Construction.uniq
#align category_theory.localization.strict_universal_property_fixed_target_Q CategoryTheory.Localization.strictUniversalPropertyFixedTargetQ
-instance : Inhabited (StrictUniversalPropertyFixedTarget W.q W E) :=
+instance : Inhabited (StrictUniversalPropertyFixedTarget W.Q W E) :=
⟨strictUniversalPropertyFixedTargetQ _ _⟩
/-- When `W` consists of isomorphisms, the identity satisfies the universal property
@@ -124,7 +124,7 @@ theorem IsLocalization.mk' (h₁ : Localization.StrictUniversalPropertyFixedTarg
{ inverts := h₁.inverts
nonempty_isEquivalence :=
Nonempty.intro
- { inverse := h₂.lift W.q W.q_inverts
+ { inverse := h₂.lift W.Q W.Q_inverts
unitIso :=
eqToIso
(Localization.Construction.uniq _ _
@@ -177,20 +177,20 @@ def equivalenceFromModel : W.Localization ≌ D :=
/-- Via the equivalence of categories `equivalence_from_model L W : W.localization ≌ D`,
one may identify the functors `W.Q` and `L`. -/
-def qCompEquivalenceFromModelFunctorIso : W.q ⋙ (equivalenceFromModel L W).Functor ≅ L :=
+def qCompEquivalenceFromModelFunctorIso : W.Q ⋙ (equivalenceFromModel L W).Functor ≅ L :=
eqToIso (Construction.fac _ _)
#align category_theory.localization.Q_comp_equivalence_from_model_functor_iso CategoryTheory.Localization.qCompEquivalenceFromModelFunctorIso
/-- Via the equivalence of categories `equivalence_from_model L W : W.localization ≌ D`,
one may identify the functors `L` and `W.Q`. -/
-def compEquivalenceFromModelInverseIso : L ⋙ (equivalenceFromModel L W).inverse ≅ W.q :=
+def compEquivalenceFromModelInverseIso : L ⋙ (equivalenceFromModel L W).inverse ≅ W.Q :=
calc
L ⋙ (equivalenceFromModel L W).inverse ≅ _ :=
isoWhiskerRight (qCompEquivalenceFromModelFunctorIso L W).symm _
- _ ≅ W.q ⋙ (equivalenceFromModel L W).Functor ⋙ (equivalenceFromModel L W).inverse :=
+ _ ≅ W.Q ⋙ (equivalenceFromModel L W).Functor ⋙ (equivalenceFromModel L W).inverse :=
(Functor.associator _ _ _)
- _ ≅ W.q ⋙ 𝟭 _ := (isoWhiskerLeft _ (equivalenceFromModel L W).unitIso.symm)
- _ ≅ W.q := Functor.rightUnitor _
+ _ ≅ W.Q ⋙ 𝟭 _ := (isoWhiskerLeft _ (equivalenceFromModel L W).unitIso.symm)
+ _ ≅ W.Q := Functor.rightUnitor _
#align category_theory.localization.comp_equivalence_from_model_inverse_iso CategoryTheory.Localization.compEquivalenceFromModelInverseIso
@@ -312,7 +312,7 @@ def fac (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [hL : L.IsLocalizati
#align category_theory.localization.fac CategoryTheory.Localization.fac
instance liftingConstructionLift (F : C ⥤ D) (hF : W.IsInvertedBy F) :
- Lifting W.q W F (Construction.lift F hF) :=
+ Lifting W.Q W F (Construction.lift F hF) :=
⟨eqToIso (Construction.fac F hF)⟩
#align category_theory.localization.lifting_construction_lift CategoryTheory.Localization.liftingConstructionLift
mathlib commit https://github.com/leanprover-community/mathlib/commit/4c586d291f189eecb9d00581aeb3dd998ac34442
@@ -188,8 +188,8 @@ def compEquivalenceFromModelInverseIso : L ⋙ (equivalenceFromModel L W).invers
L ⋙ (equivalenceFromModel L W).inverse ≅ _ :=
isoWhiskerRight (qCompEquivalenceFromModelFunctorIso L W).symm _
_ ≅ W.q ⋙ (equivalenceFromModel L W).Functor ⋙ (equivalenceFromModel L W).inverse :=
- Functor.associator _ _ _
- _ ≅ W.q ⋙ 𝟭 _ := isoWhiskerLeft _ (equivalenceFromModel L W).unitIso.symm
+ (Functor.associator _ _ _)
+ _ ≅ W.q ⋙ 𝟭 _ := (isoWhiskerLeft _ (equivalenceFromModel L W).unitIso.symm)
_ ≅ W.q := Functor.rightUnitor _
#align category_theory.localization.comp_equivalence_from_model_inverse_iso CategoryTheory.Localization.compEquivalenceFromModelInverseIso
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Functor.Full
a Prop (#12449)
Before this PR, Functor.Full
contained the data of the preimage of maps by a full functor F
. This PR makes Functor.Full
a proposition. This is to prevent any diamond to appear.
The lemma Functor.image_preimage
is also renamed Functor.map_preimage
.
Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>
@@ -258,8 +258,7 @@ theorem whiskeringLeftFunctor'_eq :
rfl
#align category_theory.localization.whiskering_left_functor'_eq CategoryTheory.Localization.whiskeringLeftFunctor'_eq
-variable {E}
-
+variable {E} in
@[simp]
theorem whiskeringLeftFunctor'_obj (F : D ⥤ E) : (whiskeringLeftFunctor' L W E).obj F = L ⋙ F :=
rfl
@@ -277,6 +276,14 @@ instance : (whiskeringLeftFunctor' L W E).Faithful := by
infer_instance
apply InducedCategory.faithful -- why is it not found automatically ???
+lemma full_whiskeringLeft : ((whiskeringLeft C D E).obj L).Full :=
+ inferInstanceAs (whiskeringLeftFunctor' L W E).Full
+
+lemma faithful_whiskeringLeft : ((whiskeringLeft C D E).obj L).Faithful :=
+ inferInstanceAs (whiskeringLeftFunctor' L W E).Faithful
+
+variable {E}
+
theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
(h : ∀ X : C, τ.app (L.obj X) = τ'.app (L.obj X)) : τ = τ' := by
haveI := essSurj L W
@@ -342,7 +349,7 @@ theorem liftNatTrans_app (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [Lifting
(τ : F₁ ⟶ F₂) (X : C) :
(liftNatTrans L W F₁ F₂ F₁' F₂' τ).app (L.obj X) =
(Lifting.iso L W F₁ F₁').hom.app X ≫ τ.app X ≫ (Lifting.iso L W F₂ F₂').inv.app X :=
- congr_app (Functor.image_preimage (whiskeringLeftFunctor' L W E) _) X
+ congr_app (Functor.map_preimage (whiskeringLeftFunctor' L W E) _) X
#align category_theory.localization.lift_nat_trans_app CategoryTheory.Localization.liftNatTrans_app
@[reassoc (attr := simp)]
@@ -195,7 +195,7 @@ def compEquivalenceFromModelInverseIso : L ⋙ (equivalenceFromModel L W).invers
isoWhiskerRight (qCompEquivalenceFromModelFunctorIso L W).symm _
_ ≅ W.Q ⋙ (equivalenceFromModel L W).functor ⋙ (equivalenceFromModel L W).inverse :=
(Functor.associator _ _ _)
- _ ≅ W.Q ⋙ 𝟭 _ := (isoWhiskerLeft _ (equivalenceFromModel L W).unitIso.symm)
+ _ ≅ W.Q ⋙ 𝟭 _ := isoWhiskerLeft _ (equivalenceFromModel L W).unitIso.symm
_ ≅ W.Q := Functor.rightUnitor _
#align category_theory.localization.comp_equivalence_from_model_inverse_iso CategoryTheory.Localization.compEquivalenceFromModelInverseIso
These notions on functors are now Functor.Full
, Functor.Faithful
, Functor.EssSurj
, Functor.IsEquivalence
, Functor.ReflectsIsomorphisms
. Deprecated aliases are introduced for the previous names.
@@ -170,7 +170,7 @@ def isoOfHom {X Y : C} (f : X ⟶ Y) (hf : W f) : L.obj X ≅ L.obj Y :=
asIso (L.map f)
#align category_theory.localization.iso_of_hom CategoryTheory.Localization.isoOfHom
-instance : IsEquivalence (Localization.Construction.lift L (inverts L W)) :=
+instance : (Localization.Construction.lift L (inverts L W)).IsEquivalence :=
(inferInstance : L.IsLocalization W).nonempty_isEquivalence.some
/-- A chosen equivalence of categories `W.Localization ≅ D` for a functor
@@ -199,7 +199,7 @@ def compEquivalenceFromModelInverseIso : L ⋙ (equivalenceFromModel L W).invers
_ ≅ W.Q := Functor.rightUnitor _
#align category_theory.localization.comp_equivalence_from_model_inverse_iso CategoryTheory.Localization.compEquivalenceFromModelInverseIso
-theorem essSurj : EssSurj L :=
+theorem essSurj : L.EssSurj :=
⟨fun X =>
⟨(Construction.objEquiv W).invFun ((equivalenceFromModel L W).inverse.obj X),
Nonempty.intro
@@ -214,10 +214,10 @@ def whiskeringLeftFunctor : (D ⥤ E) ⥤ W.FunctorsInverting E :=
(MorphismProperty.IsInvertedBy.of_comp W L (inverts L W))
#align category_theory.localization.whiskering_left_functor CategoryTheory.Localization.whiskeringLeftFunctor
-instance : IsEquivalence (whiskeringLeftFunctor L W E) := by
+instance : (whiskeringLeftFunctor L W E).IsEquivalence := by
refine'
- IsEquivalence.ofIso _
- (IsEquivalence.ofEquivalence
+ Functor.IsEquivalence.ofIso _
+ (Functor.IsEquivalence.ofEquivalence
((Equivalence.congrLeft (equivalenceFromModel L W).symm).trans
(Construction.whiskeringLeftEquivalence W E)))
exact
@@ -265,21 +265,21 @@ theorem whiskeringLeftFunctor'_obj (F : D ⥤ E) : (whiskeringLeftFunctor' L W E
rfl
#align category_theory.localization.whiskering_left_functor'_obj CategoryTheory.Localization.whiskeringLeftFunctor'_obj
-instance : Full (whiskeringLeftFunctor' L W E) := by
+instance : (whiskeringLeftFunctor' L W E).Full := by
rw [whiskeringLeftFunctor'_eq]
- apply @Full.comp _ _ _ _ _ _ _ _ ?_ ?_
+ apply @Functor.Full.comp _ _ _ _ _ _ _ _ ?_ ?_
infer_instance
apply InducedCategory.full -- why is it not found automatically ???
-instance : Faithful (whiskeringLeftFunctor' L W E) := by
+instance : (whiskeringLeftFunctor' L W E).Faithful := by
rw [whiskeringLeftFunctor'_eq]
- apply @Faithful.comp _ _ _ _ _ _ _ _ ?_ ?_
+ apply @Functor.Faithful.comp _ _ _ _ _ _ _ _ ?_ ?_
infer_instance
apply InducedCategory.faithful -- why is it not found automatically ???
theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
(h : ∀ X : C, τ.app (L.obj X) = τ'.app (L.obj X)) : τ = τ' := by
- haveI : CategoryTheory.EssSurj L := essSurj L W
+ haveI := essSurj L W
ext Y
rw [← cancel_epi (F₁.map (L.objObjPreimageIso Y).hom), τ.naturality, τ'.naturality, h]
#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.natTrans_ext
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -284,7 +284,7 @@ theorem natTrans_ext {F₁ F₂ : D ⥤ E} (τ τ' : F₁ ⟶ F₂)
rw [← cancel_epi (F₁.map (L.objObjPreimageIso Y).hom), τ.naturality, τ'.naturality, h]
#align category_theory.localization.nat_trans_ext CategoryTheory.Localization.natTrans_ext
--- porting note: the field `iso` was renamed `Lifting.iso'` and it was redefined as
+-- Porting note: the field `iso` was renamed `Lifting.iso'` and it was redefined as
-- `Lifting.iso` with explicit parameters
/-- When `L : C ⥤ D` is a localization functor for `W : MorphismProperty C` and
`F : C ⥤ E` is a functor, we shall say that `F' : D ⥤ E` lifts `F` if the obvious diagram
@@ -313,7 +313,7 @@ instance liftingLift (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [L.IsLo
⟨(inducedFunctor _).mapIso ((functorEquivalence L W E).counitIso.app ⟨F, hF⟩)⟩
#align category_theory.localization.lifting_lift CategoryTheory.Localization.liftingLift
--- porting note: removed the unnecessary @[simps] attribute
+-- Porting note: removed the unnecessary @[simps] attribute
/-- The canonical isomorphism `L ⋙ lift F hF L ≅ F` for any functor `F : C ⥤ E`
which inverts `W`, when `L : C ⥤ D` is a localization functor for `W`. -/
def fac (F : C ⥤ E) (hF : W.IsInvertedBy F) (L : C ⥤ D) [L.IsLocalization W] :
This PR introduces the class of quasi-isomorphisms in the homotopy category of homological complexes.
@@ -483,4 +483,41 @@ def isoUniqFunctor (F : D₁ ⥤ D₂) (e : L₁ ⋙ F ≅ L₂) :
end Localization
+section
+
+variable {X Y : C} (f g : X ⟶ Y)
+
+/-- The property that two morphisms become equal in the localized category. -/
+def AreEqualizedByLocalization : Prop := W.Q.map f = W.Q.map g
+
+lemma areEqualizedByLocalization_iff [L.IsLocalization W]:
+ AreEqualizedByLocalization W f g ↔ L.map f = L.map g := by
+ dsimp [AreEqualizedByLocalization]
+ constructor
+ · intro h
+ let e := Localization.compUniqFunctor W.Q L W
+ rw [← NatIso.naturality_1 e f, ← NatIso.naturality_1 e g]
+ dsimp
+ rw [h]
+ · intro h
+ let e := Localization.compUniqFunctor L W.Q W
+ rw [← NatIso.naturality_1 e f, ← NatIso.naturality_1 e g]
+ dsimp
+ rw [h]
+
+namespace AreEqualizedByLocalization
+
+lemma mk (L : C ⥤ D) [L.IsLocalization W] (h : L.map f = L.map g) :
+ AreEqualizedByLocalization W f g :=
+ (areEqualizedByLocalization_iff L W f g).2 h
+
+variable {W f g} (h : AreEqualizedByLocalization W f g)
+
+lemma map_eq (L : C ⥤ D) [L.IsLocalization W] : L.map f = L.map g :=
+ (areEqualizedByLocalization_iff L W f g).1 h
+
+end AreEqualizedByLocalization
+
+end
+
end CategoryTheory
The product of finitely many localized categories is the localized category of the product category, provided the classes of morphisms contain identities.
@@ -434,6 +434,12 @@ theorem of_equivalence_target {E : Type*} [Category E] (L' : C ⥤ E) (eq : D
nonempty_isEquivalence := Nonempty.intro (IsEquivalence.ofIso e' inferInstance) }
#align category_theory.functor.is_localization.of_equivalence_target CategoryTheory.Functor.IsLocalization.of_equivalence_target
+lemma of_isEquivalence (L : C ⥤ D) (W : MorphismProperty C)
+ (hW : W ⊆ MorphismProperty.isomorphisms C) [IsEquivalence L] :
+ L.IsLocalization W := by
+ haveI : (𝟭 C).IsLocalization W := for_id W hW
+ exact of_equivalence_target (𝟭 C) W L L.asEquivalence L.leftUnitor
+
end IsLocalization
end Functor
@@ -249,7 +249,7 @@ def functorEquivalence : D ⥤ E ≌ W.FunctorsInverting E :=
functor `L : C ⥤ D` with respect to `W : MorphismProperty C`. -/
@[nolint unusedArguments]
def whiskeringLeftFunctor' (_ : MorphismProperty C) (E : Type*) [Category E] :
- (D ⥤ E) ⥤ C ⥤ E :=
+ (D ⥤ E) ⥤ C ⥤ E :=
(whiskeringLeft C D E).obj L
#align category_theory.localization.whiskering_left_functor' CategoryTheory.Localization.whiskeringLeftFunctor'
@@ -386,6 +386,9 @@ instance id : Lifting L W L (𝟭 D) :=
⟨Functor.rightUnitor L⟩
#align category_theory.localization.lifting.id CategoryTheory.Localization.Lifting.id
+@[simps]
+instance compLeft (F : D ⥤ E) : Localization.Lifting L W (L ⋙ F) F := ⟨Iso.refl _⟩
+
/-- Given a localization functor `L : C ⥤ D` for `W : MorphismProperty C`,
if `F₁' : D ⥤ E` lifts a functor `F₁ : C ⥤ D`, then a functor `F₂'` which
is isomorphic to `F₁'` also lifts a functor `F₂` that is isomorphic to `F₁`. -/
@@ -435,4 +435,43 @@ end IsLocalization
end Functor
+namespace Localization
+
+variable {D₁ D₂ : Type _} [Category D₁] [Category D₂] (L₁ : C ⥤ D₁) (L₂ : C ⥤ D₂)
+ (W' : MorphismProperty C) [L₁.IsLocalization W'] [L₂.IsLocalization W']
+
+/-- If `L₁ : C ⥤ D₁` and `L₂ : C ⥤ D₂` are two localization functors for the
+same `MorphismProperty C`, this is an equivalence of categories `D₁ ≌ D₂`. -/
+def uniq : D₁ ≌ D₂ :=
+ (equivalenceFromModel L₁ W').symm.trans (equivalenceFromModel L₂ W')
+
+lemma uniq_symm : (uniq L₁ L₂ W').symm = uniq L₂ L₁ W' := rfl
+
+/-- The functor of equivalence of localized categories given by `Localization.uniq` is
+compatible with the localization functors. -/
+def compUniqFunctor : L₁ ⋙ (uniq L₁ L₂ W').functor ≅ L₂ :=
+ calc
+ L₁ ⋙ (uniq L₁ L₂ W').functor ≅ (L₁ ⋙ (equivalenceFromModel L₁ W').inverse) ⋙
+ (equivalenceFromModel L₂ W').functor := (Functor.associator _ _ _).symm
+ _ ≅ W'.Q ⋙ (equivalenceFromModel L₂ W').functor :=
+ isoWhiskerRight (compEquivalenceFromModelInverseIso L₁ W') _
+ _ ≅ L₂ := qCompEquivalenceFromModelFunctorIso L₂ W'
+
+/-- The inverse functor of equivalence of localized categories given by `Localization.uniq` is
+compatible with the localization functors. -/
+def compUniqInverse : L₂ ⋙ (uniq L₁ L₂ W').inverse ≅ L₁ := compUniqFunctor L₂ L₁ W'
+
+instance : Lifting L₁ W' L₂ (uniq L₁ L₂ W').functor := ⟨compUniqFunctor L₁ L₂ W'⟩
+instance : Lifting L₂ W' L₁ (uniq L₁ L₂ W').inverse := ⟨compUniqInverse L₁ L₂ W'⟩
+
+/-- If `L₁ : C ⥤ D₁` and `L₂ : C ⥤ D₂` are two localization functors for the
+same `MorphismProperty C`, any functor `F : D₁ ⥤ D₂` equipped with an isomorphism
+`L₁ ⋙ F ≅ L₂` is isomorphic to the functor of the equivalence given by `uniq`. -/
+def isoUniqFunctor (F : D₁ ⥤ D₂) (e : L₁ ⋙ F ≅ L₂) :
+ F ≅ (uniq L₁ L₂ W').functor :=
+ letI : Lifting L₁ W' L₂ F := ⟨e⟩
+ liftNatIso L₁ W' L₂ L₂ F (uniq L₁ L₂ W').functor (Iso.refl L₂)
+
+end Localization
+
end CategoryTheory
Type _
and Sort _
(#6499)
We remove all possible occurences of Type _
and Sort _
in favor of Type*
and Sort*
.
This has nice performance benefits.
@@ -39,7 +39,7 @@ namespace CategoryTheory
open Category
-variable {C D : Type _} [Category C] [Category D] (L : C ⥤ D) (W : MorphismProperty C) (E : Type _)
+variable {C D : Type*} [Category C] [Category D] (L : C ⥤ D) (W : MorphismProperty C) (E : Type*)
[Category E]
namespace Functor
@@ -248,7 +248,7 @@ def functorEquivalence : D ⥤ E ≌ W.FunctorsInverting E :=
/-- The functor `(D ⥤ E) ⥤ (C ⥤ E)` given by the composition with a localization
functor `L : C ⥤ D` with respect to `W : MorphismProperty C`. -/
@[nolint unusedArguments]
-def whiskeringLeftFunctor' (_ : MorphismProperty C) (E : Type _) [Category E] :
+def whiskeringLeftFunctor' (_ : MorphismProperty C) (E : Type*) [Category E] :
(D ⥤ E) ⥤ C ⥤ E :=
(whiskeringLeft C D E).obj L
#align category_theory.localization.whiskering_left_functor' CategoryTheory.Localization.whiskeringLeftFunctor'
@@ -376,7 +376,7 @@ def liftNatIso (F₁ F₂ : C ⥤ E) (F₁' F₂' : D ⥤ E) [h₁ : Lifting L W
namespace Lifting
@[simps]
-instance compRight {E' : Type _} [Category E'] (F : C ⥤ E) (F' : D ⥤ E) [Lifting L W F F']
+instance compRight {E' : Type*} [Category E'] (F : C ⥤ E) (F' : D ⥤ E) [Lifting L W F F']
(G : E ⥤ E') : Lifting L W (F ⋙ G) (F' ⋙ G) :=
⟨isoWhiskerRight (iso L W F F') G⟩
#align category_theory.localization.lifting.comp_right CategoryTheory.Localization.Lifting.compRight
@@ -418,7 +418,7 @@ theorem of_iso {L₁ L₂ : C ⥤ D} (e : L₁ ≅ L₂) [L₁.IsLocalization W]
/-- If `L : C ⥤ D` is a localization for `W : MorphismProperty C`, then it is also
the case of a functor obtained by post-composing `L` with an equivalence of categories. -/
-theorem of_equivalence_target {E : Type _} [Category E] (L' : C ⥤ E) (eq : D ≌ E)
+theorem of_equivalence_target {E : Type*} [Category E] (L' : C ⥤ E) (eq : D ≌ E)
[L.IsLocalization W] (e : L ⋙ eq.functor ≅ L') : L'.IsLocalization W := by
have h : W.IsInvertedBy L' := by
rw [← MorphismProperty.IsInvertedBy.iff_of_iso W e]
@@ -2,14 +2,11 @@
Copyright (c) 2022 Joël Riou. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joël Riou
-
-! This file was ported from Lean 3 source module category_theory.localization.predicate
-! leanprover-community/mathlib commit 8efef279998820353694feb6ff5631ed0d309ecc
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.Localization.Construction
+#align_import category_theory.localization.predicate from "leanprover-community/mathlib"@"8efef279998820353694feb6ff5631ed0d309ecc"
+
/-!
# Predicate for localized categories
This PR is the result of running
find . -type f -name "*.lean" -exec sed -i -E 's/^( +)\. /\1· /' {} \;
find . -type f -name "*.lean" -exec sed -i -E 'N;s/^( +·)\n +(.*)$/\1 \2/;P;D' {} \;
which firstly replaces .
focusing dots with ·
and secondly removes isolated instances of such dots, unifying them with the following line. A new rule is placed in the style linter to verify this.
@@ -236,7 +236,7 @@ instance : IsEquivalence (whiskeringLeftFunctor L W E) := by
dsimp [Construction.whiskeringLeftEquivalence, equivalenceFromModel, whiskerLeft]
erw [NatTrans.comp_app, NatTrans.comp_app, eqToHom_app, eqToHom_app, eqToHom_refl,
eqToHom_refl, comp_id, id_comp]
- . rfl
+ · rfl
all_goals
change (W.Q ⋙ Localization.Construction.lift L (inverts L W)) ⋙ _ = L ⋙ _
rw [Construction.fac]
@@ -232,7 +232,6 @@ instance : IsEquivalence (whiskeringLeftFunctor L W E) := by
change (W.Q ⋙ Localization.Construction.lift L (inverts L W)) ⋙ F = L ⋙ F
rw [Construction.fac]))
fun τ => by
- apply NatTrans.ext
ext
dsimp [Construction.whiskeringLeftEquivalence, equivalenceFromModel, whiskerLeft]
erw [NatTrans.comp_app, NatTrans.comp_app, eqToHom_app, eqToHom_app, eqToHom_refl,
by
s! (#3825)
This PR puts, with one exception, every single remaining by
that lies all by itself on its own line to the previous line, thus matching the current behaviour of start-port.sh
. The exception is when the by
begins the second or later argument to a tuple or anonymous constructor; see https://github.com/leanprover-community/mathlib4/pull/3825#discussion_r1186702599.
Essentially this is s/\n *by$/ by/g
, but with manual editing to satisfy the linter's max-100-char-line requirement. The Python style linter is also modified to catch these "isolated by
s".
@@ -60,10 +60,8 @@ class IsLocalization : Prop where
instance q_isLocalization : W.Q.IsLocalization W
where
inverts := W.Q_inverts
- nonempty_isEquivalence :=
- by
- suffices Localization.Construction.lift W.Q W.Q_inverts = 𝟭 _
- by
+ nonempty_isEquivalence := by
+ suffices Localization.Construction.lift W.Q W.Q_inverts = 𝟭 _ by
apply Nonempty.intro
rw [this]
infer_instance
The unported dependencies are