Separating and detecting sets #
There are several non-equivalent notions of a generator of a category. Here, we consider two of them:
- We say that 
P : ObjectProperty Cis a separating set if the functorsC(G, -)forGsuch thatP Gare collectively faithful, i.e., ifh ≫ f = h ≫ gfor allhwith domain satisfyingPimpliesf = g. - We say that 
P : ObjectProperty Cis a detecting set if the functorsC(G, -)collectively reflect isomorphisms, i.e., if anyhwith domain satisfyingPuniquely factors throughf, thenfis an isomorphism. 
There are, of course, also the dual notions of coseparating and codetecting sets.
Main results #
We
- define predicates 
IsSeparating,IsCoseparating,IsDetectingandIsCodetectingonObjectProperty C; - show that equivalences of categories preserves these notions;
 - show that separating and coseparating are dual notions;
 - show that detecting and codetecting are dual notions;
 - show that if 
Chas equalizers, then detecting implies separating; - show that if 
Chas coequalizers, then codetecting implies coseparating; - show that if 
Cis balanced, then separating implies detecting and coseparating implies codetecting; - show that 
∅is separating if and only if∅is coseparating if and only ifCis thin; - show that 
∅is detecting if and only if∅is codetecting if and only ifCis a groupoid; - define predicates 
IsSeparator,IsCoseparator,IsDetectorandIsCodetectoras the singleton counterparts to the definitions for sets above and restate the above results in this situation; - show that 
Gis a separator if and only ifcoyoneda.obj (op G)is faithful (and the dual); - show that 
Gis a detector if and only ifcoyoneda.obj (op G)reflects isomorphisms (and the dual); - show that 
CisWellPoweredif it admits small pullbacks and a detector; - define corresponding typeclasses 
HasSeparator,HasCoseparator,HasDetectorandHasCodetectoron categories and prove analogous results for these. 
Examples #
See the files CategoryTheory.Generator.Presheaf and CategoryTheory.Generator.Sheaf.
We say that P : ObjectProperty C is separating if the functors C(G, -)
for G : C such that P G are collectively faithful,
i.e., if h ≫ f = h ≫ g for all h with domain in 𝒢 implies f = g.
Equations
- P.IsSeparating = ∀ ⦃X Y : C⦄ (f g : X ⟶ Y), (∀ (G : C), P G → ∀ (h : G ⟶ X), CategoryTheory.CategoryStruct.comp h f = CategoryTheory.CategoryStruct.comp h g) → f = g
 
Instances For
We say that P : ObjectProperty C is coseparating if the functors C(-, G)
for G : C such that P G are collectively faithful,
i.e., if f ≫ h = g ≫ h for all h with codomain in 𝒢 implies f = g.
Equations
- P.IsCoseparating = ∀ ⦃X Y : C⦄ (f g : X ⟶ Y), (∀ (G : C), P G → ∀ (h : Y ⟶ G), CategoryTheory.CategoryStruct.comp f h = CategoryTheory.CategoryStruct.comp g h) → f = g
 
Instances For
We say that P : ObjectProperty C is detecting if the functors C(G, -)
for G : C such that P G collectively reflect isomorphisms,
i.e., if any h with domain G that P G uniquely factors through f,
then f is an isomorphism.
Equations
- P.IsDetecting = ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ (G : C), P G → ∀ (h : G ⟶ Y), ∃! h' : G ⟶ X, CategoryTheory.CategoryStruct.comp h' f = h) → CategoryTheory.IsIso f
 
Instances For
We say that P : ObjectProperty C is codetecting if the functors C(-, G)
for G : C such that P G collectively reflect isomorphisms,
i.e., if any h with codomain G such that P G uniquely factors through f,
then f is an isomorphism.
Equations
- P.IsCodetecting = ∀ ⦃X Y : C⦄ (f : X ⟶ Y), (∀ (G : C), P G → ∀ (h : X ⟶ G), ∃! h' : Y ⟶ G, CategoryTheory.CategoryStruct.comp f h' = h) → CategoryTheory.IsIso f
 
