Documentation

Complexitylib.Models.RandomAccessMachine.Simulation.TMConfig.Sparse.Containment.Internal

TM-to-RAM time-class containment -- proof internals #

This module lifts the checked public-ABI sparse simulation from one halting run to deciders and then discharges the polynomial-bound arithmetic needed for the forward machine-model robustness theorem.

theorem Complexity.RAM.TMConfig.Sparse.compiledDecision_decidesInTime_internal {n : } {tm : TM n} {L : Language} {T : } (hdecides : tm.DecidesInTime L T) :
(compiledDecision tm).DecidesInTime L fun (inputLength : ) => decisionTimeBound tm inputLength (T inputLength)
theorem Complexity.RAM.TMConfig.Sparse.mem_DTIME_of_decidesInTime_internal {n : } {tm : TM n} {L : Language} {T : } (hdecides : tm.DecidesInTime L T) :
L DTIME fun (inputLength : ) => decisionTimeBound tm inputLength (T inputLength)

Polynomial bounds on the sparse simulation's resource functions #

Extensions of the generic PolyBound API of Complexitylib.Asymptotics.PolyBound to the register, word, marshalling, and running-time bounds of this simulation. They live in the root PolyBound namespace so that dot notation reaches them.

theorem Complexity.PolyBound.width {f : } (hf : PolyBound f) :
PolyBound fun (inputLength : ) => RAM.bitlen (f inputLength) + 1
theorem Complexity.PolyBound.registerBound (workTapes : ) {f : } (hf : PolyBound f) :
PolyBound fun (inputLength : ) => RAM.TMConfig.Sparse.registerBound workTapes (f inputLength)
theorem Complexity.PolyBound.wordBound {n : } (tm : TM n) {f : } (hf : PolyBound f) :
PolyBound fun (inputLength : ) => RAM.TMConfig.Sparse.wordBound tm (f inputLength)
theorem Complexity.PolyBound.wordWidth {n : } (tm : TM n) {f : } (hf : PolyBound f) :
PolyBound fun (inputLength : ) => RAM.TMConfig.Sparse.wordWidth tm (f inputLength)
theorem Complexity.PolyBound.marshalBaseBound (workTapes : ) :
PolyBound fun (inputLength : ) => RAM.TMConfig.Sparse.marshalBaseBound workTapes inputLength
theorem Complexity.PolyBound.marshalBound (workTapes : ) :
PolyBound fun (inputLength : ) => RAM.TMConfig.Sparse.marshalBound workTapes inputLength
theorem Complexity.PolyBound.marshalBaseWidth (workTapes : ) :
PolyBound fun (inputLength : ) => RAM.TMConfig.Sparse.marshalBaseWidth workTapes inputLength
theorem Complexity.PolyBound.marshalWidth (workTapes : ) :
PolyBound fun (inputLength : ) => RAM.TMConfig.Sparse.marshalWidth workTapes inputLength
theorem Complexity.PolyBound.marshalLoopTimeBound (workTapes : ) :
PolyBound fun (inputLength : ) => RAM.TMConfig.Sparse.marshalLoopTimeBound workTapes inputLength
theorem Complexity.PolyBound.marshalTimeBound {n : } (tm : TM n) :
PolyBound fun (inputLength : ) => RAM.TMConfig.Sparse.marshalTimeBound tm inputLength
theorem Complexity.PolyBound.decisionTimeBound {n : } (tm : TM n) {T : } (hT : PolyBound T) :
PolyBound fun (inputLength : ) => RAM.TMConfig.Sparse.decisionTimeBound tm inputLength (T inputLength)