Section CaseBool.
Local Notation sig := bool.
Definition CaseBool : pTM bool^+ bool 1 :=
Move Rmove;;
Switch (ReadChar)
(fun s => match s with
| Some (inr x) => Return (Move Rmove) x
| _ => Return (Nop) default
end).
Definition CaseBool_Rel : pRel bool^+ bool 1 :=
fun tin '(yout, tout) => forall (x : sig) (s : nat), tin[@Fin0] ≃(;s) x -> isVoid_size tout[@Fin0] (S(S(s))) /\ yout = x.
Definition CaseBool_steps := 5.

Lemma CaseBool_Sem : CaseBool ⊨c(CaseBool_steps) CaseBool_Rel.