# Pointed torsorial type families ```agda module foundation.pointed-torsorial-type-families where ``` <details><summary>Imports</summary> ```agda open import foundation.0-connected-types open import foundation.dependent-pair-types open import foundation.equivalences open import foundation.fundamental-theorem-of-identity-types open import foundation.locally-small-types open import foundation.logical-equivalences open import foundation.propositional-truncations open import foundation.sorial-type-families open import foundation.transport-along-identifications open import foundation.type-theoretic-principle-of-choice open import foundation.universe-levels open import foundation-core.cartesian-product-types open import foundation-core.contractible-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.identity-types open import foundation-core.propositions open import foundation-core.small-types open import foundation-core.torsorial-type-families open import structured-types.pointed-types ``` </details> ## Idea A type family `E` over a [pointed type](structured-types.pointed-types.md) `B` is said to be **pointed torsorial** if it comes equipped with a family of equivalences ```text E x ≃ (pt = x) ``` indexed by `x : B`. Note that the type of such a **torsorial structure** on the type family `E` is [equivalent](foundation-core.equivalences.md) to the type ```text E pt × is-torsorial E ``` Indeed, if `E` is pointed torsorial, then `refl : pt = pt` induces an element in `E pt`, and the [total space](foundation.dependent-pair-types.md) of `E` is [contractible](foundation.contractible-types.md) by the [fundamental theorem of identity types](foundation.fundamental-theorem-of-identity-types.md). Conversely, if we are given an element `y : E pt` and the total space of `E` is contractible, then the unique family of maps `(pt = x) → E x` mapping `refl` to `y` is a family of equivalences. ## Definitions ### The predicate of being a pointed torsorial type family ```agda module _ {l1 l2 : Level} (B : Pointed-Type l1) (E : type-Pointed-Type B → UU l2) where is-pointed-torsorial-family-of-types : UU (l1 ⊔ l2) is-pointed-torsorial-family-of-types = (x : type-Pointed-Type B) → E x ≃ (point-Pointed-Type B = x) module _ {l1 l2 : Level} (B : Pointed-Type l1) {E : type-Pointed-Type B → UU l2} (T : is-pointed-torsorial-family-of-types B E) where point-is-pointed-torsorial-family-of-types : E (point-Pointed-Type B) point-is-pointed-torsorial-family-of-types = map-inv-equiv (T (point-Pointed-Type B)) refl is-torsorial-space-is-pointed-torsorial-family-of-types : is-torsorial E is-torsorial-space-is-pointed-torsorial-family-of-types = fundamental-theorem-id' ( λ x → map-inv-equiv (T x)) ( λ x → is-equiv-map-inv-equiv (T x)) ``` ### Torsorial families of types ```agda pointed-torsorial-family-of-types : {l1 : Level} (l2 : Level) (B : Pointed-Type l1) → UU (l1 ⊔ lsuc l2) pointed-torsorial-family-of-types l2 B = Σ (type-Pointed-Type B → UU l2) (is-pointed-torsorial-family-of-types B) ``` ## Properties ### Any torsorial type family is sorial ```agda is-sorial-is-pointed-torsorial-family-of-types : {l1 l2 : Level} (B : Pointed-Type l1) {E : type-Pointed-Type B → UU l2} → is-pointed-torsorial-family-of-types B E → is-sorial-family-of-types B E is-sorial-is-pointed-torsorial-family-of-types B {E} H x y = equiv-tr E (map-equiv (H x) y) ``` ### Being pointed torsorial is equivalent to being pointed and having contractible total space ```agda module _ {l1 l2 : Level} (B : Pointed-Type l1) {E : type-Pointed-Type B → UU l2} where point-and-contractible-total-space-is-pointed-torsorial-family-of-types : is-pointed-torsorial-family-of-types B E → E (point-Pointed-Type B) × is-contr (Σ (type-Pointed-Type B) E) pr1 ( point-and-contractible-total-space-is-pointed-torsorial-family-of-types H) = point-is-pointed-torsorial-family-of-types B H pr2 ( point-and-contractible-total-space-is-pointed-torsorial-family-of-types H) = is-torsorial-space-is-pointed-torsorial-family-of-types B H ``` ### Pointed connected types equipped with a pointed torsorial family of types of universe level `l` are locally `l`-small ```agda module _ {l1 l2 : Level} (B : Pointed-Type l1) {E : type-Pointed-Type B → UU l2} (T : is-pointed-torsorial-family-of-types B E) where abstract is-locally-small-is-pointed-torsorial-family-of-types : is-0-connected (type-Pointed-Type B) → is-locally-small l2 (type-Pointed-Type B) is-locally-small-is-pointed-torsorial-family-of-types H x y = apply-universal-property-trunc-Prop ( mere-eq-is-0-connected H (point-Pointed-Type B) x) ( is-small-Prop l2 (x = y)) ( λ where refl → (E y , inv-equiv (T y))) ``` ### The type of pointed torsorial type families of universe level `l` over a pointed connected type is equivalent to the proposition that `B` is locally `l`-small ```agda module _ {l1 l2 : Level} (B : Pointed-Type l1) where is-locally-small-pointed-torsorial-family-of-types : is-0-connected (type-Pointed-Type B) → pointed-torsorial-family-of-types l2 B → is-locally-small l2 (type-Pointed-Type B) is-locally-small-pointed-torsorial-family-of-types H (E , T) = is-locally-small-is-pointed-torsorial-family-of-types B T H pointed-torsorial-family-of-types-is-locally-small : is-locally-small l2 (type-Pointed-Type B) → pointed-torsorial-family-of-types l2 B pr1 (pointed-torsorial-family-of-types-is-locally-small H) x = type-is-small (H (point-Pointed-Type B) x) pr2 (pointed-torsorial-family-of-types-is-locally-small H) x = inv-equiv-is-small (H (point-Pointed-Type B) x) is-prop-pointed-torsorial-family-of-types : is-prop (pointed-torsorial-family-of-types l2 B) is-prop-pointed-torsorial-family-of-types = is-prop-equiv' ( distributive-Π-Σ) ( is-prop-Π ( λ x → is-prop-equiv ( equiv-tot (λ X → equiv-inv-equiv)) ( is-prop-is-small l2 (point-Pointed-Type B = x)))) compute-pointed-torsorial-family-of-types-is-0-connected : is-0-connected (type-Pointed-Type B) → is-locally-small l2 (type-Pointed-Type B) ≃ pointed-torsorial-family-of-types l2 B compute-pointed-torsorial-family-of-types-is-0-connected H = equiv-iff ( is-locally-small-Prop l2 (type-Pointed-Type B)) ( pointed-torsorial-family-of-types l2 B , is-prop-pointed-torsorial-family-of-types) ( pointed-torsorial-family-of-types-is-locally-small) ( is-locally-small-pointed-torsorial-family-of-types H) is-contr-pointed-torsorial-family-of-types : is-locally-small l2 (type-Pointed-Type B) → is-contr (pointed-torsorial-family-of-types l2 B) is-contr-pointed-torsorial-family-of-types H = is-proof-irrelevant-is-prop ( is-prop-pointed-torsorial-family-of-types) ( pointed-torsorial-family-of-types-is-locally-small H) ```