Nash-Williams Fronts #
Fronts are families of finite sets of natural numbers which generalize the families [M]^k of
subsets of size k ∈ ℕ for infinite subsets M ⊆ ℕ. They enjoy a similar combinatorial
property, an infinite Ramsey theorem, which is the main result of this file.
The explicit definition of a front is relative to an infinite set M ⊆ ℕ. A family F of
finite subsets of M is a front if it satisfies:
- (Base) Either
F = {∅}or⋃ F = M. - (Incomparability) For all
s, t ∈ F, ifs ⊑ tthens = t. - (Density) For all
N ∈ [M]^∞there existst ∈ Fsuch thatt ⊑ N.
Here s ⊑ t is the initial-segment (prefix) relation.
Encoding (enumeration-first) #
Everything is represented through increasing enumerations, so a subset of ℕ is its strictly
monotone enumeration and the underlying set is recovered as a range.
- An infinite subset of
ℕis aStrictMonomapN : ℕ → ℕ; its set isSet.range N. - A finite subset is a sorted list
s : List ℕ; its set is{x | x ∈ s}. IsInit s Nsayssis the initial segment of the sequenceN, i.e.s = [N 0, N 1, …, N (s.length - 1)]. This is⊑between (the increasing enumeration of) a finite set and an infinite set.⊑between two finite sets is plainList.IsPrefix(<+:).[M]^∞, the infinite subsets ofM, is exactly the subsequencesM ∘ gforStrictMono g.
Why increasing lists rather than Finset ℕ #
Front elements are finite subsets, but the whole theory — incomparability, density, the tree of
prefixes and its rank — is phrased in the initial-segment (prefix) order, not just in terms of
membership. List.IsPrefix carries that order natively, with the full Mathlib API (and matching
Mathlib.SetTheory.Descriptive.Tree, whose nodes are likewise Lists). A Finset ℕ has no
intrinsic order, so an initial-segment relation on finsets would have to be reintroduced by
sorting and its API rebuilt from scratch. We therefore encode a finite subset by its strictly
increasing enumeration (a sorted List ℕ) and bridge to Finset ℕ only at the boundary with
Finset-based (e.g. Ramsey) statements, via Finset.sort / List.toFinset.
IsInit s N : the sorted list s is the initial segment of the increasing enumeration
N : ℕ → ℕ, i.e. s = [N 0, N 1, …, N (s.length - 1)]. This is the prefix relation ⊑
between a finite set and an infinite set.
Equations
- Front.IsInit s N = (s = List.map N (List.range s.length))
Instances For
List.range is monotone for the prefix order.
The length-n initial segment of N is an initial segment of N.
A front relative to an infinite set M, given by its increasing enumeration
M : ℕ → ℕ (a StrictMono map, so range M is infinite). F is a family of finite sets
(sorted lists) satisfying Base, Incomparability and Density.
- mono : StrictMono M
Mis the increasing enumeration of an infinite subset ofℕ; in particularrange Mis infinite. Without this a degenerateM(e.g. constant) would vacuously admit "fronts". Every element of
Fis the strictly increasing enumeration of a finite set.Every element of
Fis a subset ofM.Base:
F = {∅}or the elements ofFcoverM.Incomparability:
Fis an antichain for the prefix order.- dense (g : ℕ → ℕ) : StrictMono g → ∃ t ∈ F, IsInit t (M ∘ g)
Density: every subsequence
M ∘ gofMhas an initial segment inF.
Instances For
The uniform fronts [M]^k #
The prototypical fronts: [M]^k is the family of size-k subsets of M, i.e. the strictly
increasing lists of length k whose entries lie in M.
The first k values of M ∘ e forms a size-k subset of M, for e strictly
monotone. This is the generic member of [M]^k used to witness Base and Density.
[M]^k the family of subsets of M of size k is a front on M.
The Schreier front #
The Schreier front on M consists of the non-empty finite subsets s ⊆ M whose size is one
more than the minimal (first) element: ∃ a, s.head? = some a ∧ s.length = a + 1. It is the
first genuinely non-uniform front — the lists' length varies with where the list starts.
The Schreier front on M: increasing lists s ⊆ M whose length is one more than their first
element.
Equations
Instances For
The Schreier front is a front on M.