Module Compute := Compute Ctx. Export Compute.
Definition flip_dir (d : dir) :=
match d with
| L => R
| R => L
end.
Definition flip_tape (t : tape) :=
match t with
| l {{s}} r => r {{s}} l
end.
Definition flip (tm : TM) : TM := fun qs =>
match tm qs with
| Some (s, d, q) => Some (s, flip_dir d, q)
| None => None
end.

Lemma flip_involutive : forall tm,
flip (flip tm) = tm.