Pointed type duality
Content created by Fredrik Bakke.
Created on 2025-10-29.
Last modified on 2025-10-29.
module structured-types.pointed-type-duality where
Imports
open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.fibers-of-maps open import foundation.function-extensionality open import foundation.function-types open import foundation.identity-types open import foundation.retracts-of-types open import foundation.transport-along-identifications open import foundation.universe-levels open import foundation-core.homotopies open import foundation-core.retractions open import foundation-core.sections open import structured-types.equivalences-retractive-types open import structured-types.pointed-equivalences open import structured-types.pointed-types open import structured-types.retractive-types
Idea
Families of pointed types over X are
equivalent to
retractive types under X.
Definitions
The family of pointed types associated to a retractive type
module _ {l1 l2 : Level} (X : UU l1) (A : Retractive-Type l2 X) where fam-Retractive-Type : X → UU (l1 ⊔ l2) fam-Retractive-Type = fiber (map-retraction-Retractive-Type A) point-fam-Retractive-Type : (x : X) → fam-Retractive-Type x point-fam-Retractive-Type x = ( inclusion-Retractive-Type A x , is-retract-Retractive-Type A x) fam-pointed-type-Retractive-Type : X → Pointed-Type (l1 ⊔ l2) fam-pointed-type-Retractive-Type x = ( fam-Retractive-Type x , point-fam-Retractive-Type x)
The retractive type associated to a family of pointed types
module _ {l1 l2 : Level} (X : UU l1) (A : X → Pointed-Type l2) where type-retractive-type-Fam-Pointed-Type : UU (l1 ⊔ l2) type-retractive-type-Fam-Pointed-Type = Σ X (type-Pointed-Type ∘ A) map-inclusion-retractive-type-Fam-Pointed-Type : X → type-retractive-type-Fam-Pointed-Type map-inclusion-retractive-type-Fam-Pointed-Type x = ( x , point-Pointed-Type (A x)) map-retraction-retractive-type-Fam-Pointed-Type : type-retractive-type-Fam-Pointed-Type → X map-retraction-retractive-type-Fam-Pointed-Type = pr1 is-retract-retractive-type-Fam-Pointed-Type : is-retraction map-inclusion-retractive-type-Fam-Pointed-Type map-retraction-retractive-type-Fam-Pointed-Type is-retract-retractive-type-Fam-Pointed-Type = refl-htpy retraction-retractive-type-Fam-Pointed-Type : retraction map-inclusion-retractive-type-Fam-Pointed-Type retraction-retractive-type-Fam-Pointed-Type = ( map-retraction-retractive-type-Fam-Pointed-Type , is-retract-retractive-type-Fam-Pointed-Type) retract-retractive-type-Fam-Pointed-Type : X retract-of type-retractive-type-Fam-Pointed-Type retract-retractive-type-Fam-Pointed-Type = ( map-inclusion-retractive-type-Fam-Pointed-Type , retraction-retractive-type-Fam-Pointed-Type) retractive-type-Fam-Pointed-Type : Retractive-Type (l1 ⊔ l2) X retractive-type-Fam-Pointed-Type = ( type-retractive-type-Fam-Pointed-Type , retract-retractive-type-Fam-Pointed-Type)
Properties
Retractive types under X are equivalent to families of pointed types over X
fam-pointed-equiv-is-section-retractive-type-Fam-Pointed-Type : {l1 l2 : Level} {X : UU l1} (A : (x : X) → Pointed-Type l2) → (x : X) → fam-pointed-type-Retractive-Type X (retractive-type-Fam-Pointed-Type X A) x ≃∗ A x fam-pointed-equiv-is-section-retractive-type-Fam-Pointed-Type A x = ( ( ( λ ((x' , a) , p) → tr (type-Pointed-Type ∘ A) p a) , ( is-equiv-is-invertible ( λ a → (x , a) , refl) ( refl-htpy) ( λ where ((x' , a) , refl) → refl))) , ( refl)) module _ {l1 l2 : Level} {X : UU l1} where abstract is-section-retractive-type-Fam-Pointed-Type : is-section ( fam-pointed-type-Retractive-Type {l2 = l1 ⊔ l2} X) ( retractive-type-Fam-Pointed-Type X) is-section-retractive-type-Fam-Pointed-Type A = eq-htpy ( λ x → eq-pointed-equiv ( fam-pointed-type-Retractive-Type X ( retractive-type-Fam-Pointed-Type X A) ( x)) ( A x) ( fam-pointed-equiv-is-section-retractive-type-Fam-Pointed-Type A ( x))) is-retraction-retractive-type-Fam-Pointed-Type : is-retraction ( fam-pointed-type-Retractive-Type {l2 = l1 ⊔ l2} X) ( retractive-type-Fam-Pointed-Type X) is-retraction-retractive-type-Fam-Pointed-Type A = eq-equiv-Retractive-Type' ( retractive-type-Fam-Pointed-Type X ( fam-pointed-type-Retractive-Type X A)) ( A) ( ( equiv-total-fiber (map-retraction-Retractive-Type A)) , ( refl-htpy) , ( pr2 ∘ pr2) , ( inv-htpy-right-unit-htpy)) is-equiv-fam-pointed-type-Retractive-Type : is-equiv (fam-pointed-type-Retractive-Type {l2 = l1 ⊔ l2} X) is-equiv-fam-pointed-type-Retractive-Type = is-equiv-is-invertible ( retractive-type-Fam-Pointed-Type X) ( is-section-retractive-type-Fam-Pointed-Type) ( is-retraction-retractive-type-Fam-Pointed-Type) is-equiv-retractive-type-Fam-Pointed-Type : is-equiv (retractive-type-Fam-Pointed-Type {l2 = l1 ⊔ l2} X) is-equiv-retractive-type-Fam-Pointed-Type = is-equiv-is-invertible ( fam-pointed-type-Retractive-Type X) ( is-retraction-retractive-type-Fam-Pointed-Type) ( is-section-retractive-type-Fam-Pointed-Type) equiv-retractive-type-Fam-Pointed-Type : (X → Pointed-Type (l1 ⊔ l2)) ≃ Retractive-Type (l1 ⊔ l2) X equiv-retractive-type-Fam-Pointed-Type = ( retractive-type-Fam-Pointed-Type X , is-equiv-retractive-type-Fam-Pointed-Type) equiv-fam-pointed-type-Retractive-Type : Retractive-Type (l1 ⊔ l2) X ≃ (X → Pointed-Type (l1 ⊔ l2)) equiv-fam-pointed-type-Retractive-Type = ( fam-pointed-type-Retractive-Type X , is-equiv-fam-pointed-type-Retractive-Type)
Recent changes
- 2025-10-29. Fredrik Bakke. Retractive types and pointed type duality (#1580).