Full and faithful functors #
We define typeclasses Full
and Faithful
, decorating functors.
Main definitions and results #
- Use
F.map_injective
to retrieve the fact thatF.map
is injective when[Faithful F]
. - Similarly,
F.map_surjective
states thatF.map
is surjective when[Full F]
. - Use
F.preimage
to obtain preimages of morphisms when[Full F]
. - We prove some basic "cancellation" lemmas for full and/or faithful functors, as well as a
construction for "dividing" a functor by a faithful functor, see
Faithful.div
. Full F
carries data, so definitional properties of the preimage can be used when usingF.preimage
. To obtain an instance ofFull F
non-constructively, you can usefullOfExists
andfullOfSurjective
.
See CategoryTheory.Equivalence.of_fullyFaithful_ess_surj
for the fact that a functor is an
equivalence if and only if it is fully faithful and essentially surjective.
A functor F : C ⥤ D
is full if for each X Y : C
, F.map
is surjective.
In fact, we use a constructive definition, so the Full F
typeclass contains data,
specifying a particular preimage of each f : F.obj X ⟶ F.obj Y
.
See
The data of a preimage for every
f : F.obj X ⟶ F.obj Y
.- witness : ∀ {X Y : C} (f : F.obj X ⟶ F.obj Y), F.map (CategoryTheory.Full.preimage f) = f
The property that
Full.preimage f
of maps tof
viaF.map
.
Instances
- AddCommMonCat.forget₂Full
- CategoryTheory.BundledHom.forget₂Full
- CategoryTheory.Comma.instFullCommaCompCommaCategoryCommaCommaCategoryPreLeft
- CategoryTheory.Comma.instFullCommaCompCommaCategoryCommaCommaCategoryPreRight
- CategoryTheory.CostructuredArrow.instFullCostructuredArrowCompInstCategoryCostructuredArrowCostructuredArrowInstCategoryCostructuredArrowPre
- CategoryTheory.CostructuredArrow.instFullCostructuredArrowInstCategoryCostructuredArrowCostructuredArrowCompObjToQuiverToCategoryStructToQuiverToCategoryStructToPrefunctorInstCategoryCostructuredArrowPost
- CategoryTheory.CostructuredArrow.instFullCostructuredArrowInstCategoryCostructuredArrowOverInstCategoryOverToOver
- CategoryTheory.Coyoneda.coyonedaFull
- CategoryTheory.Equivalence.fullOfEquivalence
- CategoryTheory.Full.comp
- CategoryTheory.Full.id
- CategoryTheory.Full.toEssImage
- CategoryTheory.FullSubcategory.full
- CategoryTheory.FullSubcategory.full_map
- CategoryTheory.Functor.instFullEssImageSubcategoryInstCategoryEssImageSubcategoryEssImageInclusion
- CategoryTheory.Functor.instFullOppositeOppositeOppositeOppositeOp
- CategoryTheory.InducedCategory.full
- CategoryTheory.Limits.Cocones.functorialityFull
- CategoryTheory.Limits.Cones.functorialityFull
- CategoryTheory.StructuredArrow.instFullStructuredArrowCompInstCategoryStructuredArrowStructuredArrowInstCategoryStructuredArrowPre
- CategoryTheory.StructuredArrow.instFullStructuredArrowInstCategoryStructuredArrowStructuredArrowObjToQuiverToCategoryStructToQuiverToCategoryStructToPrefunctorCompInstCategoryStructuredArrowPost
- CategoryTheory.StructuredArrow.instFullStructuredArrowInstCategoryStructuredArrowUnderInstCategoryUnderToUnder
- CategoryTheory.Yoneda.yonedaFull
- CategoryTheory.instFullFullSubcategoryCategoryLift
- CategoryTheory.instFullSkeletonInstCategorySkeletonFromSkeleton
- CategoryTheory.instFullTypeTypesCatCategoryTypeToCat
- CategoryTheory.uliftFunctorFull
- CommMonCat.forget₂Full
- CommRingCat.instFullCommRingCatInstCommRingCatLargeCategoryCommSemiRingCatInstCommSemiRingCatLargeCategoryForget₂InstConcreteCategoryCommRingCatInstCommRingCatLargeCategoryInstConcreteCategoryCommSemiRingCatInstCommSemiRingCatLargeCategoryHasForgetToCommSemiRingCat
A functor F : C ⥤ D
is faithful if for each X Y : C
, F.map
is injective.
See
- map_injective : ∀ {X Y : C}, Function.Injective F.map
F.map
is injective for eachX Y : C
.
Instances
- CategoryTheory.Comma.instFaithfulCommaCompCommaCategoryCommaCommaCategoryPreLeft
- CategoryTheory.Comma.instFaithfulCommaCompCommaCategoryCommaCommaCategoryPreRight
- CategoryTheory.CostructuredArrow.instFaithfulCostructuredArrowCompInstCategoryCostructuredArrowCostructuredArrowInstCategoryCostructuredArrowPre
- CategoryTheory.CostructuredArrow.instFaithfulCostructuredArrowInstCategoryCostructuredArrowCostructuredArrowCompObjToQuiverToCategoryStructToQuiverToCategoryStructToPrefunctorInstCategoryCostructuredArrowPost
- CategoryTheory.CostructuredArrow.instFaithfulCostructuredArrowInstCategoryCostructuredArrowOverInstCategoryOverToOver
- CategoryTheory.CostructuredArrow.proj_faithful
- CategoryTheory.Coyoneda.coyoneda_faithful
- CategoryTheory.Equivalence.faithfulOfEquivalence
- CategoryTheory.Faithful.comp
- CategoryTheory.Faithful.id
- CategoryTheory.Faithful.toEssImage
- CategoryTheory.FullSubcategory.faithful
- CategoryTheory.FullSubcategory.faithful_map
- CategoryTheory.Functor.instFaithfulEssImageSubcategoryInstCategoryEssImageSubcategoryEssImageInclusion
- CategoryTheory.Functor.instFaithfulFunctorCategoryConst
- CategoryTheory.Functor.instFaithfulOppositeOppositeOppositeOppositeOp
- CategoryTheory.Functor.leftOp_faithful
- CategoryTheory.Functor.rightOp_faithful
- CategoryTheory.InducedCategory.faithful
- CategoryTheory.Limits.Cocones.functoriality_faithful
- CategoryTheory.Limits.Cones.functoriality_faithful
- CategoryTheory.Over.forget_faithful
- CategoryTheory.StructuredArrow.instFaithfulStructuredArrowCompInstCategoryStructuredArrowStructuredArrowInstCategoryStructuredArrowPre
- CategoryTheory.StructuredArrow.instFaithfulStructuredArrowInstCategoryStructuredArrowStructuredArrowObjToQuiverToCategoryStructToQuiverToCategoryStructToPrefunctorCompInstCategoryStructuredArrowPost
- CategoryTheory.StructuredArrow.instFaithfulStructuredArrowInstCategoryStructuredArrowUnderInstCategoryUnderToUnder
- CategoryTheory.StructuredArrow.proj_faithful
- CategoryTheory.ThinSkeleton.toThinSkeleton_faithful
- CategoryTheory.Under.forget_faithful
- CategoryTheory.Yoneda.yoneda_faithful
- CategoryTheory.faithful_whiskeringRight_obj
- CategoryTheory.forget₂_faithful
- CategoryTheory.instFaithfulFullSubcategoryCategoryLift
- CategoryTheory.instFaithfulSkeletonInstCategorySkeletonFromSkeleton
- CategoryTheory.instFaithfulTypeTypesCatCategoryTypeToCat
- CategoryTheory.uliftFunctor_faithful
The specified preimage of a morphism under a full functor.
Equations
- F.preimage f = CategoryTheory.Full.preimage f
Deduce that F
is full from the existence of preimages, using choice.
Equations
- One or more equations did not get rendered due to their size.
Deduce that F
is full from surjectivity of F.map
, using choice.
Equations
If F : C ⥤ D
is fully faithful, every isomorphism F.obj X ≅ F.obj Y
has a preimage.
Equations
- CategoryTheory.Functor.preimageIso F f = { hom := F.preimage f.hom, inv := F.preimage f.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
If the image of a morphism under a fully faithful functor in an isomorphism, then the original morphisms is also an isomorphism.
If F
is fully faithful, we have an equivalence of hom-sets X ⟶ Y
and F X ⟶ F Y
.
Equations
- CategoryTheory.equivOfFullyFaithful F = { toFun := fun (f : X ⟶ Y) => F.map f, invFun := fun (f : F.obj X ⟶ F.obj Y) => F.preimage f, left_inv := ⋯, right_inv := ⋯ }
If F
is fully faithful, we have an equivalence of iso-sets X ≅ Y
and F X ≅ F Y
.
Equations
- One or more equations did not get rendered due to their size.
We can construct a natural transformation between functors by constructing a natural transformation between those functors composed with a fully faithful functor.
Equations
- CategoryTheory.natTransOfCompFullyFaithful H α = { app := fun (X : C) => (CategoryTheory.equivOfFullyFaithful H).symm (α.app X), naturality := ⋯ }
We can construct a natural isomorphism between functors by constructing a natural isomorphism between those functors composed with a fully faithful functor.
Equations
- CategoryTheory.natIsoOfCompFullyFaithful H i = CategoryTheory.NatIso.ofComponents (fun (X : C) => (CategoryTheory.isoEquivOfFullyFaithful H).symm (i.app X)) ⋯
Horizontal composition with a fully faithful functor induces a bijection on natural transformations.
Equations
- One or more equations did not get rendered due to their size.
Horizontal composition with a fully faithful functor induces a bijection on natural isomorphisms.
Equations
- One or more equations did not get rendered due to their size.
Equations
- CategoryTheory.Full.id = { preimage := fun {X Y : C} (f : (CategoryTheory.Functor.id C).obj X ⟶ (CategoryTheory.Functor.id C).obj Y) => f, witness := ⋯ }
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If F
is full, and naturally isomorphic to some F'
, then F'
is also full.
Equations
- One or more equations did not get rendered due to their size.
Alias of CategoryTheory.Faithful.of_comp_iso
.
Alias of CategoryTheory.Faithful.of_comp_eq
.
“Divide” a functor by a faithful functor.
Equations
- CategoryTheory.Faithful.div F G obj h_obj map h_map = { toPrefunctor := { obj := obj, map := map }, map_id := ⋯, map_comp := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
If F ⋙ G
is full and G
is faithful, then F
is full.
Equations
- CategoryTheory.Full.ofCompFaithful F G = { preimage := fun {X Y : C} (f : F.obj X ⟶ F.obj Y) => (CategoryTheory.Functor.comp F G).preimage (G.map f), witness := ⋯ }
If F ⋙ G
is full and G
is faithful, then F
is full.
Given a natural isomorphism between F ⋙ H
and G ⋙ H
for a fully faithful functor H
, we
can 'cancel' it to give a natural iso between F
and G
.
Equations
- CategoryTheory.fullyFaithfulCancelRight H comp_iso = CategoryTheory.NatIso.ofComponents (fun (X : C) => CategoryTheory.Functor.preimageIso H (comp_iso.app X)) ⋯