Pointed isomorphisms
Content created by Egbert Rijke and Fredrik Bakke.
Created on 2024-03-13.
Last modified on 2024-04-11.
module structured-types.pointed-isomorphisms where
Imports
open import foundation.cartesian-product-types open import foundation.contractible-maps open import foundation.contractible-types open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.identity-types open import foundation.logical-equivalences open import foundation.propositions open import foundation.retractions open import foundation.sections open import foundation.structure-identity-principle open import foundation.universe-levels open import structured-types.pointed-equivalences open import structured-types.pointed-homotopies open import structured-types.pointed-maps open import structured-types.pointed-retractions open import structured-types.pointed-sections open import structured-types.pointed-types
Idea
A pointed isomorphism¶ is an isomorphism in the wild category of pointed types, i.e., it is a pointed map equipped with a pointed section and a pointed retraction.
Definitions
The predicate of being a pointed isomorphism
module _ {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Type l2} (f : A →∗ B) where is-pointed-iso : UU (l1 ⊔ l2) is-pointed-iso = pointed-section f × pointed-retraction f module _ {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Type l2} {f : A →∗ B} (H : is-pointed-iso f) where pointed-section-is-pointed-iso : pointed-section f pointed-section-is-pointed-iso = pr1 H pointed-retraction-is-pointed-iso : pointed-retraction f pointed-retraction-is-pointed-iso = pr2 H pointed-map-pointed-section-is-pointed-iso : B →∗ A pointed-map-pointed-section-is-pointed-iso = pointed-map-pointed-section f pointed-section-is-pointed-iso is-pointed-section-pointed-section-is-pointed-iso : is-pointed-section f pointed-map-pointed-section-is-pointed-iso is-pointed-section-pointed-section-is-pointed-iso = is-pointed-section-pointed-section f pointed-section-is-pointed-iso map-pointed-section-is-pointed-iso : type-Pointed-Type B → type-Pointed-Type A map-pointed-section-is-pointed-iso = map-pointed-section f pointed-section-is-pointed-iso preserves-point-pointed-map-pointed-section-is-pointed-iso : map-pointed-section-is-pointed-iso (point-Pointed-Type B) = point-Pointed-Type A preserves-point-pointed-map-pointed-section-is-pointed-iso = preserves-point-pointed-map-pointed-section f pointed-section-is-pointed-iso is-section-pointed-section-is-pointed-iso : is-section (map-pointed-map f) map-pointed-section-is-pointed-iso is-section-pointed-section-is-pointed-iso = is-section-pointed-section f pointed-section-is-pointed-iso section-is-pointed-iso : section (map-pointed-map f) section-is-pointed-iso = section-pointed-section f pointed-section-is-pointed-iso coherence-point-is-section-pointed-section-is-pointed-iso : coherence-point-unpointed-htpy-pointed-Π ( f ∘∗ pointed-map-pointed-section-is-pointed-iso) ( id-pointed-map) ( is-section-pointed-section-is-pointed-iso) coherence-point-is-section-pointed-section-is-pointed-iso = coherence-point-is-section-pointed-section f pointed-section-is-pointed-iso pointed-map-pointed-retraction-is-pointed-iso : B →∗ A pointed-map-pointed-retraction-is-pointed-iso = pr1 pointed-retraction-is-pointed-iso is-pointed-retraction-pointed-retraction-is-pointed-iso : is-pointed-retraction f pointed-map-pointed-retraction-is-pointed-iso is-pointed-retraction-pointed-retraction-is-pointed-iso = pr2 pointed-retraction-is-pointed-iso map-pointed-retraction-is-pointed-iso : type-Pointed-Type B → type-Pointed-Type A map-pointed-retraction-is-pointed-iso = map-pointed-map pointed-map-pointed-retraction-is-pointed-iso preserves-point-pointed-map-pointed-retraction-is-pointed-iso : map-pointed-retraction-is-pointed-iso (point-Pointed-Type B) = point-Pointed-Type A preserves-point-pointed-map-pointed-retraction-is-pointed-iso = preserves-point-pointed-map pointed-map-pointed-retraction-is-pointed-iso is-retraction-pointed-retraction-is-pointed-iso : is-retraction ( map-pointed-map f) ( map-pointed-retraction-is-pointed-iso) is-retraction-pointed-retraction-is-pointed-iso = htpy-pointed-htpy is-pointed-retraction-pointed-retraction-is-pointed-iso retraction-is-pointed-iso : retraction (map-pointed-map f) retraction-is-pointed-iso = retraction-pointed-retraction f pointed-retraction-is-pointed-iso coherence-point-is-retraction-pointed-retraction-is-pointed-iso : coherence-point-unpointed-htpy-pointed-Π ( pointed-map-pointed-retraction-is-pointed-iso ∘∗ f) ( id-pointed-map) ( is-retraction-pointed-retraction-is-pointed-iso) coherence-point-is-retraction-pointed-retraction-is-pointed-iso = coherence-point-pointed-htpy is-pointed-retraction-pointed-retraction-is-pointed-iso
Pointed isomorphisms
module _ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) where pointed-iso : UU (l1 ⊔ l2) pointed-iso = Σ (A →∗ B) is-pointed-iso infix 6 _≅∗_ _≅∗_ : UU (l1 ⊔ l2) _≅∗_ = pointed-iso module _ {l1 l2 : Level} (A : Pointed-Type l1) (B : Pointed-Type l2) (f : A ≅∗ B) where pointed-map-pointed-iso : A →∗ B pointed-map-pointed-iso = pr1 f map-pointed-iso : type-Pointed-Type A → type-Pointed-Type B map-pointed-iso = map-pointed-map pointed-map-pointed-iso preserves-point-pointed-iso : map-pointed-iso (point-Pointed-Type A) = point-Pointed-Type B preserves-point-pointed-iso = preserves-point-pointed-map pointed-map-pointed-iso is-pointed-iso-pointed-iso : is-pointed-iso pointed-map-pointed-iso is-pointed-iso-pointed-iso = pr2 f pointed-section-pointed-iso : pointed-section pointed-map-pointed-iso pointed-section-pointed-iso = pointed-section-is-pointed-iso (is-pointed-iso-pointed-iso) pointed-retraction-pointed-iso : pointed-retraction pointed-map-pointed-iso pointed-retraction-pointed-iso = pointed-retraction-is-pointed-iso (is-pointed-iso-pointed-iso) pointed-map-pointed-section-pointed-iso : B →∗ A pointed-map-pointed-section-pointed-iso = pointed-map-pointed-section-is-pointed-iso (is-pointed-iso-pointed-iso) is-pointed-section-pointed-section-pointed-iso : is-pointed-section ( pointed-map-pointed-iso) ( pointed-map-pointed-section-pointed-iso) is-pointed-section-pointed-section-pointed-iso = is-pointed-section-pointed-section-is-pointed-iso ( is-pointed-iso-pointed-iso) map-pointed-section-pointed-iso : type-Pointed-Type B → type-Pointed-Type A map-pointed-section-pointed-iso = map-pointed-section-is-pointed-iso ( is-pointed-iso-pointed-iso) preserves-point-pointed-map-pointed-section-pointed-iso : map-pointed-section-pointed-iso (point-Pointed-Type B) = point-Pointed-Type A preserves-point-pointed-map-pointed-section-pointed-iso = preserves-point-pointed-map-pointed-section-is-pointed-iso ( is-pointed-iso-pointed-iso) is-section-pointed-section-pointed-iso : is-section (map-pointed-iso) map-pointed-section-pointed-iso is-section-pointed-section-pointed-iso = is-section-pointed-section-is-pointed-iso ( is-pointed-iso-pointed-iso) section-pointed-iso : section (map-pointed-iso) section-pointed-iso = section-is-pointed-iso ( is-pointed-iso-pointed-iso) coherence-point-is-section-pointed-section-pointed-iso : coherence-point-unpointed-htpy-pointed-Π ( pointed-map-pointed-iso ∘∗ pointed-map-pointed-section-pointed-iso) ( id-pointed-map) ( is-section-pointed-section-pointed-iso) coherence-point-is-section-pointed-section-pointed-iso = coherence-point-is-section-pointed-section-is-pointed-iso ( is-pointed-iso-pointed-iso) pointed-map-pointed-retraction-pointed-iso : B →∗ A pointed-map-pointed-retraction-pointed-iso = pointed-map-pointed-retraction-is-pointed-iso ( is-pointed-iso-pointed-iso) is-pointed-retraction-pointed-retraction-pointed-iso : is-pointed-retraction ( pointed-map-pointed-iso) ( pointed-map-pointed-retraction-pointed-iso) is-pointed-retraction-pointed-retraction-pointed-iso = is-pointed-retraction-pointed-retraction-is-pointed-iso ( is-pointed-iso-pointed-iso) map-pointed-retraction-pointed-iso : type-Pointed-Type B → type-Pointed-Type A map-pointed-retraction-pointed-iso = map-pointed-retraction-is-pointed-iso ( is-pointed-iso-pointed-iso) preserves-point-pointed-map-pointed-retraction-pointed-iso : map-pointed-retraction-pointed-iso (point-Pointed-Type B) = point-Pointed-Type A preserves-point-pointed-map-pointed-retraction-pointed-iso = preserves-point-pointed-map-pointed-retraction-is-pointed-iso ( is-pointed-iso-pointed-iso) is-retraction-pointed-retraction-pointed-iso : is-retraction ( map-pointed-iso) ( map-pointed-retraction-pointed-iso) is-retraction-pointed-retraction-pointed-iso = is-retraction-pointed-retraction-is-pointed-iso ( is-pointed-iso-pointed-iso) retraction-pointed-iso : retraction (map-pointed-iso) retraction-pointed-iso = retraction-is-pointed-iso ( is-pointed-iso-pointed-iso) coherence-point-is-retraction-pointed-retraction-pointed-iso : coherence-point-unpointed-htpy-pointed-Π ( pointed-map-pointed-retraction-pointed-iso ∘∗ pointed-map-pointed-iso) ( id-pointed-map) ( is-retraction-pointed-retraction-pointed-iso) coherence-point-is-retraction-pointed-retraction-pointed-iso = coherence-point-is-retraction-pointed-retraction-is-pointed-iso ( is-pointed-iso-pointed-iso)
Properties
Any pointed equivalence is a pointed isomorphism
module _ {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Type l2} (f : A →∗ B) where abstract is-pointed-iso-is-pointed-equiv : is-pointed-equiv f → is-pointed-iso f pr1 (pr1 (is-pointed-iso-is-pointed-equiv H)) = pointed-map-inv-is-pointed-equiv f H pr2 (pr1 (is-pointed-iso-is-pointed-equiv H)) = is-pointed-section-pointed-map-inv-is-pointed-equiv f H pr1 (pr2 (is-pointed-iso-is-pointed-equiv H)) = pointed-map-inv-is-pointed-equiv f H pr2 (pr2 (is-pointed-iso-is-pointed-equiv H)) = is-pointed-retraction-pointed-map-inv-is-pointed-equiv f H
Any pointed isomorphism is a pointed equivalence
module _ {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Type l2} (f : A →∗ B) where abstract is-pointed-equiv-is-pointed-iso : is-pointed-iso f → is-pointed-equiv f pr1 (is-pointed-equiv-is-pointed-iso H) = section-is-pointed-iso H pr2 (is-pointed-equiv-is-pointed-iso H) = retraction-is-pointed-iso H
Being a pointed isomorphism is a property
module _ {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Type l2} (f : A →∗ B) where abstract is-contr-section-is-pointed-equiv : is-pointed-equiv f → is-contr (pointed-section f) is-contr-section-is-pointed-equiv H = is-torsorial-Eq-structure ( is-contr-section-is-equiv H) ( map-inv-is-equiv H , is-section-map-inv-is-equiv H) ( is-contr-map-is-equiv ( is-equiv-comp _ _ ( is-emb-is-equiv H _ _) ( is-equiv-concat' _ (preserves-point-pointed-map f))) ( _)) abstract is-contr-retraction-is-pointed-equiv : is-pointed-equiv f → is-contr (pointed-retraction f) is-contr-retraction-is-pointed-equiv H = is-torsorial-Eq-structure ( is-contr-retraction-is-equiv H) ( map-inv-is-equiv H , is-retraction-map-inv-is-equiv H) ( is-contr-map-is-equiv ( is-equiv-concat _ _) ( _)) abstract is-contr-is-pointed-iso-is-pointed-equiv : is-pointed-equiv f → is-contr (is-pointed-iso f) is-contr-is-pointed-iso-is-pointed-equiv H = is-contr-product ( is-contr-section-is-pointed-equiv H) ( is-contr-retraction-is-pointed-equiv H) abstract is-prop-is-pointed-iso : is-prop (is-pointed-iso f) is-prop-is-pointed-iso = is-prop-is-proof-irrelevant ( λ H → is-contr-is-pointed-iso-is-pointed-equiv ( is-pointed-equiv-is-pointed-iso f H))
Being a pointed equivalence is equivalent to being a pointed isomorphism
module _ {l1 l2 : Level} {A : Pointed-Type l1} {B : Pointed-Type l2} (f : A →∗ B) where equiv-is-pointed-iso-is-pointed-equiv : is-pointed-equiv f ≃ (is-pointed-iso f) pr1 equiv-is-pointed-iso-is-pointed-equiv = is-pointed-iso-is-pointed-equiv f pr2 equiv-is-pointed-iso-is-pointed-equiv = is-equiv-has-converse-is-prop ( is-property-is-equiv (map-pointed-map f)) ( is-prop-is-pointed-iso f) ( is-pointed-equiv-is-pointed-iso f)
Recent changes
- 2024-04-11. Fredrik Bakke and Egbert Rijke. Propositional operations (#1008).
- 2024-03-13. Egbert Rijke. Refactoring pointed types (#1056).