Definition good_op_move (x y : op) : Prop :=
    (forall k k', ~ (x = O k /\ y = I k')) /\
    (forall k, ~ (x = I k /\ y = O k)).

Lemma good_op_move_cases : forall x y, good_op_move x y -> exists k k', (x = I k /\ y = I k') \/ (x = O k /\ y = O k') \/ (k <> k' /\ x = I k /\ y = O k').