Monoid, group etc structures on M × N
In this file we define one-binop (monoid
, group
etc) structures on M × N
. We also prove
trivial simp
lemmas, and define the following operations on monoid_hom
s:
fst M N : M × N →* M
,snd M N : M × N →* N
: projectionsprod.fst
andprod.snd
asmonoid_hom
s;inl M N : M →* M × N
,inr M N : N →* M × N
: inclusions of first/second monoid into the product;f.prod g :
M →* N × P: sends
xto
(f x, g x)`;f.coprod g : M × N →* P
: sends(x, y)
tof x * g y
;f.prod_map g : M × N → M' × N'
:prod.map f g
as amonoid_hom
, sends(x, y)
to(f x, g y)
.
Equations
- prod.has_one = {one := (1, 1)}
Equations
- prod.semigroup = {mul := has_mul.mul prod.has_mul, mul_assoc := _}
Equations
- prod.monoid = {mul := semigroup.mul prod.semigroup, mul_assoc := _, one := 1, one_mul := _, mul_one := _}
Equations
- prod.group = {mul := monoid.mul prod.monoid, mul_assoc := _, one := monoid.one prod.monoid, one_mul := _, mul_one := _, inv := has_inv.inv prod.has_inv, mul_left_inv := _}
Equations
- prod.comm_semigroup = {mul := semigroup.mul prod.semigroup, mul_assoc := _, mul_comm := _}
Equations
- prod.comm_monoid = {mul := comm_semigroup.mul prod.comm_semigroup, mul_assoc := _, one := monoid.one prod.monoid, one_mul := _, mul_one := _, mul_comm := _}
Equations
- prod.comm_group = {mul := comm_semigroup.mul prod.comm_semigroup, mul_assoc := _, one := group.one prod.group, one_mul := _, mul_one := _, inv := group.inv prod.group, mul_left_inv := _, mul_comm := _}
Given additive monoids A
, B
, the natural projection homomorphism
from A × B
to A
Given additive monoids A
, B
, the natural projection homomorphism
from A × B
to B
Given additive monoids A
, B
, the natural inclusion homomorphism
from A
to A × B
.
Given additive monoids A
, B
, the natural inclusion homomorphism
from B
to A × B
.
Combine two monoid_hom
s f : M →* N
, g : M →* P
into f.prod g : M →* N × P
given by (f.prod g) x = (f x, g x)
Combine two add_monoid_hom
s f : M →+ N
, g : M →+ P
into
f.prod g : M →+ N × P
given by (f.prod g) x = (f x, g x)
prod.map
as a monoid_hom
.
Equations
- f.prod_map g = (f.comp (monoid_hom.fst M N)).prod (g.comp (monoid_hom.snd M N))
prod.map
as an add_monoid_hom
Coproduct of two add_monoid_hom
s with the same codomain:
f.coprod g (p : M × N) = f p.1 + g p.2
.
Coproduct of two monoid_hom
s with the same codomain:
f.coprod g (p : M × N) = f p.1 * g p.2
.
Equations
- f.coprod g = f.comp (monoid_hom.fst M N) * g.comp (monoid_hom.snd M N)