Documentation

Complexitylib.Models.TuringMachine.OutputBounds

Output-length bounds #

A deterministic machine can change only the output cell currently under its head. Consequently, a run of t transitions from a blank output tape can produce at most t output bits.

Main results #

theorem Complexity.TM.reachesIn_output_cells_far {n : } {tm : TM n} {t : } {c c' : Cfg n tm.Q} (hreach : tm.reachesIn t c c') (j : ) (hj : c.output.head + t < j) :

Cells beyond the output head's maximum reach are never changed.

theorem Complexity.TM.output_length_le_of_reachesIn {n : } {tm : TM n} {x y : List Bool} {c' : Cfg n tm.Q} {t : } (hreach : tm.reachesIn t (tm.initCfg x) c') (hout : c'.output.HasOutput y) :

A run from an initial configuration needs at least one transition for each bit present in its final output string.

theorem Complexity.TM.ComputesInTime.output_length_le {n : } {tm : TM n} {f : List BoolList Bool} {T : } (h : tm.ComputesInTime f T) (x : List Bool) :
(f x).length T x.length

The output of a time-bounded function computation is no longer than the advertised running-time bound.