The canonical order is inflationary-definable #
That one fixed-point formula orders the ≡ᵏ-classes uniformly over all
finite structures is the central lemma of
Dawar–Lindell–Weinstein 1995; here it is stated as
the first-order definition of the ordered pebble refinement
(DescriptiveComplexity.Invariant.OrderedPebble): a simultaneous induction
DescriptiveComplexity.ordStepDef over the base vocabulary, with one
relation variable of arity k + k holding the current strict order on
k-tuples, whose inflationary stages are exactly the stages of the ordered
refinement (DescriptiveComplexity.inflStage_ordStepDef), so whose limit is
the canonical order DescriptiveComplexity.OrdK on the ≡ᵏ-classes.
The initial coloring is the atomic bit vector relative to a finite
agreement family S (DescriptiveComplexity.atomColor): one bit per
coordinate equality and one per relation of S at each selection of
coordinates, ordered lexicographically along an arbitrary enumeration of the
bits. Its agreement is atomic agreement
(DescriptiveComplexity.colorAgree_atomColor), which plugs the definable
order into the invariant structure's linear order
(DescriptiveComplexity.invLinearOrder).
Every piece of one refinement round is written as a first-order formula over
the expanded vocabulary – the bit comparisons as finite lexicographic
disjunctions, membership in a move set with one quantifier, move-set
comparison with a quantified separating tuple and a quantified minimality
check – and each formula builder comes with its realization lemma, so the
step formula realizes one round of DescriptiveComplexity.ordRefine
(DescriptiveComplexity.realize_ordStepF).
The order block and its symbol #
The block of the definable refinement: one relation variable of arity
k + k, the current strict order on k-tuples.
Equations
Instances For
Dependency graph
The order variable's relation symbol.
Instances For
Dependency graph
A base relation symbol, in the vocabulary expanded by the order block.
Equations
- DescriptiveComplexity.ordBaseSym L k R = Sum.inl R
Instances For
Dependency graph
The strict order on k-tuples held by an assignment of the order
block.
Equations
- DescriptiveComplexity.toPebble σ u v = σ () fun (i : Fin (k + k)) => Fin.addCases u v i
Instances For
Dependency graph
Reading a k + k-tuple as two k-tuples.
Dependency graph
Formula builders #
Each builder takes the tuples it speaks about as selections of variables
Fin k → γ in an arbitrary context γ, so that the builders compose under
the quantifiers Formula.iExs/Formula.iAlls.
The ≺-atom between two k-tuples of variables.
Equations
- DescriptiveComplexity.ordPrecF L k f g = (DescriptiveComplexity.ordVSym L k).formula fun (p : Fin (k + k)) => FirstOrder.Language.var (Fin.addCases f g p)
Instances For
Dependency graph
Incomparability of two k-tuples of variables.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Membership of the class of x in the move set of f at pebble j:
some value of pebble j moves f into the class of x.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The class of x separates the move sets of f and g at pebble j.
Equations
- DescriptiveComplexity.movesDiffF L k j f g x = FirstOrder.Language.BoundedFormula.not ((DescriptiveComplexity.inMovesF L k j f x).iff (DescriptiveComplexity.inMovesF L k j g x))
Instances For
Dependency graph
Move-set comparison at pebble j: some separating class in the move set
of f and not of g is minimal among the separating classes.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Move-set equality at pebble j.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Lexicographic move-set comparison over the pebbles.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Realization of the builders #
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The atomic bit coloring #
The bit positions of the atomic coloring: one per coordinate equality, one per relation of the family at each selection of coordinates.
Instances For
Dependency graph
The atomic bit vector of a k-tuple.
Equations
Instances For
Dependency graph
The atomic coloring: the bit vector, compared lexicographically.
Equations
- DescriptiveComplexity.atomColor L k S w = toLex (DescriptiveComplexity.atomBits L k S w)
Instances For
Dependency graph
An arbitrary enumeration order on the bit positions (finitely many, for a finite family).
Equations
Instances For
Dependency graph
The lexicographic order on bit vectors.
Equations
Instances For
Dependency graph
The agreement of the atomic coloring is atomic agreement.
Dependency graph
The bit comparison formulas #
The formula of one atomic bit at a selection of variables.
Equations
- DescriptiveComplexity.atomBitF L k S (Sum.inl (i, j)) f = (FirstOrder.Language.var (f i)).equal (FirstOrder.Language.var (f j))
- DescriptiveComplexity.atomBitF L k S (Sum.inr ⟨R, gsel⟩) f = (DescriptiveComplexity.ordBaseSym L k (↑R).snd).formula fun (p : Fin (↑R).fst) => FirstOrder.Language.var (f (gsel p))
Instances For
Dependency graph
Bit agreement at two selections of variables.
Equations
- DescriptiveComplexity.atomBitEqF L k S b f g = (DescriptiveComplexity.atomBitF L k S b f).iff (DescriptiveComplexity.atomBitF L k S b g)
Instances For
Dependency graph
Lexicographic bit-vector comparison: agree before some bit, 0 < 1 at
it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Bit-vector equality.
Equations
- DescriptiveComplexity.atomEqF L k S hS f g = FirstOrder.Language.Formula.iInf fun (b : DescriptiveComplexity.BitIdx L k S) => DescriptiveComplexity.atomBitEqF L k S b f g
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
The step formula and the induction #
The step formula of the definable refinement: one round of
DescriptiveComplexity.ordRefine, over the current order variable.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The definable refinement: the simultaneous induction computing the
canonical order on k-tuples, inflationarily. (The output sentence is
irrelevant: the induction is consumed as the first stratum of a
stratification.)
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
The stages of the definable refinement are the stages of the ordered pebble refinement.
Dependency graph
The value of the definable refinement is the canonical order.