symProbeTM: read the input symbol at a register-indexed position #
symProbeTM f r q walks the input head to the cell indexed by register
r (lockstep over r's marks), reads the symbol s there, adds
(f s).val ≤ 3 marks to register q, and restores everything: the input
head returns to cell 1, r is untouched, q becomes regTape (d + (f s)).
This is the reduction emitter's only input-reading machine: the start clauses of the tableau pin the input cells, so their symbol digits are read off the input tape position by position.
Control states of symProbeTM: walk out to the probed cell (pre, walk),
rewind the input and register r carrying the read digit k (backI k,
backR k), scan to the end of q and append k marks (scanQ k), then
rewind q and park (backQ, park, done).
- pre : ProbePhase
- walk : ProbePhase
- backI (k : Fin 4) : ProbePhase
- backR (k : Fin 4) : ProbePhase
- scanQ (k : Fin 4) : ProbePhase
- backQ : ProbePhase
- park : ProbePhase
- done : ProbePhase
Instances For
Equations
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.pre Complexity.TM.ProbePhase.pre = isTrue ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.pre Complexity.TM.ProbePhase.walk = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_1
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.pre (Complexity.TM.ProbePhase.backI k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.pre (Complexity.TM.ProbePhase.backR k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.pre (Complexity.TM.ProbePhase.scanQ k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.pre Complexity.TM.ProbePhase.backQ = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_5
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.pre Complexity.TM.ProbePhase.park = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_6
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.pre Complexity.TM.ProbePhase.done = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_7
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.walk Complexity.TM.ProbePhase.pre = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_8
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.walk Complexity.TM.ProbePhase.walk = isTrue ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.walk (Complexity.TM.ProbePhase.backI k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.walk (Complexity.TM.ProbePhase.backR k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.walk (Complexity.TM.ProbePhase.scanQ k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.walk Complexity.TM.ProbePhase.backQ = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_12
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.walk Complexity.TM.ProbePhase.park = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_13
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.walk Complexity.TM.ProbePhase.done = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_14
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backI k) Complexity.TM.ProbePhase.pre = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backI k) Complexity.TM.ProbePhase.walk = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backI a) (Complexity.TM.ProbePhase.backI b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backI k) (Complexity.TM.ProbePhase.backR k_1) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backI k) (Complexity.TM.ProbePhase.scanQ k_1) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backI k) Complexity.TM.ProbePhase.backQ = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backI k) Complexity.TM.ProbePhase.park = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backI k) Complexity.TM.ProbePhase.done = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backR k) Complexity.TM.ProbePhase.pre = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backR k) Complexity.TM.ProbePhase.walk = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backR k) (Complexity.TM.ProbePhase.backI k_1) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backR a) (Complexity.TM.ProbePhase.backR b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backR k) (Complexity.TM.ProbePhase.scanQ k_1) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backR k) Complexity.TM.ProbePhase.backQ = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backR k) Complexity.TM.ProbePhase.park = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.backR k) Complexity.TM.ProbePhase.done = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.scanQ k) Complexity.TM.ProbePhase.pre = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.scanQ k) Complexity.TM.ProbePhase.walk = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.scanQ k) (Complexity.TM.ProbePhase.backI k_1) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.scanQ k) (Complexity.TM.ProbePhase.backR k_1) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.scanQ a) (Complexity.TM.ProbePhase.scanQ b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.scanQ k) Complexity.TM.ProbePhase.backQ = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.scanQ k) Complexity.TM.ProbePhase.park = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq (Complexity.TM.ProbePhase.scanQ k) Complexity.TM.ProbePhase.done = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.backQ Complexity.TM.ProbePhase.pre = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_42
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.backQ Complexity.TM.ProbePhase.walk = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_43
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.backQ (Complexity.TM.ProbePhase.backI k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.backQ (Complexity.TM.ProbePhase.backR k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.backQ (Complexity.TM.ProbePhase.scanQ k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.backQ Complexity.TM.ProbePhase.backQ = isTrue ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.backQ Complexity.TM.ProbePhase.park = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_47
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.backQ Complexity.TM.ProbePhase.done = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_48
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.park Complexity.TM.ProbePhase.pre = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_49
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.park Complexity.TM.ProbePhase.walk = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_50
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.park (Complexity.TM.ProbePhase.backI k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.park (Complexity.TM.ProbePhase.backR k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.park (Complexity.TM.ProbePhase.scanQ k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.park Complexity.TM.ProbePhase.backQ = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_54
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.park Complexity.TM.ProbePhase.park = isTrue ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.park Complexity.TM.ProbePhase.done = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_55
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.done Complexity.TM.ProbePhase.pre = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_56
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.done Complexity.TM.ProbePhase.walk = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_57
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.done (Complexity.TM.ProbePhase.backI k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.done (Complexity.TM.ProbePhase.backR k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.done (Complexity.TM.ProbePhase.scanQ k) = isFalse ⋯
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.done Complexity.TM.ProbePhase.backQ = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_61
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.done Complexity.TM.ProbePhase.park = isFalse Complexity.TM.instDecidableEqProbePhase.decEq._proof_62
- Complexity.TM.instDecidableEqProbePhase.decEq Complexity.TM.ProbePhase.done Complexity.TM.ProbePhase.done = isTrue ⋯
Instances For
ProbePhase is a finite type (17 states), as required for TM state sets.
Equations
- One or more equations did not get rendered due to their size.
symProbeTM Hoare specification. Reads the input symbol at the
position held by register r and adds its f-index to register q;
the input (parked at cell 1), the register r, and every other tape are
restored exactly.