Documentation

Complexitylib.Models.TuringMachine.Placement.Window

A placed machine's window #

⚠️ Unreviewed by Bolton

A machine placed in a block of a larger tape space runs exactly as it did, so a window it keeps on its own tapes is a window the placed machine keeps — provided the tapes on either side are inside that window too, which they are: they never move.

Main results #

theorem Complexity.TM.placeWorkTM_reaches_reflect {n : } (tm : TM n) (pre post : ) (extras : Fin (pre + n + post)Tape) (c₀ : Cfg n tm.Q) (hinv : ∀ (i : Fin (pre + n + post)), ¬placeWorkInMiddle pre n i(extras i).StartInvariant) (hhead : ∀ (i : Fin (pre + n + post)), ¬placeWorkInMiddle pre n i1 (extras i).head) (D : Cfg (pre + n + post) (placeWorkTM pre post tm).Q) :
(placeWorkTM pre post tm).reaches (tm.placeWorkCfg pre post extras c₀) D∃ (c : Cfg n tm.Q), tm.reaches c₀ c D = tm.placeWorkCfg pre post extras c

Every configuration a placed run reaches is a placed configuration. The frame never changes, so the run is the source's run under the embedding.

theorem Complexity.TM.placeWorkTM_keepsWindow_of_reaches {n : } (tm : TM n) (pre post : ) (extras : Fin (pre + n + post)Tape) (c₀ : Cfg n tm.Q) (hinv : ∀ (i : Fin (pre + n + post)), ¬placeWorkInMiddle pre n i(extras i).StartInvariant) (hhead : ∀ (i : Fin (pre + n + post)), ¬placeWorkInMiddle pre n i1 (extras i).head) {inputLength space : } (hextraW : ∀ (i : Fin (pre + n + post)), ¬placeWorkInMiddle pre n i(extras i).head space) (htm : ∀ (c : Cfg n tm.Q), tm.reaches c₀ cc.WithinDecisionSpace inputLength space) (D : Cfg (pre + n + post) (placeWorkTM pre post tm).Q) :
(placeWorkTM pre post tm).reaches (tm.placeWorkCfg pre post extras c₀) DD.WithinDecisionSpace inputLength space

A placed machine keeps its source's window, given that the tapes on either side sit inside it.