# Lifts of families of elements
```agda
module orthogonal-factorization-systems.lifts-families-of-elements where
```
<details><summary>Imports</summary>
```agda
open import foundation.action-on-identifications-functions
open import foundation.dependent-pair-types
open import foundation.homotopies
open import foundation.homotopy-induction
open import foundation.identity-types
open import foundation.precomposition-functions
open import foundation.precomposition-type-families
open import foundation.transport-along-homotopies
open import foundation.transport-along-identifications
open import foundation.universe-levels
```
</details>
## Idea
Consider a type family
```text
B : (i : I) → A i → 𝒰
```
and a family of elements `a : (i : I) → A i`.
A
{{#concept "dependent lift" Disambiguation="family of elements" Agda=dependent-lift-family-of-elements}}
of the family of elements `a` to the type family `B` is a family of elements
```text
(i : I) → B i (a i).
```
An important special case occurs when `a : I → A` is a family of elements of a
fixed type `A`, and `B` is a type family over `A`. In this case, a
{{#concept "lift" Disambiguation="family of elements" Agda=lift-family-of-elements}}
of the family of elements `a` is a family of elements
```text
(i : I) → B (a i).
```
A family of elements equipped with a dependent lift is a
{{#concept "dependent lifted family of elements"}}, and analogously a family of
elements equipped with a lift is a {{#concept "lifted family of elements"}}.
To see how these families relate to
[lifts of maps](orthogonal-factorization-systems.lifts-of-maps.md), consider the
lifting diagram
```text
Σ (x : A) (B x)
|
| pr1
|
∨
I ------> A .
a
```
Then a lift of the map `a` against `pr1` is a map `b : I → Σ A B`, such that the
triangle commutes. Invoking the
[type theoretic principle of choice](foundation.type-theoretic-principle-of-choice.md),
we can show that this type is equivalent to the type of families of elements
`(i : I) → B (a i)`:
```text
Σ (b : I → Σ A B) ((i : I) → a i = pr1 (b i))
≃ (i : I) → Σ ((x , b) : Σ A B) (a i = x)
≃ (i : I) → Σ (x : A) (a i = x × B x)
≃ (i : I) → B (a i) .
```
The first equivalence is the principle of choice, the second is associativity of
dependent pair types, and the third is the left unit law of dependent pair
types, since `Σ (x : A) (a i = x)` is
[contractible](foundation.contractible-types.md).
## Definitions
### Dependent lifts of families of elements
```agda
module _
{l1 l2 l3 : Level} {I : UU l1} {A : I → UU l2} (B : (i : I) → A i → UU l3)
(a : (i : I) → A i)
where
dependent-lift-family-of-elements : UU (l1 ⊔ l3)
dependent-lift-family-of-elements = (i : I) → B i (a i)
```
### Lifts of families of elements
```agda
module _
{l1 l2 l3 : Level} {I : UU l1} {A : UU l2} (B : A → UU l3) (a : I → A)
where
lift-family-of-elements : UU (l1 ⊔ l3)
lift-family-of-elements = dependent-lift-family-of-elements (λ _ → B) a
```
### Dependent lifted families of elements
```agda
module _
{l1 l2 l3 : Level} {I : UU l1} (A : I → UU l2) (B : (i : I) → A i → UU l3)
where
dependent-lifted-family-of-elements : UU (l1 ⊔ l2 ⊔ l3)
dependent-lifted-family-of-elements =
Σ ( (i : I) → A i)
( dependent-lift-family-of-elements B)
```
### Lifted families of elements
```agda
module _
{l1 l2 l3 : Level} (I : UU l1) {A : UU l2} (B : A → UU l3)
where
lifted-family-of-elements : UU (l1 ⊔ l2 ⊔ l3)
lifted-family-of-elements =
dependent-lifted-family-of-elements (λ (_ : I) → A) (λ _ → B)
```
### Dependent lifts of binary families of elements
```agda
module _
{l1 l2 l3 l4 : Level} {I : UU l1} {A : I → UU l2} {B : (i : I) → A i → UU l3}
(C : (i : I) (x : A i) → B i x → UU l4) (a : (i : I) → A i)
where
dependent-lift-binary-family-of-elements : UU (l1 ⊔ l3 ⊔ l4)
dependent-lift-binary-family-of-elements =
dependent-lift-family-of-elements (λ i x → (y : B i x) → C i x y) a
```
### Lifts of binary families of elements
```agda
module _
{l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {B : A → UU l3}
{C : (x : A) → B x → UU l4} (a : I → A)
where
lift-binary-family-of-elements : UU (l1 ⊔ l3 ⊔ l4)
lift-binary-family-of-elements =
dependent-lift-binary-family-of-elements (λ _ → C) a
```
## Properties
### Transport in lifts of families of elements along homotopies of precompositions
Given a map `a : I → A`, and a homotopy `H : f ~ g`, where `f, g : J → I`, we
know that there is an identification `a ∘ f = a ∘ g`. Transporting along this
identification in the type of lifts of families of elements into a type family
`B : A → 𝓤`, we get a map
```text
((j : J) → B (a (f j))) → ((j : J) → B (a (g j))) .
```
We show that this map is homotopic to transporting along `H` in the type family
`B ∘ a : I → 𝓤`.
```agda
module _
{l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} (B : A → UU l3) (a : I → A)
{J : UU l4} {f : J → I}
where
statement-tr-lift-family-of-elements-precomp :
{g : J → I} (H : f ~ g) → UU (l3 ⊔ l4)
statement-tr-lift-family-of-elements-precomp H =
tr (lift-family-of-elements B) (htpy-precomp H A a) ~
tr-htpy (λ _ → precomp-family a B) H
tr-lift-family-of-elements-precomp-refl-htpy :
statement-tr-lift-family-of-elements-precomp refl-htpy
tr-lift-family-of-elements-precomp-refl-htpy b =
ap
( λ p → tr (lift-family-of-elements B) p b)
( compute-htpy-precomp-refl-htpy f A a)
abstract
tr-lift-family-of-elements-precomp :
{g : J → I} (H : f ~ g) → statement-tr-lift-family-of-elements-precomp H
tr-lift-family-of-elements-precomp =
ind-htpy f
( λ g → statement-tr-lift-family-of-elements-precomp)
( tr-lift-family-of-elements-precomp-refl-htpy)
compute-tr-lift-family-of-elements-precomp :
tr-lift-family-of-elements-precomp refl-htpy =
tr-lift-family-of-elements-precomp-refl-htpy
compute-tr-lift-family-of-elements-precomp =
compute-ind-htpy f
( λ g → statement-tr-lift-family-of-elements-precomp)
( tr-lift-family-of-elements-precomp-refl-htpy)
```
## See also
- [Double lifts of families of elements](orthogonal-factorization-systems.double-lifts-families-of-elements.md)
- [Lifts of maps](orthogonal-factorization-systems.lifts-of-maps.md)