(* ** Helper Machines for positive numbers *)
Local Open Scope positive_scope.
(* ** Read the current symbol *)
Definition ReadPosSym : pTM sigPos^+ (option bool) 1 :=
CaseChar (fun (s : option sigPos^+) =>
match s with
| Some (inr sigPos_xH) => None
| Some (inr sigPos_xO) => Some false
| Some (inr sigPos_xI) => Some true
| _ => default
end).
Definition ReadPosSym_Rel : pRel sigPos^+ (option bool) 1 :=
fun tin '(yout, tout) =>
(forall (p : positive) (b : bool) (bits : list bool),
atBit tin[@Fin0] p b bits ->
match yout, b with
| Some false, false => tout = tin
| Some true,  true => tout = tin
| _, _ => False
end) /\
(forall (p : positive), atHSB tin[@Fin0] p -> tout = tin /\ yout = None).

Lemma ReadPosSym_Sem : ReadPosSym ⊨c(1) ReadPosSym_Rel.