Splicing a play into a walk #
The direction DescriptiveComplexity.Problems.Machine.AltRank does not cover:
turning a play of block i into the walk a round of the game has to produce.
DescriptiveComplexity.ATMData.splice follows the previous round's walk up to
the entry time t, replays the given play from there, and then stands still.
Standing still is legitimate because
DescriptiveComplexity.ATMData.LegalBelow asks a round's walk for nothing once
it has handed over: if the play ends in block i + 1 there is no obligation at
all, and if it ends inside block i then it ended by accepting or by getting
stuck, and stuttering there is exactly what a walk is allowed to do. That is
the hypothesis hend of
DescriptiveComplexity.ATMData.roundCond_splice, and it is the only thing the
construction needs to know about how the play stopped.
The proof is three cases, cut by comparing the rank of a position with the rank
of t: strictly below it the walk is the previous one, at it the play starts,
above it the play runs and then repeats. Nothing else about the order is
involved, which is why the file is short.
The walk following prev up to t and the play f after it, standing
still once the play is over.
Equations
Instances For
Dependency graph
Below the entry time the spliced walk is the previous one.
Dependency graph
Above the entry time the spliced walk replays the play.
Dependency graph
The spliced walk at the j-th position after t.
Dependency graph
The spliced walk is an admissible move #
Splicing a play into the previous round's walk produces an admissible
move for round i. The hypotheses say that t is the entry into block i
(everything strictly below it is in a lower block, and prev is legal there),
that f is a play of block i from the entry configuration, and that if the
play stopped early inside its own block it stopped by accepting or by getting
stuck.
Dependency graph
Every initial configuration extends to a walk #
A round cannot be asked for a move it cannot make, and the universal rounds of
the game are guarded by an existence clause
(DescriptiveComplexity.guardQ); so the game needs to know that a legal walk
exists at all. It does: step while a step is available, and stand still
otherwise, which is legal because standing still in a stuck configuration is
allowed.
The greedy continuation of a configuration: step while a step is available, and stand still once stuck.
Equations
Instances For
Dependency graph
One greedy move is a step, or standing still in a stuck configuration.
Dependency graph
The walk that runs the greedy continuation along the positions.
Equations
- M.greedyWalk c₀ x = M.greedy c₀ (DescriptiveComplexity.bitRank M.Le M.Posn x)