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 RingHoms and similarly for
NonUnitalRingHoms:
Product of two distributive types is distributive.
Equations
- Prod.instDistrib = { toMul := Prod.instMul, toAdd := Prod.instAdd, left_distrib := ⋯, right_distrib := ⋯ }
Product of two NonUnitalNonAssocSemirings is a NonUnitalNonAssocSemiring.
Equations
- One or more equations did not get rendered due to their size.
Product of two NonUnitalSemirings is a NonUnitalSemiring.
Equations
- Prod.instNonUnitalSemiring = { toNonUnitalNonAssocSemiring := inferInstanceAs (NonUnitalNonAssocSemiring (R × S)), mul_assoc := ⋯ }
Product of two NonAssocSemirings is a NonAssocSemiring.
Equations
- One or more equations did not get rendered due to their size.
Product of two NonUnitalCommSemirings is a NonUnitalCommSemiring.
Equations
- Prod.instNonUnitalCommSemiring = { toNonUnitalSemiring := inferInstanceAs (NonUnitalSemiring (R × S)), mul_comm := ⋯ }
Product of two commutative semirings is a commutative semiring.
Equations
- Prod.instCommSemiring = { toSemiring := inferInstanceAs (Semiring (R × S)), mul_comm := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Equations
- Prod.instNonUnitalRing = { toNonUnitalNonAssocRing := inferInstanceAs (NonUnitalNonAssocRing (R × S)), mul_assoc := ⋯ }
Equations
- One or more equations did not get rendered due to their size.
Product of two NonUnitalCommRings is a NonUnitalCommRing.
Equations
- Prod.instNonUnitalCommRing = { toNonUnitalRing := inferInstanceAs (NonUnitalRing (R × S)), mul_comm := ⋯ }
Product of two commutative rings is a commutative ring.
Equations
- Prod.instCommRing = { toRing := inferInstanceAs (Ring (R × S)), mul_comm := ⋯ }
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
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
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
Instances For
A ring R is isomorphic to S × R when S is the zero ring
Equations
Instances For
The product of two nontrivial rings is not a domain