# mathlibdocumentation

category_theory.fully_faithful

@[class]
structure category_theory.full {C : Type u₁} {D : Type u₂} (F : C D) :
Type (max u₁ v₁ v₂)
• preimage : Π {X Y : C}, (F.obj X F.obj Y)(X Y)
• witness' : (∀ {X Y : C} (f : F.obj X F.obj Y), = 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.

Instances
@[simp]
theorem category_theory.full.witness {C : Type u₁} {D : Type u₂} {F : C D} [c : category_theory.full F] {X Y : C} (f : F.obj X F.obj Y) :
@[class]
structure category_theory.faithful {C : Type u₁} {D : Type u₂} (F : C D) :
Prop
• map_injective' : (∀ {X Y : C}, . "obviously"

A functor F : C ⥤ D is faithful if for each X Y : C, F.map is injective.

Instances
theorem category_theory.faithful.map_injective {C : Type u₁} {D : Type u₂} (F : C D) [c : category_theory.faithful F] {X Y : C} :
theorem category_theory.functor.map_injective {C : Type u₁} {D : Type u₂} (F : C D) {X Y : C} :
def category_theory.functor.preimage {C : Type u₁} {D : Type u₂} (F : C D) {X Y : C} (f : F.obj X F.obj Y) :
X Y

The specified preimage of a morphism under a full functor.

Equations
@[simp]
theorem category_theory.functor.image_preimage {C : Type u₁} {D : Type u₂} (F : C D) {X Y : C} (f : F.obj X F.obj Y) :
F.map (F.preimage f) = f
@[simp]
theorem category_theory.preimage_id {C : Type u₁} {D : Type u₂} {F : C D} {X : C} :
F.preimage (𝟙 (F.obj X)) = 𝟙 X
@[simp]
theorem category_theory.preimage_comp {C : Type u₁} {D : Type u₂} {F : C D} {X Y Z : C} (f : F.obj X F.obj Y) (g : F.obj Y F.obj Z) :
F.preimage (f g) = F.preimage f F.preimage g
@[simp]
theorem category_theory.preimage_map {C : Type u₁} {D : Type u₂} {F : C D} {X Y : C} (f : X Y) :
F.preimage (F.map f) = f
def category_theory.preimage_iso {C : Type u₁} {D : Type u₂} {F : C D} {X Y : C} (f : F.obj X F.obj Y) :
X Y

If F : C ⥤ D is fully faithful, every isomorphism F.obj X ≅ F.obj Y has a preimage.

Equations
@[simp]
theorem category_theory.preimage_iso_hom {C : Type u₁} {D : Type u₂} {F : C D} {X Y : C} (f : F.obj X F.obj Y) :
@[simp]
theorem category_theory.preimage_iso_inv {C : Type u₁} {D : Type u₂} {F : C D} {X Y : C} (f : F.obj X F.obj Y) :
@[simp]
theorem category_theory.preimage_iso_map_iso {C : Type u₁} {D : Type u₂} {F : C D} {X Y : C} (f : X Y) :
theorem category_theory.is_iso_of_fully_faithful {C : Type u₁} {D : Type u₂} (F : C D) {X Y : C} (f : X Y) [category_theory.is_iso (F.map f)] :

If the image of a morphism under a fully faithful functor in an isomorphism, then the original morphisms is also an isomorphism.

def category_theory.equiv_of_fully_faithful {C : Type u₁} {D : Type u₂} (F : C D) {X Y : C} :
(X Y) (F.obj X F.obj Y)

If F is fully faithful, we have an equivalence of hom-sets X ⟶ Y and F X ⟶ F Y.

