Full and faithful functors #
We define typeclasses full
and faithful
, decorating functors.
Use F.map_injective
to retrieve the fact that F.map
is injective when [faithful F]
,
and F.preimage
to obtain preimages of morphisms when [full F]
.
We prove some basic "cancellation" lemmas for full and/or faithful functors.
See category_theory.equivalence
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
- 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.bundled_hom.forget₂_full
- CommRing.category_theory.forget₂.category_theory.full
- 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
- 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.ulift_functor_faithful
- category_theory.concrete_category.forget_faithful
- category_theory.forget_faithful
The specified preimage of a morphism under a full functor.
Equations
If F : C ⥤ D
is fully faithful, every isomorphism F.obj X ≅ F.obj Y
has a preimage.
Equations
- category_theory.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)) _
If F
is full, and naturally isomorphic to some F'
, then F'
is also full.
Alias of faithful.of_comp_iso
.
Alias of 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), category_theory.preimage_iso (comp_iso.app X)) _