Section Reduction.
Variable M : SMN.
Variable confluent_M : confluent M.
Variable basic_M : Forall basic M.
Definition encode_Instruction (op: Instruction) : SSM.instruction :=
match op with
| (([], [a], x), ([b], [], y)) => (x, y, a, b, false)
| (([a], [], x), ([], [b], y)) => (x, y, a, b, true)
| _ => (0, 0, true, true, true)
end.
Definition M' : SSM.ssm := map encode_Instruction M.

Lemma inverse_simulation {x y} : SSM.reachable M' x y -> reachable M x y.