TIMES from BSUM: multiplication of ranks, in the bit logic #
The last step of Immerman 1999 Thm 1.17(1), and the
one the textbook leaves entirely to the reader: with the Bit Sum Lemma in hand
(DescriptiveComplexity.BitSum.PopAll), define orank x * orank y = orank z
in FO(≤, BIT). The design gap it closes is recorded in the module docstring
of DescriptiveComplexity.LogTime.BitSum.Columns; the certificate here has
three layers, each guessed and pinned locally, none ever computing a product:
- A column (
DescriptiveComplexity.BitSum.ColCount): the word whose ones are the pairs of set bits ofxandymeeting at one column – a sub-mask ofy, read off bit by bit – counted by the Bit Sum Lemma. - A range of columns (
DescriptiveComplexity.BitSum.RangeSum): the weighted sumΣ_t c_{a+t} 2 ^ tof the columns[a, e), certified by a carry chain: the remainders of the column-by-column addition, packed one field per column into a single element, walked with the boundary set and the counter ofLogTime/BitSum/BlocksandCounter, each step oneDescriptiveComplexity.BitSum.StepEq– an addition and a bit of the result. - The product (
DescriptiveComplexity.BitSum.TimesCert): cut the columns into blocks ofgwith2 ^ g > P, so a block sum has2 gbits and the fields of the even (resp. odd) blocks tile an element exactly; one guessed element per parity, their windows certified byRangeSum, a tail from the last boundary to the top of the tape, and two additions put the product together. A no-overflow clause makes the columns end below the top, which is what confines the whole sum to the tape.
Soundness holds for whatever is guessed
(DescriptiveComplexity.BitSum.rangeSum_sound takes no size hypothesis), the
sizes are paid once in the completeness half
(DescriptiveComplexity.BitSum.timesCert_of_eq, above the threshold of
LogTime/BitSum/Sizes), and DescriptiveComplexity.BitSum.bitDef_times
discharges the threshold with DescriptiveComplexity.BitDef.of_large. The
result, DescriptiveComplexity.timesBitDef, is consumed in
LogTime/Translate.lean, where it closes AC⁰ = FO(≤, BIT) – the machine
model is AC⁰.
Two more sizes #
One column #
The word of one column: the bit of w at i says that y has a one
at i and x a one at the index completing i to j. Stated bit by bit,
with the complement named by an addition.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The count of one column: the column word, counted by the Bit Sum Lemma.
Equations
- DescriptiveComplexity.BitSum.ColCount x y j n = ∃ (w : A), DescriptiveComplexity.BitSum.ColWord x y j w ∧ DescriptiveComplexity.BitSum.PopAll w n
Instances For
Dependency graph
One step of a carry chain #
One step of the carry chain: the incoming remainder plus the column
count equals twice the outgoing remainder plus the bit of V at t – stated
with the sum and the double as guessed elements, so that it is two additions,
a bit read and a successor.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A range of columns, by a guessed carry chain #
The sum of the columns [a, e), certified: a gap, its boundary set and
counter, and one element R carrying the remainders of the column-by-column
addition, one field per column. The base pins the first column against the
lowest bit of V; the step, guarded by the room it needs, pins each next
column against the next bit, the counter naming the column; and the top names
the field of the last column and reads it as the bits of V above the range –
with nothing beyond them.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The certificate is sound, whatever was guessed: the chain equations,
walked from the first column, force V to be the weighted sum of the columns
of the range – with no size hypothesis at all.
Dependency graph
The product #
The whole certificate for orank x * orank y = orank z: the columns of
the schoolbook product, cut into blocks at a guessed gap; the block sums of the
even blocks written in the tiling fields of one element, those of the odd
blocks in another, each field certified by a carry chain; the columns from the
last boundary to the top of the tape as one more range; and two additions
putting the three parts together. The no-overflow clause keeps every column on
the tape, which is what makes the three parts everything there is.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The certificate exists for the product: the gap of
LogTime/BitSum/Sizes, the boundaries of the even/odd split at twice that gap,
a last boundary two blocks and change below the top, the block sums packed by
DescriptiveComplexity.BitSum.packVal, and the tail; every window is a field
of a packing and every range is DescriptiveComplexity.BitSum.rangeSum_of_eq.
Dependency graph
The multiplication of ranks, characterized: above the threshold, the certificate holds exactly for the products.
Dependency graph
Definability #
Multiplication of ranks is bit-definable – the missing half of
Immerman 1999 Thm 1.17(1), assembled: the
certificate is a formula, it characterizes the products above the threshold,
and DescriptiveComplexity.BitDef.of_large absorbs the threshold, the
relation being numeric. Stated first on three named variables, then relabeled
to any layout.