Section LegacyLemmas.
Definition Univ_Rel : pRel sig^+ unit 6 :=
fun tin '(_, tout) =>
forall (M : TM sigM 1) (tp : tape sigM) (q : state M) (s1 s2 : nat) (sr : Vector.t nat 3),
containsWorkingTape _ tin[@Fin0] tp ->
containsTrans_size _ tin[@Fin1] M s1 ->
containsState_size _ tin[@Fin2] q s2 ->
(forall (i : Fin.t 3), isVoid_size tin[@FinR 3 i] sr[@i]) ->
exists k (oconf : mconfig sigM (state M) 1),
let size := Univ_size tp q k in
loopM (mk_mconfig q [|tp|]) k = Some oconf /\
containsWorkingTape _ tout[@Fin0] (ctapes oconf)[@Fin0] /\
containsTrans_size _ tout[@Fin1] M              (size@>Fin1 s1) /\
containsState_size _ tout[@Fin2] (cstate oconf) (size@>Fin2 s2) /\
(forall (i : Fin.t 3), isVoid_size tout[@FinR 3 i] (size@>(FinR 3 i) sr[@i])).
Definition Univ_T : tRel sig^+ 6 :=
fun tin k =>
exists (M : TM sigM 1) (tp : tape sigM) (q : state M) (k' : nat) (q' : state M) (tp' : tape sigM),
containsWorkingTape _ tin[@Fin0] tp /\
containsTrans _ tin[@Fin1] M /\
containsState _ tin[@Fin2] q /\
(forall (i : Fin.t 3), isVoid tin[@FinR 3 i]) /\
loopM (mk_mconfig q [|tp|]) k' = Some (mk_mconfig q' [|tp'|]) /\
Univ_steps q tp k' <= k.

Lemma Univ_Terminates : projT1 Univ ↓ Univ_T.