Section Fix.
Context {Σ__X: finType} {X : Type} {cX : codable Σ__X X}.
(* Local Instance retr_X : Retract Σ__X Σ := (Retract_sigList_X _). *)
Variable (c:X).
Definition M : pTM (sigList Σ__X)^+ unit 1 :=
WriteString Lmove (rev (inr sigList_cons::map (fun x => inr (sigList_X x)) ((encode c))));;
Move Lmove;;
Write (inl START).
Definition Rel : pRel (sigList Σ__X)^+ unit 1 :=
ignoreParam (
fun tin tout =>
forall l (s0 : nat),
tin[@Fin0] ≃(;s0) l ->
tout[@Fin0] ≃(;s0 - size c - 1) c :: l
).
Definition time {sigX} {X : Type} {cX : codable sigX X} (c:X) := 5 + 2 * size c.

Lemma Terminates :
projT1 M ↓
(fun tin k =>
exists (l: list X) ,
tin[@Fin0] ≃ l /\
time c<= k).