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 SpecT (l:list X) ss:
TripleT ≃≃([],withSpace [|Contains _ l|] ss) (time c) M (fun _ => ≃≃([],withSpace [|Contains _ (c::l)|] (appSize [|fun s0 => s0 - size c - 1|] ss ))).