Module cmonoid_quot

Quotients of Commutative Monoids

Require Export equiv.
Require Export cmonoid.

Require quot.

Implicit Arguments On.

Module CMonoid_Quot.

Export Quot.
Export CMonoid.

Definition Compatible_Monoid [A:Monoid; Q:(Equivalence A)] : Prop :=
  (Compatible2 Q Q [x,y:A](class Q (mul x y))).

Section Monoid_Quot.

Variable A:Monoid; Q:(Equivalence A); HQ:(Compatible_Monoid Q).

Definition class_eq_Q := (!class_eq ? Q).

Hints Resolve class_eq_Q.

Local B := (quot Q).

Local Bop : B->B->B.
Proof.
  Apply (quot_law2 Q (!mul A)); Auto.
Defined.

Local Bid : B := (class Q (!one A)).

Local B_data : Monoid_Data := (Build_Monoid_Data Bop Bid).

Remark B_theory : (Monoid_Theory (!mul B_data) (!one B_data)).
Proof.
  Split; Simpl; Unfold Bop Bid; Intros.
  Lift x; Lift y; Lift z; Unfold quot_law2.
  Repeat Rewrite fact2_eq; Auto.
  Lift x; Lift y; Unfold quot_law2.
  Repeat Rewrite fact2_eq; Auto.
  Lift x; Unfold quot_law2; Repeat Rewrite fact2_eq; Auto.
  Lift x; Unfold quot_law2; Repeat Rewrite fact2_eq; Auto.
Qed.

Definition monoid_quot : Monoid.
Proof.
  Split with B_data.
  Exact B_theory.
Defined.

End Monoid_Quot.

End CMonoid_Quot.


Index
This page has been generated by coqdoc