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.reflective.to_full
- 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
- Mon.to_Cat_full
- category_theory.quotient.functor.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
- category_theory.mono_over.forget.category_theory.full
- category_theory.mono_over.full_map
- category_theory.preadditive_yoneda_full
- category_theory.preadditive_coyoneda_full
- category_theory.linear_yoneda_full
- category_theory.linear_coyoneda_full
- category_theory.monoidal_category.full_monoidal_subcategory.full
- category_theory.monoidal_category.full_monoidal_subcategory.map_full
- category_theory.monoidal_category.full_braided_subcategory.full
- category_theory.monoidal_category.full_braided_subcategory.map_full
- fgModule.category_theory.forget₂.category_theory.full
- homological_complex.single.category_theory.full
- chain_complex.single₀.category_theory.full
- cochain_complex.single₀.category_theory.full
- Fintype.incl.full
- Fintype.skeleton.incl.category_theory.full
- Preord_to_Cat.category_theory.full
- simplex_category.skeletal_functor.category_theory.full
- simplex_category.truncated.inclusion.full
- category_theory.idempotents.to_karoubi.category_theory.full
- category_theory.idempotents.karoubi_functor_category_embedding.category_theory.full
- is_open_map.functor_full_of_mono
- category_theory.Groupoid.forget_to_Cat_full
- category_theory.monad.comparison.full
- category_theory.comonad.comparison.full
- category_theory.reflective.comparison_full
- CommRing.category_theory.forget₂.category_theory.full
- CompHaus_to_Top.full
- Profinite_to_CompHaus.full
- Profinite.to_Top.full
- category_theory.SheafOfTypes_to_presheaf.full
- category_theory.Sheaf_to_presheaf.full
- Top.sheaf.forget.full
- category_theory.cover_dense.sites.pullback.full
- category_theory.functor.const.full
- category_theory.subterminal_inclusion.full
- category_theory.with_terminal.incl.category_theory.full
- category_theory.with_initial.incl.category_theory.full
- category_theory.sigma.incl.category_theory.full
- category_theory.component.ι.full
- category_theory.decomposed_to.full
- category_theory.Mat_.embedding.category_theory.full
- category_theory.Mat.equivalence_single_obj_inverse.category_theory.full
- category_theory.localization.whiskering_left_functor'.category_theory.full
- CommMon_.forget₂_Mon_.full
- FinBoolAlg.forget_to_BoolAlg_full
- Module.forget₂_AddCommGroup_full
- algebraic_geometry.SheafedSpace.forget_to_PresheafedSpace.full
- algebraic_geometry.Scheme.forget_to_LocallyRingedSpace.full
- algebraic_geometry.Spec.to_LocallyRingedSpace.category_theory.full
- algebraic_geometry.Spec.full
- algebraic_geometry.AffineScheme.Spec.full
- algebraic_geometry.AffineScheme.forget_to_Scheme.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.reflective.to_faithful
- 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
- Mon.to_Cat_faithful
- category_theory.monoidal_category.tensoring_left.category_theory.faithful
- category_theory.monoidal_category.tensoring_right.category_theory.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
- Action.forget.category_theory.faithful
- Action.forget_monoidal_faithful
- Action.forget_braided_faithful
- category_theory.mono_over.forget.category_theory.faithful
- category_theory.mono_over.faithful_map
- category_theory.mono_over.faithful_exists
- category_theory.subobject.pullback.category_theory.faithful
- category_theory.preadditive_yoneda_faithful
- category_theory.preadditive_coyoneda_faithful
- category_theory.linear_yoneda_faithful
- category_theory.linear_coyoneda_faithful
- category_theory.monoidal_category.full_monoidal_subcategory.faithful
- category_theory.monoidal_category.full_monoidal_subcategory.map_faithful
- category_theory.monoidal_category.full_braided_subcategory.faithful
- category_theory.monoidal_category.full_braided_subcategory.map_faithful
- fgModule.forget₂_monoidal_faithful
- category_theory.graded_object.total.category_theory.faithful
- homological_complex.single.category_theory.faithful
- chain_complex.single₀.category_theory.faithful
- cochain_complex.single₀.category_theory.faithful
- Fintype.incl.faithful
- Fintype.skeleton.incl.category_theory.faithful
- Preord_to_Cat.category_theory.faithful
- simplex_category.skeletal_functor.category_theory.faithful
- simplex_category.truncated.inclusion.faithful
- category_theory.idempotents.to_karoubi.category_theory.faithful
- category_theory.idempotents.karoubi_functor_category_embedding.category_theory.faithful
- category_theory.monad_to_functor.faithful
- category_theory.comonad_to_functor.faithful
- category_theory.monad.forget_faithful
- category_theory.comonad.forget_faithful
- is_open_map.functor_faithful
- category_theory.Groupoid.forget_to_Cat_faithful
- category_theory.monad.comparison.faithful
- category_theory.comonad.comparison_faithful_of_faithful
- CompHaus_to_Top.faithful
- CompHaus_op_to_Frame.faithful
- CompHaus_to_Locale.faithful
- Profinite_to_CompHaus.faithful
- Profinite.to_Top.faithful
- Compactum.forget.faithful
- category_theory.SheafOfTypes_to_presheaf.faithful
- category_theory.Sheaf_to_presheaf.faithful
- Top.sheaf.forget.faithful
- category_theory.cover_dense.sites.pullback.faithful
- category_theory.core.inclusion.category_theory.faithful
- category_theory.subterminal_inclusion.faithful
- category_theory.with_terminal.incl.category_theory.faithful
- category_theory.with_initial.incl.category_theory.faithful
- category_theory.differential_object.forget_faithful
- category_theory.sigma.incl.category_theory.faithful
- category_theory.component.ι.faithful
- category_theory.decomposed_to.faithful
- category_theory.endofunctor.algebra.forget_faithful
- category_theory.endofunctor.coalgebra.forget_faithful
- category_theory.Mat_.embedding.category_theory.faithful
- category_theory.Mat.equivalence_single_obj_inverse.category_theory.faithful
- Type_to_PartialFun.category_theory.faithful
- category_theory.localization.whiskering_left_functor'.category_theory.faithful
- Mon_.forget_faithful
- CommMon_.forget₂_Mon_.faithful
- FinBoolAlg.forget_to_BoolAlg_faithful
- FinBoolAlg.forget_to_FinPartOrd_faithful
- category_theory.Module.restrict_scalars.category_theory.faithful
- algebraic_geometry.SheafedSpace.forget_to_PresheafedSpace.faithful
- algebraic_geometry.LocallyRingedSpace.forget_to_SheafedSpace.category_theory.faithful
- algebraic_geometry.Scheme.forget_to_LocallyRingedSpace.faithful
- algebraic_geometry.Spec.to_LocallyRingedSpace.category_theory.faithful
- algebraic_geometry.Spec.faithful
- algebraic_geometry.AffineScheme.Spec.faithful
- algebraic_geometry.AffineScheme.forget_to_Scheme.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)) _