Proof
fun x y H1 z H2
=> op_is_assoc y x z
|| y + a = (y + x) + z @a by <- H2
|| a = (y + x) + z     @a by <- op_id_r y
|| y = a + z           @a by <- H1
|| y = a               @a by <- op_id_l z.

(* Specifications: *)
(** Proves that the inverse relationship is symmetric. *)
Theorem op_inv_sym
:  forall x y : M, op_is_inv x y <-> op_is_inv y x.