category_theory.limits.full_subcategory
⟷
Mathlib.CategoryTheory.Limits.FullSubcategory
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -128,20 +128,20 @@ def createsLimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderLimitsOfShape J
#align category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusion
-/
-#print CategoryTheory.Limits.hasLimit_of_closed_under_limits /-
-theorem hasLimit_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
- (F : J ⥤ FullSubcategory P) [HasLimit (F ⋙ fullSubcategoryInclusion P)] : HasLimit F :=
+#print CategoryTheory.Limits.hasLimit_of_closedUnderLimits /-
+theorem hasLimit_of_closedUnderLimits (h : ClosedUnderLimitsOfShape J P) (F : J ⥤ FullSubcategory P)
+ [HasLimit (F ⋙ fullSubcategoryInclusion P)] : HasLimit F :=
have : CreatesLimit F (fullSubcategoryInclusion P) :=
createsLimitFullSubcategoryInclusionOfClosed h F
has_limit_of_created F (full_subcategory_inclusion P)
-#align category_theory.limits.has_limit_of_closed_under_limits CategoryTheory.Limits.hasLimit_of_closed_under_limits
+#align category_theory.limits.has_limit_of_closed_under_limits CategoryTheory.Limits.hasLimit_of_closedUnderLimits
-/
-#print CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limits /-
-theorem hasLimitsOfShape_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
+#print CategoryTheory.Limits.hasLimitsOfShape_of_closedUnderLimits /-
+theorem hasLimitsOfShape_of_closedUnderLimits (h : ClosedUnderLimitsOfShape J P)
[HasLimitsOfShape J C] : HasLimitsOfShape J (FullSubcategory P) :=
- { HasLimit := fun F => hasLimit_of_closed_under_limits h F }
-#align category_theory.limits.has_limits_of_shape_of_closed_under_limits CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limits
+ { HasLimit := fun F => hasLimit_of_closedUnderLimits h F }
+#align category_theory.limits.has_limits_of_shape_of_closed_under_limits CategoryTheory.Limits.hasLimitsOfShape_of_closedUnderLimits
-/
#print CategoryTheory.Limits.createsColimitFullSubcategoryInclusionOfClosed /-
@@ -161,20 +161,20 @@ def createsColimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderColimitsOfSha
#align category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusion
-/
-#print CategoryTheory.Limits.hasColimit_of_closed_under_colimits /-
-theorem hasColimit_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
+#print CategoryTheory.Limits.hasColimit_of_closedUnderColimits /-
+theorem hasColimit_of_closedUnderColimits (h : ClosedUnderColimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasColimit (F ⋙ fullSubcategoryInclusion P)] : HasColimit F :=
have : CreatesColimit F (fullSubcategoryInclusion P) :=
createsColimitFullSubcategoryInclusionOfClosed h F
has_colimit_of_created F (full_subcategory_inclusion P)
-#align category_theory.limits.has_colimit_of_closed_under_colimits CategoryTheory.Limits.hasColimit_of_closed_under_colimits
+#align category_theory.limits.has_colimit_of_closed_under_colimits CategoryTheory.Limits.hasColimit_of_closedUnderColimits
-/
-#print CategoryTheory.Limits.hasColimitsOfShape_of_closed_under_colimits /-
-theorem hasColimitsOfShape_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
+#print CategoryTheory.Limits.hasColimitsOfShape_of_closedUnderColimits /-
+theorem hasColimitsOfShape_of_closedUnderColimits (h : ClosedUnderColimitsOfShape J P)
[HasColimitsOfShape J C] : HasColimitsOfShape J (FullSubcategory P) :=
- { HasColimit := fun F => hasColimit_of_closed_under_colimits h F }
-#align category_theory.limits.has_colimits_of_shape_of_closed_under_colimits CategoryTheory.Limits.hasColimitsOfShape_of_closed_under_colimits
+ { HasColimit := fun F => hasColimit_of_closedUnderColimits h F }
+#align category_theory.limits.has_colimits_of_shape_of_closed_under_colimits CategoryTheory.Limits.hasColimitsOfShape_of_closedUnderColimits
-/
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,7 +3,7 @@ Copyright (c) 2022 Markus Himmel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Markus Himmel
-/
-import Mathbin.CategoryTheory.Limits.Creates
+import CategoryTheory.Limits.Creates
#align_import category_theory.limits.full_subcategory from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,14 +2,11 @@
Copyright (c) 2022 Markus Himmel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Markus Himmel
-
-! This file was ported from Lean 3 source module category_theory.limits.full_subcategory
-! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.CategoryTheory.Limits.Creates
+#align_import category_theory.limits.full_subcategory from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
+
/-!
# Limits in full subcategories
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -53,15 +53,19 @@ section
variable {C : Type u} [Category.{v} C] {J : Type w} [Category.{w'} J] {P : C → Prop}
+#print CategoryTheory.Limits.ClosedUnderLimitsOfShape.limit /-
theorem ClosedUnderLimitsOfShape.limit (h : ClosedUnderLimitsOfShape J P) {F : J ⥤ C} [HasLimit F] :
(∀ j, P (F.obj j)) → P (limit F) :=
h (limit.isLimit _)
#align category_theory.limits.closed_under_limits_of_shape.limit CategoryTheory.Limits.ClosedUnderLimitsOfShape.limit
+-/
+#print CategoryTheory.Limits.ClosedUnderColimitsOfShape.colimit /-
theorem ClosedUnderColimitsOfShape.colimit (h : ClosedUnderColimitsOfShape J P) {F : J ⥤ C}
[HasColimit F] : (∀ j, P (F.obj j)) → P (colimit F) :=
h (colimit.isColimit _)
#align category_theory.limits.closed_under_colimits_of_shape.colimit CategoryTheory.Limits.ClosedUnderColimitsOfShape.colimit
+-/
end
@@ -69,6 +73,7 @@ section
variable {J : Type w} [Category.{w'} J] {C : Type u} [Category.{v} C] {P : C → Prop}
+#print CategoryTheory.Limits.createsLimitFullSubcategoryInclusion' /-
/-- If a `J`-shaped diagram in `full_subcategory P` has a limit cone in `C` whose cone point lives
in the full subcategory, then this defines a limit in the full subcategory. -/
def createsLimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
@@ -76,7 +81,9 @@ def createsLimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
CreatesLimit F (fullSubcategoryInclusion P) :=
createsLimitOfFullyFaithfulOfIso' hc ⟨_, h⟩ (Iso.refl _)
#align category_theory.limits.creates_limit_full_subcategory_inclusion' CategoryTheory.Limits.createsLimitFullSubcategoryInclusion'
+-/
+#print CategoryTheory.Limits.createsLimitFullSubcategoryInclusion /-
/-- If a `J`-shaped diagram in `full_subcategory P` has a limit in `C` whose cone point lives in the
full subcategory, then this defines a limit in the full subcategory. -/
def createsLimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
@@ -84,7 +91,9 @@ def createsLimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
CreatesLimit F (fullSubcategoryInclusion P) :=
createsLimitFullSubcategoryInclusion' F (limit.isLimit _) h
#align category_theory.limits.creates_limit_full_subcategory_inclusion CategoryTheory.Limits.createsLimitFullSubcategoryInclusion
+-/
+#print CategoryTheory.Limits.createsColimitFullSubcategoryInclusion' /-
/-- If a `J`-shaped diagram in `full_subcategory P` has a colimit cocone in `C` whose cocone point
lives in the full subcategory, then this defines a colimit in the full subcategory. -/
def createsColimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
@@ -92,7 +101,9 @@ def createsColimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
CreatesColimit F (fullSubcategoryInclusion P) :=
createsColimitOfFullyFaithfulOfIso' hc ⟨_, h⟩ (Iso.refl _)
#align category_theory.limits.creates_colimit_full_subcategory_inclusion' CategoryTheory.Limits.createsColimitFullSubcategoryInclusion'
+-/
+#print CategoryTheory.Limits.createsColimitFullSubcategoryInclusion /-
/-- If a `J`-shaped diagram in `full_subcategory P` has a colimit in `C` whose cocone point lives in
the full subcategory, then this defines a colimit in the full subcategory. -/
def createsColimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
@@ -101,56 +112,73 @@ def createsColimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
CreatesColimit F (fullSubcategoryInclusion P) :=
createsColimitFullSubcategoryInclusion' F (colimit.isColimit _) h
#align category_theory.limits.creates_colimit_full_subcategory_inclusion CategoryTheory.Limits.createsColimitFullSubcategoryInclusion
+-/
+#print CategoryTheory.Limits.createsLimitFullSubcategoryInclusionOfClosed /-
/-- If `P` is closed under limits of shape `J`, then the inclusion creates such limits. -/
def createsLimitFullSubcategoryInclusionOfClosed (h : ClosedUnderLimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasLimit (F ⋙ fullSubcategoryInclusion P)] :
CreatesLimit F (fullSubcategoryInclusion P) :=
createsLimitFullSubcategoryInclusion F (h.limit fun j => (F.obj j).property)
#align category_theory.limits.creates_limit_full_subcategory_inclusion_of_closed CategoryTheory.Limits.createsLimitFullSubcategoryInclusionOfClosed
+-/
+#print CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusion /-
/-- If `P` is closed under limits of shape `J`, then the inclusion creates such limits. -/
def createsLimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderLimitsOfShape J P)
[HasLimitsOfShape J C] : CreatesLimitsOfShape J (fullSubcategoryInclusion P)
where CreatesLimit F := createsLimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusion
+-/
+#print CategoryTheory.Limits.hasLimit_of_closed_under_limits /-
theorem hasLimit_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasLimit (F ⋙ fullSubcategoryInclusion P)] : HasLimit F :=
have : CreatesLimit F (fullSubcategoryInclusion P) :=
createsLimitFullSubcategoryInclusionOfClosed h F
has_limit_of_created F (full_subcategory_inclusion P)
#align category_theory.limits.has_limit_of_closed_under_limits CategoryTheory.Limits.hasLimit_of_closed_under_limits
+-/
+#print CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limits /-
theorem hasLimitsOfShape_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
[HasLimitsOfShape J C] : HasLimitsOfShape J (FullSubcategory P) :=
{ HasLimit := fun F => hasLimit_of_closed_under_limits h F }
#align category_theory.limits.has_limits_of_shape_of_closed_under_limits CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limits
+-/
+#print CategoryTheory.Limits.createsColimitFullSubcategoryInclusionOfClosed /-
/-- If `P` is closed under colimits of shape `J`, then the inclusion creates such colimits. -/
def createsColimitFullSubcategoryInclusionOfClosed (h : ClosedUnderColimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasColimit (F ⋙ fullSubcategoryInclusion P)] :
CreatesColimit F (fullSubcategoryInclusion P) :=
createsColimitFullSubcategoryInclusion F (h.colimit fun j => (F.obj j).property)
#align category_theory.limits.creates_colimit_full_subcategory_inclusion_of_closed CategoryTheory.Limits.createsColimitFullSubcategoryInclusionOfClosed
+-/
+#print CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusion /-
/-- If `P` is closed under colimits of shape `J`, then the inclusion creates such colimits. -/
def createsColimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderColimitsOfShape J P)
[HasColimitsOfShape J C] : CreatesColimitsOfShape J (fullSubcategoryInclusion P)
where CreatesColimit F := createsColimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusion
+-/
+#print CategoryTheory.Limits.hasColimit_of_closed_under_colimits /-
theorem hasColimit_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasColimit (F ⋙ fullSubcategoryInclusion P)] : HasColimit F :=
have : CreatesColimit F (fullSubcategoryInclusion P) :=
createsColimitFullSubcategoryInclusionOfClosed h F
has_colimit_of_created F (full_subcategory_inclusion P)
#align category_theory.limits.has_colimit_of_closed_under_colimits CategoryTheory.Limits.hasColimit_of_closed_under_colimits
+-/
+#print CategoryTheory.Limits.hasColimitsOfShape_of_closed_under_colimits /-
theorem hasColimitsOfShape_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
[HasColimitsOfShape J C] : HasColimitsOfShape J (FullSubcategory P) :=
{ HasColimit := fun F => hasColimit_of_closed_under_colimits h F }
#align category_theory.limits.has_colimits_of_shape_of_closed_under_colimits CategoryTheory.Limits.hasColimitsOfShape_of_closed_under_colimits
+-/
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -53,23 +53,11 @@ section
variable {C : Type u} [Category.{v} C] {J : Type w} [Category.{w'} J] {P : C → Prop}
-/- warning: category_theory.limits.closed_under_limits_of_shape.limit -> CategoryTheory.Limits.ClosedUnderLimitsOfShape.limit is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_1 J _inst_2 P) -> (forall {F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1} [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F], (forall (j : J), P (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 F j)) -> (P (CategoryTheory.Limits.limit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F _inst_3)))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_1 J _inst_2 P) -> (forall {F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1} [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F], (forall (j : J), P (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 F) j)) -> (P (CategoryTheory.Limits.limit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F _inst_3)))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.closed_under_limits_of_shape.limit CategoryTheory.Limits.ClosedUnderLimitsOfShape.limitₓ'. -/
theorem ClosedUnderLimitsOfShape.limit (h : ClosedUnderLimitsOfShape J P) {F : J ⥤ C} [HasLimit F] :
(∀ j, P (F.obj j)) → P (limit F) :=
h (limit.isLimit _)
#align category_theory.limits.closed_under_limits_of_shape.limit CategoryTheory.Limits.ClosedUnderLimitsOfShape.limit
-/- warning: category_theory.limits.closed_under_colimits_of_shape.colimit -> CategoryTheory.Limits.ClosedUnderColimitsOfShape.colimit is a dubious translation:
-lean 3 declaration is
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_1 J _inst_2 P) -> (forall {F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1} [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F], (forall (j : J), P (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 F j)) -> (P (CategoryTheory.Limits.colimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F _inst_3)))
-but is expected to have type
- forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_1 J _inst_2 P) -> (forall {F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1} [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F], (forall (j : J), P (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 F) j)) -> (P (CategoryTheory.Limits.colimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F _inst_3)))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.closed_under_colimits_of_shape.colimit CategoryTheory.Limits.ClosedUnderColimitsOfShape.colimitₓ'. -/
theorem ClosedUnderColimitsOfShape.colimit (h : ClosedUnderColimitsOfShape J P) {F : J ⥤ C}
[HasColimit F] : (∀ j, P (F.obj j)) → P (colimit F) :=
h (colimit.isColimit _)
@@ -81,12 +69,6 @@ section
variable {J : Type w} [Category.{w'} J] {C : Type u} [Category.{v} C] {P : C → Prop}
-/- warning: category_theory.limits.creates_limit_full_subcategory_inclusion' -> CategoryTheory.Limits.createsLimitFullSubcategoryInclusion' is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) {c : CategoryTheory.Limits.Cone.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))}, (CategoryTheory.Limits.IsLimit.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c) -> (P (CategoryTheory.Limits.Cone.pt.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c)) -> (CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) {c : CategoryTheory.Limits.Cone.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))}, (CategoryTheory.Limits.IsLimit.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c) -> (P (CategoryTheory.Limits.Cone.pt.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c)) -> (CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_limit_full_subcategory_inclusion' CategoryTheory.Limits.createsLimitFullSubcategoryInclusion'ₓ'. -/
/-- If a `J`-shaped diagram in `full_subcategory P` has a limit cone in `C` whose cone point lives
in the full subcategory, then this defines a limit in the full subcategory. -/
def createsLimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
@@ -95,12 +77,6 @@ def createsLimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
createsLimitOfFullyFaithfulOfIso' hc ⟨_, h⟩ (Iso.refl _)
#align category_theory.limits.creates_limit_full_subcategory_inclusion' CategoryTheory.Limits.createsLimitFullSubcategoryInclusion'
-/- warning: category_theory.limits.creates_limit_full_subcategory_inclusion -> CategoryTheory.Limits.createsLimitFullSubcategoryInclusion is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], (P (CategoryTheory.Limits.limit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) _inst_3)) -> (CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], (P (CategoryTheory.Limits.limit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) _inst_3)) -> (CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_limit_full_subcategory_inclusion CategoryTheory.Limits.createsLimitFullSubcategoryInclusionₓ'. -/
/-- If a `J`-shaped diagram in `full_subcategory P` has a limit in `C` whose cone point lives in the
full subcategory, then this defines a limit in the full subcategory. -/
def createsLimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
@@ -109,12 +85,6 @@ def createsLimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
createsLimitFullSubcategoryInclusion' F (limit.isLimit _) h
#align category_theory.limits.creates_limit_full_subcategory_inclusion CategoryTheory.Limits.createsLimitFullSubcategoryInclusion
-/- warning: category_theory.limits.creates_colimit_full_subcategory_inclusion' -> CategoryTheory.Limits.createsColimitFullSubcategoryInclusion' is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) {c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))}, (CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c) -> (P (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c)) -> (CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) {c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))}, (CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c) -> (P (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c)) -> (CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_colimit_full_subcategory_inclusion' CategoryTheory.Limits.createsColimitFullSubcategoryInclusion'ₓ'. -/
/-- If a `J`-shaped diagram in `full_subcategory P` has a colimit cocone in `C` whose cocone point
lives in the full subcategory, then this defines a colimit in the full subcategory. -/
def createsColimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
@@ -123,12 +93,6 @@ def createsColimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
createsColimitOfFullyFaithfulOfIso' hc ⟨_, h⟩ (Iso.refl _)
#align category_theory.limits.creates_colimit_full_subcategory_inclusion' CategoryTheory.Limits.createsColimitFullSubcategoryInclusion'
-/- warning: category_theory.limits.creates_colimit_full_subcategory_inclusion -> CategoryTheory.Limits.createsColimitFullSubcategoryInclusion is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], (P (CategoryTheory.Limits.colimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) _inst_3)) -> (CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], (P (CategoryTheory.Limits.colimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) _inst_3)) -> (CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_colimit_full_subcategory_inclusion CategoryTheory.Limits.createsColimitFullSubcategoryInclusionₓ'. -/
/-- If a `J`-shaped diagram in `full_subcategory P` has a colimit in `C` whose cocone point lives in
the full subcategory, then this defines a colimit in the full subcategory. -/
def createsColimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
@@ -138,12 +102,6 @@ def createsColimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
createsColimitFullSubcategoryInclusion' F (colimit.isColimit _) h
#align category_theory.limits.creates_colimit_full_subcategory_inclusion CategoryTheory.Limits.createsColimitFullSubcategoryInclusion
-/- warning: category_theory.limits.creates_limit_full_subcategory_inclusion_of_closed -> CategoryTheory.Limits.createsLimitFullSubcategoryInclusionOfClosed is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_limit_full_subcategory_inclusion_of_closed CategoryTheory.Limits.createsLimitFullSubcategoryInclusionOfClosedₓ'. -/
/-- If `P` is closed under limits of shape `J`, then the inclusion creates such limits. -/
def createsLimitFullSubcategoryInclusionOfClosed (h : ClosedUnderLimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasLimit (F ⋙ fullSubcategoryInclusion P)] :
@@ -151,24 +109,12 @@ def createsLimitFullSubcategoryInclusionOfClosed (h : ClosedUnderLimitsOfShape J
createsLimitFullSubcategoryInclusion F (h.limit fun j => (F.obj j).property)
#align category_theory.limits.creates_limit_full_subcategory_inclusion_of_closed CategoryTheory.Limits.createsLimitFullSubcategoryInclusionOfClosed
-/- warning: category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion -> CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusion is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.CreatesLimitsOfShape.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.InducedCategory.category.{u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) C _inst_2 (CategoryTheory.FullSubcategoryₓ.obj.{u3, u4} C _inst_2 P)) C _inst_2 J _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.CreatesLimitsOfShape.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusionₓ'. -/
/-- If `P` is closed under limits of shape `J`, then the inclusion creates such limits. -/
def createsLimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderLimitsOfShape J P)
[HasLimitsOfShape J C] : CreatesLimitsOfShape J (fullSubcategoryInclusion P)
where CreatesLimit F := createsLimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusion
-/- warning: category_theory.limits.has_limit_of_closed_under_limits -> CategoryTheory.Limits.hasLimit_of_closed_under_limits is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) F)
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) F)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.has_limit_of_closed_under_limits CategoryTheory.Limits.hasLimit_of_closed_under_limitsₓ'. -/
theorem hasLimit_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasLimit (F ⋙ fullSubcategoryInclusion P)] : HasLimit F :=
have : CreatesLimit F (fullSubcategoryInclusion P) :=
@@ -176,23 +122,11 @@ theorem hasLimit_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
has_limit_of_created F (full_subcategory_inclusion P)
#align category_theory.limits.has_limit_of_closed_under_limits CategoryTheory.Limits.hasLimit_of_closed_under_limits
-/- warning: category_theory.limits.has_limits_of_shape_of_closed_under_limits -> CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limits is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P))
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.has_limits_of_shape_of_closed_under_limits CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limitsₓ'. -/
theorem hasLimitsOfShape_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
[HasLimitsOfShape J C] : HasLimitsOfShape J (FullSubcategory P) :=
{ HasLimit := fun F => hasLimit_of_closed_under_limits h F }
#align category_theory.limits.has_limits_of_shape_of_closed_under_limits CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limits
-/- warning: category_theory.limits.creates_colimit_full_subcategory_inclusion_of_closed -> CategoryTheory.Limits.createsColimitFullSubcategoryInclusionOfClosed is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_colimit_full_subcategory_inclusion_of_closed CategoryTheory.Limits.createsColimitFullSubcategoryInclusionOfClosedₓ'. -/
/-- If `P` is closed under colimits of shape `J`, then the inclusion creates such colimits. -/
def createsColimitFullSubcategoryInclusionOfClosed (h : ClosedUnderColimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasColimit (F ⋙ fullSubcategoryInclusion P)] :
@@ -200,24 +134,12 @@ def createsColimitFullSubcategoryInclusionOfClosed (h : ClosedUnderColimitsOfSha
createsColimitFullSubcategoryInclusion F (h.colimit fun j => (F.obj j).property)
#align category_theory.limits.creates_colimit_full_subcategory_inclusion_of_closed CategoryTheory.Limits.createsColimitFullSubcategoryInclusionOfClosed
-/- warning: category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion -> CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusion is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.CreatesColimitsOfShape.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.InducedCategory.category.{u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) C _inst_2 (CategoryTheory.FullSubcategoryₓ.obj.{u3, u4} C _inst_2 P)) C _inst_2 J _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.CreatesColimitsOfShape.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusionₓ'. -/
/-- If `P` is closed under colimits of shape `J`, then the inclusion creates such colimits. -/
def createsColimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderColimitsOfShape J P)
[HasColimitsOfShape J C] : CreatesColimitsOfShape J (fullSubcategoryInclusion P)
where CreatesColimit F := createsColimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusion
-/- warning: category_theory.limits.has_colimit_of_closed_under_colimits -> CategoryTheory.Limits.hasColimit_of_closed_under_colimits is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) F)
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) F)
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.has_colimit_of_closed_under_colimits CategoryTheory.Limits.hasColimit_of_closed_under_colimitsₓ'. -/
theorem hasColimit_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasColimit (F ⋙ fullSubcategoryInclusion P)] : HasColimit F :=
have : CreatesColimit F (fullSubcategoryInclusion P) :=
@@ -225,12 +147,6 @@ theorem hasColimit_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
has_colimit_of_created F (full_subcategory_inclusion P)
#align category_theory.limits.has_colimit_of_closed_under_colimits CategoryTheory.Limits.hasColimit_of_closed_under_colimits
-/- warning: category_theory.limits.has_colimits_of_shape_of_closed_under_colimits -> CategoryTheory.Limits.hasColimitsOfShape_of_closed_under_colimits is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P))
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P))
-Case conversion may be inaccurate. Consider using '#align category_theory.limits.has_colimits_of_shape_of_closed_under_colimits CategoryTheory.Limits.hasColimitsOfShape_of_closed_under_colimitsₓ'. -/
theorem hasColimitsOfShape_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
[HasColimitsOfShape J C] : HasColimitsOfShape J (FullSubcategory P) :=
{ HasColimit := fun F => hasColimit_of_closed_under_colimits h F }
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Markus Himmel
! This file was ported from Lean 3 source module category_theory.limits.full_subcategory
-! leanprover-community/mathlib commit fe5e4ce6c72d96d77ad40ac832a6e7f8040990bc
+! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -13,6 +13,9 @@ import Mathbin.CategoryTheory.Limits.Creates
/-!
# Limits in full subcategories
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
We introduce the notion of a property closed under taking limits and show that if `P` is closed
under taking limits, then limits in `full_subcategory P` can be constructed from limits in `C`.
More precisely, the inclusion creates such limits.
mathlib commit https://github.com/leanprover-community/mathlib/commit/3b267e70a936eebb21ab546f49a8df34dd300b25
@@ -28,29 +28,45 @@ open CategoryTheory
namespace CategoryTheory.Limits
+#print CategoryTheory.Limits.ClosedUnderLimitsOfShape /-
/-- We say that a property is closed under limits of shape `J` if whenever all objects in a
`J`-shaped diagram have the property, any limit of this diagram also has the property. -/
def ClosedUnderLimitsOfShape {C : Type u} [Category.{v} C] (J : Type w) [Category.{w'} J]
(P : C → Prop) : Prop :=
∀ ⦃F : J ⥤ C⦄ ⦃c : Cone F⦄ (hc : IsLimit c), (∀ j, P (F.obj j)) → P c.pt
#align category_theory.limits.closed_under_limits_of_shape CategoryTheory.Limits.ClosedUnderLimitsOfShape
+-/
+#print CategoryTheory.Limits.ClosedUnderColimitsOfShape /-
/-- We say that a property is closed under colimits of shape `J` if whenever all objects in a
`J`-shaped diagram have the property, any colimit of this diagram also has the property. -/
def ClosedUnderColimitsOfShape {C : Type u} [Category.{v} C] (J : Type w) [Category.{w'} J]
(P : C → Prop) : Prop :=
∀ ⦃F : J ⥤ C⦄ ⦃c : Cocone F⦄ (hc : IsColimit c), (∀ j, P (F.obj j)) → P c.pt
#align category_theory.limits.closed_under_colimits_of_shape CategoryTheory.Limits.ClosedUnderColimitsOfShape
+-/
section
variable {C : Type u} [Category.{v} C] {J : Type w} [Category.{w'} J] {P : C → Prop}
+/- warning: category_theory.limits.closed_under_limits_of_shape.limit -> CategoryTheory.Limits.ClosedUnderLimitsOfShape.limit is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_1 J _inst_2 P) -> (forall {F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1} [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F], (forall (j : J), P (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 F j)) -> (P (CategoryTheory.Limits.limit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F _inst_3)))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_1 J _inst_2 P) -> (forall {F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1} [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F], (forall (j : J), P (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 F) j)) -> (P (CategoryTheory.Limits.limit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F _inst_3)))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.closed_under_limits_of_shape.limit CategoryTheory.Limits.ClosedUnderLimitsOfShape.limitₓ'. -/
theorem ClosedUnderLimitsOfShape.limit (h : ClosedUnderLimitsOfShape J P) {F : J ⥤ C} [HasLimit F] :
(∀ j, P (F.obj j)) → P (limit F) :=
h (limit.isLimit _)
#align category_theory.limits.closed_under_limits_of_shape.limit CategoryTheory.Limits.ClosedUnderLimitsOfShape.limit
+/- warning: category_theory.limits.closed_under_colimits_of_shape.colimit -> CategoryTheory.Limits.ClosedUnderColimitsOfShape.colimit is a dubious translation:
+lean 3 declaration is
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_1 J _inst_2 P) -> (forall {F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1} [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F], (forall (j : J), P (CategoryTheory.Functor.obj.{u1, u3, u2, u4} J _inst_2 C _inst_1 F j)) -> (P (CategoryTheory.Limits.colimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F _inst_3)))
+but is expected to have type
+ forall {C : Type.{u4}} [_inst_1 : CategoryTheory.Category.{u3, u4} C] {J : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} J] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_1 J _inst_2 P) -> (forall {F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_2 C _inst_1} [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F], (forall (j : J), P (Prefunctor.obj.{succ u1, succ u3, u2, u4} J (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} J (CategoryTheory.Category.toCategoryStruct.{u1, u2} J _inst_2)) C (CategoryTheory.CategoryStruct.toQuiver.{u3, u4} C (CategoryTheory.Category.toCategoryStruct.{u3, u4} C _inst_1)) (CategoryTheory.Functor.toPrefunctor.{u1, u3, u2, u4} J _inst_2 C _inst_1 F) j)) -> (P (CategoryTheory.Limits.colimit.{u1, u2, u3, u4} J _inst_2 C _inst_1 F _inst_3)))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.closed_under_colimits_of_shape.colimit CategoryTheory.Limits.ClosedUnderColimitsOfShape.colimitₓ'. -/
theorem ClosedUnderColimitsOfShape.colimit (h : ClosedUnderColimitsOfShape J P) {F : J ⥤ C}
[HasColimit F] : (∀ j, P (F.obj j)) → P (colimit F) :=
h (colimit.isColimit _)
@@ -62,6 +78,12 @@ section
variable {J : Type w} [Category.{w'} J] {C : Type u} [Category.{v} C] {P : C → Prop}
+/- warning: category_theory.limits.creates_limit_full_subcategory_inclusion' -> CategoryTheory.Limits.createsLimitFullSubcategoryInclusion' is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) {c : CategoryTheory.Limits.Cone.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))}, (CategoryTheory.Limits.IsLimit.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c) -> (P (CategoryTheory.Limits.Cone.pt.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c)) -> (CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) {c : CategoryTheory.Limits.Cone.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))}, (CategoryTheory.Limits.IsLimit.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c) -> (P (CategoryTheory.Limits.Cone.pt.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c)) -> (CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_limit_full_subcategory_inclusion' CategoryTheory.Limits.createsLimitFullSubcategoryInclusion'ₓ'. -/
/-- If a `J`-shaped diagram in `full_subcategory P` has a limit cone in `C` whose cone point lives
in the full subcategory, then this defines a limit in the full subcategory. -/
def createsLimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
@@ -70,6 +92,12 @@ def createsLimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
createsLimitOfFullyFaithfulOfIso' hc ⟨_, h⟩ (Iso.refl _)
#align category_theory.limits.creates_limit_full_subcategory_inclusion' CategoryTheory.Limits.createsLimitFullSubcategoryInclusion'
+/- warning: category_theory.limits.creates_limit_full_subcategory_inclusion -> CategoryTheory.Limits.createsLimitFullSubcategoryInclusion is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], (P (CategoryTheory.Limits.limit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) _inst_3)) -> (CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], (P (CategoryTheory.Limits.limit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) _inst_3)) -> (CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_limit_full_subcategory_inclusion CategoryTheory.Limits.createsLimitFullSubcategoryInclusionₓ'. -/
/-- If a `J`-shaped diagram in `full_subcategory P` has a limit in `C` whose cone point lives in the
full subcategory, then this defines a limit in the full subcategory. -/
def createsLimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
@@ -78,6 +106,12 @@ def createsLimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
createsLimitFullSubcategoryInclusion' F (limit.isLimit _) h
#align category_theory.limits.creates_limit_full_subcategory_inclusion CategoryTheory.Limits.createsLimitFullSubcategoryInclusion
+/- warning: category_theory.limits.creates_colimit_full_subcategory_inclusion' -> CategoryTheory.Limits.createsColimitFullSubcategoryInclusion' is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) {c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))}, (CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c) -> (P (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c)) -> (CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) {c : CategoryTheory.Limits.Cocone.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))}, (CategoryTheory.Limits.IsColimit.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c) -> (P (CategoryTheory.Limits.Cocone.pt.{u1, u3, u2, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) c)) -> (CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_colimit_full_subcategory_inclusion' CategoryTheory.Limits.createsColimitFullSubcategoryInclusion'ₓ'. -/
/-- If a `J`-shaped diagram in `full_subcategory P` has a colimit cocone in `C` whose cocone point
lives in the full subcategory, then this defines a colimit in the full subcategory. -/
def createsColimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
@@ -86,6 +120,12 @@ def createsColimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
createsColimitOfFullyFaithfulOfIso' hc ⟨_, h⟩ (Iso.refl _)
#align category_theory.limits.creates_colimit_full_subcategory_inclusion' CategoryTheory.Limits.createsColimitFullSubcategoryInclusion'
+/- warning: category_theory.limits.creates_colimit_full_subcategory_inclusion -> CategoryTheory.Limits.createsColimitFullSubcategoryInclusion is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], (P (CategoryTheory.Limits.colimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) _inst_3)) -> (CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop} (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], (P (CategoryTheory.Limits.colimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P)) _inst_3)) -> (CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_colimit_full_subcategory_inclusion CategoryTheory.Limits.createsColimitFullSubcategoryInclusionₓ'. -/
/-- If a `J`-shaped diagram in `full_subcategory P` has a colimit in `C` whose cocone point lives in
the full subcategory, then this defines a colimit in the full subcategory. -/
def createsColimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
@@ -95,6 +135,12 @@ def createsColimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
createsColimitFullSubcategoryInclusion' F (colimit.isColimit _) h
#align category_theory.limits.creates_colimit_full_subcategory_inclusion CategoryTheory.Limits.createsColimitFullSubcategoryInclusion
+/- warning: category_theory.limits.creates_limit_full_subcategory_inclusion_of_closed -> CategoryTheory.Limits.createsLimitFullSubcategoryInclusionOfClosed is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.CreatesLimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_limit_full_subcategory_inclusion_of_closed CategoryTheory.Limits.createsLimitFullSubcategoryInclusionOfClosedₓ'. -/
/-- If `P` is closed under limits of shape `J`, then the inclusion creates such limits. -/
def createsLimitFullSubcategoryInclusionOfClosed (h : ClosedUnderLimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasLimit (F ⋙ fullSubcategoryInclusion P)] :
@@ -102,12 +148,24 @@ def createsLimitFullSubcategoryInclusionOfClosed (h : ClosedUnderLimitsOfShape J
createsLimitFullSubcategoryInclusion F (h.limit fun j => (F.obj j).property)
#align category_theory.limits.creates_limit_full_subcategory_inclusion_of_closed CategoryTheory.Limits.createsLimitFullSubcategoryInclusionOfClosed
+/- warning: category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion -> CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusion is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.CreatesLimitsOfShape.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.InducedCategory.category.{u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) C _inst_2 (CategoryTheory.FullSubcategoryₓ.obj.{u3, u4} C _inst_2 P)) C _inst_2 J _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.CreatesLimitsOfShape.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusionₓ'. -/
/-- If `P` is closed under limits of shape `J`, then the inclusion creates such limits. -/
def createsLimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderLimitsOfShape J P)
[HasLimitsOfShape J C] : CreatesLimitsOfShape J (fullSubcategoryInclusion P)
where CreatesLimit F := createsLimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusion
+/- warning: category_theory.limits.has_limit_of_closed_under_limits -> CategoryTheory.Limits.hasLimit_of_closed_under_limits is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) F)
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.Limits.HasLimit.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) F)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.has_limit_of_closed_under_limits CategoryTheory.Limits.hasLimit_of_closed_under_limitsₓ'. -/
theorem hasLimit_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasLimit (F ⋙ fullSubcategoryInclusion P)] : HasLimit F :=
have : CreatesLimit F (fullSubcategoryInclusion P) :=
@@ -115,11 +173,23 @@ theorem hasLimit_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
has_limit_of_created F (full_subcategory_inclusion P)
#align category_theory.limits.has_limit_of_closed_under_limits CategoryTheory.Limits.hasLimit_of_closed_under_limits
+/- warning: category_theory.limits.has_limits_of_shape_of_closed_under_limits -> CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limits is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P))
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderLimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.Limits.HasLimitsOfShape.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.has_limits_of_shape_of_closed_under_limits CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limitsₓ'. -/
theorem hasLimitsOfShape_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
[HasLimitsOfShape J C] : HasLimitsOfShape J (FullSubcategory P) :=
{ HasLimit := fun F => hasLimit_of_closed_under_limits h F }
#align category_theory.limits.has_limits_of_shape_of_closed_under_limits CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limits
+/- warning: category_theory.limits.creates_colimit_full_subcategory_inclusion_of_closed -> CategoryTheory.Limits.createsColimitFullSubcategoryInclusionOfClosed is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.CreatesColimit.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_colimit_full_subcategory_inclusion_of_closed CategoryTheory.Limits.createsColimitFullSubcategoryInclusionOfClosedₓ'. -/
/-- If `P` is closed under colimits of shape `J`, then the inclusion creates such colimits. -/
def createsColimitFullSubcategoryInclusionOfClosed (h : ClosedUnderColimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasColimit (F ⋙ fullSubcategoryInclusion P)] :
@@ -127,12 +197,24 @@ def createsColimitFullSubcategoryInclusionOfClosed (h : ClosedUnderColimitsOfSha
createsColimitFullSubcategoryInclusion F (h.colimit fun j => (F.obj j).property)
#align category_theory.limits.creates_colimit_full_subcategory_inclusion_of_closed CategoryTheory.Limits.createsColimitFullSubcategoryInclusionOfClosed
+/- warning: category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion -> CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusion is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.CreatesColimitsOfShape.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.InducedCategory.category.{u3, u4, u4} (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) C _inst_2 (CategoryTheory.FullSubcategoryₓ.obj.{u3, u4} C _inst_2 P)) C _inst_2 J _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.CreatesColimitsOfShape.{u1, u2, u3, u3, u4, u4} (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 J _inst_1 (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusionₓ'. -/
/-- If `P` is closed under colimits of shape `J`, then the inclusion creates such colimits. -/
def createsColimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderColimitsOfShape J P)
[HasColimitsOfShape J C] : CreatesColimitsOfShape J (fullSubcategoryInclusion P)
where CreatesColimit F := createsColimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusion
+/- warning: category_theory.limits.has_colimit_of_closed_under_colimits -> CategoryTheory.Limits.hasColimit_of_closed_under_colimits is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) F)
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall (F : CategoryTheory.Functor.{u1, u3, u2, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P)) [_inst_3 : CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 C _inst_2 (CategoryTheory.Functor.comp.{u1, u3, u3, u2, u4, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) C _inst_2 F (CategoryTheory.fullSubcategoryInclusion.{u3, u4} C _inst_2 P))], CategoryTheory.Limits.HasColimit.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P) F)
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.has_colimit_of_closed_under_colimits CategoryTheory.Limits.hasColimit_of_closed_under_colimitsₓ'. -/
theorem hasColimit_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasColimit (F ⋙ fullSubcategoryInclusion P)] : HasColimit F :=
have : CreatesColimit F (fullSubcategoryInclusion P) :=
@@ -140,6 +222,12 @@ theorem hasColimit_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
has_colimit_of_created F (full_subcategory_inclusion P)
#align category_theory.limits.has_colimit_of_closed_under_colimits CategoryTheory.Limits.hasColimit_of_closed_under_colimits
+/- warning: category_theory.limits.has_colimits_of_shape_of_closed_under_colimits -> CategoryTheory.Limits.hasColimitsOfShape_of_closed_under_colimits is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategoryₓ.{u3, u4} C _inst_2 P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P))
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] {C : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u3, u4} C] {P : C -> Prop}, (CategoryTheory.Limits.ClosedUnderColimitsOfShape.{u1, u2, u3, u4} C _inst_2 J _inst_1 P) -> (forall [_inst_3 : CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 C _inst_2], CategoryTheory.Limits.HasColimitsOfShape.{u1, u2, u3, u4} J _inst_1 (CategoryTheory.FullSubcategory.{u4} C P) (CategoryTheory.FullSubcategory.category.{u3, u4} C _inst_2 P))
+Case conversion may be inaccurate. Consider using '#align category_theory.limits.has_colimits_of_shape_of_closed_under_colimits CategoryTheory.Limits.hasColimitsOfShape_of_closed_under_colimitsₓ'. -/
theorem hasColimitsOfShape_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
[HasColimitsOfShape J C] : HasColimitsOfShape J (FullSubcategory P) :=
{ HasColimit := fun F => hasColimit_of_closed_under_colimits h F }
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -32,14 +32,14 @@ namespace CategoryTheory.Limits
`J`-shaped diagram have the property, any limit of this diagram also has the property. -/
def ClosedUnderLimitsOfShape {C : Type u} [Category.{v} C] (J : Type w) [Category.{w'} J]
(P : C → Prop) : Prop :=
- ∀ ⦃F : J ⥤ C⦄ ⦃c : Cone F⦄ (hc : IsLimit c), (∀ j, P (F.obj j)) → P c.x
+ ∀ ⦃F : J ⥤ C⦄ ⦃c : Cone F⦄ (hc : IsLimit c), (∀ j, P (F.obj j)) → P c.pt
#align category_theory.limits.closed_under_limits_of_shape CategoryTheory.Limits.ClosedUnderLimitsOfShape
/-- We say that a property is closed under colimits of shape `J` if whenever all objects in a
`J`-shaped diagram have the property, any colimit of this diagram also has the property. -/
def ClosedUnderColimitsOfShape {C : Type u} [Category.{v} C] (J : Type w) [Category.{w'} J]
(P : C → Prop) : Prop :=
- ∀ ⦃F : J ⥤ C⦄ ⦃c : Cocone F⦄ (hc : IsColimit c), (∀ j, P (F.obj j)) → P c.x
+ ∀ ⦃F : J ⥤ C⦄ ⦃c : Cocone F⦄ (hc : IsColimit c), (∀ j, P (F.obj j)) → P c.pt
#align category_theory.limits.closed_under_colimits_of_shape CategoryTheory.Limits.ClosedUnderColimitsOfShape
section
@@ -65,7 +65,7 @@ variable {J : Type w} [Category.{w'} J] {C : Type u} [Category.{v} C] {P : C →
/-- If a `J`-shaped diagram in `full_subcategory P` has a limit cone in `C` whose cone point lives
in the full subcategory, then this defines a limit in the full subcategory. -/
def createsLimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
- {c : Cone (F ⋙ fullSubcategoryInclusion P)} (hc : IsLimit c) (h : P c.x) :
+ {c : Cone (F ⋙ fullSubcategoryInclusion P)} (hc : IsLimit c) (h : P c.pt) :
CreatesLimit F (fullSubcategoryInclusion P) :=
createsLimitOfFullyFaithfulOfIso' hc ⟨_, h⟩ (Iso.refl _)
#align category_theory.limits.creates_limit_full_subcategory_inclusion' CategoryTheory.Limits.createsLimitFullSubcategoryInclusion'
@@ -81,7 +81,7 @@ def createsLimitFullSubcategoryInclusion (F : J ⥤ FullSubcategory P)
/-- If a `J`-shaped diagram in `full_subcategory P` has a colimit cocone in `C` whose cocone point
lives in the full subcategory, then this defines a colimit in the full subcategory. -/
def createsColimitFullSubcategoryInclusion' (F : J ⥤ FullSubcategory P)
- {c : Cocone (F ⋙ fullSubcategoryInclusion P)} (hc : IsColimit c) (h : P c.x) :
+ {c : Cocone (F ⋙ fullSubcategoryInclusion P)} (hc : IsColimit c) (h : P c.pt) :
CreatesColimit F (fullSubcategoryInclusion P) :=
createsColimitOfFullyFaithfulOfIso' hc ⟨_, h⟩ (Iso.refl _)
#align category_theory.limits.creates_colimit_full_subcategory_inclusion' CategoryTheory.Limits.createsColimitFullSubcategoryInclusion'
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -108,17 +108,17 @@ def createsLimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderLimitsOfShape J
where CreatesLimit F := createsLimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusion
-theorem hasLimitOfClosedUnderLimits (h : ClosedUnderLimitsOfShape J P) (F : J ⥤ FullSubcategory P)
- [HasLimit (F ⋙ fullSubcategoryInclusion P)] : HasLimit F :=
+theorem hasLimit_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
+ (F : J ⥤ FullSubcategory P) [HasLimit (F ⋙ fullSubcategoryInclusion P)] : HasLimit F :=
have : CreatesLimit F (fullSubcategoryInclusion P) :=
createsLimitFullSubcategoryInclusionOfClosed h F
has_limit_of_created F (full_subcategory_inclusion P)
-#align category_theory.limits.has_limit_of_closed_under_limits CategoryTheory.Limits.hasLimitOfClosedUnderLimits
+#align category_theory.limits.has_limit_of_closed_under_limits CategoryTheory.Limits.hasLimit_of_closed_under_limits
-theorem hasLimitsOfShapeOfClosedUnderLimits (h : ClosedUnderLimitsOfShape J P)
+theorem hasLimitsOfShape_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
[HasLimitsOfShape J C] : HasLimitsOfShape J (FullSubcategory P) :=
- { HasLimit := fun F => hasLimitOfClosedUnderLimits h F }
-#align category_theory.limits.has_limits_of_shape_of_closed_under_limits CategoryTheory.Limits.hasLimitsOfShapeOfClosedUnderLimits
+ { HasLimit := fun F => hasLimit_of_closed_under_limits h F }
+#align category_theory.limits.has_limits_of_shape_of_closed_under_limits CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limits
/-- If `P` is closed under colimits of shape `J`, then the inclusion creates such colimits. -/
def createsColimitFullSubcategoryInclusionOfClosed (h : ClosedUnderColimitsOfShape J P)
@@ -133,17 +133,17 @@ def createsColimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderColimitsOfSha
where CreatesColimit F := createsColimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusion
-theorem hasColimitOfClosedUnderColimits (h : ClosedUnderColimitsOfShape J P)
+theorem hasColimit_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasColimit (F ⋙ fullSubcategoryInclusion P)] : HasColimit F :=
have : CreatesColimit F (fullSubcategoryInclusion P) :=
createsColimitFullSubcategoryInclusionOfClosed h F
has_colimit_of_created F (full_subcategory_inclusion P)
-#align category_theory.limits.has_colimit_of_closed_under_colimits CategoryTheory.Limits.hasColimitOfClosedUnderColimits
+#align category_theory.limits.has_colimit_of_closed_under_colimits CategoryTheory.Limits.hasColimit_of_closed_under_colimits
-theorem hasColimitsOfShapeOfClosedUnderColimits (h : ClosedUnderColimitsOfShape J P)
+theorem hasColimitsOfShape_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
[HasColimitsOfShape J C] : HasColimitsOfShape J (FullSubcategory P) :=
- { HasColimit := fun F => hasColimitOfClosedUnderColimits h F }
-#align category_theory.limits.has_colimits_of_shape_of_closed_under_colimits CategoryTheory.Limits.hasColimitsOfShapeOfClosedUnderColimits
+ { HasColimit := fun F => hasColimit_of_closed_under_colimits h F }
+#align category_theory.limits.has_colimits_of_shape_of_closed_under_colimits CategoryTheory.Limits.hasColimitsOfShape_of_closed_under_colimits
end
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
They contain a hypothesis ClosedUnder{Co}Limits
, hence should be named accordingly.
@@ -105,17 +105,18 @@ def createsLimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderLimitsOfShape J
CreatesLimit := @fun F => createsLimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusion
-theorem hasLimit_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
+theorem hasLimit_of_closedUnderLimits (h : ClosedUnderLimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasLimit (F ⋙ fullSubcategoryInclusion P)] : HasLimit F :=
have : CreatesLimit F (fullSubcategoryInclusion P) :=
createsLimitFullSubcategoryInclusionOfClosed h F
hasLimit_of_created F (fullSubcategoryInclusion P)
-#align category_theory.limits.has_limit_of_closed_under_limits CategoryTheory.Limits.hasLimit_of_closed_under_limits
+#align category_theory.limits.has_limit_of_closed_under_limits CategoryTheory.Limits.hasLimit_of_closedUnderLimits
+@[deprecated] alias hasLimit_of_closed_under_limits := hasLimit_of_closedUnderLimits -- 2024-03-23
-theorem hasLimitsOfShape_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
+theorem hasLimitsOfShape_of_closedUnderLimits (h : ClosedUnderLimitsOfShape J P)
[HasLimitsOfShape J C] : HasLimitsOfShape J (FullSubcategory P) :=
- { has_limit := fun F => hasLimit_of_closed_under_limits h F }
-#align category_theory.limits.has_limits_of_shape_of_closed_under_limits CategoryTheory.Limits.hasLimitsOfShape_of_closed_under_limits
+ { has_limit := fun F => hasLimit_of_closedUnderLimits h F }
+#align category_theory.limits.has_limits_of_shape_of_closed_under_limits CategoryTheory.Limits.hasLimitsOfShape_of_closedUnderLimits
/-- If `P` is closed under colimits of shape `J`, then the inclusion creates such colimits. -/
def createsColimitFullSubcategoryInclusionOfClosed (h : ClosedUnderColimitsOfShape J P)
@@ -130,17 +131,21 @@ def createsColimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderColimitsOfSha
CreatesColimit := @fun F => createsColimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusion
-theorem hasColimit_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
+theorem hasColimit_of_closedUnderColimits (h : ClosedUnderColimitsOfShape J P)
(F : J ⥤ FullSubcategory P) [HasColimit (F ⋙ fullSubcategoryInclusion P)] : HasColimit F :=
have : CreatesColimit F (fullSubcategoryInclusion P) :=
createsColimitFullSubcategoryInclusionOfClosed h F
hasColimit_of_created F (fullSubcategoryInclusion P)
-#align category_theory.limits.has_colimit_of_closed_under_colimits CategoryTheory.Limits.hasColimit_of_closed_under_colimits
+#align category_theory.limits.has_colimit_of_closed_under_colimits CategoryTheory.Limits.hasColimit_of_closedUnderColimits
+@[deprecated] alias hasColimit_of_closed_under_colimits :=
+ hasColimit_of_closedUnderColimits -- 2024-03-23
-theorem hasColimitsOfShape_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
+theorem hasColimitsOfShape_of_closedUnderColimits (h : ClosedUnderColimitsOfShape J P)
[HasColimitsOfShape J C] : HasColimitsOfShape J (FullSubcategory P) :=
- { has_colimit := fun F => hasColimit_of_closed_under_colimits h F }
-#align category_theory.limits.has_colimits_of_shape_of_closed_under_colimits CategoryTheory.Limits.hasColimitsOfShape_of_closed_under_colimits
+ { has_colimit := fun F => hasColimit_of_closedUnderColimits h F }
+#align category_theory.limits.has_colimits_of_shape_of_closed_under_colimits CategoryTheory.Limits.hasColimitsOfShape_of_closedUnderColimits
+@[deprecated] alias hasColimitsOfShape_of_closed_under_colimits :=
+ hasColimitsOfShape_of_closedUnderColimits -- 2024-03-23
end
@@ -101,8 +101,8 @@ def createsLimitFullSubcategoryInclusionOfClosed (h : ClosedUnderLimitsOfShape J
/-- If `P` is closed under limits of shape `J`, then the inclusion creates such limits. -/
def createsLimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderLimitsOfShape J P)
- [HasLimitsOfShape J C] : CreatesLimitsOfShape J (fullSubcategoryInclusion P)
- where CreatesLimit := @fun F => createsLimitFullSubcategoryInclusionOfClosed h F
+ [HasLimitsOfShape J C] : CreatesLimitsOfShape J (fullSubcategoryInclusion P) where
+ CreatesLimit := @fun F => createsLimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_limits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsLimitsOfShapeFullSubcategoryInclusion
theorem hasLimit_of_closed_under_limits (h : ClosedUnderLimitsOfShape J P)
@@ -126,8 +126,8 @@ def createsColimitFullSubcategoryInclusionOfClosed (h : ClosedUnderColimitsOfSha
/-- If `P` is closed under colimits of shape `J`, then the inclusion creates such colimits. -/
def createsColimitsOfShapeFullSubcategoryInclusion (h : ClosedUnderColimitsOfShape J P)
- [HasColimitsOfShape J C] : CreatesColimitsOfShape J (fullSubcategoryInclusion P)
- where CreatesColimit := @fun F => createsColimitFullSubcategoryInclusionOfClosed h F
+ [HasColimitsOfShape J C] : CreatesColimitsOfShape J (fullSubcategoryInclusion P) where
+ CreatesColimit := @fun F => createsColimitFullSubcategoryInclusionOfClosed h F
#align category_theory.limits.creates_colimits_of_shape_full_subcategory_inclusion CategoryTheory.Limits.createsColimitsOfShapeFullSubcategoryInclusion
theorem hasColimit_of_closed_under_colimits (h : ClosedUnderColimitsOfShape J P)
@@ -2,14 +2,11 @@
Copyright (c) 2022 Markus Himmel. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Markus Himmel
-
-! This file was ported from Lean 3 source module category_theory.limits.full_subcategory
-! leanprover-community/mathlib commit fe5e4ce6c72d96d77ad40ac832a6e7f8040990bc
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.Limits.Creates
+#align_import category_theory.limits.full_subcategory from "leanprover-community/mathlib"@"fe5e4ce6c72d96d77ad40ac832a6e7f8040990bc"
+
/-!
# Limits in full subcategories
All dependencies are ported!