# Extensions of double lifts of families of elements ```agda module orthogonal-factorization-systems.extensions-double-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.universe-levels open import foundation-core.function-types open import foundation-core.homotopies open import foundation-core.identity-types open import orthogonal-factorization-systems.double-lifts-families-of-elements open import orthogonal-factorization-systems.lifts-families-of-elements ``` </details> ## Idea Consider a [dependent lift](orthogonal-factorization-systems.lifts-families-of-elements.md) `b : (i : I) → B i (a i)` of a family of elements `a : I → A`, a type family `C` over `B` and a [double lift](orthogonal-factorization-systems.double-lifts-families-of-elements.md) ```text c : (i : I) → C i (a i) (b i) ``` of the lift `b` of `a`. An {{#concept "extension" Disambiguation="dependent double family of elements" Agda=extension-dependent-double-lift-family-of-elements}} of `b` to `A` consists of a family of elements `f : (i : I) (x : A i) (y : B i x) → C i x y` equipped with a [homotopy](foundation-core.homotopies.md) witnessing that the [identification](foundation-core.identity-types.md) `f i (a i) (b i) = c i` holds for every `i : I`. Extensions of dependent double lifts play a role in the [universal property of the family of fibers of a map](foundation.universal-property-family-of-fibers-of-maps.md) ## Definitions ### Evaluating families of elements at dependent double lifts of families of elements Any family of elements `b : (i : I) → B i (a i)` dependent over a family of elements `a : (i : I) → A i` induces an evaluation map ```text ((i : I) (x : A i) (y : B i x) → C i x y) → ((i : I) → C i (a i) (b i)) ``` given by `c ↦ (λ i → c i (a i) (b i))`. ```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} (b : dependent-lift-family-of-elements B a) where ev-dependent-double-lift-family-of-elements : ((i : I) (x : A i) (y : B i x) → C i x y) → dependent-double-lift-family-of-elements C b ev-dependent-double-lift-family-of-elements h i = h i (a i) (b i) ``` ### Evaluating families of elements at double lifts of families of elements Any family of elements `b : (i : I) → B (a i)` dependent over a family of elements `a : I → A` induces an evaluation map ```text ((x : A) (y : B x) → C x y) → ((i : I) → C (a i) (b i)) ``` given by `c ↦ (λ i → c (a i) (b i))`. ```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} (b : lift-family-of-elements B a) where ev-double-lift-family-of-elements : ((x : A) (y : B x) → C x y) → double-lift-family-of-elements C b ev-double-lift-family-of-elements h i = h (a i) (b i) ``` ### Dependent extensions of double lifts of 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) (y : B i x) → UU l4) {a : (i : I) → A i} (b : dependent-lift-family-of-elements B a) (c : dependent-double-lift-family-of-elements C b) where is-extension-dependent-double-lift-family-of-elements : (f : (i : I) (x : A i) (y : B i x) → C i x y) → UU (l1 ⊔ l4) is-extension-dependent-double-lift-family-of-elements f = ev-dependent-double-lift-family-of-elements b f ~ c extension-dependent-double-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) extension-dependent-double-lift-family-of-elements = Σ ( (i : I) (x : A i) (y : B i x) → C i x y) ( is-extension-dependent-double-lift-family-of-elements) 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) (y : B i x) → UU l4} {a : (i : I) → A i} {b : dependent-lift-family-of-elements B a} {c : dependent-double-lift-family-of-elements C b} (f : extension-dependent-double-lift-family-of-elements C b c) where family-of-elements-extension-dependent-double-lift-family-of-elements : (i : I) (x : A i) (y : B i x) → C i x y family-of-elements-extension-dependent-double-lift-family-of-elements = pr1 f is-extension-extension-dependent-double-lift-family-of-elements : is-extension-dependent-double-lift-family-of-elements C b c ( family-of-elements-extension-dependent-double-lift-family-of-elements) is-extension-extension-dependent-double-lift-family-of-elements = pr2 f ``` ### Extensions of double lifts of families of elements ```agda module _ {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {B : A → UU l3} (C : (x : A) (y : B x) → UU l4) {a : I → A} (b : lift-family-of-elements B a) (c : double-lift-family-of-elements C b) where is-extension-double-lift-family-of-elements : (f : (x : A) (y : B x) → C x y) → UU (l1 ⊔ l4) is-extension-double-lift-family-of-elements f = ev-double-lift-family-of-elements b f ~ c extension-double-lift-family-of-elements : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4) extension-double-lift-family-of-elements = Σ ((x : A) (y : B x) → C x y) is-extension-double-lift-family-of-elements module _ {l1 l2 l3 l4 : Level} {I : UU l1} {A : UU l2} {B : A → UU l3} {C : (x : A) (y : B x) → UU l4} {a : I → A} {b : lift-family-of-elements B a} {c : double-lift-family-of-elements C b} (f : extension-double-lift-family-of-elements C b c) where family-of-elements-extension-double-lift-family-of-elements : (x : A) (y : B x) → C x y family-of-elements-extension-double-lift-family-of-elements = pr1 f is-extension-extension-double-lift-family-of-elements : is-extension-double-lift-family-of-elements C b c ( family-of-elements-extension-double-lift-family-of-elements) is-extension-extension-double-lift-family-of-elements = pr2 f ``` ### Identity extensions of dependent double 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} (b : dependent-lift-family-of-elements B a) where id-extension-dependent-double-lift-family-of-elements : extension-dependent-double-lift-family-of-elements (λ i x y → B i x) b b pr1 id-extension-dependent-double-lift-family-of-elements i x = id pr2 id-extension-dependent-double-lift-family-of-elements = refl-htpy ``` ### Identity extensions of double lifts of families of elements ```agda module _ {l1 l2 l3 : Level} {I : UU l1} {A : UU l2} {B : A → UU l3} {a : I → A} (b : lift-family-of-elements B a) where id-extension-double-lift-family-of-elements : extension-double-lift-family-of-elements (λ x (y : B x) → B x) b b pr1 id-extension-double-lift-family-of-elements x = id pr2 id-extension-double-lift-family-of-elements = refl-htpy ``` ### Composition of extensions of dependent double lifts of families of elements ```agda module _ {l1 l2 l3 l4 l5 : Level} {I : UU l1} {A : I → UU l2} {B : (i : I) → A i → UU l3} {C : (i : I) → A i → UU l4} {D : (i : I) → A i → UU l5} {a : (i : I) → A i} {b : dependent-lift-family-of-elements B a} {c : dependent-lift-family-of-elements C a} {d : dependent-lift-family-of-elements D a} (g : extension-dependent-double-lift-family-of-elements ( λ i x (_ : C i x) → D i x) ( c) ( d)) (f : extension-dependent-double-lift-family-of-elements ( λ i x (_ : B i x) → C i x) ( b) ( c)) where family-of-elements-comp-extension-dependent-double-lift-family-of-elements : (i : I) (x : A i) → B i x → D i x family-of-elements-comp-extension-dependent-double-lift-family-of-elements i x = family-of-elements-extension-dependent-double-lift-family-of-elements g i x ∘ family-of-elements-extension-dependent-double-lift-family-of-elements f i x is-extension-comp-extension-dependent-double-lift-family-of-elements : is-extension-dependent-double-lift-family-of-elements ( λ i x _ → D i x) ( b) ( d) ( family-of-elements-comp-extension-dependent-double-lift-family-of-elements) is-extension-comp-extension-dependent-double-lift-family-of-elements i = ( ap ( family-of-elements-extension-dependent-double-lift-family-of-elements g i (a i)) ( is-extension-extension-dependent-double-lift-family-of-elements f i)) ∙ ( is-extension-extension-dependent-double-lift-family-of-elements g i) comp-extension-dependent-double-lift-family-of-elements : extension-dependent-double-lift-family-of-elements ( λ i x (_ : B i x) → D i x) ( b) ( d) pr1 comp-extension-dependent-double-lift-family-of-elements = family-of-elements-comp-extension-dependent-double-lift-family-of-elements pr2 comp-extension-dependent-double-lift-family-of-elements = is-extension-comp-extension-dependent-double-lift-family-of-elements ``` ### Composition of extensions of double lifts of families of elements ```agda module _ {l1 l2 l3 l4 l5 : Level} {I : UU l1} {A : UU l2} {B : A → UU l3} {C : A → UU l4} {D : A → UU l5} {a : I → A} {b : lift-family-of-elements B a} {c : lift-family-of-elements C a} {d : lift-family-of-elements D a} (g : extension-double-lift-family-of-elements (λ x (_ : C x) → D x) c d) (f : extension-double-lift-family-of-elements (λ x (_ : B x) → C x) b c) where family-of-elements-comp-extension-double-lift-family-of-elements : (x : A) → B x → D x family-of-elements-comp-extension-double-lift-family-of-elements x = family-of-elements-extension-double-lift-family-of-elements g x ∘ family-of-elements-extension-double-lift-family-of-elements f x is-extension-comp-extension-double-lift-family-of-elements : is-extension-double-lift-family-of-elements ( λ x _ → D x) ( b) ( d) ( family-of-elements-comp-extension-double-lift-family-of-elements) is-extension-comp-extension-double-lift-family-of-elements i = ( ap ( family-of-elements-extension-double-lift-family-of-elements g (a i)) ( is-extension-extension-double-lift-family-of-elements f i)) ∙ ( is-extension-extension-double-lift-family-of-elements g i) comp-extension-double-lift-family-of-elements : extension-double-lift-family-of-elements (λ x (_ : B x) → D x) b d pr1 comp-extension-double-lift-family-of-elements = family-of-elements-comp-extension-double-lift-family-of-elements pr2 comp-extension-double-lift-family-of-elements = is-extension-comp-extension-double-lift-family-of-elements ``` ## See also - [Extensions of lifts of families of elements](orthogonal-factorization-systems.extensions-lifts-families-of-elements.md) - [Extensions of maps](orthogonal-factorization-systems.extensions-of-maps.md) - [The universal property of the family of fibers of a map](foundation.universal-property-family-of-fibers-of-maps.md)