Resource transfer from multi-tape machines to Mathlib stack machines #
Polynomial time transfers from an ordinary binary multi-tape computation, without a tidy normal form or a polynomial source-space hypothesis. Polynomial space transfers independently of runtime when the output length is polynomially bounded. In particular, Boolean computations need only termination and a polynomial work-space bound.
All stack alphabets of the resulting Mathlib certificates are finite. Target stack bounds count the input and output, whereas native space counts only visited work-tape cells. The equivalences preserve the caller's binary encodings and impose no computable-inverse hypothesis on them.
Main results #
Turing.MultiTapeTM.ComputableInPolyTime.exists_tm2ComputableInPolyTime.Turing.MultiTapeTM.ComputableInPolySpace.exists_tm2Computable.Turing.MultiTapeTM.ComputableInTimeAndSpace.exists_tm2Computable_bool.Turing.MultiTapeTM.computableInPolyTime_iff_tm2.Turing.MultiTapeTM.computableInPolySpace_iff_tm2.Cslib.Complexity.mem_PSPACE_iff_tm2.
References #
Polynomial native time gives a Mathlib polynomial-time certificate with finite working alphabets. No polynomial bound on native space is needed.
Polynomial-time computation has a finite-alphabet Mathlib certificate under the same binary encodings.
Polynomial native space and explicitly polynomial output length give a terminating Mathlib certificate with polynomially bounded reachable stacks. Runtime is unrestricted.
For a Boolean computation the output is one bit, so only the native work-space bound needs to be supplied. The native time bound may be arbitrary.
A polynomial-space computation transfers with all target stacks polynomially bounded. The source notion explicitly bounds the encoded output length.
Polynomial-time computability is the same for native multi-tape machines and Mathlib stack machines with finite working alphabets, under the original binary encodings.
Polynomial-space computability is equivalent to termination with polynomially bounded reachable Mathlib stacks. This equivalence also applies to functions with non-Boolean outputs: the stack bound already includes the entire output.