foundations.SigmaEquivalence.md.
Version of Sunday, January 22, 2023, 10:42 PM
Powered by agda version 2.6.2.2-442c76b and pandoc 2.14.0.3
{-# OPTIONS --without-K --exact-split #-}
module foundations.SigmaEquivalence where open import foundations.TransportLemmas open import foundations.EquivalenceType open import foundations.HomotopyType open import foundations.QuasiinverseType open import foundations.CoproductIdentities
module _ {ℓ₁ ℓ₂ : Level} (A : Type ℓ₁) (P : A → Type ℓ₂) where
pair=Equiv
: {v w : Σ A P}
--------------------------------------------------------------------
→ Σ (π₁ v ≡ π₁ w) (λ p → tr (λ a → P a) p (π₂ v) ≡ π₂ w) ≃ (v ≡ w)
pair=Equiv = qinv-≃ Σ-bycomponents (Σ-componentwise , HΣ₁ , HΣ₂)
where
HΣ₁ : Σ-bycomponents ∘ Σ-componentwise ∼ id
HΣ₁ idp = idp
HΣ₂ : Σ-componentwise ∘ Σ-bycomponents ∼ id
HΣ₂ (idp , idp) = idp
private
f : {a₁ a₂ : A} {α : a₁ ≡ a₂}{c₁ : P a₁} {c₂ : P a₂}
→ {β : a₁ ≡ a₂}
→ {γ : tr P β c₁ ≡ c₂}
→ ap π₁ (pair= (β , γ)) ≡ α → β ≡ α
f {β = idp} {γ = idp} idp = idp
g : {a₁ a₂ : A} {α : a₁ ≡ a₂}{c₁ : P a₁} {c₂ : P a₂}
→ {β : a₁ ≡ a₂}
→ {γ : tr P β c₁ ≡ c₂}
→ β ≡ α → ap π₁ (pair= (β , γ)) ≡ α
g {β = idp} {γ = idp} idp = idp
f-g : {a₁ a₂ : A} {α : a₁ ≡ a₂}{c₁ : P a₁} {c₂ : P a₂}
→ {β : a₁ ≡ a₂}
→ {γ : tr P β c₁ ≡ c₂}
→ f {α = α}{β = β}{γ} ∘ g {α = α}{β = β} ∼ id
f-g {β = idp} {γ = idp} idp = idp
g-f : {a₁ a₂ : A} {α : a₁ ≡ a₂}{c₁ : P a₁} {c₂ : P a₂}
→ {β : a₁ ≡ a₂}
→ {γ : tr P β c₁ ≡ c₂}
→ g {α = α}{β = β}{γ} ∘ f {α = α}{β = β}{γ} ∼ id
g-f {β = idp} {γ = idp} idp = idp
ap-π₁-pair=Equiv
: ∀ {a₁ a₂ : A} {c₁ : P a₁} {c₂ : P a₂}
→ (α : a₁ ≡ a₂)
→ (γ : Σ (a₁ ≡ a₂) (λ p → c₁ ≡ c₂ [ P ↓ p ]))
-----------------------------------------------
→ (ap π₁ (pair= γ) ≡ α) ≃ (π₁ γ ≡ α)
ap-π₁-pair=Equiv {a₁ = a₁} α (β , γ) = qinv-≃ f (g , f-g , g-f)
pair-≃-∑
: ∀ {ℓ₁ ℓ₂ : Level}{A : Type ℓ₁}{B : A → Type ℓ₂}
→ {v w : ∑ A B}
→ (v ≡ w) ≃ (∑[ α ∶ π₁ v ≡ π₁ w ] (tr B α (π₂ v) ≡ (π₂ w)))
pair-≃-∑ = qinv-≃ Σ-componentwise (Σ-bycomponents
, (λ { (idp , idp) → idp}) , λ {idp → idp})
tuples-assoc
: {ℓ1 ℓ2 ℓ3 : Level}
→ {A : Type ℓ1}
→ {B : A → Type ℓ2}
→ {C : (a : A) → B a → Type ℓ3}
→ {u₁ u₂ : A} {v₁ : B u₁}{v₂ : B u₂} {c₁ : C u₁ v₁}{c₂ : C u₂ v₂}
→ ((u₁ , v₁ , c₁) ≡ (u₂ , v₂ , c₂))
≃ (((u₁ , v₁) , c₁) ≡ ((u₂ , v₂) , c₂))
tuples-assoc = qinv-≃ (λ {idp → idp}) ( (λ {idp → idp}) , (λ {idp → idp}) , (λ {idp → idp}))
∑-assoc
: {ℓ1 ℓ2 ℓ3 : Level}
→ {A : Type ℓ1}
→ {B : A → Type ℓ2}
→ {C : (a : A) → B a → Type ℓ3}
→ (∑[ a ∶ A ] (∑[ b ∶ B a ] C a b))
≃ (∑[ ab ∶ ∑ A B ] (C (fst ab) (snd ab)))
∑-assoc = qinv-≃ f
(g , (λ { _ → idp}) , λ {_ → idp})
where
private
f = λ {(a , (b , c)) → ( (a , b) , c)}
g = λ {((a , b) , c) → (a , (b , c))}
∑-assoc'
: {ℓ1 ℓ2 ℓ3 : Level}
→ {A : Type ℓ1}
→ {B : A → Type ℓ2}
→ {C : ∑ A B → Type ℓ3}
→ (∑[ ab ∶ ∑ A B ] (C ab))
≃ (∑[ a ∶ A ] (∑[ b ∶ B a ] C (a , b)))
∑-assoc' = qinv-≃ g
(f , (λ {_ → idp} ) , λ {_ → idp} )
where
private
f = λ {(a , (b , c)) → ( (a , b) , c)}
g = λ {((a , b) , c) → (a , (b , c))}
module _ {ℓ₁ ℓ₂ ℓ₃ ℓ₄ : Level}
where
∑-comm₂
: (A : Type ℓ₁)
→ (B : A → Type ℓ₂)
→ (C : A → Type ℓ₃)
→ (D : (ab : ∑[ ab ∶ ∑ A B ] (C (π₁ ab))) → Type ℓ₄)
→ (∑[ ab ∶ ∑ A B ] ∑[ c ∶ C (π₁ ab) ] D (ab , c))
≃ (∑[ ac ∶ ∑ A C ] ∑[ b ∶ B (π₁ ac) ] D (( (π₁ ac , b) , π₂ ac)))
∑-comm₂ A B C D = qinv-≃ f (g , ((λ {_ → idp}) , λ _ → idp))
where
private
f = λ { ((a , b) , (c , d)) → (( a , c) , (b , d))}
g = λ { ((a , c) , (b , d)) → ((a , b) , (c , d))}
choice
: {ℓ1 ℓ2 ℓ3 : Level}
→ {A : Type ℓ1}
→ {B : A → Type ℓ2}
→ {C : (a : A) → B a → Type ℓ3}
→ Π A (λ a → Σ (B a) (λ b → C a b)) ≃ Σ (Π A B) (λ g → Π A (λ a → C a (g a)))
choice = qinv-≃ f (g , (λ _ → idp) , (λ _ → idp))
where f = λ c → ((λ a → fst (c a)) , (λ a → snd (c a)))
g = λ d → (λ a → (fst d a , snd d a))
(2022-12-28)(57c278b4) Last updated: 2021-09-16 15:00:00 by jonathan.cubides (2022-07-06)(d3a4a8cf) minors by jonathan.cubides (2022-01-26)(4aef326b) [ reports ] added some revisions by jonathan.cubides (2021-12-20)(049db6a8) Added code of cubical experiments. by jonathan.cubides (2021-12-20)(961730c9) [ html ] regular update by jonathan.cubides (2021-12-20)(e0ef9faa) Fixed compilation and format, remove hidden parts by jonathan.cubides (2021-12-20)(5120e5d1) Added cubical experiment to the master by jonathan.cubides (2021-12-17)(828fdd0a) More revisions added for CPP by jonathan.cubides (2021-12-15)(0d6a99d8) Fixed some broken links and descriptions by jonathan.cubides (2021-12-15)(662a1f2d) [ .gitignore ] add by jonathan.cubides (2021-12-15)(0630ce66) Minor fixes by jonathan.cubides (2021-12-13)(04f10eba) Fixed a lot of details by jonathan.cubides (2021-12-10)(24195c9f) [ .gitignore ] ignore .zip and arxiv related files by jonathan.cubides (2021-12-09)(538d2859) minor fixes before dinner by jonathan.cubides (2021-12-09)(36a1a69f) [ planar.pdf ] w.i.p revisions to share on arxiv first by jonathan.cubides