The Hales-Jewett theorem #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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 #
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.
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
.