What the encoded step does to a reachable configuration #
⚠️ Unreviewed by Bolton
Cobham.stepFn tracks a machine's step only on configurations that respect the
encoding's window: every head inside it, every tape carrying its left-end
marker. This file collects those side conditions into Complexity.CodeInv,
shows that every configuration of a space-bounded machine's configuration graph
satisfies it, and reads off what Complexity.nstepFn computes there.
Main definitions #
Complexity.CodeInv— the encoding's side conditions on a configuration
Main results #
Complexity.cfgCode_length— a code is exactly2(k+2)+1blocks wideComplexity.nstepFn_code,Complexity.nstepFn_code_halted— the encoded successor is the code of the successorComplexity.codeInv_of_reachesCfg— the graph stays inside the window
The width of a code #
The number of blocks in a code: one for the state and two per tape.
Equations
- Complexity.codeBlocks k = 2 * (k + 2) + 1
Instances For
A code is exactly 2(k+2)+1 blocks wide.
A code is unchanged by the width normalisation.
The window conditions #
The side conditions under which the encoded step tracks the real one.
- start (t : Tape) : t ∈ Cobham.cfgTapes c → t.StartInvariant
Every tape carries its left-end marker.
- head (t : Tape) : t ∈ Cobham.cfgTapes c → t.head ≤ W
Every head is inside the encoded window.
Instances For
The encoded successor is the code of the successor.
A halted configuration is a fixed point of the encoded step.
The graph stays inside the window #
Every configuration of the graph carries its left-end markers.