Replete subprecategories
Content created by Fredrik Bakke and Egbert Rijke.
Created on 2023-11-01.
Last modified on 2024-04-11.
module category-theory.replete-subprecategories where
Imports
open import category-theory.categories open import category-theory.isomorphism-induction-categories open import category-theory.isomorphisms-in-precategories open import category-theory.isomorphisms-in-subprecategories open import category-theory.precategories open import category-theory.subprecategories open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.functoriality-dependent-pair-types open import foundation.iterated-dependent-product-types open import foundation.logical-equivalences open import foundation.propositions open import foundation.subsingleton-induction open import foundation.subtypes open import foundation.type-arithmetic-cartesian-product-types open import foundation.type-arithmetic-dependent-pair-types open import foundation.universe-levels
Idea
A replete subprecategory of a precategory
C
is a subprecategory P
that is
closed under isomorphisms:
Given an object x
in P
, then every isomorphism f : x ≅ y
in C
, is
contained in P
.
Definitions
The predicate on a subprecategory of being closed under isomorphic objects
We can define what it means for subprecategories to have objects that are closed under isomorphisms. Observe that this is not yet the correct definition of a replete subprecategory.
module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (P : Subprecategory l3 l4 C) where contains-iso-obj-Subprecategory : UU (l1 ⊔ l2 ⊔ l3) contains-iso-obj-Subprecategory = (x : obj-Subprecategory C P) (y : obj-Precategory C) → iso-Precategory C (inclusion-obj-Subprecategory C P x) y → is-in-obj-Subprecategory C P y is-prop-contains-iso-obj-Subprecategory : is-prop contains-iso-obj-Subprecategory is-prop-contains-iso-obj-Subprecategory = is-prop-iterated-Π 3 (λ x y f → is-prop-is-in-obj-Subprecategory C P y) contains-iso-obj-prop-Subprecategory : Prop (l1 ⊔ l2 ⊔ l3) pr1 contains-iso-obj-prop-Subprecategory = contains-iso-obj-Subprecategory pr2 contains-iso-obj-prop-Subprecategory = is-prop-contains-iso-obj-Subprecategory
The predicate of being a replete subprecategory
module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (P : Subprecategory l3 l4 C) where is-replete-Subprecategory : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-replete-Subprecategory = (x : obj-Subprecategory C P) (y : obj-Precategory C) (f : iso-Precategory C (inclusion-obj-Subprecategory C P x) y) → Σ ( is-in-obj-Subprecategory C P y) ( λ y₀ → is-in-iso-obj-subprecategory-Subprecategory C P {x} {y , y₀} f) is-prop-is-replete-Subprecategory : is-prop is-replete-Subprecategory is-prop-is-replete-Subprecategory = is-prop-iterated-Π 3 ( λ x y f → is-prop-Σ ( is-prop-is-in-obj-Subprecategory C P y) ( λ _ → is-prop-is-in-iso-obj-subprecategory-Subprecategory C P f)) is-replete-prop-Subprecategory : Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) pr1 is-replete-prop-Subprecategory = is-replete-Subprecategory pr2 is-replete-prop-Subprecategory = is-prop-is-replete-Subprecategory
The type of replete subprecategories
Replete-Subprecategory : {l1 l2 : Level} (l3 l4 : Level) (C : Precategory l1 l2) → UU (l1 ⊔ l2 ⊔ lsuc l3 ⊔ lsuc l4) Replete-Subprecategory l3 l4 C = Σ (Subprecategory l3 l4 C) (is-replete-Subprecategory C) module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (P : Replete-Subprecategory l3 l4 C) where subprecategory-Replete-Subprecategory : Subprecategory l3 l4 C subprecategory-Replete-Subprecategory = pr1 P is-replete-Replete-Subprecategory : is-replete-Subprecategory C subprecategory-Replete-Subprecategory is-replete-Replete-Subprecategory = pr2 P
Properties
A slight reformulation of repleteness
In our main definition of repleteness, the containment proof of the isomorphism must be fixed at the left end-point. This is of course not necessary, so we can ask for a slighty relaxed proof of repleteness:
module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (P : Subprecategory l3 l4 C) where is-unfixed-replete-Subprecategory : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) is-unfixed-replete-Subprecategory = (x : obj-Subprecategory C P) (y : obj-Precategory C) (f : iso-Precategory C (inclusion-obj-Subprecategory C P x) y) → is-in-iso-Subprecategory C P f is-prop-is-unfixed-replete-Subprecategory : is-prop (is-unfixed-replete-Subprecategory) is-prop-is-unfixed-replete-Subprecategory = is-prop-iterated-Π 3 ( λ x y f → is-prop-is-in-iso-Subprecategory C P f) is-unfixed-replete-prop-Subprecategory : Prop (l1 ⊔ l2 ⊔ l3 ⊔ l4) pr1 is-unfixed-replete-prop-Subprecategory = is-unfixed-replete-Subprecategory pr2 is-unfixed-replete-prop-Subprecategory = is-prop-is-unfixed-replete-Subprecategory is-unfixed-replete-is-replete-Subprecategory : is-replete-Subprecategory C P → is-unfixed-replete-Subprecategory pr1 (is-unfixed-replete-is-replete-Subprecategory replete' (x , x₀) y f) = x₀ pr2 (is-unfixed-replete-is-replete-Subprecategory replete' x y f) = replete' x y f is-replete-is-unfixed-replete-Subprecategory : is-unfixed-replete-Subprecategory → is-replete-Subprecategory C P is-replete-is-unfixed-replete-Subprecategory is-unfixed-replete-P x y f = ind-subsingleton ( is-prop-is-in-obj-Subprecategory C P (pr1 x)) { λ x₀ → Σ ( is-in-obj-Subprecategory C P y) ( λ y₀ → is-in-iso-obj-subprecategory-Subprecategory C P { inclusion-obj-Subprecategory C P x , x₀} {y , y₀} f)} ( pr1 (is-unfixed-replete-P x y f)) ( pr2 (is-unfixed-replete-P x y f)) ( is-in-obj-inclusion-obj-Subprecategory C P x)
Isomorphism-sets in replete subprecategories are equivalent to isomorphism-sets in the base precategory
module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (P : Subprecategory l3 l4 C) (is-replete-P : is-replete-Subprecategory C P) {x y : obj-Subprecategory C P} (f : hom-Subprecategory C P x y) where is-iso-is-iso-base-is-replete-Subprecategory : is-iso-Precategory C (inclusion-hom-Subprecategory C P x y f) → is-iso-Subprecategory C P f pr1 (pr1 (is-iso-is-iso-base-is-replete-Subprecategory is-iso-C-f)) = hom-inv-is-iso-Precategory C is-iso-C-f pr2 (pr1 (is-iso-is-iso-base-is-replete-Subprecategory is-iso-C-f)) = ind-subsingleton ( is-prop-is-in-obj-Subprecategory C P (pr1 y)) { λ y₀ → is-in-hom-obj-subprecategory-Subprecategory C P (pr1 y , y₀) x ( hom-inv-is-iso-Precategory C is-iso-C-f)} ( pr1 (is-replete-P x (pr1 y) (pr1 f , is-iso-C-f))) ( pr2 (pr2 (is-replete-P x (pr1 y) (pr1 f , is-iso-C-f)))) ( pr2 y) pr1 (pr2 (is-iso-is-iso-base-is-replete-Subprecategory is-iso-C-f)) = eq-type-subtype ( subtype-hom-obj-subprecategory-Subprecategory C P y y) ( is-section-hom-inv-is-iso-Precategory C is-iso-C-f) pr2 (pr2 (is-iso-is-iso-base-is-replete-Subprecategory is-iso-C-f)) = eq-type-subtype ( subtype-hom-obj-subprecategory-Subprecategory C P x x) ( is-retraction-hom-inv-is-iso-Precategory C is-iso-C-f) is-equiv-is-iso-is-iso-base-is-replete-Subprecategory : is-equiv is-iso-is-iso-base-is-replete-Subprecategory is-equiv-is-iso-is-iso-base-is-replete-Subprecategory = is-equiv-has-converse-is-prop ( is-prop-is-iso-Precategory C (inclusion-hom-Subprecategory C P x y f)) ( is-prop-is-iso-Subprecategory C P f) ( is-iso-base-is-iso-Subprecategory C P) equiv-is-iso-is-iso-base-is-replete-Subprecategory : is-iso-Precategory C (inclusion-hom-Subprecategory C P x y f) ≃ is-iso-Subprecategory C P f pr1 equiv-is-iso-is-iso-base-is-replete-Subprecategory = is-iso-is-iso-base-is-replete-Subprecategory pr2 equiv-is-iso-is-iso-base-is-replete-Subprecategory = is-equiv-is-iso-is-iso-base-is-replete-Subprecategory module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (P : Subprecategory l3 l4 C) (is-replete-P : is-replete-Subprecategory C P) (x y : obj-Subprecategory C P) where compute-iso-is-replete-Subprecategory : iso-Precategory C ( inclusion-obj-Subprecategory C P x) ( inclusion-obj-Subprecategory C P y) ≃ iso-Subprecategory C P x y compute-iso-is-replete-Subprecategory = ( equiv-tot ( equiv-is-iso-is-iso-base-is-replete-Subprecategory C P is-replete-P {x} {y})) ∘e ( inv-associative-Σ _ _ _) ∘e ( equiv-tot ( λ f → ( commutative-product) ∘e ( inv-right-unit-law-Σ-is-contr ( λ is-iso-C-f → is-proof-irrelevant-is-prop ( is-prop-is-in-hom-obj-subprecategory-Subprecategory C P x y f) ( ind-subsingleton ( is-prop-is-in-obj-Subprecategory C P (pr1 y)) { λ y₀ → is-in-hom-obj-subprecategory-Subprecategory C P x (pr1 y , y₀) f} ( is-replete-P x (pr1 y) (f , is-iso-C-f) .pr1) ( is-replete-P x (pr1 y) (f , is-iso-C-f) .pr2 .pr1) ( pr2 y)))))) inv-compute-iso-is-replete-Subprecategory : iso-Subprecategory C P x y ≃ iso-Precategory C ( inclusion-obj-Subprecategory C P x) ( inclusion-obj-Subprecategory C P y) inv-compute-iso-is-replete-Subprecategory = inv-equiv compute-iso-is-replete-Subprecategory
Subprecategories of categories are replete
module _ {l1 l2 l3 l4 : Level} (C : Precategory l1 l2) (P : Subprecategory l3 l4 C) (is-category-C : is-category-Precategory C) where is-unfixed-replete-subprecategory-is-category-Subprecategory : {x : obj-Subprecategory C P} {y : obj-Precategory C} (f : iso-Precategory C (inclusion-obj-Subprecategory C P x) y) → is-in-iso-Subprecategory C P f is-unfixed-replete-subprecategory-is-category-Subprecategory {x} = ind-iso-Category ( C , is-category-C) ( λ B → is-in-iso-Subprecategory C P) ( is-in-iso-id-Subprecategory C P x) is-replete-subprecategory-is-category-Subprecategory : is-replete-Subprecategory C P is-replete-subprecategory-is-category-Subprecategory x y = ind-iso-Category ( C , is-category-C) ( λ z e → Σ ( is-in-obj-Subprecategory C P z) ( λ z₀ → is-in-iso-obj-subprecategory-Subprecategory C P {x} {z , z₀} e)) ( pr2 (is-in-iso-id-Subprecategory C P x))
If a full subprecategory is closed under isomorphic objects then it is replete
This remains to be formalized.
The inclusion functor of a replete subprecategory is pseudomonic
This remains to be formalized.
See also
- Every subcategory is replete.
- Because of universe polymorphism, large subcategories are not large replete by construction, although they are levelwise replete.
External links
- replete subcategory at Lab
- Isomorphism-closed subcategory at Wikipedia
- isomorphism-closed subcategory at Wikidata
Recent changes
- 2024-04-11. Fredrik Bakke and Egbert Rijke. Propositional operations (#1008).
- 2024-03-01. Fredrik Bakke. chore: Fix markdown list formatting (#1047).
- 2024-02-06. Fredrik Bakke. Rename
(co)prod
to(co)product
(#1017). - 2023-11-24. Egbert Rijke. Refactor precomposition (#937).
- 2023-11-24. Fredrik Bakke. The orbit category of a group (#935).