Equivalences between contractible types
Content created by Egbert Rijke and Fredrik Bakke.
Created on 2026-05-02.
Last modified on 2026-05-02.
module foundation.equivalences-contractible-types where
Imports
open import foundation.dependent-pair-types
open import foundation.dependent-products-contractible-types
open import foundation.universe-levels
open import foundation-core.contractible-types
open import foundation-core.equivalences
open import foundation.dependent-pair-types open import foundation.dependent-products-contractible-types open import foundation.universe-levels open import foundation-core.contractible-types open import foundation-core.equivalences
Idea
Equivalences between
contractible types enjoy some
properties, which we will study here. For instance, for any map f : A → B, if
two out of three of the following properties hold, then so does the third:
- The type
Ais contractible. - The type
Bis contractible. - The map
fis an equivalence.
Moreover, if A and B are contractible, then the type of equivalences between
them is contractible.
Properties
Contractible types are closed under equivalences
module _ {l1 l2 : Level} {A : UU l1} (B : UU l2) where abstract is-contr-is-equiv : (f : A → B) → is-equiv f → is-contr B → is-contr A is-contr-is-equiv f H = is-contr-retract-of B (f , retraction-is-equiv H) abstract is-contr-equiv : A ≃ B → is-contr B → is-contr A is-contr-equiv (e , H) = is-contr-is-equiv e H module _ {l1 l2 : Level} (A : UU l1) {B : UU l2} where abstract is-contr-is-equiv' : (f : A → B) → is-equiv f → is-contr A → is-contr B is-contr-is-equiv' f H = is-contr-is-equiv A ( map-inv-is-equiv H) ( is-equiv-map-inv-is-equiv H) abstract is-contr-equiv' : (e : A ≃ B) → is-contr A → is-contr B is-contr-equiv' (e , H) = is-contr-is-equiv' e H module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} where abstract is-equiv-is-contr : (f : A → B) → is-contr A → is-contr B → is-equiv f is-equiv-is-contr f H K = is-equiv-is-invertible ( λ y → center H) ( λ y → eq-is-contr K) ( contraction H) equiv-is-contr : is-contr A → is-contr B → A ≃ B pr1 (equiv-is-contr H K) a = center K pr2 (equiv-is-contr H K) = is-equiv-is-contr _ H K
The type of equivalences between contractible types is contractible
module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} where is-contr-equiv-is-contr : is-contr A → is-contr B → is-contr (A ≃ B) is-contr-equiv-is-contr (a , α) (b , β) = is-contr-Σ ( is-contr-function-type (b , β)) ( λ x → b) ( is-contr-product ( is-contr-Σ ( is-contr-function-type (a , α)) ( λ y → a) ( is-contr-Π (is-prop-is-contr (b , β) b))) ( is-contr-Σ ( is-contr-function-type (a , α)) ( λ y → a) ( is-contr-Π (is-prop-is-contr (a , α) a))))
Recent changes
- 2026-05-02. Fredrik Bakke and Egbert Rijke. Remove dependency between
BUILTINand postulates (#1373).