# Π-decompositions of types ```agda {-# OPTIONS --lossy-unification #-} module foundation.pi-decompositions where ``` <details><summary>Imports</summary> ```agda open import foundation.dependent-pair-types open import foundation.equivalence-extensionality open import foundation.equivalences open import foundation.functoriality-dependent-function-types open import foundation.fundamental-theorem-of-identity-types open import foundation.structure-identity-principle open import foundation.univalence open import foundation.universe-levels open import foundation.whiskering-homotopies-composition open import foundation-core.contractible-types open import foundation-core.function-types open import foundation-core.functoriality-dependent-pair-types open import foundation-core.homotopies open import foundation-core.identity-types open import foundation-core.torsorial-type-families open import foundation-core.type-theoretic-principle-of-choice ``` </details> ## Idea A Π-decomposition of a type `A` consists of a type `X` and a family of types `Y x` indexed by `x : X` equipped with an equivalence `A ≃ Π X Y`. The type `X` is called the indexing type of the Π-decomposition, the elements of `Y x` are called the cotypes of the Π-decomposition, and the equivalence `A ≃ Π X Y` is the matching correspondence of the Π-decomposition ## Definitions ### Π type ```agda Π : {l1 l2 : Level} (X : UU l1) (Y : X → UU l2) → UU (l1 ⊔ l2) Π X Y = (x : X) → Y x ``` ### General Π-decompositions ```agda Π-Decomposition : {l1 : Level} (l2 l3 : Level) → UU l1 → UU (l1 ⊔ lsuc l2 ⊔ lsuc l3) Π-Decomposition l2 l3 A = Σ ( UU l2) ( λ X → Σ ( X → UU l3) ( λ Y → A ≃ Π X Y)) module _ {l1 l2 l3 : Level} {A : UU l1} (D : Π-Decomposition l2 l3 A) where indexing-type-Π-Decomposition : UU l2 indexing-type-Π-Decomposition = pr1 D cotype-Π-Decomposition : indexing-type-Π-Decomposition → UU l3 cotype-Π-Decomposition = pr1 (pr2 D) matching-correspondence-Π-Decomposition : A ≃ Π indexing-type-Π-Decomposition cotype-Π-Decomposition matching-correspondence-Π-Decomposition = pr2 (pr2 D) map-matching-correspondence-Π-Decomposition : A → Π indexing-type-Π-Decomposition cotype-Π-Decomposition map-matching-correspondence-Π-Decomposition = map-equiv matching-correspondence-Π-Decomposition ``` ### Fibered Π-decompositions ```agda fibered-Π-Decomposition : {l1 : Level} (l2 l3 l4 l5 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2 ⊔ lsuc l3 ⊔ lsuc l4 ⊔ lsuc l5) fibered-Π-Decomposition l2 l3 l4 l5 A = Σ ( Π-Decomposition l2 l3 A) ( Π-Decomposition l4 l5 ∘ indexing-type-Π-Decomposition) module _ {l1 l2 l3 l4 l5 : Level} {A : UU l1} (X : fibered-Π-Decomposition l2 l3 l4 l5 A) where fst-fibered-Π-Decomposition : Π-Decomposition l2 l3 A fst-fibered-Π-Decomposition = pr1 X indexing-type-fst-fibered-Π-Decomposition : UU l2 indexing-type-fst-fibered-Π-Decomposition = indexing-type-Π-Decomposition fst-fibered-Π-Decomposition cotype-fst-fibered-Π-Decomposition : indexing-type-fst-fibered-Π-Decomposition → UU l3 cotype-fst-fibered-Π-Decomposition = cotype-Π-Decomposition fst-fibered-Π-Decomposition matching-correspondence-fst-fibered-Π-Decomposition : A ≃ Π ( indexing-type-Π-Decomposition ( fst-fibered-Π-Decomposition)) ( cotype-Π-Decomposition fst-fibered-Π-Decomposition) matching-correspondence-fst-fibered-Π-Decomposition = matching-correspondence-Π-Decomposition ( fst-fibered-Π-Decomposition) map-matching-correspondence-fst-fibered-Π-Decomposition : A → Π ( indexing-type-Π-Decomposition ( fst-fibered-Π-Decomposition)) ( cotype-Π-Decomposition fst-fibered-Π-Decomposition) map-matching-correspondence-fst-fibered-Π-Decomposition = map-matching-correspondence-Π-Decomposition fst-fibered-Π-Decomposition snd-fibered-Π-Decomposition : Π-Decomposition l4 l5 ( indexing-type-fst-fibered-Π-Decomposition) snd-fibered-Π-Decomposition = pr2 X indexing-type-snd-fibered-Π-Decomposition : UU l4 indexing-type-snd-fibered-Π-Decomposition = indexing-type-Π-Decomposition snd-fibered-Π-Decomposition cotype-snd-fibered-Π-Decomposition : indexing-type-snd-fibered-Π-Decomposition → UU l5 cotype-snd-fibered-Π-Decomposition = cotype-Π-Decomposition snd-fibered-Π-Decomposition matching-correspondence-snd-fibered-Π-Decomposition : indexing-type-fst-fibered-Π-Decomposition ≃ Π ( indexing-type-Π-Decomposition ( snd-fibered-Π-Decomposition)) ( cotype-Π-Decomposition snd-fibered-Π-Decomposition) matching-correspondence-snd-fibered-Π-Decomposition = matching-correspondence-Π-Decomposition ( snd-fibered-Π-Decomposition) map-matching-correspondence-snd-fibered-Π-Decomposition : indexing-type-fst-fibered-Π-Decomposition → Π ( indexing-type-Π-Decomposition ( snd-fibered-Π-Decomposition)) ( cotype-Π-Decomposition snd-fibered-Π-Decomposition) map-matching-correspondence-snd-fibered-Π-Decomposition = map-matching-correspondence-Π-Decomposition ( snd-fibered-Π-Decomposition) ``` #### Displayed double Π-decompositions ```agda displayed-Π-Decomposition : {l1 : Level} (l2 l3 l4 l5 : Level) (A : UU l1) → UU (l1 ⊔ lsuc l2 ⊔ lsuc l3 ⊔ lsuc l4 ⊔ lsuc l5) displayed-Π-Decomposition l2 l3 l4 l5 A = ( Σ (Π-Decomposition l2 l3 A) ( λ D → (u : indexing-type-Π-Decomposition D) → Π-Decomposition l4 l5 (cotype-Π-Decomposition D u))) module _ {l1 l2 l3 l4 l5 : Level} {A : UU l1} (X : displayed-Π-Decomposition l2 l3 l4 l5 A) where fst-displayed-Π-Decomposition : Π-Decomposition l2 l3 A fst-displayed-Π-Decomposition = pr1 X indexing-type-fst-displayed-Π-Decomposition : UU l2 indexing-type-fst-displayed-Π-Decomposition = indexing-type-Π-Decomposition fst-displayed-Π-Decomposition cotype-fst-displayed-Π-Decomposition : indexing-type-fst-displayed-Π-Decomposition → UU l3 cotype-fst-displayed-Π-Decomposition = cotype-Π-Decomposition fst-displayed-Π-Decomposition matching-correspondence-fst-displayed-Π-Decomposition : A ≃ Π ( indexing-type-Π-Decomposition fst-displayed-Π-Decomposition) ( cotype-Π-Decomposition fst-displayed-Π-Decomposition) matching-correspondence-fst-displayed-Π-Decomposition = matching-correspondence-Π-Decomposition fst-displayed-Π-Decomposition map-matching-correspondence-fst-displayed-Π-Decomposition : A → Π ( indexing-type-Π-Decomposition fst-displayed-Π-Decomposition) ( cotype-Π-Decomposition fst-displayed-Π-Decomposition) map-matching-correspondence-fst-displayed-Π-Decomposition = map-matching-correspondence-Π-Decomposition fst-displayed-Π-Decomposition snd-displayed-Π-Decomposition : ( x : indexing-type-fst-displayed-Π-Decomposition) → Π-Decomposition l4 l5 ( cotype-fst-displayed-Π-Decomposition x) snd-displayed-Π-Decomposition = pr2 X indexing-type-snd-displayed-Π-Decomposition : ( x : indexing-type-fst-displayed-Π-Decomposition) → UU l4 indexing-type-snd-displayed-Π-Decomposition x = indexing-type-Π-Decomposition ( snd-displayed-Π-Decomposition x) cotype-snd-displayed-Π-Decomposition : ( x : indexing-type-fst-displayed-Π-Decomposition) → indexing-type-snd-displayed-Π-Decomposition x → UU l5 cotype-snd-displayed-Π-Decomposition x = cotype-Π-Decomposition (snd-displayed-Π-Decomposition x) matching-correspondence-snd-displayed-Π-Decomposition : ( x : indexing-type-fst-displayed-Π-Decomposition) → ( cotype-fst-displayed-Π-Decomposition x ≃ Π ( indexing-type-snd-displayed-Π-Decomposition x) ( cotype-snd-displayed-Π-Decomposition x)) matching-correspondence-snd-displayed-Π-Decomposition x = matching-correspondence-Π-Decomposition ( snd-displayed-Π-Decomposition x) map-matching-correspondence-snd-displayed-Π-Decomposition : ( x : indexing-type-fst-displayed-Π-Decomposition) → cotype-fst-displayed-Π-Decomposition x → Π ( indexing-type-snd-displayed-Π-Decomposition x) ( cotype-snd-displayed-Π-Decomposition x) map-matching-correspondence-snd-displayed-Π-Decomposition x = map-matching-correspondence-Π-Decomposition ( snd-displayed-Π-Decomposition x) ``` ## Properties ### Characterization of equality of Π-decompositions ```agda equiv-Π-Decomposition : {l1 l2 l3 l4 l5 : Level} {A : UU l1} (X : Π-Decomposition l2 l3 A) (Y : Π-Decomposition l4 l5 A) → UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5) equiv-Π-Decomposition X Y = Σ ( indexing-type-Π-Decomposition X ≃ indexing-type-Π-Decomposition Y) ( λ e → Σ ( (x : indexing-type-Π-Decomposition X) → cotype-Π-Decomposition X x ≃ cotype-Π-Decomposition Y (map-equiv e x)) ( λ f → ( map-equiv-Π (λ z → cotype-Π-Decomposition Y z) e f ∘ ( map-matching-correspondence-Π-Decomposition X)) ~ ( map-matching-correspondence-Π-Decomposition Y))) module _ {l1 l2 l3 l4 l5 : Level} {A : UU l1} (X : Π-Decomposition l2 l3 A) (Y : Π-Decomposition l4 l5 A) (e : equiv-Π-Decomposition X Y) where equiv-indexing-type-equiv-Π-Decomposition : indexing-type-Π-Decomposition X ≃ indexing-type-Π-Decomposition Y equiv-indexing-type-equiv-Π-Decomposition = pr1 e map-equiv-indexing-type-equiv-Π-Decomposition : indexing-type-Π-Decomposition X → indexing-type-Π-Decomposition Y map-equiv-indexing-type-equiv-Π-Decomposition = map-equiv equiv-indexing-type-equiv-Π-Decomposition equiv-cotype-equiv-Π-Decomposition : (x : indexing-type-Π-Decomposition X) → cotype-Π-Decomposition X x ≃ cotype-Π-Decomposition Y ( map-equiv-indexing-type-equiv-Π-Decomposition x) equiv-cotype-equiv-Π-Decomposition = pr1 (pr2 e) map-equiv-cotype-equiv-Π-Decomposition : (x : indexing-type-Π-Decomposition X) → cotype-Π-Decomposition X x → cotype-Π-Decomposition Y ( map-equiv-indexing-type-equiv-Π-Decomposition x) map-equiv-cotype-equiv-Π-Decomposition x = map-equiv (equiv-cotype-equiv-Π-Decomposition x) module _ {l1 l2 l3 : Level} {A : UU l1} (X : Π-Decomposition l2 l3 A) where id-equiv-Π-Decomposition : equiv-Π-Decomposition X X pr1 id-equiv-Π-Decomposition = id-equiv pr1 (pr2 id-equiv-Π-Decomposition) x = id-equiv pr2 (pr2 id-equiv-Π-Decomposition) = id-map-equiv-Π (λ x → cotype-Π-Decomposition X x) ·r map-matching-correspondence-Π-Decomposition X is-torsorial-equiv-Π-Decomposition : is-torsorial (equiv-Π-Decomposition X) is-torsorial-equiv-Π-Decomposition = is-torsorial-Eq-structure ( is-torsorial-equiv (indexing-type-Π-Decomposition X)) ( pair (indexing-type-Π-Decomposition X) id-equiv) ( is-torsorial-Eq-structure ( is-torsorial-equiv-fam ( cotype-Π-Decomposition X)) ( pair ( cotype-Π-Decomposition X) ( id-equiv-fam (cotype-Π-Decomposition X))) ( is-torsorial-htpy-equiv ( ( equiv-Π ( cotype-Π-Decomposition X) ( id-equiv) ( λ _ → id-equiv)) ∘e ( matching-correspondence-Π-Decomposition X)))) equiv-eq-Π-Decomposition : (Y : Π-Decomposition l2 l3 A) → (X = Y) → equiv-Π-Decomposition X Y equiv-eq-Π-Decomposition .X refl = id-equiv-Π-Decomposition is-equiv-equiv-eq-Π-Decomposition : (Y : Π-Decomposition l2 l3 A) → is-equiv (equiv-eq-Π-Decomposition Y) is-equiv-equiv-eq-Π-Decomposition = fundamental-theorem-id is-torsorial-equiv-Π-Decomposition equiv-eq-Π-Decomposition extensionality-Π-Decomposition : (Y : Π-Decomposition l2 l3 A) → (X = Y) ≃ equiv-Π-Decomposition X Y pr1 (extensionality-Π-Decomposition Y) = equiv-eq-Π-Decomposition Y pr2 (extensionality-Π-Decomposition Y) = is-equiv-equiv-eq-Π-Decomposition Y eq-equiv-Π-Decomposition : (Y : Π-Decomposition l2 l3 A) → equiv-Π-Decomposition X Y → (X = Y) eq-equiv-Π-Decomposition Y = map-inv-equiv (extensionality-Π-Decomposition Y) ``` ### Invariance of Π-decompositions under equivalences ```agda module _ {l1 l2 : Level} {A : UU l1} {B : UU l2} (e : A ≃ B) where equiv-tr-Π-Decomposition : {l3 l4 : Level} → Π-Decomposition l3 l4 A ≃ Π-Decomposition l3 l4 B equiv-tr-Π-Decomposition = equiv-tot ( λ X → equiv-tot ( λ Y → equiv-precomp-equiv (inv-equiv e) (Π X Y))) map-equiv-tr-Π-Decomposition : {l3 l4 : Level} → Π-Decomposition l3 l4 A → Π-Decomposition l3 l4 B map-equiv-tr-Π-Decomposition = map-equiv equiv-tr-Π-Decomposition ``` ### Iterated Π-decompositions #### Characterization of identity type for fibered double Π-decompositions ```agda module _ {l1 l2 l3 l4 l5 l6 l7 l8 l9 : Level} {A : UU l1} (X : fibered-Π-Decomposition l2 l3 l4 l5 A) (Y : fibered-Π-Decomposition l6 l7 l8 l9 A) where equiv-fst-fibered-Π-Decomposition : UU (l1 ⊔ l2 ⊔ l3 ⊔ l6 ⊔ l7) equiv-fst-fibered-Π-Decomposition = equiv-Π-Decomposition ( fst-fibered-Π-Decomposition X) ( fst-fibered-Π-Decomposition Y) equiv-snd-fibered-Π-Decomposition : (e : equiv-fst-fibered-Π-Decomposition) → UU (l4 ⊔ l5 ⊔ l6 ⊔ l8 ⊔ l9) equiv-snd-fibered-Π-Decomposition e = equiv-Π-Decomposition ( map-equiv-tr-Π-Decomposition ( equiv-indexing-type-equiv-Π-Decomposition ( fst-fibered-Π-Decomposition X) ( fst-fibered-Π-Decomposition Y) ( e)) ( snd-fibered-Π-Decomposition X)) ( snd-fibered-Π-Decomposition Y) equiv-fibered-Π-Decomposition : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6 ⊔ l7 ⊔ l8 ⊔ l9) equiv-fibered-Π-Decomposition = Σ ( equiv-fst-fibered-Π-Decomposition) ( equiv-snd-fibered-Π-Decomposition) fst-equiv-fibered-Π-Decomposition : (e : equiv-fibered-Π-Decomposition) → equiv-fst-fibered-Π-Decomposition fst-equiv-fibered-Π-Decomposition = pr1 snd-equiv-fibered-Π-Decomposition : (e : equiv-fibered-Π-Decomposition) → equiv-snd-fibered-Π-Decomposition (fst-equiv-fibered-Π-Decomposition e) snd-equiv-fibered-Π-Decomposition = pr2 module _ { l1 l2 l3 l4 l5 : Level} {A : UU l1} ( D : fibered-Π-Decomposition l2 l3 l4 l5 A) where private X = fst-fibered-Π-Decomposition D Y = snd-fibered-Π-Decomposition D is-torsorial-equiv-fibered-Π-Decomposition : is-torsorial (equiv-fibered-Π-Decomposition D) is-torsorial-equiv-fibered-Π-Decomposition = is-torsorial-Eq-structure ( is-torsorial-equiv-Π-Decomposition X) ( X , id-equiv-Π-Decomposition X) ( is-torsorial-Eq-structure ( is-torsorial-equiv (indexing-type-Π-Decomposition Y)) ( pair (indexing-type-Π-Decomposition Y) id-equiv) ( is-torsorial-Eq-structure ( is-torsorial-equiv-fam ( cotype-Π-Decomposition Y)) ( pair ( cotype-Π-Decomposition Y) ( id-equiv-fam ( cotype-Π-Decomposition Y))) ( is-torsorial-htpy-equiv ( ( equiv-Π ( cotype-Π-Decomposition Y) ( id-equiv) ( λ _ → id-equiv)) ∘e ( matching-correspondence-Π-Decomposition Y))))) id-equiv-fibered-Π-Decomposition : equiv-fibered-Π-Decomposition D D pr1 id-equiv-fibered-Π-Decomposition = id-equiv-Π-Decomposition X pr1 (pr2 id-equiv-fibered-Π-Decomposition) = id-equiv pr1 (pr2 (pr2 id-equiv-fibered-Π-Decomposition)) x = id-equiv pr2 (pr2 (pr2 id-equiv-fibered-Π-Decomposition)) = id-map-equiv-Π (cotype-snd-fibered-Π-Decomposition D) ·r map-matching-correspondence-snd-fibered-Π-Decomposition D equiv-eq-fibered-Π-Decomposition : (D' : fibered-Π-Decomposition l2 l3 l4 l5 A) → (D = D') → equiv-fibered-Π-Decomposition D D' equiv-eq-fibered-Π-Decomposition .D refl = id-equiv-fibered-Π-Decomposition is-equiv-equiv-eq-fibered-Π-Decomposition : (D' : fibered-Π-Decomposition l2 l3 l4 l5 A) → is-equiv (equiv-eq-fibered-Π-Decomposition D') is-equiv-equiv-eq-fibered-Π-Decomposition = fundamental-theorem-id is-torsorial-equiv-fibered-Π-Decomposition equiv-eq-fibered-Π-Decomposition extensionality-fibered-Π-Decomposition : (D' : fibered-Π-Decomposition l2 l3 l4 l5 A) → (D = D') ≃ equiv-fibered-Π-Decomposition D D' pr1 (extensionality-fibered-Π-Decomposition D') = equiv-eq-fibered-Π-Decomposition D' pr2 (extensionality-fibered-Π-Decomposition D') = is-equiv-equiv-eq-fibered-Π-Decomposition D' eq-equiv-fibered-Π-Decomposition : (D' : fibered-Π-Decomposition l2 l3 l4 l5 A) → (equiv-fibered-Π-Decomposition D D') → (D = D') eq-equiv-fibered-Π-Decomposition D' = map-inv-equiv (extensionality-fibered-Π-Decomposition D') ``` #### Characterization of identity type for displayed double Π-decompositions ```agda module _ {l1 l2 l3 l4 l5 l6 l7 l8 l9 : Level} {A : UU l1} (X : displayed-Π-Decomposition l2 l3 l4 l5 A) (Y : displayed-Π-Decomposition l6 l7 l8 l9 A) where equiv-fst-displayed-Π-Decomposition : UU (l1 ⊔ l2 ⊔ l3 ⊔ l6 ⊔ l7) equiv-fst-displayed-Π-Decomposition = equiv-Π-Decomposition ( fst-displayed-Π-Decomposition X) ( fst-displayed-Π-Decomposition Y) equiv-snd-displayed-Π-Decomposition : (e : equiv-fst-displayed-Π-Decomposition) → UU (l2 ⊔ l4 ⊔ l5 ⊔ l7 ⊔ l8 ⊔ l9) equiv-snd-displayed-Π-Decomposition e = ( x : indexing-type-fst-displayed-Π-Decomposition X) → equiv-Π-Decomposition ( map-equiv-tr-Π-Decomposition ( equiv-cotype-equiv-Π-Decomposition ( fst-displayed-Π-Decomposition X) ( fst-displayed-Π-Decomposition Y) ( e) ( x)) ( snd-displayed-Π-Decomposition X x)) ( snd-displayed-Π-Decomposition Y ( map-equiv-indexing-type-equiv-Π-Decomposition ( fst-displayed-Π-Decomposition X) ( fst-displayed-Π-Decomposition Y) ( e) ( x))) equiv-displayed-Π-Decomposition : UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5 ⊔ l6 ⊔ l7 ⊔ l8 ⊔ l9) equiv-displayed-Π-Decomposition = Σ ( equiv-fst-displayed-Π-Decomposition) ( equiv-snd-displayed-Π-Decomposition) fst-equiv-displayed-Π-Decomposition : (e : equiv-displayed-Π-Decomposition) → equiv-fst-displayed-Π-Decomposition fst-equiv-displayed-Π-Decomposition = pr1 snd-equiv-displayed-Π-Decomposition : (e : equiv-displayed-Π-Decomposition) → equiv-snd-displayed-Π-Decomposition ( fst-equiv-displayed-Π-Decomposition e) snd-equiv-displayed-Π-Decomposition = pr2 module _ { l1 l2 l3 l4 l5 : Level} {A : UU l1} ( disp-D : displayed-Π-Decomposition l2 l3 l4 l5 A) where private X = fst-displayed-Π-Decomposition disp-D f-Y = snd-displayed-Π-Decomposition disp-D is-torsorial-equiv-displayed-Π-Decomposition : is-torsorial (equiv-displayed-Π-Decomposition disp-D) is-torsorial-equiv-displayed-Π-Decomposition = is-torsorial-Eq-structure ( is-torsorial-equiv-Π-Decomposition X) ( pair X (id-equiv-Π-Decomposition X)) ( is-contr-equiv ( Π-total-fam (λ x → _)) ( inv-distributive-Π-Σ) ( is-contr-Π ( λ x → is-torsorial-equiv-Π-Decomposition (f-Y x)))) id-equiv-displayed-Π-Decomposition : equiv-displayed-Π-Decomposition disp-D disp-D pr1 id-equiv-displayed-Π-Decomposition = id-equiv-Π-Decomposition X pr1 (pr2 id-equiv-displayed-Π-Decomposition x) = id-equiv pr1 (pr2 (pr2 id-equiv-displayed-Π-Decomposition x)) y = id-equiv pr2 (pr2 (pr2 id-equiv-displayed-Π-Decomposition x)) = id-map-equiv-Π ( cotype-snd-displayed-Π-Decomposition disp-D x) ·r map-matching-correspondence-snd-displayed-Π-Decomposition disp-D x equiv-eq-displayed-Π-Decomposition : (disp-D' : displayed-Π-Decomposition l2 l3 l4 l5 A) → (disp-D = disp-D') → equiv-displayed-Π-Decomposition disp-D disp-D' equiv-eq-displayed-Π-Decomposition .disp-D refl = id-equiv-displayed-Π-Decomposition is-equiv-equiv-eq-displayed-Π-Decomposition : (disp-D' : displayed-Π-Decomposition l2 l3 l4 l5 A) → is-equiv (equiv-eq-displayed-Π-Decomposition disp-D') is-equiv-equiv-eq-displayed-Π-Decomposition = fundamental-theorem-id is-torsorial-equiv-displayed-Π-Decomposition equiv-eq-displayed-Π-Decomposition extensionality-displayed-Π-Decomposition : (disp-D' : displayed-Π-Decomposition l2 l3 l4 l5 A) → (disp-D = disp-D') ≃ equiv-displayed-Π-Decomposition disp-D disp-D' pr1 (extensionality-displayed-Π-Decomposition D) = equiv-eq-displayed-Π-Decomposition D pr2 (extensionality-displayed-Π-Decomposition D) = is-equiv-equiv-eq-displayed-Π-Decomposition D eq-equiv-displayed-Π-Decomposition : (disp-D' : displayed-Π-Decomposition l2 l3 l4 l5 A) → (equiv-displayed-Π-Decomposition disp-D disp-D') → (disp-D = disp-D') eq-equiv-displayed-Π-Decomposition D = map-inv-equiv (extensionality-displayed-Π-Decomposition D) ```