Full and faithful functors #
We define typeclasses Full
and Faithful
, decorating functors. These typeclasses
carry no data. However, we also introduce a structure Functor.FullyFaithful
which
contains the data of the inverse map (F.obj X ⟶ F.obj Y) ⟶ (X ⟶ Y)
of the
map induced on morphisms by a functor F
.
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
.
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.
See https://stacks.math.columbia.edu/tag/001C.
- map_surjective : ∀ {X Y : C}, Function.Surjective F.map
Instances
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.
- map_injective : ∀ {X Y : C}, Function.Injective F.map
F.map
is injective for eachX Y : C
.
Instances
F.map
is injective for each X Y : C
.
The choice of a preimage of a morphism under a full functor.
Equations
- F.preimage f = ⋯.choose
Instances For
If F : C ⥤ D
is fully faithful, every isomorphism F.obj X ≅ F.obj Y
has a preimage.
Equations
- F.preimageIso f = { hom := F.preimage f.hom, inv := F.preimage f.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
Structure containing the data of inverse map (F.obj X ⟶ F.obj Y) ⟶ (X ⟶ Y)
of F.map
in order to express that F
is a fully faithful functor.
The inverse map
(F.obj X ⟶ F.obj Y) ⟶ (X ⟶ Y)
ofF.map
.
Instances For
A FullyFaithful
structure can be obtained from the assumption the F
is both
full and faithful.
Equations
- CategoryTheory.Functor.FullyFaithful.ofFullyFaithful F = { preimage := fun {X Y : C} => F.preimage, map_preimage := ⋯, preimage_map := ⋯ }
Instances For
The identity functor is fully faithful.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The equivalence (X ⟶ Y) ≃ (F.obj X ⟶ F.obj Y)
given by h : F.FullyFaithful
.
Equations
- hF.homEquiv = { toFun := F.map, invFun := hF.preimage, left_inv := ⋯, right_inv := ⋯ }
Instances For
Equations
- ⋯ = ⋯
The unique isomorphism X ≅ Y
which induces an isomorphism F.obj X ≅ F.obj Y
when hF : F.FullyFaithful
.
Equations
- hF.preimageIso e = { hom := hF.preimage e.hom, inv := hF.preimage e.inv, hom_inv_id := ⋯, inv_hom_id := ⋯ }
Instances For
The equivalence (X ≅ Y) ≃ (F.obj X ≅ F.obj Y)
given by h : F.FullyFaithful
.
Equations
- hF.isoEquiv = { toFun := F.mapIso, invFun := hF.preimageIso, left_inv := ⋯, right_inv := ⋯ }
Instances For
Fully faithful functors are stable by composition.
Equations
Instances For
If F ⋙ G
is fully faithful and G
is faithful, then F
is fully faithful.
Equations
Instances For
If the image of a morphism under a fully faithful functor in an isomorphism, then the original morphisms is also an isomorphism.
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
Equations
- ⋯ = ⋯
If F
is full, and naturally isomorphic to some F'
, then F'
is also full.
“Divide” a functor by a faithful functor.
Equations
- CategoryTheory.Functor.Faithful.div F G obj h_obj map h_map = { obj := obj, map := map, map_id := ⋯, map_comp := ⋯ }
Instances For
Equations
- ⋯ = ⋯
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
- CategoryTheory.Functor.fullyFaithfulCancelRight H comp_iso = CategoryTheory.NatIso.ofComponents (fun (X : C) => H.preimageIso (comp_iso.app X)) ⋯
Instances For
Alias of CategoryTheory.Functor.Full
.
A functor F : C ⥤ D
is full if for each X Y : C
, F.map
is surjective.
See https://stacks.math.columbia.edu/tag/001C.
Instances For
Alias of CategoryTheory.Functor.Faithful
.
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 For
Alias of CategoryTheory.Functor.preimage_id
.
Alias of CategoryTheory.Functor.preimage_comp
.
Alias of CategoryTheory.Functor.preimage_map
.
Alias of CategoryTheory.Functor.Faithful.of_comp
.
Alias of CategoryTheory.Functor.Full.of_iso
.
If F
is full, and naturally isomorphic to some F'
, then F'
is also full.
Alias of CategoryTheory.Functor.Faithful.of_iso
.
Alias of CategoryTheory.Functor.Faithful.div
.
“Divide” a functor by a faithful functor.
Instances For
Alias of CategoryTheory.Functor.Faithful.div_comp
.
Alias of CategoryTheory.Functor.Full.of_comp_faithful
.
If F ⋙ G
is full and G
is faithful, then F
is full.
Alias of CategoryTheory.Functor.Full.of_comp_faithful_iso
.
If F ⋙ G
is full and G
is faithful, then F
is full.
Alias of CategoryTheory.Functor.fullyFaithfulCancelRight
.
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
Instances For
Alias of CategoryTheory.Functor.fullyFaithfulCancelRight_hom_app
.
Alias of CategoryTheory.Functor.fullyFaithfulCancelRight_inv_app
.
Alias of CategoryTheory.Functor.map_preimage
.