foundations.CoproductIdentities.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.CoproductIdentities where open import foundations.BasicTypes open import foundations.BasicFunctions open import foundations.Transport open import foundations.TransportLemmas
Coproduct identities and extra ∑-lemmas
∑-≡
: ∀ {ℓ₁ ℓ₂ : Level} {A : Type ℓ₁} → (B : A → Type ℓ₂)
→ {ab ab' : ∑ A B}
→ (p : π₁ ab ≡ π₁ ab')
→ π₂ ab ≡ π₂ ab' [ B / p ]
--------------------------
→ ab ≡ ab'
∑-≡ B idp idp = idp
π₁-≡
: ∀ {ℓ₁ ℓ₂ : Level} {A : Type ℓ₁} → (B : A → Type ℓ₂)
→ {ab ab' : ∑ A B}
→ ab ≡ ab'
----------------
→ π₁ ab ≡ π₁ ab'
π₁-≡ B idp = idp
π₂-≡
: ∀ {ℓ₁ ℓ₂ : Level} {A : Type ℓ₁} → (B : A → Type ℓ₂)
→ {ab ab' : ∑ A B}
→ (p : ab ≡ ab')
---------------------------------------
→ (π₂ ab) ≡ (π₂ ab') [ B / (π₁-≡ B p) ]
π₂-≡ B idp = idp
∑-map
: ∀ {ℓ₁ ℓ₂ ℓ₃ ℓ₄ : Level} {A : Type ℓ₁} {B : A → Type ℓ₂}
→ {A' : Type ℓ₃} {B' : A' → Type ℓ₄}
→ (f : A → A')
→ ((a : A) → B a → B' (f a))
----------------------------
→ ∑ A B → ∑ A' B'
∑-map f g p = (f (π₁ p) , g (π₁ p) (π₂ p))
∑-map-compose
: ∀ {i₀ j₀ i₁ j₁ i₂ j₂}
→ {A₀ : Type i₀} {B₀ : A₀ → Type j₀}
→ {A₁ : Type i₁} {B₁ : A₁ → Type j₁}
→ {A₂ : Type i₂} {B₂ : A₂ → Type j₂}
→ (f₀ : A₀ → A₁) → (f₁ : (a : A₀) → B₀ a → B₁ (f₀ a))
→ (g₀ : A₁ → A₂) → (g₁ : (a : A₁) → B₁ a → B₂ (g₀ a))
→ (x : ∑ A₀ B₀)
-------------------------------------------------------
→ ∑-map (g₀ ∘ f₀) (λ a b → g₁ (f₀ a) (f₁ a b)) x
≡ (∑-map {B' = B₂} g₀ g₁ (∑-map {B' = B₁} f₀ f₁ x))
∑-map-compose _ _ _ _ (a , b) = idp
∑-lift
: ∀ {ℓ₁ ℓ₂ : Level} {A : Type ℓ₁} {B : A → Type ℓ₂} {C : A → Type ℓ₂}
→ (∀ a → B a → C a)
--------------------
→ ∑ A B → ∑ A C
∑-lift f = ∑-map id f
Some of the following identities are a customized version of the lemmas above.
module Sigma {ℓᵢ ℓⱼ} {A : Type ℓᵢ} {P : A → Type ℓⱼ} where
Two dependent pairs are equal if they are componentwise equal.
Σ-componentwise
: ∀ {v w : Σ A P}
→ v ≡ w
----------------------------------------------
→ Σ (π₁ v ≡ π₁ w) (λ p → tr P p (π₂ v) ≡ π₂ w)
Σ-componentwise idp = (idp , idp)
Σ-bycomponents
: ∀ {v w : Σ A P}
→ Σ (π₁ v ≡ π₁ w) (λ p → (π₂ v) ≡ (π₂ w) [ P ↓ p ] )
-----------------------------------------------
→ v ≡ w
Σ-bycomponents (idp , idp) = idp
Synonym of Σ-bycomponents:
pair= = Σ-bycomponents
A trivial consequence is the following identification:
lift-pair=
: ∀ {x y : A} {u : P x}
→ (p : x ≡ y)
--------------------------------------------------------
→ lift {A = A}{C = P} p u ≡ pair= (p , refl (tr P p u))
lift-pair= idp = idp
Uniqueness principle property for products
uppt : (x : Σ A P) → (π₁ x , π₂ x) ≡ x uppt (a , b) = idp
Σ-ap-π₁
: ∀ {a₁ a₂ : A} {b₁ : P a₁} {b₂ : P a₂}
→ (α : a₁ ≡ a₂)
→ (γ : b₁ ≡ b₂ [ P ↓ α ])
------------------------------
→ ap π₁ (pair= (α , γ)) ≡ α
Σ-ap-π₁ idp idp = idp
ap-π₁-pair= = Σ-ap-π₁
ap-π₁-!pair=
: ∀ {a₁ a₂ : A} {b₁ : P a₁} {b₂ : P a₂}
→ (α : a₁ ≡ a₂)
→ (γ : b₁ ≡ b₂ [ P ↓ α ])
------------------------------
→ ap π₁ (! (pair= (α , γ))) ≡ (! α)
ap-π₁-!pair= idp idp = idp
open Sigma public
transport-fun-dependent-bezem
: ∀ {ℓᵢ ℓⱼ} {X : Type ℓᵢ} {A : X → Type ℓⱼ}
{B : (x : X) → (a : A x) → Type ℓⱼ} {x y : X}
→ (p : x ≡ y)
→ (f : (a : A x) → B x a)
→ (a' : A y)
----------------------------------------------------------
→ (tr (λ x → (a : A x) → B x a) p f) a'
≡ tr (λ w → B (π₁ w) (π₂ w))
(pair= (p , transport-inv p )) (f (tr A (! p) a'))
transport-fun-dependent-bezem idp f a' = idp
{- The following I found it in HoTT-Agda, very convenient lemma -}
module _ {i j k} {A : Type i} {B : A → Type j} {C : (a : A) → B a → Type k}
where
↓-Σ-in : {x x' : A} {p : x ≡ x'} {r : B x} {r' : B x'}
{s : C x r} {s' : C x' r'}
(q : r ≡ r' [ B ↓ p ])
→ s ≡ s' [ uncurry C ↓ pair= (p , q) ]
→ (r , s) ≡ (r' , s') [ (λ x → Σ (B x) (C x)) ↓ p ]
↓-Σ-in {p = idp} idp t = pair= (idp , t)
(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