Running the matrix machine inside the enumerator #
⚠️ Unreviewed by Bolton
One iteration of the enumerator runs the machine deciding the matrix language on the pair it has
just built. TM.applyTM reads that pair off a work tape and writes the verdict onto another, and
TM.placeWorkTM 3 7 puts the whole thing where the layout says: the matrix machine's own tapes at
3 … k + 2, the pair it reads at PolyExists.yIdx, the verdict at PolyExists.vIdx, and the
enumerator's own tapes untouched on either side.
The contract below is the placed form of TM.applyTM_hoareTime_decide_space_frame — the
space-bounded one, since the width it reports is what the body's wipe has to clear. Besides the
verdict it records what the next iteration needs: the registers came through unchanged, and every
tape of the block is parked inside a window of width H with nothing written beyond it — which
is what makes the wipe that follows finite.
Main results #
PolyExists.matrixTM— the placed evaluator, andPolyExists.matrixEntrythe tapes it starts onPolyExists.matrixTM_hoareTime— its contract, with the frame the loop body needsPolyExists.matrixTM_keepsWindowOn— its window, from the matrix machine's space bound
The matrix machine, reading its input from a work tape and writing its verdict onto another, placed where the enumerator's layout wants it.
Equations
Instances For
The tapes the placed evaluator is entered with: its own block loaded with the pair y, and
the enumerator's own tapes carried through as they are.
Equations
- Complexity.PolyExists.matrixEntry M extras y I i = if h : Complexity.TM.placeWorkInMiddle 3 (k + 2) i then M.applyPre y I (Complexity.TM.placeWorkCoord 3 (k + 2) i h) else extras i
Instances For
The verdict tape is the placed image of the evaluator's result tape.
One evaluation of the matrix machine, contracted. From the placed entry tapes the stage
halts inside the matrix machine's own time bound, publishes its verdict on y in cell one of the
verdict tape, returns every tape outside its block untouched, and leaves its own block parked
inside a window of width H.
The evaluating stage's window. The matrix machine's own space bound is what limits it — its running time is exponential and would limit nothing.