Instances For
Given P : ObjectProperty C and X : C, this is the map which
sends i : CostructuredArrow P.ι X to i.left.obj : C. The coproduct
of this family is the source of the morphism P.coproductFrom X.
Equations
- P.coproductFromFamily X i = i.left.obj
 
Instances For
Given P : ObjectProperty C and X : C, this is the coproduct of
all the morphisms Y ⟶ X such that P Y holds.
Equations
- P.coproductFrom X = CategoryTheory.Limits.Sigma.desc fun (i : CategoryTheory.CostructuredArrow P.ι X) => i.hom
 
Instances For
The inclusion morphisms to ∐ (P.coproductFromFamily X).
Equations
Instances For
Given P : ObjectProperty C and X : C, this is the map which
sends i : StructuredArrow P.ι X to i.right.obj : C. The product
of this family is the target of the morphism P.productTo X.
Equations
- P.productToFamily X i = i.right.obj
 
Instances For
Given P : ObjectProperty C and X : C, this is the product of
all the morphisms X ⟶ Y such that P Y holds.
Equations
- P.productTo X = CategoryTheory.Limits.Pi.lift fun (i : CategoryTheory.StructuredArrow X P.ι) => i.hom
 
Instances For
The projection morphisms from ∏ᶜ (P.productToFamily X).
Equations
Instances For
An ingredient of the proof of the Special Adjoint Functor Theorem: a complete well-powered category with a small coseparating set has an initial object.
In fact, it follows from the Special Adjoint Functor Theorem that C is already cocomplete,
see hasColimits_of_hasLimits_of_isCoseparating.
An ingredient of the proof of the Special Adjoint Functor Theorem: a cocomplete well-copowered category with a small separating set has a terminal object.
In fact, it follows from the Special Adjoint Functor Theorem that C is already complete, see
hasLimits_of_hasColimits_of_isSeparating.
A category with pullbacks and a small detecting set is well-powered.
We say that G is a separator if the functor C(G, -) is faithful.
Instances For
We say that G is a coseparator if the functor C(-, G) is faithful.
Equations
Instances For
We say that G is a detector if the functor C(G, -) reflects isomorphisms.
Instances For
We say that G is a codetector if the functor C(-, G) reflects isomorphisms.
Instances For
For a category C and an object G : C, G is a separator of C if
the functor C(G, -) is faithful.
While IsSeparator G : Prop is the proposition that G is a separator of C,
an HasSeparator C : Prop is the proposition that such a separator exists.
Note that HasSeparator C is a proposition. It does not designate a favored separator
and merely asserts the existence of one.
- hasSeparator : ∃ (G : C), IsSeparator G
 
Instances
For a category C and an object G : C, G is a coseparator of C if
the functor C(-, G) is faithful.
While IsCoseparator G : Prop is the proposition that G is a coseparator of C,
an HasCoseparator C : Prop is the proposition that such a coseparator exists.
Note that HasCoseparator C is a proposition. It does not designate a favored coseparator
and merely asserts the existence of one.
- hasCoseparator : ∃ (G : C), IsCoseparator G
 
Instances
For a category C and an object G : C, G is a detector of C if
the functor C(G, -) reflects isomorphisms.
While IsDetector G : Prop is the proposition that G is a detector of C,
an HasDetector C : Prop is the proposition that such a detector exists.
Note that HasDetector C is a proposition. It does not designate a favored detector
and merely asserts the existence of one.
- hasDetector : ∃ (G : C), IsDetector G
 
Instances
For a category C and an object G : C, G is a codetector of C if
the functor C(-, G) reflects isomorphisms.
While IsCodetector G : Prop is the proposition that G is a codetector of C,
an HasCodetector C : Prop is the proposition that such a codetector exists.
Note that HasCodetector C is a proposition. It does not designate a favored codetector
and merely asserts the existence of one.
- hasCodetector : ∃ (G : C), IsCodetector G
 
