Internally graded rings and algebras #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This module provides gsemiring
and gcomm_semiring
instances for a collection of subobjects A
when a set_like.graded_monoid
instance is available:
With these instances in place, it provides the bundled canonical maps out of a direct sum of subobjects into their carrier type:
direct_sum.coe_ring_hom
(aring_hom
version ofdirect_sum.coe_add_monoid_hom
)direct_sum.coe_alg_hom
(analg_hom
version ofdirect_sum.submodule_coe
)
Strictly the definitions in this file are not sufficient to fully define an "internal" direct sum;
to represent this case, (h : direct_sum.is_internal A) [set_like.graded_monoid A]
is
needed. In the future there will likely be a data-carrying, constructive, typeclass version of
direct_sum.is_internal
for providing an explicit decomposition function.
When complete_lattice.independent (set.range A)
(a weaker condition than
direct_sum.is_internal A
), these provide a grading 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 #
internally graded ring
Equations
- add_comm_monoid.of_submonoid_on_semiring A = λ (i : ι), add_submonoid_class.to_add_comm_monoid (A i)
Equations
- add_comm_group.of_subgroup_on_ring A = λ (i : ι), add_subgroup_class.to_add_comm_group (A i)
From add_submonoid
s and add_subgroup
s #
Build a gnon_unital_non_assoc_semiring
instance for a collection of additive submonoids.
Equations
- set_like.gnon_unital_non_assoc_semiring A = {mul := graded_monoid.ghas_mul.mul (set_like.ghas_mul A), mul_zero := _, zero_mul := _, mul_add := _, add_mul := _}
Build a gsemiring
instance for a collection of additive submonoids.
Equations
- set_like.gsemiring A = {mul := graded_monoid.gmonoid.mul (set_like.gmonoid A), mul_zero := _, zero_mul := _, mul_add := _, add_mul := _, one := graded_monoid.gmonoid.one (set_like.gmonoid A), one_mul := _, mul_one := _, mul_assoc := _, gnpow := graded_monoid.gmonoid.gnpow (set_like.gmonoid A), gnpow_zero' := _, gnpow_succ' := _, nat_cast := λ (n : ℕ), ⟨↑n, _⟩, nat_cast_zero := _, nat_cast_succ := _}
Build a gcomm_semiring
instance for a collection of additive submonoids.
Equations
- set_like.gcomm_semiring A = {mul := graded_monoid.gcomm_monoid.mul (set_like.gcomm_monoid A), mul_zero := _, zero_mul := _, mul_add := _, add_mul := _, one := graded_monoid.gcomm_monoid.one (set_like.gcomm_monoid A), one_mul := _, mul_one := _, mul_assoc := _, gnpow := graded_monoid.gcomm_monoid.gnpow (set_like.gcomm_monoid A), gnpow_zero' := _, gnpow_succ' := _, nat_cast := direct_sum.gsemiring.nat_cast (set_like.gsemiring A), nat_cast_zero := _, nat_cast_succ := _, mul_comm := _}
Build a gring
instance for a collection of additive subgroups.
Equations
- set_like.gring A = {mul := direct_sum.gsemiring.mul (set_like.gsemiring A), mul_zero := _, zero_mul := _, mul_add := _, add_mul := _, one := direct_sum.gsemiring.one (set_like.gsemiring A), one_mul := _, mul_one := _, mul_assoc := _, gnpow := direct_sum.gsemiring.gnpow (set_like.gsemiring A), gnpow_zero' := _, gnpow_succ' := _, nat_cast := direct_sum.gsemiring.nat_cast (set_like.gsemiring A), nat_cast_zero := _, nat_cast_succ := _, int_cast := λ (z : ℤ), ⟨↑z, _⟩, int_cast_of_nat := _, int_cast_neg_succ_of_nat := _}
Build a gcomm_semiring
instance for a collection of additive submonoids.
Equations
- set_like.gcomm_ring A = {mul := graded_monoid.gcomm_monoid.mul (set_like.gcomm_monoid A), mul_zero := _, zero_mul := _, mul_add := _, add_mul := _, one := graded_monoid.gcomm_monoid.one (set_like.gcomm_monoid A), one_mul := _, mul_one := _, mul_assoc := _, gnpow := graded_monoid.gcomm_monoid.gnpow (set_like.gcomm_monoid A), gnpow_zero' := _, gnpow_succ' := _, nat_cast := direct_sum.gring.nat_cast (set_like.gring A), nat_cast_zero := _, nat_cast_succ := _, int_cast := direct_sum.gring.int_cast (set_like.gring A), int_cast_of_nat := _, int_cast_neg_succ_of_nat := _, mul_comm := _}
The canonical ring isomorphism between ⨁ i, A i
and R
Equations
- direct_sum.coe_ring_hom A = direct_sum.to_semiring (λ (i : ι), add_submonoid_class.subtype (A i)) _ _
The canonical ring isomorphism between ⨁ i, A i
and R
Build a galgebra
instance for a collection of submodule
s.
Equations
- submodule.galgebra A = {to_fun := (linear_map.cod_restrict (A 0) (algebra.linear_map S R) _).to_add_monoid_hom, map_one := _, map_mul := _, commutes := _, smul_def := _}
A direct sum of powers of a submodule of an algebra has a multiplicative structure.
The canonical algebra isomorphism between ⨁ i, A i
and R
.
Equations
- direct_sum.coe_alg_hom A = direct_sum.to_algebra S (λ (i : ι), ↥(A i)) (λ (i : ι), (A i).subtype) _ _ _
The supremum of submodules that form a graded monoid is a subalgebra, and equal to the range of
direct_sum.coe_alg_hom
.