Resetting several binary work tapes — proof internals #
theorem
Complexity.TM.resetBinaryWorkManyTM_hoareTime_frame_internal
{n : ℕ}
(targets : List (Fin n))
(bits : Fin n → List Bool)
(headBound : Fin n → ℕ)
(inp₀ : Tape)
(work₀ : Fin n → Tape)
(out₀ : Tape)
(hnodup : targets.Nodup)
(htarget : ∀ i ∈ targets, (work₀ i).HasBinaryContent (bits i))
(htargetStart : ∀ i ∈ targets, (work₀ i).cells 0 = Γ.start)
(htargetHead : ∀ i ∈ targets, (work₀ i).head ≤ headBound i)
(hinput : Parked inp₀)
(hwork : ∀ (i : Fin n), Parked (work₀ i))
(houtput : Parked out₀)
:
(resetBinaryWorkManyTM targets).HoareTime
(fun (inp : Tape) (work : Fin n → Tape) (out : Tape) => inp = inp₀ ∧ work = work₀ ∧ out = out₀)
(fun (inp : Tape) (work : Fin n → Tape) (out : Tape) =>
inp = inp₀ ∧ work = resetBinaryWorkManyResult work₀ targets ∧ out = out₀)
(resetBinaryWorkManyTime bits headBound targets)
theorem
Complexity.TM.resetBinaryWorkManyTM_isTransducer_internal
{n : ℕ}
(targets : List (Fin n))
:
(resetBinaryWorkManyTM targets).IsTransducer