This is an archived version pinned as of the submission of my master's thesis. An up-to-date version may be found online.
Faithful functors between precategories
module category-theory.faithful-functors-precategories where
Imports
open import category-theory.faithful-maps-precategories open import category-theory.functors-precategories open import category-theory.isomorphisms-in-precategories open import category-theory.precategories open import foundation.dependent-pair-types open import foundation.embeddings open import foundation.equivalences open import foundation.propositions open import foundation.subtypes open import foundation.universe-levels
Idea
A functor between
precategories C
and D
is faithful if
it's an embedding on hom-sets.
Note that embeddings on sets happen to coincide with injections. However, we define faithful functors in terms of embeddings because this is the notion that generalizes.
Definition
The predicate on functors between precategories of being faithful
module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (D : Precategory l3 l4) (F : functor-Precategory C D) where is-faithful-functor-Precategory : UU (l1 ⊔ l2 ⊔ l4) is-faithful-functor-Precategory = is-faithful-map-Precategory C D (map-functor-Precategory C D F) is-prop-is-faithful-functor-Precategory : is-prop is-faithful-functor-Precategory is-prop-is-faithful-functor-Precategory = is-prop-is-faithful-map-Precategory C D (map-functor-Precategory C D F) is-faithful-prop-functor-Precategory : Prop (l1 ⊔ l2 ⊔ l4) is-faithful-prop-functor-Precategory = is-faithful-prop-map-Precategory C D (map-functor-Precategory C D F)
The type of faithful functors between two precategories
faithful-functor-Precategory : {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (D : Precategory l3 l4) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) faithful-functor-Precategory C D = Σ (functor-Precategory C D) (is-faithful-functor-Precategory C D) module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (D : Precategory l3 l4) (F : faithful-functor-Precategory C D) where functor-faithful-functor-Precategory : functor-Precategory C D functor-faithful-functor-Precategory = pr1 F is-faithful-faithful-functor-Precategory : is-faithful-functor-Precategory C D functor-faithful-functor-Precategory is-faithful-faithful-functor-Precategory = pr2 F obj-faithful-functor-Precategory : obj-Precategory C → obj-Precategory D obj-faithful-functor-Precategory = obj-functor-Precategory C D functor-faithful-functor-Precategory hom-faithful-functor-Precategory : {x y : obj-Precategory C} → hom-Precategory C x y → hom-Precategory D ( obj-faithful-functor-Precategory x) ( obj-faithful-functor-Precategory y) hom-faithful-functor-Precategory = hom-functor-Precategory C D functor-faithful-functor-Precategory
The predicate on functors between precategories of being injective on hom-sets
module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (D : Precategory l3 l4) (F : functor-Precategory C D) where is-injective-hom-functor-Precategory : UU (l1 ⊔ l2 ⊔ l4) is-injective-hom-functor-Precategory = is-injective-hom-map-Precategory C D (map-functor-Precategory C D F) is-prop-is-injective-hom-functor-Precategory : is-prop is-injective-hom-functor-Precategory is-prop-is-injective-hom-functor-Precategory = is-prop-is-injective-hom-map-Precategory C D ( map-functor-Precategory C D F) is-injective-hom-prop-functor-Precategory : Prop (l1 ⊔ l2 ⊔ l4) is-injective-hom-prop-functor-Precategory = is-injective-hom-prop-map-Precategory C D ( map-functor-Precategory C D F)
Properties
A functor of precategories is faithful if and only if it is injective on hom-sets
module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (D : Precategory l3 l4) (F : functor-Precategory C D) where is-injective-hom-is-faithful-functor-Precategory : is-faithful-functor-Precategory C D F → is-injective-hom-functor-Precategory C D F is-injective-hom-is-faithful-functor-Precategory = is-injective-hom-is-faithful-map-Precategory C D ( map-functor-Precategory C D F) is-faithful-is-injective-hom-functor-Precategory : is-injective-hom-functor-Precategory C D F → is-faithful-functor-Precategory C D F is-faithful-is-injective-hom-functor-Precategory = is-faithful-is-injective-hom-map-Precategory C D ( map-functor-Precategory C D F) is-equiv-is-injective-hom-is-faithful-functor-Precategory : is-equiv is-injective-hom-is-faithful-functor-Precategory is-equiv-is-injective-hom-is-faithful-functor-Precategory = is-equiv-is-injective-hom-is-faithful-map-Precategory C D ( map-functor-Precategory C D F) is-equiv-is-faithful-is-injective-hom-functor-Precategory : is-equiv is-faithful-is-injective-hom-functor-Precategory is-equiv-is-faithful-is-injective-hom-functor-Precategory = is-equiv-is-faithful-is-injective-hom-map-Precategory C D ( map-functor-Precategory C D F) equiv-is-injective-hom-is-faithful-functor-Precategory : is-faithful-functor-Precategory C D F ≃ is-injective-hom-functor-Precategory C D F equiv-is-injective-hom-is-faithful-functor-Precategory = equiv-is-injective-hom-is-faithful-map-Precategory C D ( map-functor-Precategory C D F) equiv-is-faithful-is-injective-hom-functor-Precategory : is-injective-hom-functor-Precategory C D F ≃ is-faithful-functor-Precategory C D F equiv-is-faithful-is-injective-hom-functor-Precategory = equiv-is-faithful-is-injective-hom-map-Precategory C D ( map-functor-Precategory C D F)
Faithful functors are faithful on isomorphisms
module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (D : Precategory l3 l4) (F : functor-Precategory C D) (is-faithful-F : is-faithful-functor-Precategory C D F) where is-faithful-on-isos-is-faithful-functor-Precategory : (x y : obj-Precategory C) → is-emb (preserves-iso-functor-Precategory C D F {x} {y}) is-faithful-on-isos-is-faithful-functor-Precategory x y = is-emb-right-factor _ _ ( is-emb-inclusion-subtype (is-iso-prop-Precategory D)) ( is-emb-comp _ _ ( is-faithful-F x y) ( is-emb-inclusion-subtype (is-iso-prop-Precategory C)))