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 in_before_before_preserved_IU : forall xs ys k ir, NoDup (get_op_input_keys (xs ++ I k :: ys)) -> (forall k1 k2, In (I k2) (xs ++ I k :: ys) -> before (O k1) (I k2) (xs ++ I k :: ys) -> before (IRO k1) (IRI k2) (IRI k :: IRU k :: ir)) -> forall k1 k2, In (I k2) (xs ++ ys) -> before (O k1) (I k2) (xs ++ ys) -> before (IRO k1) (IRI k2) ir.