TM0 Restriction to Finite Support #
Given a TM0 machine supported by a finite set of states, we construct an
equivalent TM0 machine whose state type is a subtype, hence Fintype.
Main results #
Turing.TM0.restrict— restrict a TM0 machine to a finite support setTuring.TM0.restrict_eval_dom_iff— the restricted machine halts iff the original does
noncomputable def
Turing.TM0.restrict
{Γ : Type u_1}
{Λ : Type u_2}
[Inhabited Λ]
(M : Machine Γ Λ)
(S : Finset Λ)
(hS : Supports M ↑S)
:
Restrict a TM0 machine to states in a finite support set S.
Since the machine is supported by S, all transitions stay within S,
so the restriction doesn't change behavior.
Equations
Instances For
The bisimulation relation: configs are related when the restricted config's state projects to the original config's state, and tapes are equal.
Instances For
theorem
Turing.TM0.restrict_eval_dom_iff
{Γ : Type u_1}
{Λ : Type u_2}
[Inhabited Λ]
[Inhabited Γ]
(M : Machine Γ Λ)
(S : Finset Λ)
(hS : Supports M ↑S)
(l : List Γ)
:
The restricted TM0 halts if and only if the original does.
Uses Turing.tr_eval_dom with the bisimulation relation restrictRel.