What a comparison loop decides #
The two remaining atom kinds of a step matrix – equality and order of two points – are the ones the machine settles by comparing two argument blocks. It cannot look at a block value as a whole: it walks the cells its marks name, one canonically padded tuple at a time, reading one bit from each of the two blocks (a paired read, which is why these are element loops and not file tests). This file says that this is enough.
DescriptiveComplexity.Draw.Data.encMap_eq_iff_padBits– two encodings are equal exactly when they agree at every padded tuple, because an encoding is supported on padded tuples (DescriptiveComplexity.Draw.Data.isPad_of_encMap) and the encoding is injective. So the equality atom is the loop found no difference.DescriptiveComplexity.Draw.Data.wmSetLe_encMap_iff_padBits– the binary order of two encodings is decided at the lexicographically least padded tuple where they differ, the second block containing it. So the order atom is the loop's first difference, which is why the loop keeps the first verdict rather than the last.DescriptiveComplexity.Draw.Data.encOrder_le_iff_padBitsreads the same through the order the reduction puts on the points (DescriptiveComplexity.Draw.encOrder), which is where an order atom of the matrix actually lives.
The bridge underneath is padLt_iff: padding is an order embedding of the
dd₀-tuples the control enumerates into the dd-tuples the cells are, since
two padded tuples agree beyond dd₀ and so are compared inside it.
Padding is an order embedding #
Two padded tuples compare inside the coordinates they carry: they
agree beyond dd₀, so the lexicographic comparison is settled before it.
Dependency graph
The strict order the address layer reads on tuples, spelled out.
Dependency graph
What the loop sees of a block value #
The bits of a block value the loops can read: its membership question
at the canonically padded tuple of each dd₀-tuple – the cells the marks
name.
Equations
- dt.padBits zero S w = S (DescriptiveComplexity.Draw.pad zero w)
Instances For
Dependency graph
An encoding is what its padded bits say: two encodings agreeing at every padded tuple agree everywhere, since neither holds off the padded tuples.
Dependency graph
The equality atom is «the loop found no difference»: two points are equal exactly when their encodings agree at every cell the loop visits.
Dependency graph
The order atom is the loop's first difference: the binary order of two encodings is decided at the lexicographically least padded tuple where they differ.
Dependency graph
The order atom, in the order the reduction chose: the comparison the
loop runs is exactly the order the points carry
(DescriptiveComplexity.Draw.encOrder).