Proof using.
intros.
rewrite acknowledge_all_ops_func_defn.
break_if.
- rewrite acknowledge_all_ops_func_defn.
break_if; rewrite acknowledge_all_ops_func_defn with (l := _ :: _).
+ rewrite if_decider_true by
eauto 3 using acknowledged_op_I_cons_expand, op_equiv_ack_op_lr,
acknowledged_op_I_cons_reduce.
rewrite acknowledge_all_ops_func_defn.
rewrite if_decider_true by
eauto 3 using acknowledged_op_I_cons_expand, op_equiv_ack_op_lr,
acknowledged_op_I_cons_reduce.
auto.
+ rewrite if_decider_false with (dec := acknowledged_op_dec _) by
intuition eauto using acknowledged_op_I_cons_expand, op_equiv_ack_op_rl,
acknowledged_op_I_cons_reduce.
rewrite acknowledge_all_ops_func_defn.
rewrite if_decider_true with (dec := acknowledged_op_dec _) by
eauto 3 using acknowledged_op_I_cons_expand, op_equiv_ack_op_lr,
acknowledged_op_I_cons_reduce.
break_if.
* eauto 6 using good_move_IU_neq.
* auto.
- break_if; rewrite acknowledge_all_ops_func_defn.
+ break_if; rewrite acknowledge_all_ops_func_defn.
* rewrite if_decider_true by
eauto 3 using acknowledged_op_I_cons_expand, op_equiv_ack_op_lr,
acknowledged_op_I_cons_reduce.
rewrite acknowledge_all_ops_func_defn.
rewrite if_decider_false by
intuition eauto using acknowledged_op_I_cons_expand, op_equiv_ack_op_rl,
acknowledged_op_I_cons_reduce.
rewrite if_decider_true by auto.
eauto.
* rewrite if_decider_false with (dec := acknowledged_op_dec _) by
eauto using acknowledged_op_I_cons_expand, op_equiv_ack_op_rl,
acknowledged_op_I_cons_reduce.
rewrite acknowledge_all_ops_func_defn.
rewrite if_decider_false with (dec := acknowledged_op_dec _) by
eauto using acknowledged_op_I_cons_expand, op_equiv_ack_op_rl,
acknowledged_op_I_cons_reduce.
rewrite if_decider_true with (dec := in_dec _ (IRU k)) by auto.
{ break_if.
- eapply IR_equiv_trans; [apply IR_equiv_cons; apply IR_equiv_move; auto|].
eapply IR_equiv_trans; [apply IR_equiv_move; auto|]. constructor.
eapply IR_equiv_trans; [apply IR_equiv_cons; apply IR_equiv_move; auto|].
auto using good_move_IU_neq.
- auto.
}
+ break_if; rewrite acknowledge_all_ops_func_defn.
* rewrite if_decider_true with (dec := acknowledged_op_dec _) by
eauto 3 using acknowledged_op_I_cons_expand, op_equiv_ack_op_lr,
acknowledged_op_I_cons_reduce.
rewrite acknowledge_all_ops_func_defn.
rewrite if_decider_false with (dec := acknowledged_op_dec _) by
eauto using acknowledged_op_I_cons_expand, op_equiv_ack_op_rl,
acknowledged_op_I_cons_reduce.
rewrite if_decider_false by auto.
auto.
* rewrite if_decider_false with (dec := acknowledged_op_dec _) by
eauto using acknowledged_op_I_cons_expand, op_equiv_ack_op_rl,
acknowledged_op_I_cons_reduce.
rewrite acknowledge_all_ops_func_defn.
rewrite if_decider_false with (dec := acknowledged_op_dec _) by
eauto using acknowledged_op_I_cons_expand, op_equiv_ack_op_rl,
acknowledged_op_I_cons_reduce.
rewrite if_decider_false with (dec := in_dec _ (IRU k)) by auto.
break_if; auto.
Qed.

(* Specifications: *)
Lemma op_equiv_AAOF_IR_equiv :
forall xs ys,
op_equivalent xs ys ->
forall l,
IR_equivalent (acknowledge_all_ops_func xs l) (acknowledge_all_ops_func ys l).