Section SumConstr.
Definition Constr_inl_Rel : Rel (tapes (sigSum sigX sigY)^+ 1) (unit * tapes (sigSum sigX sigY)^+ 1) :=
Mk_R_p (ignoreParam (fun tin tout => forall (x:X) (ss:nat), tin ≃(;ss) x -> tout ≃(;pred ss) inl (B:=Y) x)).
Definition Constr_inr_Rel : Rel (tapes (sigSum sigX sigY)^+ 1) (unit * tapes (sigSum sigX sigY)^+ 1) :=
Mk_R_p (ignoreParam (fun tin tout => forall (y:Y) (ss:nat), tin ≃(;ss) y -> tout ≃(;pred ss) inr (A:=X)y)).
Definition Constr_inl : pTM (sigSum sigX sigY)^+ unit 1 :=
WriteMove (inr sigSum_inl) Lmove;; Write (inl START).
Definition Constr_inr : pTM (sigSum sigX sigY)^+ unit 1 :=
WriteMove (inr sigSum_inr) Lmove;; Write (inl START).
Definition Constr_inl_steps := 3.

Lemma Constr_inl_Sem : Constr_inl ⊨c(Constr_inl_steps) Constr_inl_Rel.