Martin Escardo 1st May 2020.
This is ported from the Midlands Graduate School 2019 lecture notes
https://www.cs.bham.ac.uk/~mhe/HoTT-UF-in-Agda-Lecture-Notes/HoTT-UF-Agda.html
https://github.com/martinescardo/HoTT-UF-Agda-Lecture-Notes
\begin{code}
{-# OPTIONS --without-K --exact-split --safe #-}
module MGS-Equivalence-Constructions where
open import MGS-More-FunExt-Consequences public
id-โ-left : dfunext ๐ฅ (๐ค โ ๐ฅ)
โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (ฮฑ : X โ Y)
โ id-โ X โ ฮฑ โก ฮฑ
id-โ-left fe fe' ฮฑ = to-subtype-โก (being-equiv-is-subsingleton fe fe') (refl _)
โ-sym-left-inverse : dfunext ๐ฅ ๐ฅ
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (ฮฑ : X โ Y)
โ โ-sym ฮฑ โ ฮฑ โก id-โ Y
โ-sym-left-inverse fe (f , e) = to-subtype-โก (being-equiv-is-subsingleton fe fe) p
where
p : f โ inverse f e โก id
p = fe (inverses-are-sections f e)
โ-sym-right-inverse : dfunext ๐ค ๐ค
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (ฮฑ : X โ Y)
โ ฮฑ โ โ-sym ฮฑ โก id-โ X
โ-sym-right-inverse fe (f , e) = to-subtype-โก (being-equiv-is-subsingleton fe fe) p
where
p : inverse f e โ f โก id
p = fe (inverses-are-retractions f e)
โ-Sym : dfunext ๐ฅ (๐ค โ ๐ฅ) โ dfunext ๐ค (๐ค โ ๐ฅ) โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ)
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ }
โ (X โ Y) โ (Y โ X)
โ-Sym feโ feโ feโ = โ-sym , โ-sym-is-equiv feโ feโ feโ
โ-Comp : dfunext ๐ฆ (๐ฅ โ ๐ฆ) โ dfunext (๐ฅ โ ๐ฆ) (๐ฅ โ ๐ฆ )
โ dfunext ๐ฅ ๐ฅ โ dfunext ๐ฆ (๐ค โ ๐ฆ)
โ dfunext (๐ค โ ๐ฆ) (๐ค โ ๐ฆ ) โ dfunext ๐ค ๐ค
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } (Z : ๐ฆ ฬ )
โ X โ Y โ (Y โ Z) โ (X โ Z)
โ-Comp feโ feโ feโ feโ feโ feโ
Z ฮฑ = invertibility-gives-โ (ฮฑ โ_)
((โ-sym ฮฑ โ_) , p , q)
where
p = ฮป ฮฒ โ โ-sym ฮฑ โ (ฮฑ โ ฮฒ) โกโจ โ-assoc feโ feโ (โ-sym ฮฑ) ฮฑ ฮฒ โฉ
(โ-sym ฮฑ โ ฮฑ) โ ฮฒ โกโจ ap (_โ ฮฒ) (โ-sym-left-inverse feโ ฮฑ) โฉ
id-โ _ โ ฮฒ โกโจ id-โ-left feโ feโ _ โฉ
ฮฒ โ
q = ฮป ฮณ โ ฮฑ โ (โ-sym ฮฑ โ ฮณ) โกโจ โ-assoc feโ feโ ฮฑ (โ-sym ฮฑ) ฮณ โฉ
(ฮฑ โ โ-sym ฮฑ) โ ฮณ โกโจ ap (_โ ฮณ) (โ-sym-right-inverse feโ
ฮฑ) โฉ
id-โ _ โ ฮณ โกโจ id-โ-left feโ feโ _ โฉ
ฮณ โ
Eq-Eq-cong' : dfunext ๐ฅ (๐ค โ ๐ฅ) โ dfunext (๐ค โ ๐ฅ) (๐ค โ ๐ฅ) โ dfunext ๐ค ๐ค
โ dfunext ๐ฅ (๐ฅ โ ๐ฆ) โ dfunext (๐ฅ โ ๐ฆ) (๐ฅ โ ๐ฆ) โ dfunext ๐ฆ ๐ฆ
โ dfunext ๐ฆ (๐ฅ โ ๐ฆ) โ dfunext ๐ฅ ๐ฅ โ dfunext ๐ฆ (๐ฆ โ ๐ฃ)
โ dfunext (๐ฆ โ ๐ฃ) (๐ฆ โ ๐ฃ) โ dfunext ๐ฃ ๐ฃ โ dfunext ๐ฃ (๐ฆ โ ๐ฃ)
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {A : ๐ฆ ฬ } {B : ๐ฃ ฬ }
โ X โ A โ Y โ B โ (X โ Y) โ (A โ B)
Eq-Eq-cong' feโ feโ feโ feโ feโ feโ
feโ feโ feโ feโ feโโ feโโ {X} {Y} {A} {B} ฮฑ ฮฒ =
X โ Y โโจ โ-Comp feโ feโ feโ feโ feโ feโ
Y (โ-sym ฮฑ) โฉ
A โ Y โโจ โ-Sym feโ feโ feโ โฉ
Y โ A โโจ โ-Comp feโ feโ feโ feโ feโ feโโ A (โ-sym ฮฒ) โฉ
B โ A โโจ โ-Sym feโ feโโ feโ โฉ
A โ B โ
Eq-Eq-cong : global-dfunext
โ {X : ๐ค ฬ } {Y : ๐ฅ ฬ } {A : ๐ฆ ฬ } {B : ๐ฃ ฬ }
โ X โ A โ Y โ B โ (X โ Y) โ (A โ B)
Eq-Eq-cong fe = Eq-Eq-cong' fe fe fe fe fe fe fe fe fe fe fe fe
\end{code}