# Torsorial type families
```agda
module foundation-core.torsorial-type-families where
```
<details><summary>Imports</summary>
```agda
open import foundation.dependent-pair-types
open import foundation.universe-levels
open import foundation-core.contractible-types
open import foundation-core.identity-types
```
</details>
## Idea
A type family `B` over `A` is said to be
{{#concept "torsorial" Disambiguation="type family" Agda=is-torsorial}} if its
[total space](foundation.dependent-pair-types.md) is
[contractible](foundation-core.contractible-types.md).
The terminology of torsorial type families is derived from torsors of
[higher group theory](higher-group-theory.md), which are type families
`X : BG → 𝒰` with contractible total space. In the conventional sense of the
word, a torsor is therefore a torsorial type family over a
[pointed connected type](higher-group-theory.higher-groups.md). If we drop the
condition that they are defined over a pointed connected type, we get to the
notion of 'torsor-like', or indeed 'torsorial' type families.
The notion of torsoriality of type families is central in many characterizations
of identity types. Indeed, the
[fundamental theorem of identity types](foundation.fundamental-theorem-of-identity-types.md)
shows that for any type family `B` over `A` and any `a : A`, the type family `B`
is torsorial if and only if every
[family of maps](foundation.families-of-maps.md)
```text
(x : A) → a = x → B x
```
is a [family of equivalences](foundation.families-of-equivalences.md). Indeed,
the principal example of a torsorial type family is the
[identity type](foundation-core.identity-types.md) itself. More generally, any
type family in the [connected component](foundation.connected-components.md) of
the identity type `x ↦ a = x` is torsorial. These include torsors of higher
groups and [torsors](group-theory.torsors.md) of
[concrete groups](group-theory.concrete-groups.md).
Establishing torsoriality of type families is therefore one of the routine tasks
in univalent mathematics. Some files that provide general tools for establishing
torsoriality of type families include:
- [Equality of dependent function types](foundation.equality-dependent-function-types.md),
- The
[structure identity principle](foundation.structure-identity-principle.md),
- The [subtype identity principle](foundation.subtype-identity-principle.md).
## Definition
### The predicate of being a torsorial type family
```agda
is-torsorial :
{l1 l2 : Level} {B : UU l1} → (B → UU l2) → UU (l1 ⊔ l2)
is-torsorial E = is-contr (Σ _ E)
```
## Examples
### Identity types are torsorial
We prove two variants of the claim that
[identity types](foundation-core.identity-types.md) are torsorial:
- The type family `x ↦ a = x` is torsorial, and
- The type family `x ↦ x = a` is torsorial.
```agda
module _
{l : Level} {A : UU l}
where
abstract
is-torsorial-Id : (a : A) → is-torsorial (λ x → a = x)
pr1 (pr1 (is-torsorial-Id a)) = a
pr2 (pr1 (is-torsorial-Id a)) = refl
pr2 (is-torsorial-Id a) (.a , refl) = refl
abstract
is-torsorial-Id' : (a : A) → is-torsorial (λ x → x = a)
pr1 (pr1 (is-torsorial-Id' a)) = a
pr2 (pr1 (is-torsorial-Id' a)) = refl
pr2 (is-torsorial-Id' a) (.a , refl) = refl
```
### See also
- [Discrete relations](foundation.discrete-relations.md) are binary torsorial
type families.