Documentation

CslibFrontier.Computability.Complexity.Classes.Hierarchy.TinyDesc

Tiny descriptions #

The space hierarchy below linear space diagonalizes only over inputs whose framed description is tiny: 2 ^ |unframe x| ≤ Nat.size |x|, that is, at most log₂ |x| + 1 (Cslib.Complexity.Diagonal.tinyDesc). Decoding a description of L bits takes space polynomial in L, of a degree fixed by the decoder, hence O(2 ^ L), which is O(log |x|). So a diagonal reading its input in place decodes its description in logarithmic space (Cslib.Complexity.Diagonal.computableInLogSpace_decodeDesc_tinyCut). Padded descriptions are tiny once the padding is doubly exponential in the description.

Main definitions #

Main results #

References #

The description framed at the start of x is tiny: 2 ^ |unframe x| ≤ Nat.size |x|, the number of binary digits of the length of x.

Instances For

    Tininess compares the length of the description with the binary length of the binary length of the word.

    The description framed at the start of x when it is tiny, and the empty word otherwise.

    Instances For

      A cut description is tiny: 2 ^ |tinyCut x| ≤ log₂ |x| + 1.

      A description padded to doubly exponential length is tiny.

      Tiny descriptions in logarithmic space #

      Tiny descriptions are decoded in logarithmic space. Decoding takes space polynomial in the length L of the description, which is O(2 ^ L) = O(log n) on a tiny description, and the cut description is recomputed whenever the decoder reads it (Turing.MultiTapeTM.ComputableInTimeAndSpace.comp_space).

      Tiny descriptions decode to short descriptions: the decoded cut description has encoded length O(log n), since decoding L bits gives a description of length polynomial in L.