Documentation

Complexitylib.Classes.PPoly.Uniform.Unrolling.Serializer.Initialization

Numeric initialization schedule for direct tableau serialization #

This module exposes the state, head, input-cell, and writable-cell segments of the direct deterministic initialization fragment. Its variable indices are natural numbers; machine states and symbols occur only as fixed finite parameters or in proof adapters.

The final equality is intentionally literal equality of raw gate lists. It does not yet construct a Turing machine that emits those gates.

Main results #

@[simp]
theorem Complexity.CircuitUnrolling.Serializer.length_indexedGateBlocks (count width : ) (blockAt : CircuitCode.RawCircuit) (hlen : index < count, List.length (blockAt index) = width) :
List.length (indexedGateBlocks count blockAt) = count * width

An indexed concatenation of fixed-width blocks has the expected length.

theorem Complexity.CircuitUnrolling.Serializer.getElem_indexedGateBlocks (count width : ) (blockAt : CircuitCode.RawCircuit) (hlen : index < count, List.length (blockAt index) = width) (blockIndex offset : ) (hblock : blockIndex < count) (hoffset : offset < width) :
(indexedGateBlocks count blockAt)[blockIndex * width + offset] = (blockAt blockIndex)[offset]

A numeric block index and in-block offset recover the corresponding gate.

@[simp]

The marker, data, and blank-tail input ranges cover exactly one tape.

@[simp]

The four concatenated ranges occupy exactly one configuration block.

Every canonical configuration index selects its intended initialization gate. ConfigAtom is used only to state the proof adapter, not as schedule run-time state.

Under the normalized positive-input horizon bound, the numeric schedule is literally the existing initialization fragment's raw gate list.