Skip to content
Browse chapters
Imports

Canonical runtime script for the complete transition family

This module mirrors the semantic adjacent-row recursion and extracts one AffineTransitionScript per local transition. The resulting runtime data is proved byte-for-byte equal to the frozen dimension-only transition stream.

noncomputable sectionnamespace CLRS.Chapter34.Turing.PolyBuilderopen CookLevinopen StateTransition

Extract the canonical local operand script for every adjacent tableau-row pair, in the same prefix order as transitionCircuitFamilyGateTrace.

def compileTransitionFamilyScripts (tm : _root_.Turing.FinTM2) (H : Nat) (base : CircuitBuilder) : (T : Nat) → (rows : Fin (T + 1) → CfgWires tm H) → (∀ row, (rows row).ValidIn base) → List AffineTransitionScript | 0, _, _ => [] | T + 1, rows, hrows => let prefixRows : Fin (T + 1) → CfgWires tm H := fun row => rows row.castSucc let hprefix : ∀ row, (prefixRows row).ValidIn base := fun row => hrows row.castSucc let previous := transitionCircuitFamily tm H base prefixRows hprefix let currentRow : Fin (T + 2) := (Fin.last T).castSucc let nextRow : Fin (T + 2) := Fin.last (T + 1) let hcurrent : (rows currentRow).ValidIn previous.builder := (hrows currentRow).mono previous.extension let hnext : (rows nextRow).ValidIn previous.builder := (hrows nextRow).mono previous.extension compileTransitionFamilyScripts tm H base T prefixRows hprefix ++ [compileTransitionScript tm H previous.builder (rows currentRow) (rows nextRow) hcurrent hnext]
@[simp] theorem compileTransitionFamilyScripts_length (tm : _root_.Turing.FinTM2) (H : Nat) (base : CircuitBuilder) (T : Nat) (rows : Fin (T + 1) → CfgWires tm H) (hrows : ∀ row, (rows row).ValidIn base) : (compileTransitionFamilyScripts tm H base T rows hrows).length = T := by induction T generalizing base with | zero => rfl | succ T ih => simp only [compileTransitionFamilyScripts, List.length_append, List.length_singleton] rw [ih]

The canonical family script denotes exactly the semantic transition-family gate trace, including its byte encoding.

theorem compileTransitionFamilyScripts_gateStream_eq_trace (tm : _root_.Turing.FinTM2) (H : Nat) (base : CircuitBuilder) (T : Nat) (rows : Fin (T + 1) → CfgWires tm H) (hrows : ∀ row, (rows row).ValidIn base) : affineTransitionFamilyGateStream (compileTransitionFamilyScripts tm H base T rows hrows) = (transitionCircuitFamilyGateTrace tm H base T rows hrows).flatMap encodeCircuitGate := by induction T generalizing base with | zero => rfl | succ T ih => simp only [compileTransitionFamilyScripts, transitionCircuitFamilyGateTrace, affineTransitionFamilyGateStream, List.flatMap_append, List.flatMap_singleton] have hprefix : List.flatMap affineTransitionGateStream (compileTransitionFamilyScripts tm H base T (fun row => rows row.castSucc) (fun row => hrows row.castSucc)) = List.flatMap encodeCircuitGate (transitionCircuitFamilyGateTrace tm H base T (fun row => rows row.castSucc) (fun row => hrows row.castSucc)) := by simpa only [affineTransitionFamilyGateStream] using ih base (fun row => rows row.castSucc) (fun row => hrows row.castSucc) rw [hprefix] rw [compileTransitionScript_gateStream_eq_trace]

Dimension-only canonical script following the already-frozen validity builder.

def compileTransitionFamilyScriptsAt (tm : _root_.Turing.FinTM2) (H T : Nat) : List AffineTransitionScript := let rows := arithmeticRowsAt tm H T let pool := arithmeticPoolAt tm H T let validity := arithmeticValidityAt tm H T compileTransitionFamilyScripts tm H validity.builder T rows.rows (fun row => (rows.rowValid row).mono (pool.extension.trans validity.extension))
@[simp] theorem compileTransitionFamilyScriptsAt_length (tm : _root_.Turing.FinTM2) (H T : Nat) : (compileTransitionFamilyScriptsAt tm H T).length = T := by simp [compileTransitionFamilyScriptsAt]

The dimension-only canonical script is byte-for-byte the already frozen transition generator target.

One fixed controller executes the canonical dimension-only transition family and halts with precisely transitionGateStreamAt.

The canonical family run remains linear in its exact runtime encoding.

theorem compileTransitionFamilyScriptsAt_steps_le (tm : _root_.Turing.FinTM2) (H T : Nat) : affineTransitionFamilyTotalSteps (compileTransitionFamilyScriptsAt tm H T) ≤ 500 * (encodeAffineTransitionFamily (compileTransitionFamilyScriptsAt tm H T)).length + 2 := affineTransitionFamily_steps_le (compileTransitionFamilyScriptsAt tm H T)
end CLRS.Chapter34.Turing.PolyBuilder