Semiring, ring etc structures on R × S
#
In this file we define two-binop (Semiring
, Ring
etc) structures on R × S
. We also prove
trivial simp
lemmas, and define the following operations on RingHom
s and similarly for
NonUnitalRingHom
s:
Product of two distributive types is distributive.
Equations
- Prod.instDistrib = Distrib.mk ⋯ ⋯
Product of two NonUnitalNonAssocSemiring
s is a NonUnitalNonAssocSemiring
.
Equations
- Prod.instNonUnitalNonAssocSemiring = NonUnitalNonAssocSemiring.mk ⋯ ⋯ ⋯ ⋯
Product of two NonUnitalSemiring
s is a NonUnitalSemiring
.
Equations
- Prod.instNonUnitalSemiring = NonUnitalSemiring.mk ⋯
Product of two NonAssocSemiring
s is a NonAssocSemiring
.
Equations
- Prod.instNonAssocSemiring = NonAssocSemiring.mk ⋯ ⋯ ⋯ ⋯
Product of two semirings is a semiring.
Equations
- Prod.instSemiring = Semiring.mk ⋯ ⋯ ⋯ ⋯ Monoid.npow ⋯ ⋯
Product of two NonUnitalCommSemiring
s is a NonUnitalCommSemiring
.
Equations
- Prod.instNonUnitalCommSemiring = NonUnitalCommSemiring.mk ⋯
Product of two commutative semirings is a commutative semiring.
Equations
- Prod.instCommSemiring = CommSemiring.mk ⋯
Equations
- Prod.instNonUnitalNonAssocRing = NonUnitalNonAssocRing.mk ⋯ ⋯ ⋯ ⋯
Equations
- Prod.instNonUnitalRing = NonUnitalRing.mk ⋯
Equations
- Prod.instNonAssocRing = NonAssocRing.mk ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
Product of two NonUnitalCommRing
s is a NonUnitalCommRing
.
Equations
- Prod.instNonUnitalCommRing = NonUnitalCommRing.mk ⋯
Product of two commutative rings is a commutative ring.
Equations
- Prod.instCommRing = CommRing.mk ⋯
Given non-unital semirings R
, S
, the natural projection homomorphism from R × S
to R
.
Equations
- NonUnitalRingHom.fst R S = { toFun := Prod.fst, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Given non-unital semirings R
, S
, the natural projection homomorphism from R × S
to S
.
Equations
- NonUnitalRingHom.snd R S = { toFun := Prod.snd, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Combine two non-unital ring homomorphisms f : R →ₙ+* S
, g : R →ₙ+* T
into
f.prod g : R →ₙ+* S × T
given by (f.prod g) x = (f x, g x)
Equations
- f.prod g = { toFun := fun (x : R) => (f x, g x), map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Prod.map
as a NonUnitalRingHom
.
Equations
- f.prodMap g = (f.comp (NonUnitalRingHom.fst R S)).prod (g.comp (NonUnitalRingHom.snd R S))
Instances For
Given semirings R
, S
, the natural projection homomorphism from R × S
to R
.
Equations
- RingHom.fst R S = { toFun := Prod.fst, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Given semirings R
, S
, the natural projection homomorphism from R × S
to S
.
Equations
- RingHom.snd R S = { toFun := Prod.snd, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Combine two ring homomorphisms f : R →+* S
, g : R →+* T
into f.prod g : R →+* S × T
given by (f.prod g) x = (f x, g x)
Equations
- f.prod g = { toFun := fun (x : R) => (f x, g x), map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
Equations
- f.prodMap g = (f.comp (RingHom.fst R S)).prod (g.comp (RingHom.snd R S))
Instances For
Swapping components as an equivalence of (semi)rings.
Equations
- RingEquiv.prodComm = { toEquiv := AddEquiv.prodComm.toEquiv, map_mul' := ⋯, map_add' := ⋯ }
Instances For
Four-way commutativity of Prod
. The name matches mul_mul_mul_comm
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
A ring R
is isomorphic to R × S
when S
is the zero ring
Equations
- RingEquiv.prodZeroRing R S = { toFun := fun (x : R) => (x, 0), invFun := Prod.fst, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯ }
Instances For
A ring R
is isomorphic to S × R
when S
is the zero ring
Equations
- RingEquiv.zeroRingProd R S = { toFun := fun (x : R) => (0, x), invFun := Prod.snd, left_inv := ⋯, right_inv := ⋯, map_mul' := ⋯, map_add' := ⋯ }
Instances For
The product of two nontrivial rings is not a domain