Section ClosedSetSearcher.
Hypothesis T:Type.
Hypothesis T_enc:T->positive.
Hypothesis T_enc_inj: is_inj T_enc.
Hypothesis In_T: (ExecState Σ)->T->Prop.
Hypothesis T_InitES:T.
Hypothesis In_T_InitES: In_T (InitES Σ Σ0) T_InitES.
Hypothesis T_step: (TM Σ)->T->option (list T).
Hypothesis T_step_spec:
forall (tm : TM Σ) (x : T),
match T_step tm x with
| Some ls =>
forall st0 : ExecState Σ,
In_T st0 x ->
exists (n : nat) (st1 : ExecState Σ) (x1 : T),
Steps Σ tm (1 + n) st0 st1 /\ In_T st1 x1 /\ In x1 ls
| None => True
end.
Definition T_eqb t1 t2 := Pos.eqb (T_enc t1) (T_enc t2).

Lemma T_eqb_spec t1 t2:
if T_eqb t1 t2 then t1=t2 else t1<>t2.