Martin Escardo, 29th January 2019
If univalence holds, then any universe is embedded into any larger
universe.
We do this without cumulativity, because it is not available in the
Martin-LoΜf type theory that we are working with in Agda.
Moreover, any map f : π€ Μ β π€ β π₯ Μ with f X β X for all X : π€ Μ is an
embedding, e.g. the map X β¦ X + π {π₯}.
(Here the notion of a map being an embedding is stronger than that of
being left-cancellable, and it means that the fibers of the map are
propositions, or subsingletons, as in HoTT/UF.)
\begin{code}
{-# OPTIONS --safe --without-K #-}
module UF.UniverseEmbedding where
open import MLTT.Spartan
open import UF.Embeddings
open import UF.Equiv
open import UF.Equiv-FunExt
open import UF.EquivalenceExamples
open import UF.FunExt
open import UF.Lower-FunExt
open import UF.PairFun
open import UF.Sets
open import UF.Sets-Properties
open import UF.Subsingletons
open import UF.UA-FunExt
open import UF.Univalence
is-universe-embedding : (π€ Μ β π₯ Μ ) β (π€ βΊ) β π₯ Μ
is-universe-embedding f = β X β f X β X
\end{code}
Of course:
\begin{code}
at-most-one-universe-embedding : Univalence
β (f g : π€ Μ β π₯ Μ )
β is-universe-embedding f
β is-universe-embedding g
β f οΌ g
at-most-one-universe-embedding {π€} {π₯} ua f g i j = p
where
h : β X β f X β g X
h X = i X β β-sym (j X)
H : f βΌ g
H X = eqtoid (ua π₯) (f X) (g X) (h X)
p : f οΌ g
p = dfunext (Univalence-gives-Fun-Ext ua) H
universe-embeddings-are-embeddings : Univalence
β (π€ π₯ : Universe)
(f : π€ Μ β π₯ Μ )
β is-universe-embedding f
β is-embedding f
universe-embeddings-are-embeddings ua π€ π₯ f i = Ξ΄
where
Ξ³ : (X X' : π€ Μ ) β (f X οΌ f X') β (X οΌ X')
Ξ³ X X' = (f X οΌ f X') ββ¨ a β©
(f X β f X') ββ¨ b β©
(X β X') ββ¨ c β©
(X οΌ X') β
where
a = univalence-β (ua π₯) (f X) (f X')
b = β-cong (Univalence-gives-FunExt ua) (i X) (i X')
c = β-sym (univalence-β (ua π€) X X')
Ξ΄ : is-embedding f
Ξ΄ = embedding-criterion' f Ξ³
\end{code}
For instance, the following function satisfies this condition and
hence is an embedding:
\begin{code}
Lift' : (π₯ : Universe) β π€ Μ β π€ β π₯ Μ
Lift' π₯ X = X + π {π₯}
lift' : (π₯ : Universe) {X : π€ Μ } β X β Lift' π₯ X
lift' π₯ = inl
lower' : {π₯ : Universe} {X : π€ Μ } β Lift' π₯ X β X
lower' (inl x) = x
lower' (inr x) = π-elim x
Lift'-β : (π₯ : Universe) (X : π€ Μ ) β Lift' π₯ X β X
Lift'-β π₯ X = π-rneutral'
Lift'-is-embedding : Univalence β is-embedding (Lift' {π€} π₯)
Lift'-is-embedding {π€} {π₯} ua =
universe-embeddings-are-embeddings ua π€ (π€ β π₯) (Lift' π₯) (Lift'-β π₯)
\end{code}
The following embedding has better definitional properties:
\begin{code}
Lift : (π₯ : Universe) β π€ Μ β π€ β π₯ Μ
Lift π₯ X = X Γ π {π₯}
lift : (π₯ : Universe) {X : π€ Μ } β X β Lift π₯ X
lift π₯ x = (x , β)
lower : {X : π€ Μ } β Lift π₯ X β X
lower (x , β) = x
Ξ·-Lift : (π₯ : Universe) {X : π€ Μ } (π : Lift π₯ X)
β lift π₯ (lower π) οΌ π
Ξ·-Lift π₯ π = refl
Ξ΅-Lift : (π₯ : Universe) {X : π€ Μ } (x : X)
β lower (lift π₯ x) οΌ x
Ξ΅-Lift π₯ x = refl
lower-is-equiv : {X : π€ Μ } β is-equiv (lower {π€} {π₯} {X})
lower-is-equiv {π€} {π₯} = (lift π₯ , Ξ΅-Lift π₯) , (lift π₯ , Ξ·-Lift π₯)
lift-is-equiv : {X : π€ Μ } β is-equiv (lift π₯ {X})
lift-is-equiv {π€} {π₯} = (lower , Ξ·-Lift π₯) , lower , Ξ΅-Lift π₯
Lift-β : (π₯ : Universe) (X : π€ Μ ) β Lift π₯ X β X
Lift-β π₯ X = lower , lower-is-equiv
β-Lift : (π₯ : Universe) (X : π€ Μ ) β X β Lift π₯ X
β-Lift π₯ X = lift π₯ , lift-is-equiv
Lift-is-universe-embedding : (π₯ : Universe) β is-universe-embedding (Lift {π€} π₯)
Lift-is-universe-embedding = Lift-β
Lift-is-embedding : Univalence β is-embedding (Lift {π€} π₯)
Lift-is-embedding {π€} {π₯} ua = universe-embeddings-are-embeddings ua π€ (π€ β π₯)
(Lift π₯) (Lift-is-universe-embedding π₯)
\end{code}
Added 7th Feb 2019. Assuming propositional and functional
extensionality instead of univalence, then lift-fibers of propositions
are propositions. (For use in the module UF.Resize.)
\begin{code}
prop-fiber-criterion : PropExt
β FunExt
β (π€ π₯ : Universe)
β (f : π€ Μ β π₯ Μ )
β is-universe-embedding f
β (Q : π₯ Μ )
β is-prop Q
β is-prop (fiber f Q)
prop-fiber-criterion pe fe π€ π₯ f i Q j (P , r) = d (P , r)
where
_ : f P οΌ Q
_ = r
k : is-prop (f P)
k = transportβ»ΒΉ is-prop r j
l : is-prop P
l = equiv-to-prop (β-sym (i P)) k
a : (X : π€ Μ ) β (f X οΌ f P) β (X οΌ P)
a X = (f X οΌ f P) ββ¨ prop-univalent-β (pe π₯) (fe π₯ π₯) (f X) (f P) k β©
(f X β f P) ββ¨ β-cong fe (i X) (i P) β©
(X β P) ββ¨ β-sym (prop-univalent-β (pe π€) (fe π€ π€) X P l) β©
(X οΌ P) β
b : (Ξ£ X κ π€ Μ , f X οΌ f P) β (Ξ£ X κ π€ Μ , X οΌ P)
b = Ξ£-cong a
c : is-prop (Ξ£ X κ π€ Μ , f X οΌ f P)
c = equiv-to-prop b (singleton-types'-are-props P)
d : is-prop (Ξ£ X κ π€ Μ , f X οΌ Q)
d = transport (Ξ» - β is-prop (Ξ£ X κ π€ Μ , f X οΌ -)) r c
prop-fiber-Lift : PropExt
β FunExt
β (Q : π€ β π₯ Μ )
β is-prop Q
β is-prop (fiber (Lift π₯) Q)
prop-fiber-Lift {π€} {π₯} pe fe = prop-fiber-criterion pe fe π€ (π€ β π₯)
(Lift {π€} π₯)
(Lift-is-universe-embedding π₯)
\end{code}
Taken from the MGS'2019 lecture notes (22 December 2020):
\begin{code}
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) ββ¨ idtoeq (A (Lift π₯ X)) (A (Lift π€ Y)) q β©
A (Lift π€ Y) ββ¨ β-sym (Ο Y) β©
A Y β
where
d : Lift π₯ X β Lift π€ Y
d = Lift π₯ X ββ¨ Lift-is-universe-embedding π₯ X β©
X ββ¨ e β©
Y ββ¨ β-sym (Lift-is-universe-embedding π€ Y) β©
Lift π€ Y β
p : Lift π₯ X οΌ Lift π€ Y
p = eqtoid (ua (π€ β π₯)) (Lift π₯ X) (Lift π€ Y) d
q : A (Lift π₯ X) οΌ A (Lift π€ Y)
q = ap A p
global-property-of-types : π€Ο
global-property-of-types = {π€ : Universe} β π€ Μ β π€ Μ
global-property-of-typesβΊ : π€Ο
global-property-of-typesβΊ = {π€ : Universe} β π€ Μ β π€ βΊ Μ
cumulative : global-property-of-types β π€Ο
cumulative A = {π€ π₯ : Universe} (X : π€ Μ ) β A X β A (Lift π₯ X)
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 ua = global-β-ap' ua (Ξ» π€ β π€)
global-β-apβΊ : Univalence
β (A : global-property-of-typesβΊ)
β cumulativeβΊ A
β (X : π€ Μ ) (Y : π₯ Μ ) β X β Y β A X β A Y
global-β-apβΊ ua = global-β-ap' ua (_βΊ)
\end{code}
Cumulativity in the above sense doesn't always hold. See the module
LawvereFPT for a counter-example.
Added 24th December 2020. Lifting of hSets.
\begin{code}
Lift-is-set : β {π€} π₯ (X : π€ Μ ) β is-set X β is-set (Lift π₯ X)
Lift-is-set π₯ X X-is-set = equiv-to-set
(Lift-is-universe-embedding π₯ X)
X-is-set
Lift-hSet : (π₯ : Universe) β hSet π€ β hSet (π€ β π₯)
Lift-hSet π₯ = pair-fun (Lift π₯) (Lift-is-set π₯)
Lift-is-set-is-embedding : funext (π€ β π₯) (π€ β π₯)
β (X : π€ Μ )
β is-embedding (Lift-is-set π₯ X)
Lift-is-set-is-embedding {π€} {π₯} fe X =
maps-of-props-are-embeddings
(Lift-is-set π₯ X)
(being-set-is-prop (lower-funext π₯ π₯ fe))
(being-set-is-prop fe)
Lift-hSet-is-embedding : Univalence β is-embedding (Lift-hSet {π€} π₯)
Lift-hSet-is-embedding {π€} {π₯} ua =
pair-fun-is-embedding
(Lift π₯)
(Lift-is-set π₯)
(Lift-is-embedding ua)
(Lift-is-set-is-embedding
(Univalence-gives-FunExt ua (π€ β π₯) (π€ β π₯)))
is-hSet-embedding : (hSet π€ β hSet π₯) β (π€ βΊ) β π₯ Μ
is-hSet-embedding {π€} {π₯} f = (π§ : hSet π€) β underlying-set (f π§)
β underlying-set π§
at-most-one-hSet-embedding : Univalence
β (f g : hSet π€ β hSet π₯)
β is-hSet-embedding f
β is-hSet-embedding g
β f οΌ g
at-most-one-hSet-embedding {π€} {π₯} ua f g i j = p
where
h : β π§ β underlying-set (f π§) β underlying-set (g π§)
h π§ = i π§ β β-sym (j π§)
H : f βΌ g
H π§ = to-subtype-οΌ
(Ξ» π¨ β being-set-is-prop (univalence-gives-funext (ua π₯)))
(eqtoid (ua π₯) (underlying-set (f π§)) (underlying-set (g π§)) (h π§))
p : f οΌ g
p = dfunext (Univalence-gives-FunExt ua (π€ βΊ) (π₯ βΊ)) H
the-only-hSet-embedding-is-Lift-hSet : Univalence
β (f : hSet π€ β hSet (π€ β π₯))
β is-hSet-embedding f
β f οΌ Lift-hSet π₯
the-only-hSet-embedding-is-Lift-hSet {π€} {π₯} ua f i =
at-most-one-hSet-embedding ua f
(Lift-hSet π₯) i
(Ξ» π§ β Lift-is-universe-embedding π₯ (underlying-set π§))
hSet-embeddings-are-embeddings : Univalence
β (f : hSet π€ β hSet (π€ β π₯))
β is-hSet-embedding f
β is-embedding f
hSet-embeddings-are-embeddings {π€} {π₯} ua f i =
transport is-embedding
((the-only-hSet-embedding-is-Lift-hSet ua f i)β»ΒΉ)
(Lift-hSet-is-embedding {π€} {π₯} ua)
\end{code}