Word cylinders and coordinate flips in Cantor space #
A word is a finite list w : List α, read left to right. The point prependWord w x of
ℕ → α starts with the letters of w and continues with x, and the word cylinder
wordCylinder w is the set of points that start with w, the range of prependWord w.
These are the basic open sets of Cantor space ℕ → Bool and of Baire space ℕ → ℕ indexed by
the word they begin with. Constructions on Cantor space indexed by words, such as the graphs
G_S of Kechris, Solecki and Todorcevic, whose edges join prependWord (s ++ [false]) x and
prependWord (s ++ [true]) x, are phrased in this language.
Mathlib's cylinders PiNat.cylinder x n are indexed instead by a point and a length, and
PiNat.res x n lists the first n values of x newest first. The two conventions are related
by PiNat.wordCylinder_reverse_res, which says that wordCylinder (res x n).reverse is
cylinder x n. The point prependWord w x is Mathlib's Stream'.appendStream' w x, and its
basic API is derived from Mathlib's lemmas about Stream'.appendStream'. It is typed as a point
of ℕ → α because the type synonym Stream' α carries no topology or measurable structure, and
Mathlib's lemmas, phrased through Stream'.get, do not apply to evaluation y n by simp or
rw.
The coordinate flip PiNat.flipAt n negates the n-th coordinate of a point of Cantor space.
It is an involutive homeomorphism, and it maps the cylinder of a word w onto the cylinder of
the word obtained by negating the n-th letter of w (PiNat.image_flipAt_wordCylinder). In
particular it exchanges the two halves wordCylinder (s ++ [false]) and
wordCylinder (s ++ [true]) of wordCylinder s when s has length n: this is the symmetry
used in Miller's proof that the graphs G_S have no countable Baire-measurable coloring, and in
the proof that eventual equality E₀ is generically ergodic.
Main definitions #
PiNat.prependWord w x: the point that starts with the wordwand continues withx.PiNat.wordCylinder w: the set of points that start withw.PiNat.flipAt n: the homeomorphism ofℕ → Boolnegating then-th coordinate.
Main results #
PiNat.mem_wordCylinder_iff: a point lies inwordCylinder wiff it agrees withwon the firstw.lengthcoordinates.PiNat.wordCylinder_subset_wordCylinder_iff: over a nontrivial alphabet, inclusion of word cylinders is the reverse of the prefix order on words.PiNat.disjoint_wordCylinder_iff: two word cylinders are disjoint iff neither word is a prefix of the other.PiNat.isOpenEmbedding_prependWord: over a discrete alphabet,prependWord wis an open embedding onto the clopen setwordCylinder w.PiNat.wordCylinder_reverse_res:wordCylinder (res x n).reverse = cylinder x n.PiNat.image_flipAt_wordCylinder:flipAt nmapswordCylinder wonto the cylinder ofwwith itsn-th letter negated.
References #
- A. S. Kechris, Classical Descriptive Set Theory, Springer-Verlag, 1995, Section 2.D, for
cylinders indexed by finite sequences in
ℕ → α. - B. D. Miller, "The graph-theoretic approach to descriptive set theory", Bulletin of Symbolic
Logic 18 (2012), 554–575, for the graphs
G_Sand the coordinate flip.
Prepending a word #
prependWord w x is the point of ℕ → α that starts with the letters of the word w, read
left to right, and continues with the point x: Mathlib's Stream'.appendStream' w x, typed as a
point of ℕ → α.
Instances For
Below w.length, the coordinates of prependWord w x are the letters of w.
From w.length on, the coordinates of prependWord w x are those of x, shifted by
w.length.
Prepending v ++ w is prepending w and then v.
Prepending a fixed word is injective.
For any topology on the alphabet, prepending a word is continuous for the product topology on
ℕ → α.
For any measurable structure on the alphabet, prepending a word is measurable for the product
σ-algebra on ℕ → α.
Word cylinders #
The cylinder of the word w: the set of points of ℕ → α that start with the letters of w,
as the range of prependWord w.
Instances For
Over a nonempty alphabet, every word cylinder is nonempty.
A longer word has a smaller cylinder.
If y starts with both words v and w, then one of them is a prefix of the other.
Over a nontrivial alphabet, inclusion of word cylinders is the reverse of the prefix order on words.
Two word cylinders are disjoint iff neither word is a prefix of the other.
The cylinder of w is the union of the cylinders of its one-letter extensions.
The points that start with w are those of the Mathlib cylinder of length w.length around
any one of them.
The cylinder of the first n letters of x, read left to right, is Mathlib's cylinder of
length n around x.
The first w.length + n coordinates of prependWord w x, newest first, are the first n
coordinates of x, newest first, followed by the reversed word w.
Over a T₁ alphabet, every word cylinder is closed in the product topology.
Over a discrete alphabet, every word cylinder is open in the product topology.
Over a discrete alphabet, every word cylinder is clopen in the product topology.
Over an alphabet whose singletons are measurable, every word cylinder is measurable for the product σ-algebra.
prependWord w is a topological embedding: its inverse on wordCylinder w forgets the first
w.length coordinates.
Over a discrete alphabet, prependWord w is an open embedding onto the clopen set
wordCylinder w.
Over a T₁ alphabet, prependWord w is a closed embedding onto wordCylinder w.
Let the words c m increase in the prefix order, with lengths tending to infinity. Then any
points γ m ∈ wordCylinder (c m) converge: eventually every coordinate of γ m is the letter
that the words spell out at that position.
Over a discrete alphabet, a map φ of ℕ → α into a pseudometric space is continuous if it
is the uniform limit of approximations F n such that F n x depends only on the first n
coordinates res x n of x: F n x lies within ε n of φ x for every x, and ε n tends
to 0.
The coordinate flip of Cantor space #
The coordinate flip is an involution.
The coordinate flip at n pulls the cylinder of w back to the cylinder of w with its
n-th letter negated; when w.length ≤ n the cylinder is unchanged.
The coordinate flip at n maps the cylinder of w onto the cylinder of w with its n-th
letter negated; when w.length ≤ n the cylinder is unchanged.
The coordinate flip at s.length exchanges prependWord (s ++ [b]) x and
prependWord (s ++ [!b]) x.
The coordinate flip at s.length maps the cylinder of s ++ [b] onto the cylinder of
s ++ [!b], exchanging the two halves of the cylinder of s.