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_homs:
fst M N : M × N →* M,snd M N : M × N →* N: projectionsprod.fstandprod.sndasmonoid_homs;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: sendsxto(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 gas 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_homs 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_homs 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_homs with the same codomain:
f.coprod g (p : M × N) = f p.1 + g p.2.
Coproduct of two monoid_homs 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)