Hoare contracts through work-tape placement #
⚠️ Unreviewed by Bolton
A stage of a larger machine is a small machine placed in a block of the layout's tapes. Its contract should travel with it: what it promises about its own tapes should become a promise about the block, and the tapes on either side should come back untouched.
That is the rule below. The frame it carries is the one TM.placeWorkTM needs anyway — every
tape outside the block is start-invariant with its head off the marker, so the placed machine's
structurally mandatory idle writes leave it exactly as it was.
Main results #
TM.placeWorkTM_hoareTime— a placed stage's contract, with the surrounding tapes framed
A placed stage keeps its contract, and its neighbours. The precondition asks that the tapes outside the block are the given frame and that the block satisfies the stage's own precondition; the postcondition returns the frame unchanged and the stage's postcondition on the block.