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 A
direct_sum.gsemiring A
direct_sum.gring A
direct_sum.gcomm_semiring A
direct_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_ring
direct_sum.semiring
direct_sum.ring
direct_sum.comm_semiring
direct_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_ring
direct_sum.grade_zero.semiring
direct_sum.grade_zero.ring
direct_sum.grade_zero.comm_semiring
direct_sum.grade_zero.comm_ring
and the i
th 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_hom
s out of a direct sum are equal if they agree on the generators.
A family of add_monoid_hom
s preserving direct_sum.ghas_one.one
and direct_sum.ghas_mul.mul
describes a ring_hom
s 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_hom
s preserving direct_sum.ghas_one.one
and direct_sum.ghas_mul.mul
are isomorphic to ring_hom
s 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 := _}