Regular sequences in a well quasi-order #
A sequence f : ℕ → Q in a quasi-order (Q, r) is regular if every term dominates infinitely
many later terms. This file shows that in a WQO every sequence has a regular tail
(WellQuasiOrdered.eventuallyRegular), and draws two consequences that are the backbone of the
2-BQO closure theorems in TwoBQO.lean:
- an antitone sequence in a WQO eventually stabilizes
(
WellQuasiOrdered.exists_forall_le_of_antitone); List.SublistForall₂ r(Higman's order) is a WQO on all ofList Q, not just on aPartiallyWellOrderedOnsubset (WellQuasiOrdered.sublistForall₂), a direct corollary of Higman's lemma already in Mathlib (Set.PartiallyWellOrderedOn.partiallyWellOrderedOn_sublistForall₂).
Main definitions #
Preorder.IsRegularSeq r f: every term offdominates infinitely many later terms.
Main results #
WellQuasiOrdered.eventuallyRegular: every sequence in a WQO has a regular tail.WellQuasiOrdered.exists_forall_le_of_antitone: an antitone sequence in a WQO stabilizes.WellQuasiOrdered.sublistForall₂: Higman's order is a WQO onList Qwhenris a WQO onQ.
Regular sequences #
A sequence (f i)_{i ∈ ℕ} in a quasi-order (Q, ≤) is regular
if for every i : ℕ, the set {j : ℕ | f i ≤ f j} is infinite.
A regular sequence has arbitrarily large indices dominating any given index:
for every i and threshold N there is j ≥ N with f i ≤ f j.
A tail of a regular sequence is regular.
In a WQO every sequence is eventually regular. In fact this is an equivalent characterization of WQO, since any bad sequence admits no regular tail.
In a WQO, an antitone sequence stabilizes from above: there is an index m from
which the sequence becomes r-dominated by a m (so, together with antitonicity,
a m is r-equivalent to every later term).
List.SublistForall₂ r is a preorder on List Q whenever r is a preorder on Q.
Higman's Lemma, unrestricted. If r is a WQO on Q, then List.SublistForall₂ r is a
WQO on all of List Q (not just on a PartiallyWellOrderedOn subset). A direct restatement of
Set.PartiallyWellOrderedOn.partiallyWellOrderedOn_sublistForall₂ via
partiallyWellOrderedOn_univ_iff.