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 --auto-inline #-} module MGS.Universe-Lifting where open import MGS.Equivalence-Constructions open import MGS.Embeddings public record Lift {π€ : Universe} (π₯ : Universe) (X : π€ Μ ) : π€ β π₯ Μ where constructor lift field lower : X open Lift public type-of-Lift : type-of (Lift {π€} π₯) οΌ (π€ Μ β π€ β π₯ Μ ) type-of-lift : {X : π€ Μ } β type-of (lift {π€} {π₯} {X}) οΌ (X β Lift π₯ X) type-of-lower : {X : π€ Μ } β type-of (lower {π€} {π₯} {X}) οΌ (Lift π₯ X β X) type-of-Lift = refl _ type-of-lift = refl _ type-of-lower = refl _ Lift-induction : β {π€} π₯ (X : π€ Μ ) (A : Lift π₯ X β π¦ Μ ) β ((x : X) β A (lift x)) β (l : Lift π₯ X) β A l Lift-induction π₯ X A Ο (lift x) = Ο x Lift-recursion : β {π€} π₯ {X : π€ Μ } {B : π¦ Μ } β (X β B) β Lift π₯ X β B Lift-recursion π₯ {X} {B} = Lift-induction π₯ X (Ξ» _ β B) lower-lift : {X : π€ Μ } (x : X) β lower {π€} {π₯} (lift x) οΌ x lower-lift = refl lift-lower : {X : π€ Μ } (l : Lift π₯ X) β lift (lower l) οΌ l lift-lower = refl Lift-β : (X : π€ Μ ) β Lift π₯ X β X Lift-β {π€} {π₯} X = invertibility-gives-β lower (lift , lift-lower , lower-lift {π€} {π₯}) β-Lift : (X : π€ Μ ) β X β Lift π₯ X β-Lift {π€} {π₯} X = invertibility-gives-β lift (lower , lower-lift {π€} {π₯} , lift-lower) lower-dfunext : β π¦ π£ π€ π₯ β dfunext (π€ β π¦) (π₯ β π£) β dfunext π€ π₯ lower-dfunext π¦ π£ π€ π₯ fe {X} {A} {f} {g} h = p where A' : Lift π¦ X β π₯ β π£ Μ A' y = Lift π£ (A (lower y)) f' g' : Ξ A' f' y = lift (f (lower y)) g' y = lift (g (lower y)) h' : f' βΌ g' h' y = ap lift (h (lower y)) p' : f' οΌ g' p' = fe h' p : f οΌ g p = ap (Ξ» f' x β lower (f' (lift x))) p' universe-embedding-criterion : is-univalent π€ β is-univalent (π€ β π₯) β (f : π€ Μ β π€ β π₯ Μ ) β ((X : π€ Μ ) β f X β X) β is-embedding f universe-embedding-criterion {π€} {π₯} ua ua' f e = embedding-criterion f Ξ³ where fe : dfunext (π€ β π₯) (π€ β π₯) fe = univalence-gives-dfunext ua' feβ : dfunext π€ π€ feβ = lower-dfunext π₯ π₯ π€ π€ fe feβ : dfunext π€ (π€ β π₯) feβ = lower-dfunext π₯ π₯ π€ (π€ β π₯) fe Ξ³ : (X X' : π€ Μ ) β (f X οΌ f X') β (X οΌ X') Ξ³ X X' = (f X οΌ f X') ββ¨ i β© (f X β f X') ββ¨ ii β© (X β X') ββ¨ iii β© (X οΌ X') β where i = univalence-β ua' (f X) (f X') ii = Eq-Eq-cong' fe fe fe fe fe feβ feβ fe feβ feβ feβ feβ (e X) (e X') iii = β-sym (univalence-β ua X X') Lift-is-embedding : is-univalent π€ β is-univalent (π€ β π₯) β is-embedding (Lift {π€} π₯) Lift-is-embedding {π€} {π₯} ua ua' = universe-embedding-criterion {π€} {π₯} ua ua' (Lift π₯) Lift-β module _ {π€ π₯ : Universe} (ua : is-univalent π₯) (ua' : is-univalent (π€ β π₯)) where private fe : dfunext (π€ β π₯) (π€ β π₯) fe = univalence-gives-dfunext ua' feβ : dfunext π₯ (π€ β π₯) feβ = lower-dfunext π€ π€ π₯ (π€ β π₯) fe feβ : dfunext π€ (π€ β π₯) feβ = lower-dfunext (π€ β π₯) π€ π€ (π€ β π₯) fe feβ : dfunext π₯ π₯ feβ = lower-dfunext π€ π€ π₯ π₯ fe feβ : dfunext π€ π€ feβ = lower-dfunext π₯ π₯ π€ π€ fe univalenceβ' : (X : π€ Μ ) β is-subsingleton (Ξ£ Y κ π₯ Μ , X β Y) univalenceβ' X = s where e : (Y : π₯ Μ ) β (X β Y) β (Lift π€ Y οΌ Lift π₯ X) e Y = (X β Y) ββ¨ i β© (Y β X) ββ¨ ii β© (Lift π€ Y β Lift π₯ X) ββ¨ iii β© (Lift π€ Y οΌ Lift π₯ X) β where i = β-Sym feβ feβ fe ii = Eq-Eq-cong' feβ fe feβ feβ fe fe fe feβ fe fe fe fe (β-Lift Y) (β-Lift X) iii = β-sym (univalence-β ua' (Lift π€ Y) (Lift π₯ X)) d : (Ξ£ Y κ π₯ Μ , X β Y) β (Ξ£ Y κ π₯ Μ , Lift π€ Y οΌ Lift π₯ X) d = Ξ£-cong e j : is-subsingleton (Ξ£ Y κ π₯ Μ , Lift π€ Y οΌ Lift π₯ X) j = Lift-is-embedding ua ua' (Lift π₯ X) abstract s : is-subsingleton (Ξ£ Y κ π₯ Μ , X β Y) s = equiv-to-subsingleton d j univalenceβ'-dual : (Y : π€ Μ ) β is-subsingleton (Ξ£ X κ π₯ Μ , X β Y) univalenceβ'-dual Y = equiv-to-subsingleton e i where e : (Ξ£ X κ π₯ Μ , X β Y) β (Ξ£ X κ π₯ Μ , Y β X) e = Ξ£-cong (Ξ» X β β-Sym feβ feβ fe) i : is-subsingleton (Ξ£ X κ π₯ Μ , Y β X) i = univalenceβ' Y univalenceβ'' : is-univalent (π€ β π₯) β (X : π€ Μ ) β is-subsingleton (Ξ£ Y κ π€ β π₯ Μ , X β Y) univalenceβ'' ua = univalenceβ' ua ua univalenceβ''-dual : is-univalent (π€ β π₯) β (Y : π€ Μ ) β is-subsingleton (Ξ£ X κ π€ β π₯ Μ , X β Y) univalenceβ''-dual ua = univalenceβ'-dual ua ua Gβ-β : is-univalent (π€ β π₯) β (X : π€ Μ ) (A : (Ξ£ Y κ π€ β π₯ Μ , X β Y) β π¦ Μ ) β A (Lift π₯ X , β-Lift X) β (Y : π€ β π₯ Μ ) (e : X β Y) β A (Y , e) Gβ-β {π€} {π₯} ua X A a Y e = transport A p a where t : Ξ£ Y κ π€ β π₯ Μ , X β Y t = (Lift π₯ X , β-Lift X) p : t οΌ (Y , e) p = univalenceβ'' {π€} {π₯} ua X t (Y , e) Hβ-β : is-univalent (π€ β π₯) β (X : π€ Μ ) (A : (Y : π€ β π₯ Μ ) β X β Y β π¦ Μ ) β A (Lift π₯ X) (β-Lift X) β (Y : π€ β π₯ Μ ) (e : X β Y) β A Y e Hβ-β ua X A = Gβ-β ua X (Ξ£-induction A) Jβ-β : is-univalent (π€ β π₯) β (A : (X : π€ Μ ) (Y : π€ β π₯ Μ ) β X β Y β π¦ Μ ) β ((X : π€ Μ ) β A X (Lift π₯ X) (β-Lift X)) β (X : π€ Μ ) (Y : π€ β π₯ Μ ) (e : X β Y) β A X Y e Jβ-β ua A Ο X = Hβ-β ua X (A X) (Ο X) Hβ-equiv : is-univalent (π€ β π₯) β (X : π€ Μ ) (A : (Y : π€ β π₯ Μ ) β (X β Y) β π¦ Μ ) β A (Lift π₯ X) lift β (Y : π€ β π₯ Μ ) (f : X β Y) β is-equiv f β A Y f Hβ-equiv {π€} {π₯} {π¦} ua X A a Y f i = Ξ³ (f , i) where B : (Y : π€ β π₯ Μ ) β X β Y β π¦ Μ B Y (f , i) = A Y f b : B (Lift π₯ X) (β-Lift X) b = a Ξ³ : (e : X β Y) β B Y e Ξ³ = Hβ-β ua X B b Y Jβ-equiv : is-univalent (π€ β π₯) β (A : (X : π€ Μ ) (Y : π€ β π₯ Μ ) β (X β Y) β π¦ Μ ) β ((X : π€ Μ ) β A X (Lift π₯ X) lift) β (X : π€ Μ ) (Y : π€ β π₯ Μ ) (f : X β Y) β is-equiv f β A X Y f Jβ-equiv ua A Ο X = Hβ-equiv ua X (A X) (Ο X) Jβ-invertible : is-univalent (π€ β π₯) β (A : (X : π€ Μ ) (Y : π€ β π₯ Μ ) β (X β Y) β π¦ Μ ) β ((X : π€ Μ ) β A X (Lift π₯ X) lift) β (X : π€ Μ ) (Y : π€ β π₯ Μ ) (f : X β Y) β invertible f β A X Y f Jβ-invertible ua A Ο X Y f i = Jβ-equiv ua A Ο X Y f (invertibles-are-equivs f i) lift-is-hae : (X : π€ Μ ) β is-hae {π€} {π€ β π₯} {X} {Lift π₯ X} (lift {π€} {π₯}) lift-is-hae {π€} {π₯} X = lower , lower-lift {π€} {π₯} , lift-lower , Ξ» x β refl (refl (lift x)) equivs-are-haesβ : is-univalent (π€ β π₯) β {X : π€ Μ } {Y : π€ β π₯ Μ } (f : X β Y) β is-equiv f β is-hae f equivs-are-haesβ {π€} {π₯} ua {X} {Y} = Jβ-equiv {π€} {π₯} ua (Ξ» X Y f β is-hae f) lift-is-hae X Y Gβ-β : is-univalent (π€ β π₯) β (Y : π€ Μ ) (A : (Ξ£ X κ π€ β π₯ Μ , X β Y) β π¦ Μ ) β A (Lift π₯ Y , Lift-β Y) β (X : π€ β π₯ Μ ) (e : X β Y) β A (X , e) Gβ-β {π€} {π₯} ua Y A a X e = transport A p a where t : Ξ£ X κ π€ β π₯ Μ , X β Y t = (Lift π₯ Y , Lift-β Y) p : t οΌ (X , e) p = univalenceβ'-dual {π€} {π€ β π₯} ua ua Y t (X , e) Hβ-β : is-univalent (π€ β π₯) β (Y : π€ Μ ) (A : (X : π€ β π₯ Μ ) β X β Y β π¦ Μ ) β A (Lift π₯ Y) (Lift-β Y) β (X : π€ β π₯ Μ ) (e : X β Y) β A X e Hβ-β ua Y A = Gβ-β ua Y (Ξ£-induction A) Jβ-β : is-univalent (π€ β π₯) β (A : (X : π€ β π₯ Μ ) (Y : π€ Μ ) β X β Y β π¦ Μ ) β ((Y : π€ Μ ) β A (Lift π₯ Y) Y (Lift-β Y)) β (X : π€ β π₯ Μ ) (Y : π€ Μ ) (e : X β Y) β A X Y e Jβ-β ua A Ο X Y = Hβ-β ua Y (Ξ» X β A X Y) (Ο Y) X Hβ-equiv : is-univalent (π€ β π₯) β (Y : π€ Μ ) (A : (X : π€ β π₯ Μ ) β (X β Y) β π¦ Μ ) β A (Lift π₯ Y) lower β (X : π€ β π₯ Μ ) (f : X β Y) β is-equiv f β A X f Hβ-equiv {π€} {π₯} {π¦} ua Y A a X f i = Ξ³ (f , i) where B : (X : π€ β π₯ Μ ) β X β Y β π¦ Μ B X (f , i) = A X f b : B (Lift π₯ Y) (Lift-β Y) b = a Ξ³ : (e : X β Y) β B X e Ξ³ = Hβ-β ua Y B b X Jβ-equiv : is-univalent (π€ β π₯) β (A : (X : π€ β π₯ Μ ) (Y : π€ Μ ) β (X β Y) β π¦ Μ ) β ((Y : π€ Μ ) β A (Lift π₯ Y) Y lower) β (X : π€ β π₯ Μ ) (Y : π€ Μ ) (f : X β Y) β is-equiv f β A X Y f Jβ-equiv ua A Ο X Y = Hβ-equiv ua Y (Ξ» X β A X Y) (Ο Y) X Jβ-invertible : is-univalent (π€ β π₯) β (A : (X : π€ β π₯ Μ ) (Y : π€ Μ ) β (X β Y) β π¦ Μ ) β ((Y : π€ Μ ) β A (Lift π₯ Y) Y lower) β (X : π€ β π₯ Μ ) (Y : π€ Μ ) (f : X β Y) β invertible f β A X Y f Jβ-invertible ua A Ο X Y f i = Jβ-equiv ua A Ο X Y f (invertibles-are-equivs f i) lower-is-hae : (X : π€ Μ ) β is-hae (lower {π€} {π₯} {X}) lower-is-hae {π€} {π₯} X = lift , lift-lower , lower-lift {π€} {π₯} , (Ξ» x β refl (refl (lower x))) equivs-are-haesβ : is-univalent (π€ β π₯) β {X : π€ β π₯ Μ } {Y : π€ Μ } (f : X β Y) β is-equiv f β is-hae f equivs-are-haesβ {π€} {π₯} ua {X} {Y} = Jβ-equiv {π€} {π₯} ua (Ξ» X Y f β is-hae f) lower-is-hae X Y IdβEq-is-hae' : is-univalent π€ β is-univalent (π€ βΊ) β {X Y : π€ Μ } β is-hae (IdβEq X Y) IdβEq-is-hae' ua uaβΊ {X} {Y} = equivs-are-haesβ uaβΊ (IdβEq X Y) (ua X Y) IdβEq-is-hae : is-univalent π€ β {X Y : π€ Μ } β is-hae (IdβEq X Y) IdβEq-is-hae ua {X} {Y} = invertibles-are-haes (IdβEq X Y) (equivs-are-invertible (IdβEq X Y) (ua X Y)) global-property-of-types : π€Ο global-property-of-types = {π€ : Universe} β π€ Μ β π€ Μ cumulative : global-property-of-types β π€Ο cumulative A = {π€ π₯ : Universe} (X : π€ Μ ) β A X β A (Lift π₯ X) global-β-ap : Univalence β (A : global-property-of-types) β cumulative A β (X : π€ Μ ) (Y : π₯ Μ ) β X β Y β A X β A Y global-β-ap' : Univalence β (F : Universe β Universe) β (A : {π€ : Universe} β π€ Μ β (F π€) Μ ) β ({π€ π₯ : Universe} (X : π€ Μ ) β A X β A (Lift π₯ X)) β (X : π€ Μ ) (Y : π₯ Μ ) β X β Y β A X β A Y global-β-ap' {π€} {π₯} ua F A Ο X Y e = A X ββ¨ Ο X β© A (Lift π₯ X) ββ¨ IdβEq (A (Lift π₯ X)) (A (Lift π€ Y)) q β© A (Lift π€ Y) ββ¨ β-sym (Ο Y) β© A Y β where d : Lift π₯ X β Lift π€ Y d = Lift π₯ X ββ¨ Lift-β X β© X ββ¨ e β© Y ββ¨ β-sym (Lift-β Y) β© Lift π€ Y β p : Lift π₯ X οΌ Lift π€ Y p = EqβId (ua (π€ β π₯)) (Lift π₯ X) (Lift π€ Y) d q : A (Lift π₯ X) οΌ A (Lift π€ Y) q = ap A p global-β-ap ua = global-β-ap' ua id \end{code}