Equations
@[simp]
theorem category_theory.equiv_of_fully_faithful_apply {C : Type u₁} {D : Type u₂} (F : C D) {X Y : C} (f : X Y) :
@[simp]
theorem category_theory.equiv_of_fully_faithful_symm_apply {C : Type u₁} {D : Type u₂} (F : C D) {X Y : C} (f : F.obj X F.obj Y) :
@[protected, instance]
def category_theory.full.id {C : Type u₁}  :
Equations
@[protected, instance]
def category_theory.faithful.id {C : Type u₁}  :
@[protected, instance]
def category_theory.faithful.comp {C : Type u₁} {D : Type u₂} {E : Type u₃} (F : C D) (G : D E)  :
theorem category_theory.faithful.of_comp {C : Type u₁} {D : Type u₂} {E : Type u₃} (F : C D) (G : D E) [category_theory.faithful (F G)] :
theorem category_theory.faithful.of_iso {C : Type u₁} {D : Type u₂} {F F' : C D} (α : F F') :
theorem category_theory.faithful.of_comp_iso {C : Type u₁} {D : Type u₂} {E : Type u₃} {F : C D} {G : D E} {H : C E} [ℋ : category_theory.faithful H] (h : F G H) :
theorem category_theory.iso.faithful_of_comp {C : Type u₁} {D : Type u₂} {E : Type u₃} {F : C D} {G : D E} {H : C E} [ℋ : category_theory.faithful H] (h : F G H) :

Alias of faithful.of_comp_iso.

theorem category_theory.faithful.of_comp_eq {C : Type u₁} {D : Type u₂} {E : Type u₃} {F : C D} {G : D E} {H : C E} [ℋ : category_theory.faithful H] (h : F G = H) :
theorem eq.faithful_of_comp {C : Type u₁} {D : Type u₂} {E : Type u₃} {F : C D} {G : D E} {H : C E} [ℋ : category_theory.faithful H] (h : F G = H) :

Alias of faithful.of_comp_eq.

@[protected]
def category_theory.faithful.div {C : Type u₁} {D : Type u₂} {E : Type u₃} (F : C E) (G : D E) (obj : C → D) (h_obj : ∀ (X : C), G.obj (obj X) = F.obj X) (map : Π {X Y : C}, (X Y)(obj X obj Y)) (h_map : ∀ {X Y : C} {f : X Y}, G.map (map f) == F.map f) :
C D

“Divide” a functor by a faithful functor.

Equations
theorem category_theory.faithful.div_comp {C : Type u₁} {D : Type u₂} {E : Type u₃} (F : C E) (G : D E) (obj : C → D) (h_obj : ∀ (X : C), G.obj (obj X) = F.obj X) (map : Π {X Y : C}, (X Y)(obj X obj Y)) (h_map : ∀ {X Y : C} {f : X Y}, G.map (map f) == F.map f) :
obj h_obj map h_map G = F
theorem category_theory.faithful.div_faithful {C : Type u₁} {D : Type u₂} {E : Type u₃} (F : C E) (G : D E) (obj : C → D) (h_obj : ∀ (X : C), G.obj (obj X) = F.obj X) (map : Π {X Y : C}, (X Y)(obj X obj Y)) (h_map : ∀ {X Y : C} {f : X Y}, G.map (map f) == F.map f) :
category_theory.faithful obj h_obj map h_map)
@[protected, instance]
def category_theory.full.comp {C : Type u₁} {D : Type u₂} {E : Type u₃} (F : C D) (G : D E)  :
Equations
def category_theory.fully_faithful_cancel_right {C : Type u₁} {D : Type u₂} {E : Type u₃} {F G : C D} (H : D E) (comp_iso : F H G H) :
F G

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
@[simp]
theorem category_theory.fully_faithful_cancel_right_hom_app {C : Type u₁} {D : Type u₂} {E : Type u₃} {F G : C D} {H : D E} (comp_iso : F H G H) (X : C) :
comp_iso).hom.app X = H.preimage (comp_iso.hom.app X)
@[simp]
theorem category_theory.fully_faithful_cancel_right_inv_app {C : Type u₁} {D : Type u₂} {E : Type u₃} {F G : C D} {H : D E} (comp_iso : F H G H) (X : C) :
comp_iso).inv.app X = H.preimage (comp_iso.inv.app X)