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}