Martin Escardo, 21th December 2020 - 18th February 2021.
In collaboration with Marc Bezem, Thierry Coquand, Peter Dybjer.
The Burali-Forti argument in HoTT/UF with applications to the type of groups in a universe
------------------------------------------------------------------------------------------
Abstract. We use the Burali-Forti argument to show that, in HoTT/UF,
the embedding
π€ β π€βΊ.
of a universe π€ into its successor π€βΊ is not equivalence.
Similarly, the embedding hSet π€ β hSet π€βΊ of the type of sets of π€
into that of π€βΊ in not an equivalence either. We also establish this
for the types of magmas, monoids and groups, where the case of groups
requires considerable more work (invoked here but performed in the
modules FreeGroup.lagda and FreeGroupOfLargeLocallySmallSet.lagda).
We work with ordinals as defined in the HoTT book for that purpose.
https://homotopytypetheory.org/book/
Introduction
------------
Univalence is used three times (at least):
1. to know that the type of ordinals is a 0-type and hence all
ordinals in a universe form an ordinal in the next universe,
2. to develop the Burali-Forti argument that no ordinal in the
universe π€ is equivalent to the ordinal of ordinals in π€.
3. to resize down the values of the order relation of the ordinal
of ordinals, to conclude that the ordinal of ordinals is large.
There are also a number of uses of univalence via functional and
propositional extensionality.
Propositional resizing is not needed, thanks to (3).
An ordinal in a universe π€ is a type X : π€ equipped with a relation
_βΊ_ : X β X β π€
required to be
1. proposition-valued,
2. transitive,
3. extensional (any two points with same predecessors are the same),
4. well founded (every element is accessible, or, equivalently,
the principle of transfinite induction holds).
The HoTT book additionally requires X to be a set, but this follows
automatically from the above requirements for the order.
We denote by
Ordinal π€
the type of ordinals in a universe π€.
The underlying type of an ordinal Ξ± is denoted by β¨ Ξ± β© and its order
relation is denoted by _βΊβ¨ Ξ± β©_.
Equivalence of ordinals,
_ββ_ : Ordinal π€ β Ordinal π₯ β π€ β π₯,
means that that there is an equivalence of the underlying types that
preserves and reflects order.
For ordinals Ξ± and Ξ² in the *same* universe, their identity type Ξ± οΌ Ξ²
is canonically equivalent to the ordinal-equivalence type Ξ± ββ Ξ²,
by univalence.
The lower set of a point x : β¨ Ξ± β© is written Ξ± β x, and is itself an
ordinal under the inherited order. The ordinals in a universe π€ form
an ordinal in the successor universe π€βΊ, denoted by
OrdinalOfOrdinals π€ : Ordinal π€βΊ.
Its order relation is denoted by _β²_ and is defined by
Ξ± β² Ξ² = Ξ£ b κ β¨ Ξ² β© , Ξ± οΌ (Ξ² β b).
This order has type
_β²_ : Ordinal π€ β Ordinal π€ β π€βΊ,
as required for it to make the type Ordinal π€ into an ordinal in the
next universe.
But, by univalence, it is pointwise equivalent to the "resized down"
order
_β²β»_ : Ordinal π€ β Ordinal π€ β π€
defined by
Ξ± β²β» Ξ² = Ξ£ b κ β¨ Ξ² β© , Ξ± ββ (Ξ² β b).
The existence of such a resized-down order is crucial for the
corollaries of Burali-Forti, but not for Burali-Forti itself.
Agda formulation of the Burali-Forti argument and its corollaries
-----------------------------------------------------------------
\begin{code}
{-# OPTIONS --safe --without-K #-}
\end{code}
As discussed above, we assume univalence as a hypothesis:
\begin{code}
open import UF.Univalence
module Ordinals.BuraliForti
(ua : Univalence)
where
open import UF.Subsingletons
open import UF.Retracts
open import UF.Equiv hiding (_β
_)
open import UF.UniverseEmbedding
open import UF.UA-FunExt
open import UF.FunExt
open import UF.Size
private
fe : FunExt
fe = Univalence-gives-FunExt ua
fe' : Fun-Ext
fe' = Univalence-gives-Fun-Ext ua
pe : Prop-Ext
pe = Univalence-gives-Prop-Ext ua
open import MLTT.Spartan
open import Ordinals.Arithmetic fe
open import Ordinals.Equivalence
open import Ordinals.Notions
open import Ordinals.OrdinalOfOrdinals ua
open import Ordinals.Type
open import Ordinals.WellOrderTransport
\end{code}
Our version of Burali-Forti says that there is no ordinal in the
universe π€ equivalent to the ordinal of all ordinals in the universe π€.
\begin{code}
Burali-Forti : Β¬ (Ξ£ Ξ± κ Ordinal π€ , Ξ± ββ OO π€)
Burali-Forti {π€} (Ξ± , π) = Ξ³
where
a : OO π€ ββ Ξ±
a = ββ-sym Ξ± (OO π€) π
b : Ξ± ββ (OO π€ β Ξ±)
b = ordinals-in-OO-are-lowersets-of-OO Ξ±
c : OO π€ ββ (OO π€ β Ξ±)
c = ββ-trans (OO π€) Ξ± (OO π€ β Ξ±) a b
d : OO π€ οΌ (OO π€ β Ξ±)
d = eqtoidβ (ua (π€ βΊ)) fe' (OO π€) (OO π€ β Ξ±) c
e : OO π€ β² OO π€
e = Ξ± , d
Ξ³ : π
Ξ³ = irreflexive _β²_ (OO π€) (β²-is-well-founded (OO π€)) e
\end{code}
Some corollaries follow.
The main work is in the first one, which says that the type of all
ordinals is large, happens in the function transfer-structure, which
is developed in the module OrdinalsWellOrderTransport, where the
difficulties are explained.
As discussed above, the type OO π€ of ordinals in the
universe π€ lives in the next universe π€βΊ. We say that a type in the
universe π€βΊ is small if it is equivalent to some type in π€, and large
otherwise. This is defined in the module UF.Size.
Our first corollary of Burali-Forti is that the type of ordinals is
large, as expected:
\begin{code}
the-type-of-ordinals-is-large : is-large (Ordinal π€)
the-type-of-ordinals-is-large {π€} (X , π) = Ξ³
where
Ξ΄ : Ξ£ s κ OrdinalStructure X , (X , s) ββ OO π€
Ξ΄ = transfer-structure fe {π€} {π€ βΊ} X (OO π€)
π (_β²β»_ , β²-is-equivalent-to-β²β»)
Ξ³ : π
Ξ³ = Burali-Forti ((X , prβ Ξ΄) , prβ Ξ΄)
\end{code}
It is crucial in the above proof, in order to be able to transfer the
ordinal structure of the ordinal of ordinals to the type X along the
hypothetical equivalence π : X β Ordinal π€, that the order _β²_ has a
resized-down version _β²β»_ , as mentioned above.
By a *universe embedding* we mean a map
f : π€ β π₯
of universes such that
f X β X.
Of course, any two universe embeddings are equal, by univalence, so
that there is at most one universe embedding.
Moreover, universe embeddings are automatically type embeddings
(meaning that they have subsingleton fibers), as shown in the module
UF.UniverseEmbeddings.
So the following says that the universe π€βΊ is strictly larger than the
universe π€:
\begin{code}
successive-universe-embeddings-dont-have-sections : (f : π€ Μ β π€ βΊ Μ )
β is-universe-embedding f
β Β¬ has-section f
successive-universe-embeddings-dont-have-sections {π€} f i (s , Ξ·) = Ξ³
where
X : π€ Μ
X = s (Ordinal π€)
p : f X οΌ Ordinal π€
p = Ξ· (Ordinal π€)
e : X β Ordinal π€
e = transport (X β_) p (β-sym (i X))
Ξ³ : π
Ξ³ = the-type-of-ordinals-is-large (X , e)
successive-universe-embeddings-are-not-equivs : (f : π€ Μ β π€ βΊ Μ )
β is-universe-embedding f
β Β¬ is-equiv f
successive-universe-embeddings-are-not-equivs f i j =
successive-universe-embeddings-dont-have-sections f i
(equivs-have-sections f j)
\end{code}
In particular, we have the following, where
Lift {π€} (π€ βΊ) : π€ β π€βΊ
is the canonical embedding of the universe π€ into the successor
universe π€βΊ, defined in the module UF.UniverseEmbedding:
\begin{code}
Lift-doesnt-have-section : Β¬ has-section (Lift {π€} (π€ βΊ))
Lift-doesnt-have-section {π€} h =
successive-universe-embeddings-dont-have-sections
(Lift (π€ βΊ)) (Ξ» X β Lift-is-universe-embedding (π€ βΊ) X) h
Lift-is-not-equiv : Β¬ is-equiv (Lift {π€} (π€ βΊ))
Lift-is-not-equiv {π€} e = Lift-doesnt-have-section
(equivs-have-sections (Lift (π€ βΊ)) e)
\end{code}
For a universe π€, we define the type
hSet π€ : π€βΊ
of sets in the universe π€ by
hSet π€ = Ξ£ A κ π€ Μ , is-set A.
By an *hSet embedding* we mean a map
f : hSet π€ β hSet π₯
such that the underlying type of f π is equivalent to the
underlying type of π, that is,
prβ (f π) β prβ π,
for all π : hSet π€.
Any hSet-embedding is a type embedding, and any two hSet-embeddings
are equal by univalence. The map
Lift-hSet {π€} π₯ : hSet π€ β hSet (π€ β π₯)
is the unique hSet embedding, given by
Lift-hSet π₯ (X , i) = Lift π₯ X , Lift-is-set X i)
where
Lift-is-set X i : is-set (Lift π₯ X)
is derived from the fact that Lift π₯ X β X using i : is-set X.
\begin{code}
open import UF.Sets
Lift-hSet-doesnt-have-section : Β¬ has-section (Lift-hSet {π€} (π€ βΊ))
Lift-hSet-doesnt-have-section {π€} (s , Ξ·) = Ξ³
where
π : hSet (π€ βΊ)
π = (Ordinal π€ , (the-type-of-ordinals-is-a-set (ua π€) fe'))
π : hSet π€
π = s π
X : π€ Μ
X = prβ π
have : (Lift (π€ βΊ) X , _) οΌ π
have = Ξ· π
p : Lift (π€ βΊ) X οΌ Ordinal π€
p = ap prβ (Ξ· π)
d : X β Lift (π€ βΊ) X
d = β-sym (Lift-is-universe-embedding (π€ βΊ) X)
e : X β Ordinal π€
e = transport (X β_) p d
Ξ³ : π
Ξ³ = the-type-of-ordinals-is-large (X , e)
\end{code}
Finally, the following says that the type of sets in π€βΊ is strictly
larger than that of sets in π€, as we wanted to show:
\begin{code}
Lift-hSet-is-not-equiv : Β¬ is-equiv (Lift-hSet {π€} (π€ βΊ))
Lift-hSet-is-not-equiv {π€} e = Lift-hSet-doesnt-have-section
(equivs-have-sections (Lift-hSet (π€ βΊ)) e)
\end{code}
This doesn't show that Β¬ (hSet π€ β hSet π€βΊ), as in principle there may
be an equivalence that is not an hSet embedding in the sense defined
above, which we leave as an open problem. Notice that excluded middle,
which is not assumed but is consistent, implies that there is an
automorphism of hSet π€ that swaps the empty set π and the one-point
set π and leaves all the other sets unchanged, so that potentially
there are automorphisms of hSet π€ that are not hSet embeddings. We
don't know whether such a rogue equivalence hSet π€ β hSet π€βΊ exists,
but this shouldn't be the case, of course.
Similarly, the above also doesn't show that Β¬ (π€ β π€βΊ), but we know
that this is the case by a different argument, which generalizes
Thierry Coquand's "paradox of trees", developed in the module
LawvereFPT.
We also wish to know that e.g. the types of groups in the universes π€
and π€βΊ are not equivalent.
Marc Bezem conjectures that Β¬ (Ξ£ A : π€ Μ , A β β₯ π€ Μ β₯β), that is, there
is no type in π€ equivalent to the set truncation of π€.
Added 18th January 2021. The following generalizes
Lift-hSet-is-not-equiv.
In the following, A generalizes is-set, and A-lifts generalizes the
fact that the lift of a set is a set.
\begin{code}
module _ (A : {π€ : Universe} β π€ Μ β π€ Μ )
(A-lifts : β {π€} π₯ {X : π€ Μ } β A X β A (Lift π₯ X))
(type-of-ordinals-is-A : {π€ : Universe} β A (Ordinal π€))
where
π : (π€ : Universe) β π€ βΊ Μ
π π€ = Ξ£ X κ π€ Μ , A X
Lift-π : β {π€} π₯ β π π€ β π (π€ β π₯)
Lift-π {π€} π₯ (X , a) = Lift π₯ X , A-lifts π₯ a
Lift-π-doesnt-have-section : Β¬ has-section (Lift-π {π€} (π€ βΊ))
Lift-π-doesnt-have-section {π€} (s , Ξ·) = Ξ³
where
π : π (π€ βΊ)
π = (Ordinal π€ , type-of-ordinals-is-A)
π : π π€
π = s π
X : π€ Μ
X = prβ π
have : (Lift (π€ βΊ) X , _) οΌ π
have = Ξ· π
p : Lift (π€ βΊ) X οΌ Ordinal π€
p = ap prβ (Ξ· π)
d : X β Lift (π€ βΊ) X
d = β-sym (Lift-is-universe-embedding (π€ βΊ) X)
e : X β Ordinal π€
e = transport (X β_) p d
Ξ³ : π
Ξ³ = the-type-of-ordinals-is-large (X , e)
Lift-π-is-not-equiv : Β¬ is-equiv (Lift-π {π€} (π€ βΊ))
Lift-π-is-not-equiv {π€} e = Lift-π-doesnt-have-section
(equivs-have-sections (Lift-π (π€ βΊ)) e)
\end{code}
Examples of the above situation include hSets, pointed types,
β-magmas, magmas and monoids:
\begin{code}
module examples where
\end{code}
hSet again:
\begin{code}
Lift-hSet-is-not-equiv-bis : Β¬ is-equiv (Lift-hSet {π€} (π€ βΊ))
Lift-hSet-is-not-equiv-bis {π€} = Lift-π-is-not-equiv
is-set
(Ξ» π₯ {X} β Lift-is-set π₯ X)
(the-type-of-ordinals-is-a-set (ua _) fe')
\end{code}
Pointed types:
\begin{code}
PointedType : (π€ : Universe) β π€ βΊ Μ
PointedType π€ = Ξ£ X κ π€ Μ , X
Lift-PointedType : β {π€} π₯ β PointedType π€ β PointedType (π€ β π₯)
Lift-PointedType {π€} π₯ (X , x) = Lift π₯ X , lift π₯ x
\end{code}
In the following, A is the identity function, and to prove that the
ordinal or ordinals is pointed, we choose the ordinal zero:
\begin{code}
Lift-PointedType-is-not-equiv : Β¬ is-equiv (Lift-PointedType {π€} (π€ βΊ))
Lift-PointedType-is-not-equiv {π€} = Lift-π-is-not-equiv id lift πβ
\end{code}
β-magmas.
In the following, A is magma structure:
\begin{code}
β-Magma-structure : π€ Μ β π€ Μ
β-Magma-structure X = X β X β X
β-Magma : (π€ : Universe) β π€ βΊ Μ
β-Magma π€ = Ξ£ X κ π€ Μ , β-Magma-structure X
lift-β-Magma-structure : β π₯ {X : π€ Μ }
β β-Magma-structure X
β β-Magma-structure (Lift π₯ X)
lift-β-Magma-structure π₯ _Β·_ x y = lift π₯ (lower x Β· lower y)
Lift-β-Magma : β {π€} π₯ β β-Magma π€ β β-Magma (π€ β π₯)
Lift-β-Magma {π€} π₯ (X , _Β·_) = Lift π₯ X , lift-β-Magma-structure π₯ _Β·_
Lift-β-Magma-is-not-equiv : Β¬ is-equiv (Lift-β-Magma {π€} (π€ βΊ))
Lift-β-Magma-is-not-equiv {π€} = Lift-π-is-not-equiv
β-Magma-structure
lift-β-Magma-structure
_+β_
\end{code}
Magmas:
\begin{code}
Magma-structure : π€ Μ β π€ Μ
Magma-structure X = is-set X Γ (X β X β X)
Magma : (π€ : Universe) β π€ βΊ Μ
Magma π€ = Ξ£ X κ π€ Μ , Magma-structure X
lift-Magma-structure : β π₯ {X : π€ Μ }
β Magma-structure X
β Magma-structure (Lift π₯ X)
lift-Magma-structure π₯ {X} (X-is-set , _Β·_) = Lift-is-set π₯ X X-is-set ,
Ξ» x y β lift π₯ (lower x Β· lower y)
Lift-Magma : β {π€} π₯ β Magma π€ β Magma (π€ β π₯)
Lift-Magma {π€} π₯ (X , _Β·_) = Lift π₯ X , lift-Magma-structure π₯ _Β·_
Lift-Magma-structure-is-not-equiv : Β¬ is-equiv (Lift-Magma {π€} (π€ βΊ))
Lift-Magma-structure-is-not-equiv {π€} =
Lift-π-is-not-equiv
Magma-structure
lift-Magma-structure
(the-type-of-ordinals-is-a-set (ua _) fe' , _+β_)
\end{code}
Monoids:
\begin{code}
open import Ordinals.AdditionProperties ua
monoid-structure : π€ Μ β π€ Μ
monoid-structure X = (X β X β X) Γ X
monoid-axioms : (X : π€ Μ ) β monoid-structure X β π€ Μ
monoid-axioms X (_Β·_ , e) = is-set X
Γ left-neutral e _Β·_
Γ right-neutral e _Β·_
Γ associative _Β·_
\end{code}
We will consider A = Monoid-structure (with capital M), and
π = Monoid.
\begin{code}
Monoid-structure : π€ Μ β π€ Μ
Monoid-structure X = Ξ£ s κ monoid-structure X , monoid-axioms X s
Monoid : (π€ : Universe) β π€ βΊ Μ
Monoid π€ = Ξ£ X κ π€ Μ , Monoid-structure X
lift-Monoid-structure : β π₯ {X : π€ Μ }
β Monoid-structure X
β Monoid-structure (Lift π₯ X)
lift-Monoid-structure π₯ {X} ((_Β·_ , e) , X-is-set , l , r , a) = Ξ³
where
X' = Lift π₯ X
_Β·'_ : X' β X' β X'
x' Β·' y' = lift π₯ (lower x' Β· lower y')
e' : X'
e' = lift π₯ e
l' : left-neutral e' _Β·'_
l' x' = ap (lift π₯) (l (lower x'))
r' : right-neutral e' _Β·'_
r' x' = ap (lift π₯) (r (lower x'))
a' : associative _Β·'_
a' x' y' z' = ap (lift π₯) (a (lower x') (lower y') (lower z'))
Ξ³ : Monoid-structure (Lift π₯ X)
Ξ³ = (_Β·'_ , e') , Lift-is-set π₯ X X-is-set , l' , r' , a'
Lift-Monoid : β {π€} π₯ β Monoid π€ β Monoid (π€ β π₯)
Lift-Monoid {π€} π₯ (X , _Β·_) = Lift π₯ X , lift-Monoid-structure π₯ _Β·_
type-of-ordinals-has-Monoid-structure : {π€ : Universe} β Monoid-structure (Ordinal π€)
type-of-ordinals-has-Monoid-structure {π€} = (_+β_ , πβ) ,
(the-type-of-ordinals-is-a-set (ua π€) fe'),
πβ-left-neutral ,
πβ-right-neutral ,
+β-assoc
Lift-Monoid-structure-is-not-equiv : Β¬ is-equiv (Lift-Monoid {π€} (π€ βΊ))
Lift-Monoid-structure-is-not-equiv {π€} = Lift-π-is-not-equiv
Monoid-structure
lift-Monoid-structure
type-of-ordinals-has-Monoid-structure
\end{code}
Added 18 Feb 2021. The same is true for groups, using the following
fact and a fact proved in the module FreeGroupOfLargeLocallySmallSet.
We need to assume that propositional truncations exist.
\begin{code}
open import Groups.Type
open import Groups.Large
open import UF.PropTrunc
module _ (pt : propositional-truncations-exist) where
there-is-a-large-group : Ξ£ F κ Group (π€ βΊ) , ((G : Group π€) β Β¬ (G β
F))
there-is-a-large-group {π€} = large-group-with-no-small-copy fe' pe pt
(Ordinal π€ ,
(the-type-of-ordinals-is-a-set (ua π€) fe') ,
the-type-of-ordinals-is-large ,
the-type-of-ordinals-is-locally-small (ua π€) fe')
\end{code}
And from this it of course follows that the embedding of the type of
groups of one universe into that of its successor universe is not an
equivalence:
\begin{code}
Lift-Group-structure-is-not-equiv : Β¬ is-equiv (Lift-Group {π€} (π€ βΊ))
Lift-Group-structure-is-not-equiv {π€} e = Ξ³ there-is-a-large-group
where
Lower-Group : Group (π€ βΊ) β Group π€
Lower-Group = inverse (Lift-Group (π€ βΊ)) e
Ξ³ : (Ξ£ F κ Group (π€ βΊ) , ((G : Group π€) β Β¬ (G β
F))) β π
Ξ³ (F , Ο) = Ο G i
where
G : Group π€
G = Lower-Group F
F' : Group (π€ βΊ)
F' = Lift-Group (π€ βΊ) G
p : F' οΌ F
p = inverses-are-sections (Lift-Group (π€ βΊ)) e F
j : G β
F'
j = β
-sym F' G (Lifted-Group-is-isomorphic G)
i : G β
F
i = transport (G β
_) p j
\end{code}