Instances
Given a category C that has a separator (HasSeparator C), separator C is an arbitrarily
chosen separator of C.
Equations
Instances For
Given a category C that has a coseparator (HasCoseparator C), coseparator C is an arbitrarily
chosen coseparator of C.
Equations
Instances For
Given a category C that has a detector (HasDetector C), detector C is an arbitrarily
chosen detector of C.
Equations
Instances For
Given a category C that has a codetector (HasCodetector C), codetector C is an arbitrarily
chosen codetector of C.
Equations
Instances For
Alias of CategoryTheory.ObjectProperty.IsSeparating.
We say that P : ObjectProperty C is separating if the functors C(G, -)
for G : C such that P G are collectively faithful,
i.e., if h ≫ f = h ≫ g for all h with domain in 𝒢 implies f = g.
Instances For
Alias of CategoryTheory.ObjectProperty.IsCoseparating.
We say that P : ObjectProperty C is coseparating if the functors C(-, G)
for G : C such that P G are collectively faithful,
i.e., if f ≫ h = g ≫ h for all h with codomain in 𝒢 implies f = g.
Instances For
Alias of CategoryTheory.ObjectProperty.IsDetecting.
We say that P : ObjectProperty C is detecting if the functors C(G, -)
for G : C such that P G collectively reflect isomorphisms,
i.e., if any h with domain G that P G uniquely factors through f,
then f is an isomorphism.
Instances For
Alias of CategoryTheory.ObjectProperty.IsCodetecting.
We say that P : ObjectProperty C is codetecting if the functors C(-, G)
for G : C such that P G collectively reflect isomorphisms,
i.e., if any h with codomain G such that P G uniquely factors through f,
then f is an isomorphism.
Instances For
Alias of CategoryTheory.ObjectProperty.IsSeparating.of_equivalence.
Alias of CategoryTheory.ObjectProperty.IsCoseparating.of_equivalence.
Alias of CategoryTheory.ObjectProperty.isCoseparating_op_iff.
Alias of CategoryTheory.ObjectProperty.isCoseparating_op_iff.
Alias of CategoryTheory.ObjectProperty.isCodetecting_op_iff.
Alias of CategoryTheory.ObjectProperty.isCodetecting_op_iff.
Alias of CategoryTheory.ObjectProperty.IsDetecting.isSeparating.
Alias of CategoryTheory.ObjectProperty.IsCodetecting.isCoseparating.
Alias of CategoryTheory.ObjectProperty.IsSeparating.isDetecting.
Alias of CategoryTheory.ObjectProperty.IsDetecting.isIso_iff_of_mono.
Alias of CategoryTheory.ObjectProperty.IsCodetecting.isIso_iff_of_epi.
Alias of CategoryTheory.ObjectProperty.IsCoseparating.isCodetecting.
Alias of CategoryTheory.ObjectProperty.isDetecting_iff_isSeparating.
Alias of CategoryTheory.ObjectProperty.isCodetecting_iff_isCoseparating.
Alias of CategoryTheory.ObjectProperty.IsCoseparating.of_le.
Alias of CategoryTheory.ObjectProperty.isThin_of_isSeparating_bot.
Alias of CategoryTheory.ObjectProperty.isSeparating_bot_of_isThin.
Alias of CategoryTheory.ObjectProperty.isThin_of_isCoseparating_bot.
Alias of CategoryTheory.ObjectProperty.isCoseparating_bot_of_isThin.
Alias of CategoryTheory.ObjectProperty.isGroupoid_of_isDetecting_bot.
Alias of CategoryTheory.ObjectProperty.isDetecting_bot_of_isGroupoid.
Alias of CategoryTheory.ObjectProperty.isGroupoid_of_isCodetecting_bot.
Alias of CategoryTheory.ObjectProperty.isCodetecting_bot_of_isGroupoid.
Alias of CategoryTheory.ObjectProperty.isSeparating_iff_epi.
Alias of CategoryTheory.ObjectProperty.isCoseparating_iff_mono.
Alias of CategoryTheory.ObjectProperty.IsSeparating.isSeparator_coproduct.
Alias of CategoryTheory.StructuredArrow.isCoseparating_inverseImage_proj.
Alias of CategoryTheory.CostructuredArrow.isSeparating_inverseImage_proj.