The Hales-Jewett theorem #
We prove the Hales-Jewett theorem and deduce Van der Waerden's theorem as a corollary.
The Hales-Jewett theorem is a result in Ramsey theory dealing with combinatorial lines. Given
an 'alphabet' α : Type* and a b : α, an example of a combinatorial line in α^5 is
{ (a, x, x, b, x) | x : α }. See combinatorics.line for a precise general definition. The
Hales-Jewett theorem states that for any fixed finite types α and κ, there exists a (potentially
huge) finite type ι such that whenever ι → α is κ-colored (i.e. for any coloring
C : (ι → α) → κ), there exists a monochromatic line. We prove the Hales-Jewett theorem using
the idea of color focusing and a product argument. See the proof of
combinatorics.line.exists_mono_in_high_dimension' for details.
The version of Van der Waerden's theorem in this file states that whenever a commutative monoid M
is finitely colored and S is a finite subset, there exists a monochromatic homothetic copy of S.
This follows from the Hales-Jewett theorem by considering the map (ι → S) → M sending v
to ∑ i : ι, v i, which sends a combinatorial line to a homothetic copy of S.
Main results #
combinatorics.line.exists_mono_in_high_dimension: the Hales-Jewett theorem.combinatorics.exists_mono_homothetic_copy: a generalization of Van der Waerden's theorem.
Implementation details #
For convenience, we work directly with finite types instead of natural numbers. That is, we write
α, ι, κ for (finite) types where one might traditionally use natural numbers n, H, c. This
allows us to work directly with α, option α, (ι → α) → κ, and ι ⊕ ι' instead of fin n,
fin (n+1), fin (c^(n^H)), and fin (H + H').
Todo #
-
Prove a finitary version of Van der Waerden's theorem (either by compactness or by modifying the current proof).
-
One could reformulate the proof of Hales-Jewett to give explicit upper bounds on the number of coordinates needed.
Tags #
combinatorial line, Ramsey theory, arithmetic progession
References #
- idx_fun : ι → option α
- proper : ∃ (i : ι), self.idx_fun i = option.none
The type of combinatorial lines. A line l : line α ι in the hypercube ι → α defines a
function α → ι → α from α to the hypercube, such that for each coordinate i : ι, the function
λ x, l x i is either id or constant. We require lines to be nontrivial in the sense that
λ x, l x i is id for at least one i.
Formally, a line is represented by the function l.idx_fun : ι → option α which says whether
λ x, l x i is id (corresponding to l.idx_fun i = none) or constantly y (corresponding to
l.idx_fun i = some y).
When α has size 1 there can be many elements of line α ι defining the same function.
Instances for combinatorics.line
- combinatorics.line.has_sizeof_inst
- combinatorics.line.has_coe_to_fun
- combinatorics.line.inhabited
Equations
- combinatorics.line.has_coe_to_fun α ι = {coe := λ (l : combinatorics.line α ι) (x : α) (i : ι), (l.idx_fun i).get_or_else x}
A line is monochromatic if all its points are the same color.
Equations
- combinatorics.line.is_mono C l = ∃ (c : κ), ∀ (x : α), C (⇑l x) = c
The diagonal line. It is the identity at every coordinate.
Equations
- combinatorics.line.diagonal α ι = {idx_fun := λ (_x : ι), option.none, proper := _}
Equations
- combinatorics.line.inhabited α ι = {default := combinatorics.line.diagonal α ι _inst_1}
- line : combinatorics.line (option α) ι
- color : κ
- has_color : ∀ (x : α), C (⇑(self.line) (option.some x)) = self.color
The type of lines that are only one color except possibly at their endpoints.
Instances for combinatorics.line.almost_mono
- combinatorics.line.almost_mono.has_sizeof_inst
- combinatorics.line.almost_mono.inhabited
Equations
- combinatorics.line.almost_mono.inhabited = {default := {line := inhabited.default (combinatorics.line.inhabited (option α) ι), color := inhabited.default _inst_2, has_color := _}}
- lines : multiset (combinatorics.line.almost_mono C)
- focus : ι → option α
- is_focused : ∀ (p : combinatorics.line.almost_mono C), p ∈ self.lines → ⇑(p.line) option.none = self.focus
- distinct_colors : (multiset.map combinatorics.line.almost_mono.color self.lines).nodup
The type of collections of lines such that
- each line is only one color except possibly at its endpoint
- the lines all have the same endpoint
- the colors of the lines are distinct.
Used in the proof
exists_mono_in_high_dimension.
Instances for combinatorics.line.color_focused
- combinatorics.line.color_focused.has_sizeof_inst
- combinatorics.line.color_focused.inhabited
Equations
- combinatorics.line.color_focused.inhabited C = {default := {lines := 0, focus := λ (_x : ι), option.none, is_focused := _, distinct_colors := _}}
A function f : α → α' determines a function line α ι → line α' ι. For a coordinate i,
l.map f is the identity at i if l is, and constantly f y if l is constantly y at i.
Equations
- combinatorics.line.map f l = {idx_fun := λ (i : ι), option.map f (l.idx_fun i), proper := _}
A point in ι → α and a line in ι' → α determine a line in ι ⊕ ι' → α.
Equations
- combinatorics.line.vertical v l = {idx_fun := sum.elim (option.some ∘ v) l.idx_fun, proper := _}
A line in ι → α and a point in ι' → α determine a line in ι ⊕ ι' → α.
Equations
- l.horizontal v = {idx_fun := sum.elim l.idx_fun (option.some ∘ v), proper := _}
One line in ι → α and one in ι' → α together determine a line in ι ⊕ ι' → α.
The Hales-Jewett theorem: for any finite types α and κ, there exists a finite type ι such
that whenever the hypercube ι → α is κ-colored, there is a monochromatic combinatorial line.
A generalization of Van der Waerden's theorem: if M is a finitely colored commutative
monoid, and S is a finite subset, then there exists a monochromatic homothetic copy of S.