Small sets #
In this file, we define the notion of a small set, and prove many of the basic properties of small sets.
We say that a set is small if its cardinality is less than #κ
.
Equations
- ConNF.Small s = (Cardinal.mk ↑s < Cardinal.mk ConNF.κ)
Instances For
Criteria for smallness #
Subsingletons are small.
The empty set is small.
Singletons are small.
Subsets of small sets are small. We say that the 'smallness' relation is monotone.
If two sets are equal and one is small, then the other is small.
Binary unions of small sets are small.
The symmetric difference of two small sets is small; recall that the symmetric difference
s ∆ t
of two sets s
and t
is the union of their differences: s ∆ t = s \ t ∪ t \ s
.
An indexed union of sets is small if the index type is small and each set mentioned is small.
It is occasionally useful to take an indexed union over the proofs of a proposition, for example when taking a union over the elements of some set. In these cases, if the resulting set is small for every proof, the union is also small.
A small set-indexed union of sets is small.
The image of a small set under any function f
is small.
The preimage of a small set under an injective function f
is small.
If a set is not small, its cardinality is larger than #κ
.
Initial segments of κ
(excluding the endpoint) are small.
Initial segments of κ
(including the endpoint) are small.
Cardinality bounds on collections of small sets #
The amount of small subsets of any type α
is bounded below by the cardinality of α
.
Because μ
is a strong limit,
there are at most μ
small subsets of a type at most as large as μ
.
There are exactly μ
small subsets of any type α
of size μ
.
Small relations #
One of the crucial differences between this formalisation and previous iterations of the paper is our extensive use of relational reasoning as opposed to function-based reasoning. This has some technical advantages that should hopefully become clear over the course of this work.
We will begin our study of relations by proving some smallness results for them, but we will first establish some terminology that will be used throughout this document.
The domain of a relation r
is the set {a | ∃ b, r a b}
.
The codomain of r
is the set {b | ∃ a, r a b}
.
A relation r
is called
- injective, if
r a b
andr a' b
implya = a'
; - surjective, if for every
b
, there is somea
such thatr a b
; - coinjective, if
r a b
andr a b'
implyb = b'
; - cosurjective, if for every
a
, there is someb
such thatr a b
; - one-to-one, if
r
is both injective and coinjective; - functional, if
r
is both coinjective and cosurjective (so is a set-theoretic function); - cofunctional, if
r
is both injective and surjective (so is the converse of a set-theoretic function); - bijective, if
r
is both functional and cofunctional; - permutative, if
r
is one-to-one and its domain and codomain are equal.
The image of a set s
under a relation r
is the set {b | ∃ a ∈ s, r a b}
.
The graph of a relation r
is the set {(a, b) | r a b}
.
We can now state our results.
The image of any small set under a coinjective relation is small. This is a generalisation of the fact that the image of a small set under a function (or functional relation) is small.
If the domain of a coinjective relation is small, then its codomain is also small. This is a special case of the previous result.
If the domain and codomain of a relation are small, then its graph is also small.
Nearness #
Once we fix a notion of smallness, we can define an equivalence relation on sets of any type by declaring that two sets are near each other if their symmetric difference is small. This notion is used when defining near-litters, an important part of the ambient structure at the base type level.
Two sets are called near if their symmetric difference is small.
Equations
- (s ~ t) = ConNF.Small (symmDiff s t)
Instances For
We establish the symbol ~
to denote nearness.
Two sets are called near if their symmetric difference is small.
Equations
- ConNF.«term_~_» = Lean.ParserDescr.trailingNode `ConNF.«term_~_» 50 51 (Lean.ParserDescr.binary `andthen (Lean.ParserDescr.symbol " ~ ") (Lean.ParserDescr.cat `term 51))
Instances For
Like near_refl
, but leaving all arguments implicit.
Equal sets are near.
Nearness is symmetric.
Nearness is transitive.
Equations
- ConNF.instTransSetNear = { trans := ⋯ }
If s
is small, then s ∆ t
is near t
for any t
.
If s
is small, then t ∪ s
is near t
for any t
.
Nearness is preserved under function application.
Two large sets that are near each other have the same cardinality (and we only need to suppose that one of them is large to draw this conclusion).
If s
and t
are large and near each other, then their intersection has the same cardinality
as both s
and t
.
Any two large sets that are near each other must have nonempty intersection.
If α
is any type with cardinality bounded by μ
, then the amount of sets near a given set s
is also bounded by μ
.
If α
is any type with cardinality exactly μ
, then the amount of sets near a given set s
is precisely μ
.