Order ideals, cofinal sets, and the Rasiowa–Sikorski lemma #
Main definitions #
Throughout this file, P
is at least a preorder, but some sections require more
structure, such as a bottom element, a top element, or a join-semilattice structure.
order.ideal P
: the type of nonempty, upward directed, and downward closed subsets ofP
. Dual to the notion of a filter on a preorder.order.is_ideal P
: a predicate for when aset P
is an ideal.order.ideal.principal p
: the principal ideal generated byp : P
.order.ideal.is_proper P
: a predicate for proper ideals. Dual to the notion of a proper filter.order.ideal.is_maximal
: a predicate for maximal ideals. Dual to the notion of an ultrafilter.ideal_Inter_nonempty P
: a predicate for when the intersection of all ideals ofP
is nonempty.order.cofinal P
: the type of subsets ofP
containing arbitrarily large elements. Dual to the notion of 'dense set' used in forcing.order.ideal_of_cofinals p 𝒟
, wherep : P
, and𝒟
is a countable family of cofinal subsets of P: an ideal inP
which containsp
and intersects every set in𝒟
. (This a form of the Rasiowa–Sikorski lemma.)
References #
- https://en.wikipedia.org/wiki/Ideal_(order_theory)
- https://en.wikipedia.org/wiki/Cofinal_(mathematics)
- https://en.wikipedia.org/wiki/Rasiowa%E2%80%93Sikorski_lemma
Note that for the Rasiowa–Sikorski lemma, Wikipedia uses the opposite ordering on P
,
in line with most presentations of forcing.
TODO #
order.ideal.ideal_Inter_nonempty
is a complicated way to say that P
has a bottom element. It
should be replaced by this clearer condition, which could be called strong directedness and which
is a Prop version of order_bot
.
Tags #
ideal, cofinal, dense, countable, generic
- carrier : set P
- nonempty : self.carrier.nonempty
- directed : directed_on has_le.le self.carrier
- mem_of_le : ∀ {x y : P}, x ≤ y → y ∈ self.carrier → x ∈ self.carrier
An ideal on an order P
is a subset of P
that is
- nonempty
- upward directed (any pair of elements in the ideal has an upper bound in the ideal)
- downward closed (any element less than an element of the ideal is in the ideal).
- nonempty : I.nonempty
- directed : directed_on has_le.le I
- mem_of_le : ∀ {x y : P}, x ≤ y → y ∈ I → x ∈ I
A subset of a preorder P
is an ideal if it is
- nonempty
- upward directed (any pair of elements in the ideal has an upper bound in the ideal)
- downward closed (any element less than an element of the ideal is in the ideal).
Create an element of type order.ideal
from a set satisfying the predicate
order.is_ideal
.
An ideal of P
can be viewed as a subset of P
.
Equations
- order.ideal.set.has_coe = {coe := order.ideal.carrier _inst_1}
For the notation x ∈ I
.
Equations
- order.ideal.has_mem = {mem := λ (x : P) (I : order.ideal P), x ∈ ↑I}
Two ideals are equal when their underlying sets are equal.
The partial ordering by subset inclusion, inherited from set P
.
A proper ideal is one that is not the whole set. Note that the whole set might not be an ideal.
An ideal is maximal if it is maximal in the collection of proper ideals.
Note that is_coatom
is less general because ideals only have a top element when P
is directed
and nonempty.
Instances
- Inter_nonempty : (⋂ (I : order.ideal P), ↑I).nonempty
An order P
has the ideal_Inter_nonempty
property if the intersection of all ideals is
nonempty. Most importantly, the ideals of a semilattice_sup
with this property form a complete
lattice.
TODO: This is equivalent to the existence of a bottom element and shouldn't be specialized to ideals.
The smallest ideal containing a given element.
Equations
A specific witness of I.nonempty
when P
has a bottom element.
There is a bottom ideal when P
has a bottom element.
Equations
- order.ideal.order_bot = {bot := order.ideal.principal ⊥, bot_le := _}
In a directed and nonempty order, the top ideal of a is set.univ
.
A specific witness of I.directed
when P
has joins.
The infimum of two ideals of a co-directed order is their intersection.
The supremum of two ideals of a co-directed order is the union of the down sets of the pointwise
supremum of I
and J
.
Equations
- order.ideal.lattice = {sup := has_sup.sup order.ideal.has_sup, le := partial_order.le order.ideal.partial_order, lt := partial_order.lt order.ideal.partial_order, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := has_inf.inf order.ideal.has_inf, inf_le_left := _, inf_le_right := _, le_inf := _}
Equations
- order.ideal.has_Inf = {Inf := λ (s : set (order.ideal P)), {carrier := ⋂ (I : order.ideal P) (H : I ∈ s), ↑I, nonempty := _, directed := _, mem_of_le := _}}
Equations
- order.ideal.complete_lattice = {sup := lattice.sup order.ideal.lattice, le := lattice.le order.ideal.lattice, lt := lattice.lt order.ideal.lattice, le_refl := _, le_trans := _, lt_iff_le_not_le := _, le_antisymm := _, le_sup_left := _, le_sup_right := _, sup_le := _, inf := lattice.inf order.ideal.lattice, inf_le_left := _, inf_le_right := _, le_inf := _, Sup := complete_lattice.Sup (complete_lattice_of_Inf (order.ideal P) order.ideal.complete_lattice._proof_12), le_Sup := _, Sup_le := _, Inf := complete_lattice.Inf (complete_lattice_of_Inf (order.ideal P) order.ideal.complete_lattice._proof_12), Inf_le := _, le_Inf := _, top := complete_lattice.top (complete_lattice_of_Inf (order.ideal P) order.ideal.complete_lattice._proof_12), bot := complete_lattice.bot (complete_lattice_of_Inf (order.ideal P) order.ideal.complete_lattice._proof_12), le_top := _, bot_le := _}
For a preorder P
, cofinal P
is the type of subsets of P
containing arbitrarily large elements. They are the dense sets in
the topology whose open sets are terminal segments.
Equations
- order.cofinal.has_mem = {mem := λ (x : P) (D : order.cofinal P), x ∈ D.carrier}
A (noncomputable) element of a cofinal set lying above a given element.
Equations
- D.above x = classical.some _
Given a starting point, and a countable family of cofinal sets, this is an increasing sequence that intersects each cofinal set.
Equations
- order.sequence_of_cofinals p «𝒟» (n + 1) = order.sequence_of_cofinals._match_1 «𝒟» (order.sequence_of_cofinals p «𝒟» n) (order.sequence_of_cofinals p «𝒟» n) (encodable.decode ι n)
- order.sequence_of_cofinals p «𝒟» 0 = p
- order.sequence_of_cofinals._match_1 «𝒟» _f_1 _f_2 (some i) = («𝒟» i).above _f_2
- order.sequence_of_cofinals._match_1 «𝒟» _f_1 _f_2 none = _f_1
Given an element p : P
and a family 𝒟
of cofinal subsets of a preorder P
,
indexed by a countable type, ideal_of_cofinals p 𝒟
is an ideal in P
which
- contains
p
, according tomem_ideal_of_cofinals p 𝒟
, and - intersects every set in
𝒟
, according tocofinal_meets_ideal_of_cofinals p 𝒟
.
This proves the Rasiowa–Sikorski lemma.
Equations
- order.ideal_of_cofinals p «𝒟» = {carrier := {x : P | ∃ (n : ℕ), x ≤ order.sequence_of_cofinals p «𝒟» n}, nonempty := _, directed := _, mem_of_le := _}
ideal_of_cofinals p 𝒟
is 𝒟
-generic.