# Coproduct decompositions
```agda
module foundation.coproduct-decompositions where
```
<details><summary>Imports</summary>
```agda
open import foundation.action-on-identifications-functions
open import foundation.coproduct-decompositions-subuniverse
open import foundation.dependent-pair-types
open import foundation.equivalence-extensionality
open import foundation.function-extensionality
open import foundation.functoriality-coproduct-types
open import foundation.fundamental-theorem-of-identity-types
open import foundation.structure-identity-principle
open import foundation.transposition-identifications-along-equivalences
open import foundation.type-arithmetic-coproduct-types
open import foundation.type-arithmetic-dependent-pair-types
open import foundation.type-arithmetic-empty-type
open import foundation.unit-type
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.coproduct-types
open import foundation-core.equality-dependent-pair-types
open import foundation-core.equivalences
open import foundation-core.fibers-of-maps
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.propositions
open import foundation-core.torsorial-type-families
open import foundation-core.transport-along-identifications
open import univalent-combinatorics.equality-standard-finite-types
open import univalent-combinatorics.standard-finite-types
```
</details>
## Definitions
### Binary coproduct decomposition
```agda
module _
{l1 : Level} (l2 l3 : Level) (X : UU l1)
where
binary-coproduct-Decomposition : UU (l1 ⊔ lsuc l2 ⊔ lsuc l3)
binary-coproduct-Decomposition =
Σ ( UU l2) ( λ A → Σ ( UU l3) ( λ B → (X ≃ (A + B))))
module _
{l1 l2 l3 : Level} {X : UU l1}
(d : binary-coproduct-Decomposition l2 l3 X)
where
left-summand-binary-coproduct-Decomposition : UU l2
left-summand-binary-coproduct-Decomposition = pr1 d
right-summand-binary-coproduct-Decomposition : UU l3
right-summand-binary-coproduct-Decomposition = pr1 (pr2 d)
matching-correspondence-binary-coproduct-Decomposition :
X ≃
( left-summand-binary-coproduct-Decomposition +
right-summand-binary-coproduct-Decomposition)
matching-correspondence-binary-coproduct-Decomposition = pr2 (pr2 d)
```
## Propositions
### Coproduct decomposition is equivalent to coproduct decomposition of a full subuniverse
```agda
equiv-coproduct-Decomposition-full-subuniverse :
{l1 : Level} → (X : UU l1) →
binary-coproduct-Decomposition l1 l1 X ≃
binary-coproduct-Decomposition-subuniverse (λ _ → unit-Prop) (X , star)
pr1 (equiv-coproduct-Decomposition-full-subuniverse X) d =
( left-summand-binary-coproduct-Decomposition d , star) ,
( right-summand-binary-coproduct-Decomposition d , star) ,
( matching-correspondence-binary-coproduct-Decomposition d)
pr2 (equiv-coproduct-Decomposition-full-subuniverse X) =
is-equiv-is-invertible
( λ d →
type-left-summand-binary-coproduct-Decomposition-subuniverse
( λ _ → unit-Prop)
( X , star)
( d) ,
type-right-summand-binary-coproduct-Decomposition-subuniverse
( λ _ → unit-Prop)
( X , star)
( d) ,
matching-correspondence-binary-coproduct-Decomposition-subuniverse
( λ _ → unit-Prop)
( X , star)
( d))
( λ d →
eq-equiv-binary-coproduct-Decomposition-subuniverse
( λ _ → unit-Prop)
( X , star)
( _)
( d)
( id-equiv ,
( id-equiv ,
right-whisker-comp
( id-map-coproduct _ _)
( map-equiv
( matching-correspondence-binary-coproduct-Decomposition-subuniverse
( λ _ → unit-Prop)
( X , star)
( d))))))
( refl-htpy)
```
### Characterization of equality of binary coproduct Decomposition
```agda
equiv-binary-coproduct-Decomposition :
{l1 l2 l3 l4 l5 : Level} {A : UU l1}
(X : binary-coproduct-Decomposition l2 l3 A)
(Y : binary-coproduct-Decomposition l4 l5 A) →
UU (l1 ⊔ l2 ⊔ l3 ⊔ l4 ⊔ l5)
equiv-binary-coproduct-Decomposition X Y =
Σ ( left-summand-binary-coproduct-Decomposition X ≃
left-summand-binary-coproduct-Decomposition Y)
( λ el →
Σ ( right-summand-binary-coproduct-Decomposition X ≃
right-summand-binary-coproduct-Decomposition Y)
( λ er →
( map-coproduct (map-equiv el) (map-equiv er) ∘
map-equiv
( matching-correspondence-binary-coproduct-Decomposition X)) ~
( map-equiv
( matching-correspondence-binary-coproduct-Decomposition Y))))
module _
{l1 l2 l3 l4 l5 : Level} {A : UU l1}
(X : binary-coproduct-Decomposition l2 l3 A)
(Y : binary-coproduct-Decomposition l4 l5 A)
(e : equiv-binary-coproduct-Decomposition X Y)
where
equiv-left-summand-equiv-binary-coproduct-Decomposition :
left-summand-binary-coproduct-Decomposition X ≃
left-summand-binary-coproduct-Decomposition Y
equiv-left-summand-equiv-binary-coproduct-Decomposition = pr1 e
map-equiv-left-summand-equiv-binary-coproduct-Decomposition :
left-summand-binary-coproduct-Decomposition X →
left-summand-binary-coproduct-Decomposition Y
map-equiv-left-summand-equiv-binary-coproduct-Decomposition =
map-equiv equiv-left-summand-equiv-binary-coproduct-Decomposition
equiv-right-summand-equiv-binary-coproduct-Decomposition :
right-summand-binary-coproduct-Decomposition X ≃
right-summand-binary-coproduct-Decomposition Y
equiv-right-summand-equiv-binary-coproduct-Decomposition = pr1 (pr2 e)
map-equiv-right-summand-equiv-binary-coproduct-Decomposition :
right-summand-binary-coproduct-Decomposition X →
right-summand-binary-coproduct-Decomposition Y
map-equiv-right-summand-equiv-binary-coproduct-Decomposition =
map-equiv (equiv-right-summand-equiv-binary-coproduct-Decomposition)
module _
{l1 l2 l3 : Level} {A : UU l1} (X : binary-coproduct-Decomposition l2 l3 A)
where
id-equiv-binary-coproduct-Decomposition :
equiv-binary-coproduct-Decomposition X X
pr1 id-equiv-binary-coproduct-Decomposition = id-equiv
pr1 (pr2 id-equiv-binary-coproduct-Decomposition) = id-equiv
pr2 (pr2 id-equiv-binary-coproduct-Decomposition) x =
id-map-coproduct
( left-summand-binary-coproduct-Decomposition X)
( right-summand-binary-coproduct-Decomposition X)
( map-equiv
( matching-correspondence-binary-coproduct-Decomposition X)
( x))
is-torsorial-equiv-binary-coproduct-Decomposition :
is-torsorial (equiv-binary-coproduct-Decomposition X)
is-torsorial-equiv-binary-coproduct-Decomposition =
is-torsorial-Eq-structure
( is-torsorial-equiv ( left-summand-binary-coproduct-Decomposition X))
( left-summand-binary-coproduct-Decomposition X , id-equiv)
( is-torsorial-Eq-structure
( is-torsorial-equiv (right-summand-binary-coproduct-Decomposition X))
( right-summand-binary-coproduct-Decomposition X , id-equiv)
( is-torsorial-htpy-equiv
( equiv-coproduct id-equiv id-equiv ∘e
matching-correspondence-binary-coproduct-Decomposition X)))
equiv-eq-binary-coproduct-Decomposition :
(Y : binary-coproduct-Decomposition l2 l3 A) → (X = Y) →
equiv-binary-coproduct-Decomposition X Y
equiv-eq-binary-coproduct-Decomposition .X refl =
id-equiv-binary-coproduct-Decomposition
is-equiv-equiv-eq-binary-coproduct-Decomposition :
(Y : binary-coproduct-Decomposition l2 l3 A) →
is-equiv (equiv-eq-binary-coproduct-Decomposition Y)
is-equiv-equiv-eq-binary-coproduct-Decomposition =
fundamental-theorem-id
is-torsorial-equiv-binary-coproduct-Decomposition
equiv-eq-binary-coproduct-Decomposition
extensionality-binary-coproduct-Decomposition :
(Y : binary-coproduct-Decomposition l2 l3 A) →
(X = Y) ≃ equiv-binary-coproduct-Decomposition X Y
pr1 (extensionality-binary-coproduct-Decomposition Y) =
equiv-eq-binary-coproduct-Decomposition Y
pr2 (extensionality-binary-coproduct-Decomposition Y) =
is-equiv-equiv-eq-binary-coproduct-Decomposition Y
eq-equiv-binary-coproduct-Decomposition :
(Y : binary-coproduct-Decomposition l2 l3 A) →
equiv-binary-coproduct-Decomposition X Y → (X = Y)
eq-equiv-binary-coproduct-Decomposition Y =
map-inv-equiv (extensionality-binary-coproduct-Decomposition Y)
```
### Equivalence between `X → Fin 2` and `binary-coproduct-Decomposition l1 l1 X`
```agda
module _
{l1 : Level}
(X : UU l1)
where
module _
(f : X → Fin 2)
where
matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
(X ≃ ((fiber f (inl (inr star))) + (fiber f (inr star))))
matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ =
( ( equiv-coproduct
( left-unit-law-Σ-is-contr ( is-contr-Fin-one-ℕ) ( inr star))
( left-unit-law-Σ-is-contr is-contr-unit star)) ∘e
( ( right-distributive-Σ-coproduct ( Fin 1) unit (λ x → fiber f x) ∘e
( inv-equiv-total-fiber f))))
compute-left-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
(x : X) →
(inl (inr star) = f x) →
Σ ( Σ ( fiber f (inl (inr star)))
( λ y →
inl y =
( map-equiv
( matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ)
( x))))
( λ z → pr1 (pr1 z) = x)
compute-left-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
x p =
tr
( λ a →
Σ ( Σ ( fiber f (inl (inr star)))
( λ y →
inl y =
( map-coproduct
( map-left-unit-law-Σ-is-contr
( is-contr-Fin-one-ℕ)
( inr star))
( map-left-unit-law-Σ-is-contr is-contr-unit star))
( map-right-distributive-Σ-coproduct
( Fin 1)
( unit)
( λ x → fiber f x)
( pr1 a , x , pr2 a))))
( λ z → pr1 (pr1 z) = x))
( eq-pair-Σ p ( tr-Id-right p (inv p) ∙ left-inv p))
( ( ( x , (inv p)) ,
( ap
( inl)
( inv
( map-inv-eq-transpose-equiv
( left-unit-law-Σ-is-contr is-contr-Fin-one-ℕ (inr star))
( refl))))) ,
refl)
compute-left-inv-matching-correspondence-binary-coporducd-Decomposition-map-into-Fin-Two-ℕ :
(y : fiber f (inl (inr star))) →
pr1 y =
map-inv-equiv
( matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ)
( inl y)
compute-left-inv-matching-correspondence-binary-coporducd-Decomposition-map-into-Fin-Two-ℕ
y =
map-eq-transpose-equiv
( matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ)
( inv
( pr2
( pr1
( compute-left-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( pr1 y)
( inv (pr2 y))))) ∙
ap
inl
( eq-pair-Σ
( pr2
( compute-left-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( pr1 y)
( inv (pr2 y))))
( eq-is-prop (is-set-Fin 2 _ _))))
compute-right-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
(x : X) →
(inr star = f x) →
Σ ( Σ ( fiber f (inr star))
( λ y →
inr y =
( map-equiv
( matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ)
( x))))
( λ z → pr1 (pr1 z) = x)
compute-right-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
x p =
tr
( λ a →
Σ ( Σ ( fiber f (inr star))
( λ y →
inr y =
( map-coproduct
( map-left-unit-law-Σ-is-contr
( is-contr-Fin-one-ℕ)
( inr star))
( map-left-unit-law-Σ-is-contr is-contr-unit star))
( map-right-distributive-Σ-coproduct
( Fin 1)
( unit)
( λ x → fiber f x)
( pr1 a , x , pr2 a))))
( λ z → pr1 (pr1 z) = x))
( eq-pair-Σ p ( tr-Id-right p (inv p) ∙ left-inv p))
( ( ( x , (inv p)) ,
( ap
( inr)
( inv
( map-inv-eq-transpose-equiv
( left-unit-law-Σ-is-contr is-contr-unit star)
( refl))))) ,
refl)
compute-right-inv-matching-correspondence-binary-coporducd-Decomposition-map-into-Fin-Two-ℕ :
(y : fiber f (inr star)) →
pr1 y =
map-inv-equiv
( matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ)
( inr y)
compute-right-inv-matching-correspondence-binary-coporducd-Decomposition-map-into-Fin-Two-ℕ
y =
map-eq-transpose-equiv
( matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ)
( inv
( pr2
( pr1
( compute-right-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( pr1 y)
( inv (pr2 y))))) ∙
ap
inr
( eq-pair-Σ
( pr2
( compute-right-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( pr1 y)
( inv (pr2 y))))
( eq-is-prop (is-set-Fin 2 _ _))))
map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
binary-coproduct-Decomposition l1 l1 X
pr1 (map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ) =
fiber f (inl (inr star))
pr1 (pr2 (map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ)) =
fiber f (inr star)
pr2 (pr2 (map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ)) =
matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper :
(d : binary-coproduct-Decomposition l1 l1 X) →
( left-summand-binary-coproduct-Decomposition d +
right-summand-binary-coproduct-Decomposition d) →
Fin 2
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d (inl _) =
inl (inr star)
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d (inr _) =
inr star
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
(d : binary-coproduct-Decomposition l1 l1 X) →
X → Fin 2
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ d x =
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
( d)
( map-equiv
( matching-correspondence-binary-coproduct-Decomposition d)
( x))
compute-left-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper :
(d : binary-coproduct-Decomposition l1 l1 X) →
(t :
( left-summand-binary-coproduct-Decomposition d) +
( right-summand-binary-coproduct-Decomposition d)) →
( inl (inr star) =
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
( d)
( t)) →
Σ ( left-summand-binary-coproduct-Decomposition d)
( λ a → inl a = t)
compute-left-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d (inl y) x =
y , refl
compute-left-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
(d : binary-coproduct-Decomposition l1 l1 X) →
(x : X) →
( inl (inr star) =
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ d x) →
Σ ( left-summand-binary-coproduct-Decomposition d)
( λ a →
inl a =
map-equiv (matching-correspondence-binary-coproduct-Decomposition d) x)
compute-left-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
d x p =
compute-left-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
( d)
( map-equiv (matching-correspondence-binary-coproduct-Decomposition d) x)
( p)
compute-right-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper :
(d : binary-coproduct-Decomposition l1 l1 X) →
(t :
( left-summand-binary-coproduct-Decomposition d) +
( right-summand-binary-coproduct-Decomposition d)) →
( inr star =
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
( d)
( t)) →
Σ ( right-summand-binary-coproduct-Decomposition d)
( λ a → inr a = t)
compute-right-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d (inr y) x =
y , refl
compute-right-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
(d : binary-coproduct-Decomposition l1 l1 X) →
(x : X) →
( inr star =
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ d x) →
Σ ( right-summand-binary-coproduct-Decomposition d)
( λ a →
inr a =
map-equiv (matching-correspondence-binary-coproduct-Decomposition d) x)
compute-right-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
d x p =
compute-right-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
( d)
( map-equiv (matching-correspondence-binary-coproduct-Decomposition d) x)
( p)
is-retraction-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper :
(f : X → Fin 2) →
(x : X) →
(v : (inl (inr star) = f x) + (inr star = f x)) →
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ f) x =
f x)
is-retraction-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
f x (inl y) =
( inv
( ap
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
( map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ f))
( pr2
( pr1
( compute-left-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
f
x
y)))) ∙
y)
is-retraction-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
f x (inr y) =
( inv
( ap
( λ p →
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
( map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ f)
( p))
( pr2
( pr1
( compute-right-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
f
x
y)))) ∙
y)
is-retraction-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ ∘
map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ) ~
id
is-retraction-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
f =
eq-htpy
( λ x →
is-retraction-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
( f)
( x)
( map-coproduct
( map-left-unit-law-Σ-is-contr is-contr-Fin-one-ℕ ( inr star))
( map-left-unit-law-Σ-is-contr is-contr-unit star)
( map-right-distributive-Σ-coproduct
( Fin 1)
( unit)
( λ y → y = f x)
( f x , refl))))
equiv-left-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
(d : binary-coproduct-Decomposition l1 l1 X) →
left-summand-binary-coproduct-Decomposition
( map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ d)) ≃
left-summand-binary-coproduct-Decomposition d
equiv-left-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
d =
( ( right-unit-law-coproduct
( left-summand-binary-coproduct-Decomposition d)) ∘e
( ( equiv-coproduct
( right-unit-law-Σ-is-contr (λ _ → is-contr-unit) ∘e
equiv-tot
( λ _ → extensionality-Fin 2 (inl (inr star)) (inl (inr star))))
( right-absorption-Σ
(right-summand-binary-coproduct-Decomposition d) ∘e
equiv-tot
( λ _ → extensionality-Fin 2 (inr star) (inl (inr star))))) ∘e
( ( right-distributive-Σ-coproduct
( left-summand-binary-coproduct-Decomposition d)
( right-summand-binary-coproduct-Decomposition d)
( λ y →
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d y = inl (inr star))) ∘e
( equiv-Σ-equiv-base
( λ y →
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d y = inl (inr star))
( matching-correspondence-binary-coproduct-Decomposition d)))))
equiv-right-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
(d : binary-coproduct-Decomposition l1 l1 X) →
right-summand-binary-coproduct-Decomposition
( map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ d)) ≃
right-summand-binary-coproduct-Decomposition d
equiv-right-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
d =
( ( left-unit-law-coproduct
( right-summand-binary-coproduct-Decomposition d)) ∘e
( ( equiv-coproduct
( right-absorption-Σ
( left-summand-binary-coproduct-Decomposition d) ∘e
equiv-tot
( λ _ → extensionality-Fin 2 (inl (inr star)) (inr star)))
( right-unit-law-Σ-is-contr (λ _ → is-contr-unit) ∘e
equiv-tot
( λ _ → extensionality-Fin 2 (inr star) (inr star)))) ∘e
( ( right-distributive-Σ-coproduct
( left-summand-binary-coproduct-Decomposition d)
( right-summand-binary-coproduct-Decomposition d)
( λ y →
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d y = inr star)) ∘e
( equiv-Σ-equiv-base
( λ y →
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d y) =
( inr star))
( matching-correspondence-binary-coproduct-Decomposition d)))))
compute-equiv-left-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
( d : binary-coproduct-Decomposition l1 l1 X) →
( inl ∘
( map-equiv
( equiv-left-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)))) ~
( ( map-equiv
( matching-correspondence-binary-coproduct-Decomposition d)) ∘ pr1)
compute-equiv-left-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
d (x , p) =
ap
( λ x →
inl
( map-equiv
( ( right-unit-law-coproduct
( left-summand-binary-coproduct-Decomposition d)) ∘e
( ( equiv-coproduct
( right-unit-law-Σ-is-contr (λ _ → is-contr-unit) ∘e
equiv-tot
( λ _ →
extensionality-Fin 2 (inl (inr star)) (inl (inr star))))
( right-absorption-Σ
(right-summand-binary-coproduct-Decomposition d) ∘e
equiv-tot
( λ _ →
extensionality-Fin 2 (inr star) (inl (inr star))))) ∘e
( ( right-distributive-Σ-coproduct
( left-summand-binary-coproduct-Decomposition d)
( right-summand-binary-coproduct-Decomposition d)
( λ y →
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d y =
inl (inr star))))))
( x)))
( eq-pair-Σ
{t =
pair
( inl
( pr1
( compute-left-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
d x (inv p))))
( refl)}
( inv
( pr2
( compute-left-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)
( x)
( inv p))))
( eq-is-prop
( is-set-Fin 2 _ _))) ∙
( pr2
( compute-left-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)
( x)
( inv p)))
compute-equiv-right-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
( d : binary-coproduct-Decomposition l1 l1 X) →
( inr ∘
( map-equiv
( equiv-right-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)))) ~
( map-equiv
( matching-correspondence-binary-coproduct-Decomposition d) ∘ pr1)
compute-equiv-right-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
d (x , p) =
ap
( λ x →
inr
( map-equiv
( ( left-unit-law-coproduct
( right-summand-binary-coproduct-Decomposition d)) ∘e
( ( equiv-coproduct
( right-absorption-Σ
( left-summand-binary-coproduct-Decomposition d) ∘e
equiv-tot
( λ _ →
extensionality-Fin 2 (inl (inr star)) (inr star)))
( right-unit-law-Σ-is-contr (λ _ → is-contr-unit) ∘e
equiv-tot
( λ _ → extensionality-Fin 2 (inr star) (inr star)))) ∘e
( ( right-distributive-Σ-coproduct
( left-summand-binary-coproduct-Decomposition d)
( right-summand-binary-coproduct-Decomposition d)
( λ y →
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d y = inr star)))))
( x)))
( eq-pair-Σ
{ t =
( inr
( pr1
( compute-right-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)
( x)
( inv p))) ,
refl)}
( inv
( pr2
( compute-right-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)
( x)
( inv p))))
( eq-is-prop
( is-set-Fin 2 _ _))) ∙
( pr2
( compute-right-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)
( x)
( inv p)))
matching-correspondence-htpy-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper :
( d : binary-coproduct-Decomposition l1 l1 X) →
( x : X) →
( ( inl (inr star) =
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)
( x))) +
( inr star =
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)
( x)))) →
( map-coproduct
( map-equiv
( equiv-left-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)))
( map-equiv
( equiv-right-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))) ∘
map-equiv
( matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ d)))
( x) =
map-equiv (matching-correspondence-binary-coproduct-Decomposition d) x
matching-correspondence-htpy-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d x (inl p) =
ap
( map-coproduct
( map-equiv
( equiv-left-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)))
( map-equiv
( equiv-right-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))))
( inv
( pr2
( pr1
( compute-left-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))
( x)
( p))))) ∙
( compute-equiv-left-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)
( pr1
( pr1
( pr1
( compute-left-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))
( x)
( p)))) ,
( pr2
( pr1
( pr1
( compute-left-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))
( x)
( p)))))) ∙
ap
( map-equiv
( matching-correspondence-binary-coproduct-Decomposition d))
( pr2
( compute-left-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))
( x)
( p))))
matching-correspondence-htpy-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
d x (inr p) =
ap
( map-coproduct
( map-equiv
( equiv-left-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)))
( map-equiv
( equiv-right-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))))
( inv
( pr2
( pr1
( compute-right-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))
( x)
( p))))) ∙
( compute-equiv-right-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)
( pr1
( pr1
( pr1
( compute-right-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))
( x)
( p)))) ,
pr2
( pr1
( pr1
( compute-right-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))
( x)
( p))))) ∙
ap
( map-equiv
( matching-correspondence-binary-coproduct-Decomposition d))
( pr2
( compute-right-matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))
( x)
( p))))
value-map-into-Fin-Two-ℕ-eq-zero-or-one-helper :
(y : Fin 2) → (inl (inr star) = y) + (inr star = y)
value-map-into-Fin-Two-ℕ-eq-zero-or-one-helper (inl x) =
inl (ap inl (eq-is-contr is-contr-Fin-one-ℕ))
value-map-into-Fin-Two-ℕ-eq-zero-or-one-helper (inr x) =
inr (ap inr (eq-is-contr is-contr-unit))
value-map-into-Fin-Two-ℕ-eq-zero-or-one :
(f : X → Fin 2) →
(x : X) →
(inl (inr star) = f x) + (inr star = f x)
value-map-into-Fin-Two-ℕ-eq-zero-or-one f x =
value-map-into-Fin-Two-ℕ-eq-zero-or-one-helper (f x)
matching-correspondence-htpy-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
( d : binary-coproduct-Decomposition l1 l1 X) →
( map-coproduct
( map-equiv
( equiv-left-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)))
( map-equiv
( equiv-right-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))) ∘
map-equiv
( matching-correspondence-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
(map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d)))) ~
map-equiv (matching-correspondence-binary-coproduct-Decomposition d)
matching-correspondence-htpy-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
d x =
matching-correspondence-htpy-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ-helper
( d)
( x)
( value-map-into-Fin-Two-ℕ-eq-zero-or-one
( map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ d)
( x))
is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
( map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ ∘
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ) ~
id
is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ d =
eq-equiv-binary-coproduct-Decomposition
( ( map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ ∘
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ)
( d))
( d)
( equiv-left-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d) ,
equiv-right-summand-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d) ,
matching-correspondence-htpy-is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( d))
is-equiv-map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
is-equiv map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
is-equiv-map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ =
is-equiv-is-invertible
map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
( is-section-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ)
( is-retraction-map-inv-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ)
equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ :
(X → Fin 2) ≃ binary-coproduct-Decomposition l1 l1 X
pr1 equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ =
map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
pr2 equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ =
is-equiv-map-equiv-binary-coproduct-Decomposition-map-into-Fin-Two-ℕ
```