Additively-graded multiplicative structures on ⨁ i, A i #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This module provides a set of heterogeneous typeclasses for defining a multiplicative structure
over ⨁ i, A i such that (*) : A i → A j → A (i + j); that is to say, A forms an
additively-graded ring. The typeclasses are:
direct_sum.gnon_unital_non_assoc_semiring Adirect_sum.gsemiring Adirect_sum.gring Adirect_sum.gcomm_semiring Adirect_sum.gcomm_ring A
Respectively, these imbue the external direct sum ⨁ i, A i with:
direct_sum.non_unital_non_assoc_semiring,direct_sum.non_unital_non_assoc_ringdirect_sum.semiringdirect_sum.ringdirect_sum.comm_semiringdirect_sum.comm_ring
the base ring A 0 with:
direct_sum.grade_zero.non_unital_non_assoc_semiring,direct_sum.grade_zero.non_unital_non_assoc_ringdirect_sum.grade_zero.semiringdirect_sum.grade_zero.ringdirect_sum.grade_zero.comm_semiringdirect_sum.grade_zero.comm_ring
and the ith grade A i with A 0-actions (•) defined as left-multiplication:
direct_sum.grade_zero.has_smul (A 0),direct_sum.grade_zero.smul_with_zero (A 0)direct_sum.grade_zero.module (A 0)- (nothing)
- (nothing)
- (nothing)
Note that in the presence of these instances, ⨁ i, A i itself inherits an A 0-action.
direct_sum.of_zero_ring_hom : A 0 →+* ⨁ i, A i provides direct_sum.of A 0 as a ring
homomorphism.
direct_sum.to_semiring extends direct_sum.to_add_monoid to produce a ring_hom.
Direct sums of subobjects #
Additionally, this module provides helper functions to construct gsemiring and gcomm_semiring
instances for:
A : ι → submonoid S:direct_sum.gsemiring.of_add_submonoids,direct_sum.gcomm_semiring.of_add_submonoids.A : ι → subgroup S:direct_sum.gsemiring.of_add_subgroups,direct_sum.gcomm_semiring.of_add_subgroups.A : ι → submodule S:direct_sum.gsemiring.of_submodules,direct_sum.gcomm_semiring.of_submodules.
If complete_lattice.independent (set.range A), these provide a gradation of ⨆ i, A i, and the
mapping ⨁ i, A i →+ ⨆ i, A i can be obtained as
direct_sum.to_monoid (λ i, add_submonoid.inclusion $ le_supr A i).
tags #
graded ring, filtered ring, direct sum, add_submonoid
Typeclasses #
- mul : Π {i j : ι}, A i → A j → A (i + j)
- mul_zero : ∀ {i j : ι} (a : A i), direct_sum.gnon_unital_non_assoc_semiring.mul a 0 = 0
- zero_mul : ∀ {i j : ι} (b : A j), direct_sum.gnon_unital_non_assoc_semiring.mul 0 b = 0
- mul_add : ∀ {i j : ι} (a : A i) (b c : A j), direct_sum.gnon_unital_non_assoc_semiring.mul a (b + c) = direct_sum.gnon_unital_non_assoc_semiring.mul a b + direct_sum.gnon_unital_non_assoc_semiring.mul a c
- add_mul : ∀ {i j : ι} (a b : A i) (c : A j), direct_sum.gnon_unital_non_assoc_semiring.mul (a + b) c = direct_sum.gnon_unital_non_assoc_semiring.mul a c + direct_sum.gnon_unital_non_assoc_semiring.mul b c
A graded version of non_unital_non_assoc_semiring.
Instances of this typeclass
Instances of other typeclasses for direct_sum.gnon_unital_non_assoc_semiring
- direct_sum.gnon_unital_non_assoc_semiring.has_sizeof_inst
- mul : Π {i j : ι}, A i → A j → A (i + j)
- mul_zero : ∀ {i j : ι} (a : A i), direct_sum.gsemiring.mul a 0 = 0
- zero_mul : ∀ {i j : ι} (b : A j), direct_sum.gsemiring.mul 0 b = 0
- mul_add : ∀ {i j : ι} (a : A i) (b c : A j), direct_sum.gsemiring.mul a (b + c) = direct_sum.gsemiring.mul a b + direct_sum.gsemiring.mul a c
- add_mul : ∀ {i j : ι} (a b : A i) (c : A j), direct_sum.gsemiring.mul (a + b) c = direct_sum.gsemiring.mul a c + direct_sum.gsemiring.mul b c
- one : A 0
- one_mul : ∀ (a : graded_monoid A), 1 * a = a
- mul_one : ∀ (a : graded_monoid A), a * 1 = a
- mul_assoc : ∀ (a b c : graded_monoid A), a * b * c = a * (b * c)
- gnpow : Π (n : ℕ) {i : ι}, A i → A (n • i)
- gnpow_zero' : (∀ (a : graded_monoid A), graded_monoid.mk (0 • a.fst) (direct_sum.gsemiring.gnpow 0 a.snd) = 1) . "apply_gnpow_rec_zero_tac"
- gnpow_succ' : (∀ (n : ℕ) (a : graded_monoid A), graded_monoid.mk (n.succ • a.fst) (direct_sum.gsemiring.gnpow n.succ a.snd) = a * ⟨n • a.fst, direct_sum.gsemiring.gnpow n a.snd⟩) . "apply_gnpow_rec_succ_tac"
- nat_cast : ℕ → A 0
- nat_cast_zero : direct_sum.gsemiring.nat_cast 0 = 0
- nat_cast_succ : ∀ (n : ℕ), direct_sum.gsemiring.nat_cast (n + 1) = direct_sum.gsemiring.nat_cast n + graded_monoid.ghas_one.one
A graded version of semiring.
Instances of this typeclass
Instances of other typeclasses for direct_sum.gsemiring
- direct_sum.gsemiring.has_sizeof_inst
- mul : Π {i j : ι}, A i → A j → A (i + j)
- mul_zero : ∀ {i j : ι} (a : A i), direct_sum.gcomm_semiring.mul a 0 = 0
- zero_mul : ∀ {i j : ι} (b : A j), direct_sum.gcomm_semiring.mul 0 b = 0
- mul_add : ∀ {i j : ι} (a : A i) (b c : A j), direct_sum.gcomm_semiring.mul a (b + c) = direct_sum.gcomm_semiring.mul a b + direct_sum.gcomm_semiring.mul a c
- add_mul : ∀ {i j : ι} (a b : A i) (c : A j), direct_sum.gcomm_semiring.mul (a + b) c = direct_sum.gcomm_semiring.mul a c + direct_sum.gcomm_semiring.mul b c
- one : A 0
- one_mul : ∀ (a : graded_monoid A), 1 * a = a
- mul_one : ∀ (a : graded_monoid A), a * 1 = a
- mul_assoc : ∀ (a b c : graded_monoid A), a * b * c = a * (b * c)
- gnpow : Π (n : ℕ) {i : ι}, A i → A (n • i)
- gnpow_zero' : (∀ (a : graded_monoid A), graded_monoid.mk (0 • a.fst) (direct_sum.gcomm_semiring.gnpow 0 a.snd) = 1) . "apply_gnpow_rec_zero_tac"
- gnpow_succ' : (∀ (n : ℕ) (a : graded_monoid A), graded_monoid.mk (n.succ • a.fst) (direct_sum.gcomm_semiring.gnpow n.succ a.snd) = a * ⟨n • a.fst, direct_sum.gcomm_semiring.gnpow n a.snd⟩) . "apply_gnpow_rec_succ_tac"
- nat_cast : ℕ → A 0
- nat_cast_zero : direct_sum.gcomm_semiring.nat_cast 0 = 0
- nat_cast_succ : ∀ (n : ℕ), direct_sum.gcomm_semiring.nat_cast (n + 1) = direct_sum.gcomm_semiring.nat_cast n + graded_monoid.ghas_one.one
- mul_comm : ∀ (a b : graded_monoid A), a * b = b * a
A graded version of comm_semiring.
Instances of this typeclass
Instances of other typeclasses for direct_sum.gcomm_semiring
- direct_sum.gcomm_semiring.has_sizeof_inst
- mul : Π {i j : ι}, A i → A j → A (i + j)
- mul_zero : ∀ {i j : ι} (a : A i), direct_sum.gring.mul a 0 = 0
- zero_mul : ∀ {i j : ι} (b : A j), direct_sum.gring.mul 0 b = 0
- mul_add : ∀ {i j : ι} (a : A i) (b c : A j), direct_sum.gring.mul a (b + c) = direct_sum.gring.mul a b + direct_sum.gring.mul a c
- add_mul : ∀ {i j : ι} (a b : A i) (c : A j), direct_sum.gring.mul (a + b) c = direct_sum.gring.mul a c + direct_sum.gring.mul b c
- one : A 0
- one_mul : ∀ (a : graded_monoid A), 1 * a = a
- mul_one : ∀ (a : graded_monoid A), a * 1 = a
- mul_assoc : ∀ (a b c : graded_monoid A), a * b * c = a * (b * c)
- gnpow : Π (n : ℕ) {i : ι}, A i → A (n • i)
- gnpow_zero' : (∀ (a : graded_monoid A), graded_monoid.mk (0 • a.fst) (direct_sum.gring.gnpow 0 a.snd) = 1) . "apply_gnpow_rec_zero_tac"
- gnpow_succ' : (∀ (n : ℕ) (a : graded_monoid A), graded_monoid.mk (n.succ • a.fst) (direct_sum.gring.gnpow n.succ a.snd) = a * ⟨n • a.fst, direct_sum.gring.gnpow n a.snd⟩) . "apply_gnpow_rec_succ_tac"
- nat_cast : ℕ → A 0
- nat_cast_zero : direct_sum.gring.nat_cast 0 = 0
- nat_cast_succ : ∀ (n : ℕ), direct_sum.gring.nat_cast (n + 1) = direct_sum.gring.nat_cast n + graded_monoid.ghas_one.one
- int_cast : ℤ → A 0
- int_cast_of_nat : ∀ (n : ℕ), direct_sum.gring.int_cast ↑n = direct_sum.gring.nat_cast n
- int_cast_neg_succ_of_nat : ∀ (n : ℕ), direct_sum.gring.int_cast (-↑(n + 1)) = -direct_sum.gring.nat_cast (n + 1)
A graded version of ring.
Instances of this typeclass
Instances of other typeclasses for direct_sum.gring
- direct_sum.gring.has_sizeof_inst
- mul : Π {i j : ι}, A i → A j → A (i + j)
- mul_zero : ∀ {i j : ι} (a : A i), direct_sum.gcomm_ring.mul a 0 = 0
- zero_mul : ∀ {i j : ι} (b : A j), direct_sum.gcomm_ring.mul 0 b = 0
- mul_add : ∀ {i j : ι} (a : A i) (b c : A j), direct_sum.gcomm_ring.mul a (b + c) = direct_sum.gcomm_ring.mul a b + direct_sum.gcomm_ring.mul a c
- add_mul : ∀ {i j : ι} (a b : A i) (c : A j), direct_sum.gcomm_ring.mul (a + b) c = direct_sum.gcomm_ring.mul a c + direct_sum.gcomm_ring.mul b c
- one : A 0
- one_mul : ∀ (a : graded_monoid A), 1 * a = a
- mul_one : ∀ (a : graded_monoid A), a * 1 = a
- mul_assoc : ∀ (a b c : graded_monoid A), a * b * c = a * (b * c)
- gnpow : Π (n : ℕ) {i : ι}, A i → A (n • i)
- gnpow_zero' : (∀ (a : graded_monoid A), graded_monoid.mk (0 • a.fst) (direct_sum.gcomm_ring.gnpow 0 a.snd) = 1) . "apply_gnpow_rec_zero_tac"
- gnpow_succ' : (∀ (n : ℕ) (a : graded_monoid A), graded_monoid.mk (n.succ • a.fst) (direct_sum.gcomm_ring.gnpow n.succ a.snd) = a * ⟨n • a.fst, direct_sum.gcomm_ring.gnpow n a.snd⟩) . "apply_gnpow_rec_succ_tac"
- nat_cast : ℕ → A 0
- nat_cast_zero : direct_sum.gcomm_ring.nat_cast 0 = 0
- nat_cast_succ : ∀ (n : ℕ), direct_sum.gcomm_ring.nat_cast (n + 1) = direct_sum.gcomm_ring.nat_cast n + graded_monoid.ghas_one.one
- int_cast : ℤ → A 0
- int_cast_of_nat : ∀ (n : ℕ), direct_sum.gcomm_ring.int_cast ↑n = direct_sum.gcomm_ring.nat_cast n
- int_cast_neg_succ_of_nat : ∀ (n : ℕ), direct_sum.gcomm_ring.int_cast (-↑(n + 1)) = -direct_sum.gcomm_ring.nat_cast (n + 1)
- mul_comm : ∀ (a b : graded_monoid A), a * b = b * a
A graded version of comm_ring.
Instances of this typeclass
Instances of other typeclasses for direct_sum.gcomm_ring
- direct_sum.gcomm_ring.has_sizeof_inst
Instances for ⨁ i, A i #
Equations
- direct_sum.has_one A = {one := ⇑(direct_sum.of (λ (i : ι), A i) 0) graded_monoid.ghas_one.one}
The piecewise multiplication from the has_mul instance, as a bundled homomorphism.
The multiplication from the has_mul instance, as a bundled homomorphism.
Equations
- direct_sum.mul_hom A = direct_sum.to_add_monoid (λ (i : ι), (direct_sum.to_add_monoid (λ (j : ι), ((⇑add_monoid_hom.comp_hom (direct_sum.of A (i + j))).comp (direct_sum.gmul_hom A)).flip)).flip)
Equations
- direct_sum.non_unital_non_assoc_semiring A = {add := has_add.add (add_zero_class.to_has_add (direct_sum ι (λ (i : ι), A i))), add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := add_comm_monoid.nsmul (direct_sum.add_comm_monoid ι (λ (i : ι), A i)), nsmul_zero' := _, nsmul_succ' := _, add_comm := _, mul := λ (a b : direct_sum ι (λ (i : ι), A i)), ⇑(⇑(direct_sum.mul_hom A) a) b, left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _}
The semiring structure derived from gsemiring A.
Equations
- direct_sum.semiring A = {add := has_add.add (distrib.to_has_add (direct_sum ι (λ (i : ι), A i))), add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := non_unital_non_assoc_semiring.nsmul (direct_sum.non_unital_non_assoc_semiring (λ (i : ι), A i)), nsmul_zero' := _, nsmul_succ' := _, add_comm := _, mul := has_mul.mul (distrib.to_has_mul (direct_sum ι (λ (i : ι), A i))), left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, mul_assoc := _, one := 1, one_mul := _, mul_one := _, nat_cast := λ (n : ℕ), ⇑(direct_sum.of (λ (i : ι), A i) 0) (direct_sum.gsemiring.nat_cast n), nat_cast_zero := _, nat_cast_succ := _, npow := monoid_with_zero.npow._default 1 has_mul.mul _ _, npow_zero' := _, npow_succ' := _}
A heavily unfolded version of the definition of multiplication
The comm_semiring structure derived from gcomm_semiring A.
Equations
- direct_sum.comm_semiring A = {add := has_add.add (distrib.to_has_add (direct_sum ι (λ (i : ι), A i))), add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := semiring.nsmul (direct_sum.semiring (λ (i : ι), A i)), nsmul_zero' := _, nsmul_succ' := _, add_comm := _, mul := has_mul.mul (distrib.to_has_mul (direct_sum ι (λ (i : ι), A i))), left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _, mul_assoc := _, one := 1, one_mul := _, mul_one := _, nat_cast := semiring.nat_cast (direct_sum.semiring (λ (i : ι), A i)), nat_cast_zero := _, nat_cast_succ := _, npow := semiring.npow (direct_sum.semiring (λ (i : ι), A i)), npow_zero' := _, npow_succ' := _, mul_comm := _}
The ring derived from gsemiring A.
Equations
- direct_sum.non_assoc_ring A = {add := has_add.add (distrib.to_has_add (direct_sum ι (λ (i : ι), A i))), add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := non_unital_non_assoc_semiring.nsmul (direct_sum.non_unital_non_assoc_semiring (λ (i : ι), A i)), nsmul_zero' := _, nsmul_succ' := _, neg := has_neg.neg (sub_neg_monoid.to_has_neg (direct_sum ι (λ (i : ι), A i))), sub := add_comm_group.sub (direct_sum.add_comm_group (λ (i : ι), A i)), sub_eq_add_neg := _, zsmul := add_comm_group.zsmul (direct_sum.add_comm_group (λ (i : ι), A i)), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, mul := has_mul.mul (distrib.to_has_mul (direct_sum ι (λ (i : ι), A i))), left_distrib := _, right_distrib := _, zero_mul := _, mul_zero := _}
The ring derived from gsemiring A.
Equations
- direct_sum.ring A = {add := has_add.add (distrib.to_has_add (direct_sum ι (λ (i : ι), A i))), add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := semiring.nsmul (direct_sum.semiring (λ (i : ι), A i)), nsmul_zero' := _, nsmul_succ' := _, neg := has_neg.neg (sub_neg_monoid.to_has_neg (direct_sum ι (λ (i : ι), A i))), sub := add_comm_group.sub (direct_sum.add_comm_group (λ (i : ι), A i)), sub_eq_add_neg := _, zsmul := add_comm_group.zsmul (direct_sum.add_comm_group (λ (i : ι), A i)), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, int_cast := λ (z : ℤ), ⇑(direct_sum.of (λ (i : ι), A i) 0) (direct_sum.gring.int_cast z), nat_cast := semiring.nat_cast (direct_sum.semiring (λ (i : ι), A i)), one := 1, nat_cast_zero := _, nat_cast_succ := _, int_cast_of_nat := _, int_cast_neg_succ_of_nat := _, mul := has_mul.mul (distrib.to_has_mul (direct_sum ι (λ (i : ι), A i))), mul_assoc := _, one_mul := _, mul_one := _, npow := semiring.npow (direct_sum.semiring (λ (i : ι), A i)), npow_zero' := _, npow_succ' := _, left_distrib := _, right_distrib := _}
The comm_ring derived from gcomm_semiring A.
Equations
- direct_sum.comm_ring A = {add := has_add.add (distrib.to_has_add (direct_sum ι (λ (i : ι), A i))), add_assoc := _, zero := 0, zero_add := _, add_zero := _, nsmul := ring.nsmul (direct_sum.ring (λ (i : ι), A i)), nsmul_zero' := _, nsmul_succ' := _, neg := has_neg.neg (sub_neg_monoid.to_has_neg (direct_sum ι (λ (i : ι), A i))), sub := ring.sub (direct_sum.ring (λ (i : ι), A i)), sub_eq_add_neg := _, zsmul := ring.zsmul (direct_sum.ring (λ (i : ι), A i)), zsmul_zero' := _, zsmul_succ' := _, zsmul_neg' := _, add_left_neg := _, add_comm := _, int_cast := ring.int_cast (direct_sum.ring (λ (i : ι), A i)), nat_cast := ring.nat_cast (direct_sum.ring (λ (i : ι), A i)), one := 1, nat_cast_zero := _, nat_cast_succ := _, int_cast_of_nat := _, int_cast_neg_succ_of_nat := _, mul := has_mul.mul (distrib.to_has_mul (direct_sum ι (λ (i : ι), A i))), mul_assoc := _, one_mul := _, mul_one := _, npow := ring.npow (direct_sum.ring (λ (i : ι), A i)), npow_zero' := _, npow_succ' := _, left_distrib := _, right_distrib := _, mul_comm := _}
Instances for A 0 #
The various g* instances are enough to promote the add_comm_monoid (A 0) structure to various
types of multiplicative structure.
Equations
Equations
- direct_sum.grade_zero.smul_with_zero A i = let _inst : smul_with_zero (A 0) (direct_sum ι (λ (i : ι), A i)) := smul_with_zero.comp_hom (direct_sum ι (λ (i : ι), A i)) (direct_sum.of A 0).to_zero_hom in function.injective.smul_with_zero (direct_sum.of A i).to_zero_hom _ _
Equations
- direct_sum.has_nat_cast A = {nat_cast := direct_sum.gsemiring.nat_cast _inst_4}
The semiring structure derived from gsemiring A.
Equations
- direct_sum.grade_zero.semiring A = function.injective.semiring ⇑(direct_sum.of A 0) _ _ _ _ _ _ _ _
of A 0 is a ring_hom, using the direct_sum.grade_zero.semiring structure.
Equations
- direct_sum.of_zero_ring_hom A = {to_fun := (direct_sum.of A 0).to_fun, map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}
Each grade A i derives a A 0-module structure from gsemiring A. Note that this results
in an overall module (A 0) (⨁ i, A i) structure via direct_sum.module.
Equations
- direct_sum.grade_zero.module A = let _inst : module (A 0) (direct_sum ι (λ (i : ι), A i)) := module.comp_hom (direct_sum ι (λ (i : ι), A i)) (direct_sum.of_zero_ring_hom A) in function.injective.module (A 0) (direct_sum.of A i) _ _
The comm_semiring structure derived from gcomm_semiring A.
Equations
- direct_sum.grade_zero.comm_semiring A = function.injective.comm_semiring ⇑(direct_sum.of A 0) _ _ _ _ _ _ _ _
The non_unital_non_assoc_ring derived from gnon_unital_non_assoc_semiring A.
Equations
- direct_sum.grade_zero.non_unital_non_assoc_ring A = function.injective.non_unital_non_assoc_ring ⇑(direct_sum.of A 0) _ _ _ _ _ _ _ _
Equations
- direct_sum.has_int_cast A = {int_cast := direct_sum.gring.int_cast _inst_4}
The ring derived from gsemiring A.
Equations
- direct_sum.grade_zero.ring A = function.injective.ring ⇑(direct_sum.of A 0) _ _ _ _ _ _ _ _ _ _ _ _
The comm_ring derived from gcomm_semiring A.
Equations
- direct_sum.grade_zero.comm_ring A = function.injective.comm_ring ⇑(direct_sum.of A 0) _ _ _ _ _ _ _ _ _ _ _ _
If two ring homomorphisms from ⨁ i, A i are equal on each of A i y,
then they are equal.
Two ring_homs out of a direct sum are equal if they agree on the generators.
A family of add_monoid_homs preserving direct_sum.ghas_one.one and direct_sum.ghas_mul.mul
describes a ring_homs on ⨁ i, A i. This is a stronger version of direct_sum.to_monoid.
Of particular interest is the case when A i are bundled subojects, f is the family of
coercions such as add_submonoid.subtype (A i), and the [gsemiring A] structure originates from
direct_sum.gsemiring.of_add_submonoids, in which case the proofs about ghas_one and ghas_mul
can be discharged by rfl.
Equations
- direct_sum.to_semiring f hone hmul = {to_fun := ⇑(direct_sum.to_add_monoid f), map_one' := _, map_mul' := _, map_zero' := _, map_add' := _}
Families of add_monoid_homs preserving direct_sum.ghas_one.one and direct_sum.ghas_mul.mul
are isomorphic to ring_homs on ⨁ i, A i. This is a stronger version of dfinsupp.lift_add_hom.
Equations
- direct_sum.lift_ring_hom = {to_fun := λ (f : {f // ⇑f graded_monoid.ghas_one.one = 1 ∧ ∀ {i j : ι} (ai : A i) (aj : A j), ⇑f (graded_monoid.ghas_mul.mul ai aj) = ⇑f ai * ⇑f aj}), direct_sum.to_semiring (λ (_x : ι), f.val) _ _, inv_fun := λ (F : direct_sum ι (λ (i : ι), A i) →+* R), ⟨λ (i : ι), ↑F.comp (direct_sum.of A i), _⟩, left_inv := _, right_inv := _}
Concrete instances #
A direct sum of copies of a semiring inherits the multiplication structure.
Equations
- non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring ι = {mul := graded_monoid.ghas_mul.mul (has_mul.ghas_mul ι), mul_zero := _, zero_mul := _, mul_add := _, add_mul := _}
A direct sum of copies of a semiring inherits the multiplication structure.
Equations
- semiring.direct_sum_gsemiring ι = {mul := direct_sum.gnon_unital_non_assoc_semiring.mul (non_unital_non_assoc_semiring.direct_sum_gnon_unital_non_assoc_semiring ι), mul_zero := _, zero_mul := _, mul_add := _, add_mul := _, one := graded_monoid.gmonoid.one (monoid.gmonoid ι), one_mul := _, mul_one := _, mul_assoc := _, gnpow := graded_monoid.gmonoid.gnpow (monoid.gmonoid ι), gnpow_zero' := _, gnpow_succ' := _, nat_cast := λ (n : ℕ), ↑n, nat_cast_zero := _, nat_cast_succ := _}
A direct sum of copies of a comm_semiring inherits the commutative multiplication structure.
Equations
- comm_semiring.direct_sum_gcomm_semiring ι = {mul := graded_monoid.gcomm_monoid.mul (comm_monoid.gcomm_monoid ι), mul_zero := _, zero_mul := _, mul_add := _, add_mul := _, one := graded_monoid.gcomm_monoid.one (comm_monoid.gcomm_monoid ι), one_mul := _, mul_one := _, mul_assoc := _, gnpow := graded_monoid.gcomm_monoid.gnpow (comm_monoid.gcomm_monoid ι), gnpow_zero' := _, gnpow_succ' := _, nat_cast := direct_sum.gsemiring.nat_cast (semiring.direct_sum_gsemiring ι), nat_cast_zero := _, nat_cast_succ := _, mul_comm := _}