Model parameters #
In this file, we define the parameters that we will use to construct our model of tangled type theory.
Parameters and examples #
The type of model parameters. Specifically, we have:
- a nonempty type
Λ
with a relation<
that well-orders it, and gives it no maximal element; - a type
κ
whose cardinality is regular and strictly greater thanℵ₀
; - a type
μ
whose cardinality is a strong limit, strictly greater thanκ
, and has cofinality at least the cardinality ofκ
and at least the order type ofΛ
.
We write #α
for the cardinality of any type α
.
Λ
will become our sort of type indices in the final model we build. That is, in our type
hierarchy, each inhabitant α : Λ
will give rise to a type TSet α
(read
"tangled sets of type α
"). The element-of relation will be of type
{α : Λ} → {β : Λ} → β < α → TSet β → TSet α → Prop
; that is, given a proof that β < α
, and given
sets x : TSet β
and y : TSet α
, we have a proposition that asks if x
is an element of y
.
κ
will be a type that delimits "small" sets from "large" sets. By manipulating "large" data,
but only allowing sufficiently "small" things in our model, we will be able to control what the
model is able to know about itself.
μ
will be the size of each of our type levels TSet α
. The main technical challenge of the proof
will be to prove this cardinality bound on the sizes of our types. We will not be able to construct
TSet α
until we have already verified that TSet β
has cardinality #μ
for every β < α
.
Our model parameters are not just cardinals (or ordinals): they are types with the given
cardinalities and properties. By doing this, the set-theoretic elements of (for example) #μ
correspond directly to inhabitants of the type μ
.
Note that we use a capital Λ
instead of a lowercase λ
as the latter is reserved for anonymous
functions in Lean's syntax.
This structure is registered as a typeclass. This means that, at the start of a file, we can write
variable [Params.{u}]
to parametrise definitions in our file by a choice of model parameters,
and whenever a definition or theorem involving model parameters is mentioned, Lean will implicitly
assume that we intended this particular set of model parameters without having to write it
ourselves.
Finally, note that our model parameters are parametric over a universe u
. We will almost never
deal with universe levels in the proof (and in fact we can set u = 0
without issue), but this
gives us greater generality for almost no cost.
- Λ : Type u
- κ : Type u
- μ : Type u
- Λ_nonempty : Nonempty ConNF.Λ
- ΛWellOrder : LtWellOrder ConNF.Λ
- Λ_noMaxOrder : NoMaxOrder ConNF.Λ
- aleph0_lt_κ : Cardinal.aleph0 < Cardinal.mk ConNF.κ
- κ_isRegular : (Cardinal.mk ConNF.κ).IsRegular
- μ_isStrongLimit : (Cardinal.mk ConNF.μ).IsStrongLimit
- κ_lt_μ : Cardinal.mk ConNF.κ < Cardinal.mk ConNF.μ
- κ_le_μ_ord_cof : Cardinal.mk ConNF.κ ≤ (Cardinal.mk ConNF.μ).ord.cof
- Λ_type_le_μ_ord_cof : (Ordinal.type fun (x1 x2 : ConNF.Λ) => x1 < x2) ≤ (Cardinal.mk ConNF.μ).ord.cof.ord
Instances
The smallest collection of model parameters that we can prove to exist.
Importantly, ZFC (with no inaccessibles) proves that this is a set of model parameters.
We take Λ = ω, κ = ω₁, μ = ב_ω₁
(of course, up to identification of cardinals and ordinals with
their representative types).
Equations
- One or more equations did not get rendered due to their size.
Instances For
We now inform Lean that our model parameters should be accessible from the names Λ
, κ
, etc.
instead of the longer Params.Λ
and so on.
Assume a set of model parameters.
Elementary properties #
We now establish the most basic elementary properties about Λ
, κ
, and μ
.
In particular, we will use choice to create well-orderings on κ
and μ
whose order types are
initial, and then prove some basic facts about these orders.
Equations
- ConNF.instLtWellOrderΛ = ConNF.Params.ΛWellOrder
Equations
- ConNF.instLtWellOrderκ = ConNF.κEquiv.ltWellOrder
We overload Lean's numeric literal syntax so that numbers such as 0
can also be interpreted
as particular inhabitants of κ
. We could do this for the other cardinal parameters as well, but
we don't need it.
Equations
- ConNF.instOfNatκ n = ConNF.κEquiv.ofNat n
Equations
- ConNF.instLtWellOrderμ = ConNF.μEquiv.ltWellOrder
The order type on κ
really is the initial ordinal for the cardinal #κ
.
Basic properties about the order and operations on κ
.
A set in μ
that is smaller than the cofinality of μ
is bounded.
A partial converse to the previous theorem: a bounded set in μ
must have cardinality smaller
than μ
itself.