category_theory.connected_components
⟷
Mathlib.CategoryTheory.ConnectedComponents
The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -63,7 +63,7 @@ deriving Category
@[simps (config := { rhsMd := semireducible })]
def Component.ι (j) : Component j ⥤ J :=
fullSubcategoryInclusion _
-deriving Full, Faithful
+deriving CategoryTheory.Functor.Full, CategoryTheory.Functor.Faithful
#align category_theory.component.ι CategoryTheory.Component.ι
-/
@@ -140,7 +140,7 @@ theorem inclusion_comp_decomposedTo (j : ConnectedComponents J) :
#align category_theory.inclusion_comp_decomposed_to CategoryTheory.inclusion_comp_decomposedTo
-/
-instance : Full (decomposedTo J)
+instance : CategoryTheory.Functor.Full (decomposedTo J)
where
Preimage := by
rintro ⟨j', X, hX⟩ ⟨k', Y, hY⟩ f
@@ -158,16 +158,17 @@ instance : Full (decomposedTo J)
subst this
rfl
-instance : Faithful (decomposedTo J)
+instance : CategoryTheory.Functor.Faithful (decomposedTo J)
where map_injective' := by
rintro ⟨_, j, rfl⟩ ⟨_, k, hY⟩ ⟨f⟩ ⟨g⟩ e
change f = g at e
subst e
-instance : EssSurj (decomposedTo J) where mem_essImage j := ⟨⟨_, j, rfl⟩, ⟨Iso.refl _⟩⟩
+instance : CategoryTheory.Functor.EssSurj (decomposedTo J)
+ where mem_essImage j := ⟨⟨_, j, rfl⟩, ⟨Iso.refl _⟩⟩
-instance : IsEquivalence (decomposedTo J) :=
- Equivalence.ofFullyFaithfullyEssSurj _
+instance : CategoryTheory.Functor.IsEquivalence (decomposedTo J) :=
+ CategoryTheory.Functor.IsEquivalence.ofFullyFaithfullyEssSurj _
#print CategoryTheory.decomposedEquiv /-
/-- This gives that any category is equivalent to a disjoint union of connected categories. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -144,7 +144,7 @@ instance : Full (decomposedTo J)
where
Preimage := by
rintro ⟨j', X, hX⟩ ⟨k', Y, hY⟩ f
- dsimp at f
+ dsimp at f
have : j' = k'
rw [← hX, ← hY, Quotient.eq'']
exact Relation.ReflTransGen.single (Or.inl ⟨f⟩)
@@ -161,7 +161,7 @@ instance : Full (decomposedTo J)
instance : Faithful (decomposedTo J)
where map_injective' := by
rintro ⟨_, j, rfl⟩ ⟨_, k, hY⟩ ⟨f⟩ ⟨g⟩ e
- change f = g at e
+ change f = g at e
subst e
instance : EssSurj (decomposedTo J) where mem_essImage j := ⟨⟨_, j, rfl⟩, ⟨Iso.refl _⟩⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2020 Bhavik Mehta. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Bhavik Mehta
-/
-import Mathbin.Data.List.Chain
-import Mathbin.CategoryTheory.IsConnected
-import Mathbin.CategoryTheory.Sigma.Basic
-import Mathbin.CategoryTheory.FullSubcategory
+import Data.List.Chain
+import CategoryTheory.IsConnected
+import CategoryTheory.Sigma.Basic
+import CategoryTheory.FullSubcategory
#align_import category_theory.connected_components from "leanprover-community/mathlib"@"10bf4f825ad729c5653adc039dafa3622e7f93c9"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2020 Bhavik Mehta. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Bhavik Mehta
-
-! This file was ported from Lean 3 source module category_theory.connected_components
-! leanprover-community/mathlib commit 10bf4f825ad729c5653adc039dafa3622e7f93c9
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.Data.List.Chain
import Mathbin.CategoryTheory.IsConnected
import Mathbin.CategoryTheory.Sigma.Basic
import Mathbin.CategoryTheory.FullSubcategory
+#align_import category_theory.connected_components from "leanprover-community/mathlib"@"10bf4f825ad729c5653adc039dafa3622e7f93c9"
+
/-!
# Connected components of a category
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -61,12 +61,14 @@ deriving Category
#align category_theory.component CategoryTheory.Component
-/
+#print CategoryTheory.Component.ι /-
/-- The inclusion functor from a connected component to the whole category. -/
@[simps (config := { rhsMd := semireducible })]
def Component.ι (j) : Component j ⥤ J :=
fullSubcategoryInclusion _
deriving Full, Faithful
#align category_theory.component.ι CategoryTheory.Component.ι
+-/
/-- Each connected component of the category is nonempty. -/
instance (j : ConnectedComponents J) : Nonempty (Component j) :=
@@ -170,11 +172,13 @@ instance : EssSurj (decomposedTo J) where mem_essImage j := ⟨⟨_, j, rfl⟩,
instance : IsEquivalence (decomposedTo J) :=
Equivalence.ofFullyFaithfullyEssSurj _
+#print CategoryTheory.decomposedEquiv /-
/-- This gives that any category is equivalent to a disjoint union of connected categories. -/
@[simps (config := { rhsMd := semireducible }) Functor]
def decomposedEquiv : Decomposed J ≌ J :=
(decomposedTo J).asEquivalence
#align category_theory.decomposed_equiv CategoryTheory.decomposedEquiv
+-/
end CategoryTheory
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -56,14 +56,16 @@ instance [Inhabited J] : Inhabited (ConnectedComponents J) :=
#print CategoryTheory.Component /-
/-- Given an index for a connected component, produce the actual component as a full subcategory. -/
def Component (j : ConnectedComponents J) : Type u₁ :=
- FullSubcategory fun k => Quotient.mk'' k = j deriving Category
+ FullSubcategory fun k => Quotient.mk'' k = j
+deriving Category
#align category_theory.component CategoryTheory.Component
-/
/-- The inclusion functor from a connected component to the whole category. -/
@[simps (config := { rhsMd := semireducible })]
def Component.ι (j) : Component j ⥤ J :=
- fullSubcategoryInclusion _ deriving Full, Faithful
+ fullSubcategoryInclusion _
+deriving Full, Faithful
#align category_theory.component.ι CategoryTheory.Component.ι
/-- Each connected component of the category is nonempty. -/
@@ -108,7 +110,7 @@ category structure.
This category is equivalent to `J`.
-/
abbrev Decomposed (J : Type u₁) [Category.{v₁} J] :=
- Σj : ConnectedComponents J, Component j
+ Σ j : ConnectedComponents J, Component j
#align category_theory.decomposed CategoryTheory.Decomposed
-/
@@ -143,7 +145,7 @@ instance : Full (decomposedTo J)
where
Preimage := by
rintro ⟨j', X, hX⟩ ⟨k', Y, hY⟩ f
- dsimp at f
+ dsimp at f
have : j' = k'
rw [← hX, ← hY, Quotient.eq'']
exact Relation.ReflTransGen.single (Or.inl ⟨f⟩)
@@ -160,7 +162,7 @@ instance : Full (decomposedTo J)
instance : Faithful (decomposedTo J)
where map_injective' := by
rintro ⟨_, j, rfl⟩ ⟨_, k, hY⟩ ⟨f⟩ ⟨g⟩ e
- change f = g at e
+ change f = g at e
subst e
instance : EssSurj (decomposedTo J) where mem_essImage j := ⟨⟨_, j, rfl⟩, ⟨Iso.refl _⟩⟩
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -60,12 +60,6 @@ def Component (j : ConnectedComponents J) : Type u₁ :=
#align category_theory.component CategoryTheory.Component
-/
-/- warning: category_theory.component.ι -> CategoryTheory.Component.ι is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] (j : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1), CategoryTheory.Functor.{u1, u1, u2, u2} (CategoryTheory.Component.{u1, u2} J _inst_1 j) (CategoryTheory.InducedCategory.category.{u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} J _inst_1 (fun (k : J) => Eq.{succ u2} (Quotient.{succ u2} J (CategoryTheory.Zigzag.setoid.{u1, u2} J _inst_1)) (Quotient.mk''.{succ u2} J (CategoryTheory.Zigzag.setoid.{u1, u2} J _inst_1) k) j)) J _inst_1 (CategoryTheory.FullSubcategoryₓ.obj.{u1, u2} J _inst_1 (fun (k : J) => Eq.{succ u2} (Quotient.{succ u2} J (CategoryTheory.Zigzag.setoid.{u1, u2} J _inst_1)) (Quotient.mk''.{succ u2} J (CategoryTheory.Zigzag.setoid.{u1, u2} J _inst_1) k) j))) J _inst_1
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] (j : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1), CategoryTheory.Functor.{u1, u1, u2, u2} (CategoryTheory.Component.{u1, u2} J _inst_1 j) (CategoryTheory.instCategoryComponent.{u1, u2} J _inst_1 j) J _inst_1
-Case conversion may be inaccurate. Consider using '#align category_theory.component.ι CategoryTheory.Component.ιₓ'. -/
/-- The inclusion functor from a connected component to the whole category. -/
@[simps (config := { rhsMd := semireducible })]
def Component.ι (j) : Component j ⥤ J :=
@@ -174,12 +168,6 @@ instance : EssSurj (decomposedTo J) where mem_essImage j := ⟨⟨_, j, rfl⟩,
instance : IsEquivalence (decomposedTo J) :=
Equivalence.ofFullyFaithfullyEssSurj _
-/- warning: category_theory.decomposed_equiv -> CategoryTheory.decomposedEquiv is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J], CategoryTheory.Equivalence.{max u1 u2, u1, u2, u2} (CategoryTheory.Decomposed.{u1, u2} J _inst_1) (CategoryTheory.Sigma.sigma.{u2, u1, u2} (CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) (fun (j : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) => CategoryTheory.Component.{u1, u2} J _inst_1 j) (fun (i : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) => CategoryTheory.Component.category.{u2, u1} J _inst_1 i)) J _inst_1
-but is expected to have type
- forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J], CategoryTheory.Equivalence.{max u2 u1, u1, u2, u2} (CategoryTheory.Decomposed.{u1, u2} J _inst_1) J (CategoryTheory.Sigma.sigma.{u2, u1, u2} (CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) (fun (j : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) => CategoryTheory.Component.{u1, u2} J _inst_1 j) (fun (i : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) => CategoryTheory.instCategoryComponent.{u1, u2} J _inst_1 i)) _inst_1
-Case conversion may be inaccurate. Consider using '#align category_theory.decomposed_equiv CategoryTheory.decomposedEquivₓ'. -/
/-- This gives that any category is equivalent to a disjoint union of connected categories. -/
@[simps (config := { rhsMd := semireducible }) Functor]
def decomposedEquiv : Decomposed J ≌ J :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/09079525fd01b3dda35e96adaa08d2f943e1648c
@@ -37,7 +37,7 @@ open CategoryTheory.Category
namespace CategoryTheory
-attribute [instance] is_connected.is_nonempty
+attribute [instance 100] is_connected.is_nonempty
variable {J : Type u₁} [Category.{v₁} J]
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce7e9d53d4bbc38065db3b595cd5bd73c323bc1d
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Bhavik Mehta
! This file was ported from Lean 3 source module category_theory.connected_components
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
+! leanprover-community/mathlib commit 10bf4f825ad729c5653adc039dafa3622e7f93c9
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.CategoryTheory.FullSubcategory
/-!
# Connected components of a category
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
Defines a type `connected_components J` indexing the connected components of a category, and the
full subcategories giving each connected component: `component j : Type u₁`.
We show that each `component j` is in fact connected.
mathlib commit https://github.com/leanprover-community/mathlib/commit/2af0836443b4cfb5feda0df0051acdb398304931
@@ -40,19 +40,29 @@ variable {J : Type u₁} [Category.{v₁} J]
variable {C : Type u₂} [Category.{u₁} C]
+#print CategoryTheory.ConnectedComponents /-
/-- This type indexes the connected components of the category `J`. -/
def ConnectedComponents (J : Type u₁) [Category.{v₁} J] : Type u₁ :=
Quotient (Zigzag.setoid J)
#align category_theory.connected_components CategoryTheory.ConnectedComponents
+-/
instance [Inhabited J] : Inhabited (ConnectedComponents J) :=
⟨Quotient.mk'' default⟩
+#print CategoryTheory.Component /-
/-- Given an index for a connected component, produce the actual component as a full subcategory. -/
def Component (j : ConnectedComponents J) : Type u₁ :=
FullSubcategory fun k => Quotient.mk'' k = j deriving Category
#align category_theory.component CategoryTheory.Component
+-/
+/- warning: category_theory.component.ι -> CategoryTheory.Component.ι is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] (j : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1), CategoryTheory.Functor.{u1, u1, u2, u2} (CategoryTheory.Component.{u1, u2} J _inst_1 j) (CategoryTheory.InducedCategory.category.{u1, u2, u2} (CategoryTheory.FullSubcategoryₓ.{u1, u2} J _inst_1 (fun (k : J) => Eq.{succ u2} (Quotient.{succ u2} J (CategoryTheory.Zigzag.setoid.{u1, u2} J _inst_1)) (Quotient.mk''.{succ u2} J (CategoryTheory.Zigzag.setoid.{u1, u2} J _inst_1) k) j)) J _inst_1 (CategoryTheory.FullSubcategoryₓ.obj.{u1, u2} J _inst_1 (fun (k : J) => Eq.{succ u2} (Quotient.{succ u2} J (CategoryTheory.Zigzag.setoid.{u1, u2} J _inst_1)) (Quotient.mk''.{succ u2} J (CategoryTheory.Zigzag.setoid.{u1, u2} J _inst_1) k) j))) J _inst_1
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J] (j : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1), CategoryTheory.Functor.{u1, u1, u2, u2} (CategoryTheory.Component.{u1, u2} J _inst_1 j) (CategoryTheory.instCategoryComponent.{u1, u2} J _inst_1 j) J _inst_1
+Case conversion may be inaccurate. Consider using '#align category_theory.component.ι CategoryTheory.Component.ιₓ'. -/
/-- The inclusion functor from a connected component to the whole category. -/
@[simps (config := { rhsMd := semireducible })]
def Component.ι (j) : Component j ⥤ J :=
@@ -95,6 +105,7 @@ instance (j : ConnectedComponents J) : IsConnected (Component j) :=
· erw [List.getLast_pmap _ f (j₁ :: l) (by simpa [h₁₂] using hf) (List.cons_ne_nil _ _)]
exact full_subcategory.ext _ _ hl₂
+#print CategoryTheory.Decomposed /-
/-- The disjoint union of `J`s connected components, written explicitly as a sigma-type with the
category structure.
This category is equivalent to `J`.
@@ -102,7 +113,9 @@ This category is equivalent to `J`.
abbrev Decomposed (J : Type u₁) [Category.{v₁} J] :=
Σj : ConnectedComponents J, Component j
#align category_theory.decomposed CategoryTheory.Decomposed
+-/
+#print CategoryTheory.inclusion /-
-- This name may cause clashes further down the road, and so might need to be changed.
/--
The inclusion of each component into the decomposed category. This is just `sigma.incl` but having
@@ -111,18 +124,23 @@ this abbreviation helps guide typeclass search to get the right category instanc
abbrev inclusion (j : ConnectedComponents J) : Component j ⥤ Decomposed J :=
Sigma.incl _
#align category_theory.inclusion CategoryTheory.inclusion
+-/
+#print CategoryTheory.decomposedTo /-
/-- The forward direction of the equivalence between the decomposed category and the original. -/
@[simps (config := { rhsMd := semireducible })]
def decomposedTo (J : Type u₁) [Category.{v₁} J] : Decomposed J ⥤ J :=
Sigma.desc Component.ι
#align category_theory.decomposed_to CategoryTheory.decomposedTo
+-/
+#print CategoryTheory.inclusion_comp_decomposedTo /-
@[simp]
theorem inclusion_comp_decomposedTo (j : ConnectedComponents J) :
inclusion j ⋙ decomposedTo J = Component.ι j :=
rfl
#align category_theory.inclusion_comp_decomposed_to CategoryTheory.inclusion_comp_decomposedTo
+-/
instance : Full (decomposedTo J)
where
@@ -153,6 +171,12 @@ instance : EssSurj (decomposedTo J) where mem_essImage j := ⟨⟨_, j, rfl⟩,
instance : IsEquivalence (decomposedTo J) :=
Equivalence.ofFullyFaithfullyEssSurj _
+/- warning: category_theory.decomposed_equiv -> CategoryTheory.decomposedEquiv is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J], CategoryTheory.Equivalence.{max u1 u2, u1, u2, u2} (CategoryTheory.Decomposed.{u1, u2} J _inst_1) (CategoryTheory.Sigma.sigma.{u2, u1, u2} (CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) (fun (j : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) => CategoryTheory.Component.{u1, u2} J _inst_1 j) (fun (i : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) => CategoryTheory.Component.category.{u2, u1} J _inst_1 i)) J _inst_1
+but is expected to have type
+ forall {J : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} J], CategoryTheory.Equivalence.{max u2 u1, u1, u2, u2} (CategoryTheory.Decomposed.{u1, u2} J _inst_1) J (CategoryTheory.Sigma.sigma.{u2, u1, u2} (CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) (fun (j : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) => CategoryTheory.Component.{u1, u2} J _inst_1 j) (fun (i : CategoryTheory.ConnectedComponents.{u1, u2} J _inst_1) => CategoryTheory.instCategoryComponent.{u1, u2} J _inst_1 i)) _inst_1
+Case conversion may be inaccurate. Consider using '#align category_theory.decomposed_equiv CategoryTheory.decomposedEquivₓ'. -/
/-- This gives that any category is equivalent to a disjoint union of connected categories. -/
@[simps (config := { rhsMd := semireducible }) Functor]
def decomposedEquiv : Decomposed J ≌ J :=
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Functor.Full
a Prop (#12449)
Before this PR, Functor.Full
contained the data of the preimage of maps by a full functor F
. This PR makes Functor.Full
a proposition. This is to prevent any diamond to appear.
The lemma Functor.image_preimage
is also renamed Functor.map_preimage
.
Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>
@@ -127,23 +127,15 @@ theorem inclusion_comp_decomposedTo (j : ConnectedComponents J) :
rfl
#align category_theory.inclusion_comp_decomposed_to CategoryTheory.inclusion_comp_decomposedTo
-instance : (decomposedTo J).Full
- where
- preimage := by
+instance : (decomposedTo J).Full where
+ map_surjective := by
rintro ⟨j', X, hX⟩ ⟨k', Y, hY⟩ f
dsimp at f
have : j' = k' := by
rw [← hX, ← hY, Quotient.eq'']
exact Relation.ReflTransGen.single (Or.inl ⟨f⟩)
subst this
- exact Sigma.SigmaHom.mk f
- witness := by
- rintro ⟨j', X, hX⟩ ⟨_, Y, rfl⟩ f
- have : Quotient.mk'' Y = j' := by
- rw [← hX, Quotient.eq'']
- exact Relation.ReflTransGen.single (Or.inr ⟨f⟩)
- subst this
- rfl
+ exact ⟨Sigma.SigmaHom.mk f, rfl⟩
instance : (decomposedTo J).Faithful where
map_injective := by
@@ -48,8 +48,7 @@ def Component (j : ConnectedComponents J) : Type u₁ :=
FullSubcategory fun k => Quotient.mk'' k = j
#align category_theory.component CategoryTheory.Component
-set_option autoImplicit true in
-instance : Category (Component (j : ConnectedComponents J)) :=
+instance {j : ConnectedComponents J} : Category (Component j) :=
FullSubcategory.category _
-- Porting note: it was originally @[simps (config := { rhsMd := semireducible })]
@@ -59,12 +58,10 @@ def Component.ι (j : ConnectedComponents J) : Component j ⥤ J :=
fullSubcategoryInclusion _
#align category_theory.component.ι CategoryTheory.Component.ι
-set_option autoImplicit true in
-instance : Functor.Full (Component.ι (j : ConnectedComponents J)) :=
+instance {j : ConnectedComponents J} : Functor.Full (Component.ι j) :=
FullSubcategory.full _
-set_option autoImplicit true in
-instance : Functor.Faithful (Component.ι (j : ConnectedComponents J)) :=
+instance {j : ConnectedComponents J} : Functor.Faithful (Component.ι j) :=
FullSubcategory.faithful _
/-- Each connected component of the category is nonempty. -/
These notions on functors are now Functor.Full
, Functor.Faithful
, Functor.EssSurj
, Functor.IsEquivalence
, Functor.ReflectsIsomorphisms
. Deprecated aliases are introduced for the previous names.
@@ -60,11 +60,11 @@ def Component.ι (j : ConnectedComponents J) : Component j ⥤ J :=
#align category_theory.component.ι CategoryTheory.Component.ι
set_option autoImplicit true in
-instance : Full (Component.ι (j : ConnectedComponents J)) :=
+instance : Functor.Full (Component.ι (j : ConnectedComponents J)) :=
FullSubcategory.full _
set_option autoImplicit true in
-instance : Faithful (Component.ι (j : ConnectedComponents J)) :=
+instance : Functor.Faithful (Component.ι (j : ConnectedComponents J)) :=
FullSubcategory.faithful _
/-- Each connected component of the category is nonempty. -/
@@ -130,7 +130,7 @@ theorem inclusion_comp_decomposedTo (j : ConnectedComponents J) :
rfl
#align category_theory.inclusion_comp_decomposed_to CategoryTheory.inclusion_comp_decomposedTo
-instance : Full (decomposedTo J)
+instance : (decomposedTo J).Full
where
preimage := by
rintro ⟨j', X, hX⟩ ⟨k', Y, hY⟩ f
@@ -148,15 +148,15 @@ instance : Full (decomposedTo J)
subst this
rfl
-instance : Faithful (decomposedTo J) where
+instance : (decomposedTo J).Faithful where
map_injective := by
rintro ⟨_, j, rfl⟩ ⟨_, k, hY⟩ ⟨f⟩ ⟨_⟩ rfl
rfl
-instance : EssSurj (decomposedTo J) where mem_essImage j := ⟨⟨_, j, rfl⟩, ⟨Iso.refl _⟩⟩
+instance : (decomposedTo J).EssSurj where mem_essImage j := ⟨⟨_, j, rfl⟩, ⟨Iso.refl _⟩⟩
-instance : IsEquivalence (decomposedTo J) :=
- Equivalence.ofFullyFaithfullyEssSurj _
+instance : (decomposedTo J).IsEquivalence :=
+ Functor.IsEquivalence.ofFullyFaithfullyEssSurj _
-- Porting note: it was originally @[simps (config := { rhsMd := semireducible }) Functor]
/-- This gives that any category is equivalent to a disjoint union of connected categories. -/
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -33,7 +33,6 @@ namespace CategoryTheory
attribute [instance 100] IsConnected.is_nonempty
variable {J : Type u₁} [Category.{v₁} J]
-
variable {C : Type u₂} [Category.{u₁} C]
/-- This type indexes the connected components of the category `J`. -/
... or reduce its scope (the full removal is not as obvious).
@@ -22,9 +22,6 @@ particular `Decomposed J` is the category (definitionally) given by the sigma-ty
components of `J`, and it is shown that this is equivalent to `J`.
-/
-set_option autoImplicit true
-
-
universe v₁ v₂ v₃ u₁ u₂
noncomputable section
@@ -52,6 +49,7 @@ def Component (j : ConnectedComponents J) : Type u₁ :=
FullSubcategory fun k => Quotient.mk'' k = j
#align category_theory.component CategoryTheory.Component
+set_option autoImplicit true in
instance : Category (Component (j : ConnectedComponents J)) :=
FullSubcategory.category _
@@ -62,9 +60,11 @@ def Component.ι (j : ConnectedComponents J) : Component j ⥤ J :=
fullSubcategoryInclusion _
#align category_theory.component.ι CategoryTheory.Component.ι
+set_option autoImplicit true in
instance : Full (Component.ι (j : ConnectedComponents J)) :=
FullSubcategory.full _
+set_option autoImplicit true in
instance : Faithful (Component.ι (j : ConnectedComponents J)) :=
FullSubcategory.faithful _
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -55,7 +55,7 @@ def Component (j : ConnectedComponents J) : Type u₁ :=
instance : Category (Component (j : ConnectedComponents J)) :=
FullSubcategory.category _
---Porting note: it was originally @[simps (config := { rhsMd := semireducible })]
+-- Porting note: it was originally @[simps (config := { rhsMd := semireducible })]
/-- The inclusion functor from a connected component to the whole category. -/
@[simps!]
def Component.ι (j : ConnectedComponents J) : Component j ⥤ J :=
@@ -118,7 +118,7 @@ abbrev inclusion (j : ConnectedComponents J) : Component j ⥤ Decomposed J :=
Sigma.incl _
#align category_theory.inclusion CategoryTheory.inclusion
---Porting note: it was originally @[simps (config := { rhsMd := semireducible })]
+-- Porting note: it was originally @[simps (config := { rhsMd := semireducible })]
/-- The forward direction of the equivalence between the decomposed category and the original. -/
@[simps!]
def decomposedTo (J : Type u₁) [Category.{v₁} J] : Decomposed J ⥤ J :=
@@ -159,7 +159,7 @@ instance : EssSurj (decomposedTo J) where mem_essImage j := ⟨⟨_, j, rfl⟩,
instance : IsEquivalence (decomposedTo J) :=
Equivalence.ofFullyFaithfullyEssSurj _
--- porting note: it was originally @[simps (config := { rhsMd := semireducible }) Functor]
+-- Porting note: it was originally @[simps (config := { rhsMd := semireducible }) Functor]
/-- This gives that any category is equivalent to a disjoint union of connected categories. -/
@[simps! functor]
def decomposedEquiv : Decomposed J ≌ J :=
In this pull request, I have systematically eliminated the leading whitespace preceding the colon (:
) within all unlabelled or unclassified porting notes. This adjustment facilitates a more efficient review process for the remaining notes by ensuring no entries are overlooked due to formatting inconsistencies.
@@ -55,7 +55,7 @@ def Component (j : ConnectedComponents J) : Type u₁ :=
instance : Category (Component (j : ConnectedComponents J)) :=
FullSubcategory.category _
---porting note : it was originally @[simps (config := { rhsMd := semireducible })]
+--Porting note: it was originally @[simps (config := { rhsMd := semireducible })]
/-- The inclusion functor from a connected component to the whole category. -/
@[simps!]
def Component.ι (j : ConnectedComponents J) : Component j ⥤ J :=
@@ -118,7 +118,7 @@ abbrev inclusion (j : ConnectedComponents J) : Component j ⥤ Decomposed J :=
Sigma.incl _
#align category_theory.inclusion CategoryTheory.inclusion
---porting note : it was originally @[simps (config := { rhsMd := semireducible })]
+--Porting note: it was originally @[simps (config := { rhsMd := semireducible })]
/-- The forward direction of the equivalence between the decomposed category and the original. -/
@[simps!]
def decomposedTo (J : Type u₁) [Category.{v₁} J] : Decomposed J ⥤ J :=
Many proofs use the "stream of consciousness" style from Lean 3, rather than have ... :=
or suffices ... from/by
.
This PR updates a fraction of these to the preferred Lean 4 style.
I think a good goal would be to delete the "deferred" versions of have
, suffices
, and let
at the bottom of Mathlib.Tactic.Have
(Anyone who would like to contribute more cleanup is welcome to push directly to this branch.)
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -136,9 +136,9 @@ instance : Full (decomposedTo J)
preimage := by
rintro ⟨j', X, hX⟩ ⟨k', Y, hY⟩ f
dsimp at f
- have : j' = k'
- rw [← hX, ← hY, Quotient.eq'']
- exact Relation.ReflTransGen.single (Or.inl ⟨f⟩)
+ have : j' = k' := by
+ rw [← hX, ← hY, Quotient.eq'']
+ exact Relation.ReflTransGen.single (Or.inl ⟨f⟩)
subst this
exact Sigma.SigmaHom.mk f
witness := by
Autoimplicits are highly controversial and also defeat the performance-improving work in #6474.
The intent of this PR is to make autoImplicit
opt-in on a per-file basis, by disabling it in the lakefile and enabling it again with set_option autoImplicit true
in the few files that rely on it.
That also keeps this PR small, as opposed to attempting to "fix" files to not need it any more.
I claim that many of the uses of autoImplicit
in these files are accidental; situations such as:
variables
are in scope, but pasting the lemma in the wrong sectionHaving set_option autoImplicit false
as the default prevents these types of mistake being made in the 90% of files where autoImplicit
s are not used at all, and causes them to be caught by CI during review.
I think there were various points during the port where we encouraged porters to delete the universes u v
lines; I think having autoparams for universe variables only would cover a lot of the cases we actually use them, while avoiding any real shortcomings.
A Zulip poll (after combining overlapping votes accordingly) was in favor of this change with 5:5:18
as the no:dontcare:yes
vote ratio.
While this PR was being reviewed, a handful of files gained some more likely-accidental autoImplicits. In these places, set_option autoImplicit true
has been placed locally within a section, rather than at the top of the file.
@@ -22,6 +22,8 @@ particular `Decomposed J` is the category (definitionally) given by the sigma-ty
components of `J`, and it is shown that this is equivalent to `J`.
-/
+set_option autoImplicit true
+
universe v₁ v₂ v₃ u₁ u₂
@@ -2,17 +2,14 @@
Copyright (c) 2020 Bhavik Mehta. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Bhavik Mehta
-
-! This file was ported from Lean 3 source module category_theory.connected_components
-! leanprover-community/mathlib commit 70fd9563a21e7b963887c9360bd29b2393e6225a
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.Data.List.Chain
import Mathlib.CategoryTheory.IsConnected
import Mathlib.CategoryTheory.Sigma.Basic
import Mathlib.CategoryTheory.FullSubcategory
+#align_import category_theory.connected_components from "leanprover-community/mathlib"@"70fd9563a21e7b963887c9360bd29b2393e6225a"
+
/-!
# Connected components of a category
@@ -160,7 +160,7 @@ instance : EssSurj (decomposedTo J) where mem_essImage j := ⟨⟨_, j, rfl⟩,
instance : IsEquivalence (decomposedTo J) :=
Equivalence.ofFullyFaithfullyEssSurj _
--- portint note: it was originally @[simps (config := { rhsMd := semireducible }) Functor]
+-- porting note: it was originally @[simps (config := { rhsMd := semireducible }) Functor]
/-- This gives that any category is equivalent to a disjoint union of connected categories. -/
@[simps! functor]
def decomposedEquiv : Decomposed J ≌ J :=
See discussion at https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/mathport.20drops.20priorities.20in.20.60attribute.20.5Binstance.5D.60. mathport
has been dropping the priorities on instances when using the attribute
command.
This PR adds back all the priorities, except for local attribute
, and instances involving coercions, which I didn't want to mess with.
Co-authored-by: Scott Morrison <scott.morrison@gmail.com>
@@ -34,7 +34,7 @@ open CategoryTheory.Category
namespace CategoryTheory
-attribute [instance] IsConnected.is_nonempty
+attribute [instance 100] IsConnected.is_nonempty
variable {J : Type u₁} [Category.{v₁} J]
@@ -12,7 +12,6 @@ import Mathlib.Data.List.Chain
import Mathlib.CategoryTheory.IsConnected
import Mathlib.CategoryTheory.Sigma.Basic
import Mathlib.CategoryTheory.FullSubcategory
-import Mathlib.Tactic.LibrarySearch
/-!
# Connected components of a category
The unported dependencies are