The back and forth method and countable dense linear orders #
Results #
Suppose α β
are linear orders, with α
countable and β
dense, nonempty, without endpoints.
Then there is an order embedding α ↪ β
. If in addition α
is dense, nonempty, without
endpoints and β
is countable, then we can upgrade this to an order isomorphism α ≃ β
.
The idea for both results is to consider "partial isomorphisms", which
identify a finite subset of α
with a finite subset of β
, and prove that
for any such partial isomorphism f
and a : α
, we can extend f
to
include a
in its domain.
References #
https://en.wikipedia.org/wiki/Back-and-forth_method
Tags #
back and forth, dense, countable, order
Suppose α
is a nonempty dense linear order without endpoints, and
suppose lo
, hi
, are finite subssets with all of lo
strictly
before hi
. Then there is an element of α
strictly between lo
and hi
.
The type of partial order isomorphisms between α
and β
defined on finite subsets.
A partial order isomorphism is encoded as a finite subset of α × β
, consisting
of pairs which should be identified.
For each a
, we can find a b
in the codomain, such that a
's relation to
the domain of f
is b
's relation to the image of f
.
Thus, if a
is not already in f
, then we can extend f
by sending a
to b
.
A partial isomorphism between α
and β
is also a partial isomorphism between β
and α
.
Equations
- order.partial_iso.comm = subtype.map (finset.image ⇑(equiv.prod_comm α β)) order.partial_iso.comm._proof_1
The set of partial isomorphisms defined at a : α
, together with a proof that any
partial isomorphism can be extended to one defined at a
.
Equations
- order.partial_iso.defined_at_left β a = {carrier := λ (f : order.partial_iso α β), ∃ (b : β), (a, b) ∈ f.val, mem_gt := _}
The set of partial isomorphisms defined at b : β
, together with a proof that any
partial isomorphism can be extended to include b
. We prove this by symmetry.
Equations
- order.partial_iso.defined_at_right α b = {carrier := λ (f : order.partial_iso α β), ∃ (a : α), (a, b) ∈ f.val, mem_gt := _}
Given an ideal which intersects defined_at_left β a
, pick b : β
such that
some partial function in the ideal maps a
to b
.
Given an ideal which intersects defined_at_right α b
, pick a : α
such that
some partial function in the ideal maps a
to b
.
Any countable linear order embeds in any nonempty dense linear order without endpoints.
Equations
- order.embedding_from_countable_to_dense α β = let our_ideal : order.ideal (order.partial_iso α β) := order.ideal_of_cofinals default (order.partial_iso.defined_at_left β), F : Π (a : α), {b // ∃ (f : {f // ∀ (p : α × β), p ∈ f → ∀ (q : α × β), q ∈ f → cmp p.fst q.fst = cmp p.snd q.snd}) (H : f ∈ our_ideal), (a, b) ∈ f.val} := λ (a : α), order.partial_iso.fun_of_ideal a our_ideal _ in order_embedding.of_strict_mono (λ (a : α), (F a).val) _
Any two countable dense, nonempty linear orders without endpoints are order isomorphic.
Equations
- order.iso_of_countable_dense α β = let to_cofinal : α ⊕ β → order.cofinal (order.partial_iso α β) := λ (p : α ⊕ β), p.rec_on (order.partial_iso.defined_at_left β) (order.partial_iso.defined_at_right α), our_ideal : order.ideal (order.partial_iso α β) := order.ideal_of_cofinals default to_cofinal, F : Π (a : α), {b // ∃ (f : {f // ∀ (p : α × β), p ∈ f → ∀ (q : α × β), q ∈ f → cmp p.fst q.fst = cmp p.snd q.snd}) (H : f ∈ our_ideal), (a, b) ∈ f.val} := λ (a : α), order.partial_iso.fun_of_ideal a our_ideal _, G : Π (b : β), {a // ∃ (f : {f // ∀ (p : α × β), p ∈ f → ∀ (q : α × β), q ∈ f → cmp p.fst q.fst = cmp p.snd q.snd}) (H : f ∈ our_ideal), (a, b) ∈ f.val} := λ (b : β), order.partial_iso.inv_of_ideal b our_ideal _ in order_iso.of_cmp_eq_cmp (λ (a : α), (F a).val) (λ (b : β), (G b).val) _