One step of a wide machine, packaged #
DescriptiveComplexity.TMData.Step asks for eight things at once – a transition,
its source, its read symbol, its destination, its written symbol, the frame
condition on the untouched cells, the direction, and the neighbor relation on the
head. A program of a hardness reduction discharges them at every phase, so they
are packaged here once:
DescriptiveComplexity.step_wide_right– a right-moving step from an address to its increment, given a transition of the instance and the symbol the head is reading.
The new tape is given as an arbitrary function with the two conditions a step
imposes – its value at the head, and agreement elsewhere – rather than as
Function.update, since an address is a set and equality of addresses is not
decidable. DescriptiveComplexity.step_wide_left is the same reading backwards,
for a phase that sweeps down.
On top of it, DescriptiveComplexity.accepts_of_rightSweep is the shape a
one-pass program has: give a state and a tape per address, check one transition
per increment, start blank on the empty address, and end accepting. That is the
whole of DescriptiveComplexity.WideAccept for a monotone sweep, with no run, no
counting and no DescriptiveComplexity.SuccPos in sight.
A right-moving step of a wide machine: the head is on the address s
reading the symbol a, the transition τ applies to the state q and that
symbol, and the machine writes a', moves to the state q' and steps to the
increment of s.
The new tape is given as an arbitrary function with the two conditions a step
imposes on it – its value at the head, and agreement elsewhere – rather than as
Function.update: an address is a set, so equality of addresses is not
decidable, and a program's tapes are given by formulas anyway.
Dependency graph
A left-moving step of a wide machine: the same, with the head stepping down to the address whose increment it is on.
Dependency graph
A one-pass program #
The configuration of a sweep at an address: the state and the tape it holds there. Off the addresses the value is irrelevant – a sweep never looks – so it repeats the one at the empty address.
Equations
Instances For
Dependency graph
Dependency graph
A monotone program accepts. Give a state and a tape at each address; check that at every increment some transition of the instance carries the machine from one to the next, moving right; start on the empty address in a start state with a blank tape; end at some address in an accepting state. The machine then accepts, within its clock.
This is the shape of the whole NEXPTIME hardness program: the guess of the certificate and the fold of the kernel are what the transitions say, and nothing about runs, ranks or neighbors appears again.