\import Algebra.Group \import Algebra.Monoid.Product \import Paths \instance ProductGroup (G H : Group) : Group | Monoid => ProductMonoid G H | inverse p => (inverse p.1, inverse p.2) | inverse-left => pmap2 (__,__) inverse-left inverse-left | inverse-right => pmap2 (__,__) inverse-right inverse-right \instance ProductAddGroup (A B : AddGroup) : AddGroup | AddMonoid => ProductAddMonoid A B | negative p => (negative p.1, negative p.2) | negative-left => pmap2 (__,__) negative-left negative-left | negative-right => pmap2 (__,__) negative-right negative-right \instance ProductCGroup (G H : CGroup) : CGroup | Group => ProductGroup G H | CMonoid => ProductCMonoid G H \instance ProductAbGroup (A B : AbGroup) : AbGroup | AddGroup => ProductAddGroup A B | AbMonoid => ProductAbMonoid A B