Section Lemmas.
Variable R : RING.
Variable Mod : MODULE R.
intros a b x y H' H'0; try assumption.
apply Trans with (module_mult a y); unfold module_mult in |- *.
apply Ap_comp; auto with algebra.
apply Ap_comp; auto with algebra.
Qed.
exact (operation_assoc (module_op Mod)).
Qed.
exact (module_op_lin_left_prf Mod).
Qed.
exact (module_op_lin_right_prf Mod).
Qed.
exact (operation_unit (module_op Mod)).
Qed.
Hint Resolve MODULE_comp MODULE_dist_r MODULE_dist_l MODULE_assoc
MODULE_unit_l: algebra.
intros x; try assumption.
apply GROUP_reg_left with (module_mult (monoid_unit R) x); auto with algebra.
apply
Trans with (module_mult (sgroup_law R (monoid_unit R) (monoid_unit R)) x);
auto with algebra.
apply Trans with (module_mult (monoid_unit R) x); auto with algebra.
Qed.
intros a; try assumption.
apply GROUP_reg_left with (module_mult a (monoid_unit (module_carrier Mod)));
auto with algebra.
apply
Trans
with (module_mult a (sgroup_law Mod (monoid_unit Mod) (monoid_unit Mod)));
auto with algebra.
apply Trans with (module_mult a (monoid_unit Mod)); auto with algebra.
Qed.
intros a x; try assumption.
apply Sym.
apply GROUP_law_inverse.
apply Trans with (module_mult a (sgroup_law Mod x (group_inverse Mod x)));
auto with algebra.
apply Trans with (module_mult a (monoid_unit Mod)); auto with algebra.
apply MODULE_absorbant_r.
Qed.

Lemma MODULE_mult_op_l :
forall (a : R) (x : Mod),
Equal (module_mult (group_inverse R a) x)
(group_inverse Mod (module_mult a x)).