Arithmetic on families of ordinals #
Main definitions and results #
sup
,lsub
: the supremum / least strict upper bound of an indexed family of ordinals inType u
, as an ordinal inType u
.bsup
,blsub
: the supremum / least strict upper bound of a set of ordinals indexed by ordinals less than a given ordinalo
.
Various other basic arithmetic results are given in Principal.lean
instead.
Families of ordinals #
There are two kinds of indexed families that naturally arise when dealing with ordinals: those indexed by some type in the appropriate universe, and those indexed by ordinals less than another. The following API allows one to convert from one kind of family to the other.
In many cases, this makes it easy to prove claims about one kind of family via the corresponding claim on the other.
Converts a family indexed by a Type u
to one indexed by an Ordinal.{u}
using a specified
well-ordering.
Equations
- Ordinal.bfamilyOfFamily' r f a ha = f ((Ordinal.enum r) ⟨a, ha⟩)
Instances For
Converts a family indexed by a Type u
to one indexed by an Ordinal.{u}
using a well-ordering
given by the axiom of choice.
Instances For
Converts a family indexed by an Ordinal.{u}
to one indexed by a Type u
using a specified
well-ordering.
Equations
- Ordinal.familyOfBFamily' r ho f i = f ((Ordinal.typein r).toRelEmbedding i) ⋯
Instances For
Converts a family indexed by an Ordinal.{u}
to one indexed by a Type u
using a well-ordering
given by the axiom of choice.
Equations
- o.familyOfBFamily f = Ordinal.familyOfBFamily' (fun (x1 x2 : o.toType) => x1 < x2) ⋯ f
Instances For
The range of a family indexed by ordinals.
Instances For
Supremum of a family of ordinals #
The supremum of a family of ordinals
Equations
- Ordinal.sup f = iSup f
Instances For
The range of an indexed ordinal function, whose outputs live in a higher universe than the
inputs, is always bounded above. See Ordinal.lsub
for an explicit bound.
le_ciSup
whenever the input type is small in the output universe. This lemma sometimes
fails to infer f
in simple cases and needs it to be given explicitly.
ciSup_le_iff'
whenever the input type is small in the output universe.
An alias of ciSup_le'
for discoverability.
lt_ciSup_iff'
whenever the input type is small in the output universe.
Alias of lt_iSup_iff
.
The supremum of a family of ordinals indexed by the set of ordinals less than some
o : Ordinal.{u}
. This is a special case of sup
over the family provided by
familyOfBFamily
.
Equations
- o.bsup f = Ordinal.sup (o.familyOfBFamily f)
Instances For
The least strict upper bound of a family of ordinals.
Equations
- Ordinal.lsub f = Ordinal.sup (Order.succ ∘ f)
Instances For
The least strict upper bound of a family of ordinals indexed by the set of ordinals less than
some o : Ordinal.{u}
.
This is to lsub
as bsup
is to sup
.
Equations
- o.blsub f = o.bsup fun (a : Ordinal.{?u.35}) (ha : a < o) => Order.succ (f a ha)
Instances For
A two-argument version of Ordinal.blsub
.
Deprecated. If you need this value explicitly, write it in terms of iSup
. If you just want an
upper bound for the image of op
, use that Iio a ×ˢ Iio b
is a small set.
Instances For
Results about injectivity and surjectivity #
The type of ordinals in universe u
is not Small.{u}
. This is the type-theoretic analog of
the Burali-Forti paradox.
Properties of ω #
Casting naturals into ordinals, compatibility with operations #
Alias of Ordinal.IsNormal.apply_omega0
.