Documentation

Complexitylib.Classes.PPoly.Uniform.Unrolling

Streamable deterministic unrolling families #

This module exposes a deterministic tableau family whose positive members are reconstructed directly from acceptanceRawCircuit. Its circuit code is exactly the encoding of that raw gate list, avoiding the repeated typed hardwiring used by the older nonuniform family. This is the code target for the log-space uniformity emitter.

Main results #

@[simp]

Every deterministic choice position reuses primary input wire zero.

@[simp]

Deterministic unrolling leaves every data input at its original wire.

The direct deterministic family computes the exact bounded acceptance bit.

At length zero, the direct family code is the tag followed by the fixed bounded-run answer bit.

At every positive length, the family code is literally the tagged encoding of the direct raw tableau circuit.

The family codec agrees at every length with the explicit direct code map, including the separate zero-length member.

A deterministic decider's direct tableau family decides the same language.

theorem Complexity.TM.directUnrollingCircuitFamily_size_bigO {k : } (tm : TM k) {f : } {d : } (hf : BigO f fun (x : ) => x ^ d) :
BigO (tm.directUnrollingCircuitFamily f).size fun (x : ) => x ^ (3 * d)

A horizon in O(n^d) gives the direct family size O(n^(3d)).