module hott.ch2 where
open import foundation
variable
l : Level
A B A' B' X : UU l
x y z : A
exercise2-1 : x = y → y = z → x = z
exercise2-1 p q = p ∙ q
exercise2-1' : x = y → y = z → x = z
exercise2-1' refl refl = refl
exercise2-6 : (p : x = y) → is-equiv (λ (q : y = z) → p ∙ q)
exercise2-6 p =
((λ x₁ → (inv p) ∙ x₁) , λ x₁ →
equational-reasoning
(_∙_ p ∘ (λ x₂ → inv p ∙ x₂)) x₁
= p ∙ (inv p ∙ x₁)
by refl
= x₁
by is-section-inv-concat p x₁) ,
((λ x₁ → (inv p) ∙ x₁) , λ x₁ →
equational-reasoning
((λ x₂ → inv p ∙ x₂) ∘ _∙_ p) x₁
= inv p ∙ (p ∙ x₁)
by refl
= x₁
by is-retraction-inv-concat p x₁)
exercise2-9 : (A + B → X) ≃ (A → X) × (B → X)
exercise2-9 =
(λ f → (λ z → f (inl z)) , (λ z → f (inr z)))
, ( ( (λ g×h a+b → rec-coproduct (pr1 g×h) (pr2 g×h) a+b)
, λ g×h → refl)
, (λ g×h a+b → rec-coproduct (pr1 g×h) (pr2 g×h) a+b)
, λ f → eq-htpy (lemma₁ f))
where
rec : (f : A + B → X) → (A + B → X)
rec f = rec-coproduct (λ z → f (inl z)) (λ z → f (inr z))
lemma₁ : (f : A + B → X) → (a+b : A + B) → (rec f) a+b = f a+b
lemma₁ f (inl a) = refl
lemma₁ f (inr b) = refl
exercise2-17 : A ≃ A' → B ≃ B' → (A × B) ≃ (A' × B')
pr1 (exercise2-17 p q) =
let af = pr1 p
bf = pr1 q
in λ a×b → af (pr1 a×b) , bf (pr2 a×b)
pr2 (exercise2-17 p q) =
let af = pr1 p
bf = pr1 q
af-is-equiv = pr2 p
bf-is-equiv = pr2 q
af-is-inv = is-invertible-is-equiv af-is-equiv
bf-is-inv = is-invertible-is-equiv bf-is-equiv
af-inv = pr1 af-is-inv
bf-inv = pr1 bf-is-inv
do-af-inv = pr2 af-is-inv
do-bf-inv = pr2 bf-is-inv
inv = λ a'×b' → af-inv (pr1 a'×b') , bf-inv (pr2 a'×b')
in (inv ,
ind-product (λ x y →
equational-reasoning
(af ∘ af-inv) x , (bf ∘ bf-inv) y
= x , y
by lemma ((af ∘ af-inv) x) x ((bf ∘ bf-inv) y) y
(lemma₂ (eq-htpy (pr1 do-af-inv))) (lemma₂ (eq-htpy (pr1 do-bf-inv))) )),
inv ,
ind-product (λ x y →
equational-reasoning
(af-inv ∘ af) x , (bf-inv ∘ bf) y
= (x , y)
by lemma ((af-inv ∘ af) x) x ((bf-inv ∘ bf) y) y
(lemma₂ (eq-htpy (pr2 do-af-inv))) (lemma₂ (eq-htpy (pr2 do-bf-inv)))
)
where
lemma : (a a' : A) → (b b' : B)
→ a = a' → b = b'
→ (a , b) = (a' , b')
lemma a a' b b' refl refl = refl
lemma₂ : {f : A → A} → f = id → f x = x
lemma₂ refl = refl
exercise2-17-use-univalence : {A B A' B' : UU l} → A ≃ A' → B ≃ B' → (A × B) ≃ (A' × B')
exercise2-17-use-univalence p q = equiv-eq (lemma (eq-equiv p) (eq-equiv q))
where
lemma : A = A' → B = B' → A × B = A' × B'
lemma refl refl = refl
exercise2-17-+ : {A B A' B' : UU l} → A ≃ A' → B ≃ B' → (A + B) ≃ (A' + B')
exercise2-17-+ p q = equiv-eq (lemma (eq-equiv p) (eq-equiv q))
where
lemma : A = A' → B = B' → A + B = A' + B'
lemma refl refl = refl
exercise2-17-Π : {A B A' B' : UU l} → A ≃ A' → B ≃ B' → ((x : A) → B) ≃ ((x : A') → B')
exercise2-17-Π p q = equiv-eq (lemma (eq-equiv p) (eq-equiv q))
where
lemma : A = A' → B = B' → ((x : A) → B) = ((x : A') → B')
lemma refl refl = refl