Tidy computability with polynomial bounds of a given degree #
ComputableTidilyInDegree f encIn encOut d e: f is tidily computable within time and space
O(n ^ d), and its encoded values have length O(n ^ e), where n is the length of the encoded
input. The constants are existential, the degrees are explicit. The closure properties compute the
degrees: composition multiplies the degree of the outer function by the output degree of the inner
one, pairing and case distinctions take maxima, and a left fold adds the output degree of the list
to the degree of a round.
Results are stated with the degrees the closure properties produce; mono moves to larger degrees,
proving the inequalities by decide or omega. Left folds are in
Cslib.Computability.Machines.Turing.MultiTape.Complexity.Fold.
For sums, DegreeBounded.add_max combines different degrees directly; DegreeBounded.add keeps
an already shared degree.
Main definitions #
Turing.MultiTapeTM.DegreeBounded: a function bounded byc * (size + 1) ^ d.Turing.MultiTapeTM.ComputableTidilyInDegree: tidy computability with bounds of given degrees.
Main results #
Turing.MultiTapeTM.ComputableTidilyInDegree.computableTidilyInPolyTime: polynomial time.Turing.MultiTapeTM.ComputableTidilyInDegree.comp,.ite,.append,.pair,.prod: closure properties.Turing.MultiTapeTM.ComputableTidilyInDegree.of_finite: functions on finite types.
Tidy computability with bounds of given degrees #
f is tidily computable within time and space bounded by polynomials of degree d in the
length of the encoded input, and its encoded values have length bounded by a polynomial of
degree e.
Instances For
Moving to larger degrees.
Bounds of degree d give tidy computability of degree d, with output of degree d.
A function whose encoded values are those of a function computable with given degrees.
Pairing with the framed encoding of pairs.
The first component of a pair computed with given degrees.
The second component of a pair computed with given degrees.