Full and faithful functors #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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 usefull_of_exists
andfull_of_surjective
.
See category_theory.equivalence.of_fully_faithful_ess_surj
for the fact that a functor is an
equivalence if and only if it is fully faithful and essentially surjective.
- preimage : Π {X Y : C}, (F.obj X ⟶ F.obj Y) → (X ⟶ Y)
- witness' : (∀ {X Y : C} (f : F.obj X ⟶ F.obj Y), F.map (category_theory.full.preimage f) = f) . "obviously"
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 https://stacks.math.columbia.edu/tag/001C.
Instances of this typeclass
- category_theory.equivalence.full_of_equivalence
- category_theory.full.id
- category_theory.full.comp
- category_theory.induced_category.full
- category_theory.full_subcategory.full
- category_theory.full_subcategory.map.full
- category_theory.full_subcategory.lift.full
- category_theory.functor.ess_image_inclusion.full
- category_theory.full.to_ess_image
- category_theory.functor.op.category_theory.full
- category_theory.ulift_functor_full
- category_theory.yoneda.yoneda_full
- category_theory.coyoneda.coyoneda_full
- category_theory.limits.cones.functoriality_full
- category_theory.limits.cocones.functoriality_full
- category_theory.Type_to_Cat.full
- category_theory.from_skeleton.full
- category_theory.bundled_hom.forget₂_full
- CommRing.category_theory.forget₂.category_theory.full
- category_theory.LeftExactFunctor.forget.full
- category_theory.RightExactFunctor.forget.full
- category_theory.ExactFunctor.forget.full
- category_theory.LeftExactFunctor.of_exact.full
- category_theory.RightExactFunctor.of_exact.full
- category_theory.AdditiveFunctor.forget.full
- category_theory.AdditiveFunctor.of_left_exact.full
- category_theory.AdditiveFunctor.of_right_exact.full
- category_theory.AdditiveFunctor.of_exact.full
Instances of other typeclasses for category_theory.full
- category_theory.full.has_sizeof_inst
- map_injective' : (∀ {X Y : C}, function.injective F.map) . "obviously"
A functor F : C ⥤ D
is faithful if for each X Y : C
, F.map
is injective.
See https://stacks.math.columbia.edu/tag/001C.
Instances of this typeclass
- category_theory.equivalence.faithful_of_equivalence
- category_theory.faithful.id
- category_theory.faithful.comp
- category_theory.induced_category.faithful
- category_theory.full_subcategory.faithful
- category_theory.full_subcategory.map.faithful
- category_theory.full_subcategory.lift.faithful
- category_theory.faithful_whiskering_right_obj
- category_theory.functor.ess_image_inclusion.faithful
- category_theory.faithful.to_ess_image
- category_theory.functor.op.category_theory.faithful
- category_theory.functor.right_op_faithful
- category_theory.functor.left_op_faithful
- category_theory.functor.const.category_theory.faithful
- category_theory.ulift_functor_faithful
- category_theory.yoneda.yoneda_faithful
- category_theory.coyoneda.coyoneda_faithful
- category_theory.limits.cones.functoriality_faithful
- category_theory.limits.cocones.functoriality_faithful
- category_theory.Type_to_Cat.faithful
- category_theory.from_skeleton.faithful
- category_theory.thin_skeleton.to_thin_skeleton_faithful
- category_theory.structured_arrow.proj_faithful
- category_theory.costructured_arrow.proj_faithful
- category_theory.over.forget_faithful
- category_theory.under.forget_faithful
- category_theory.concrete_category.forget_faithful
- category_theory.forget₂_faithful
- category_theory.LeftExactFunctor.forget.faithful
- category_theory.RightExactFunctor.forget.faithful
- category_theory.ExactFunctor.forget.faithful
- category_theory.LeftExactFunctor.of_exact.faithful
- category_theory.RightExactFunctor.of_exact.faithful
- category_theory.AdditiveFunctor.forget.faithful
- category_theory.AdditiveFunctor.of_left_exact.faithful
- category_theory.AdditiveFunctor.of_right_exact.faithful
- category_theory.AdditiveFunctor.of_exact.faithful
The specified preimage of a morphism under a full functor.
Equations
Deduce that F
is full from the existence of preimages, using choice.
Deduce that F
is full from surjectivity of F.map
, using choice.
Equations
- F.full_of_surjective h = F.full_of_exists h
If F : C ⥤ D
is fully faithful, every isomorphism F.obj X ≅ F.obj Y
has a preimage.
Equations
- F.preimage_iso 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
.
If F
is fully faithful, we have an equivalence of iso-sets X ≅ Y
and F X ≅ F Y
.
We can construct a natural transformation between functors by constructing a natural transformation between those functors composed with a fully faithful functor.
Equations
- category_theory.nat_trans_of_comp_fully_faithful H α = {app := λ (X : C), ⇑((category_theory.equiv_of_fully_faithful 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
- category_theory.nat_iso_of_comp_fully_faithful H i = category_theory.nat_iso.of_components (λ (X : C), ⇑((category_theory.iso_equiv_of_fully_faithful H).symm) (i.app X)) _
Horizontal composition with a fully faithful functor induces a bijection on natural transformations.
Horizontal composition with a fully faithful functor induces a bijection on natural isomorphisms.
Equations
- category_theory.nat_iso.equiv_of_comp_fully_faithful H = {to_fun := λ (e : F ≅ G), category_theory.nat_iso.hcomp e (category_theory.iso.refl H), inv_fun := category_theory.nat_iso_of_comp_fully_faithful H _inst_5, left_inv := _, right_inv := _}
If F
is full, and naturally isomorphic to some F'
, then F'
is also full.
Alias of category_theory.faithful.of_comp_iso
.
Alias of category_theory.faithful.of_comp_eq
.
“Divide” a functor by a faithful functor.
If F ⋙ G
is full and G
is faithful, then F
is full.
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
- category_theory.fully_faithful_cancel_right H comp_iso = category_theory.nat_iso.of_components (λ (X : C), H.preimage_iso (comp_iso.app X)) _