Internally graded rings and algebras #
This module provides gsemiring
and gcomm_semiring
instances for a collection of subobjects A
when a set_like.graded_monoid
instance is available:
- on
add_submonoid R
s:add_submonoid.gsemiring
,add_submonoid.gcomm_semiring
. - on
add_subgroup R
s:add_subgroup.gsemiring
,add_subgroup.gcomm_semiring
. - on
submodule S R
s:submodule.gsemiring
,submodule.gcomm_semiring
.
With these instances in place, it provides the bundled canonical maps out of a direct sum of subobjects into their carrier type:
direct_sum.add_submonoid_coe_ring_hom
(aring_hom
version ofdirect_sum.add_submonoid_coe
)direct_sum.add_subgroup_coe_ring_hom
(aring_hom
version ofdirect_sum.add_subgroup_coe
)direct_sum.submodule_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.submodule_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.submodule_is_internal
for providing an explicit decomposition function.
When complete_lattice.independent (set.range A)
(a weaker condition than
direct_sum.submodule_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
From add_submonoid
s #
Build a gsemiring
instance for a collection of add_submonoid
s.
Equations
- add_submonoid.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' := _}
Build a gcomm_semiring
instance for a collection of add_submonoid
s.
Equations
- add_submonoid.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' := _, mul_comm := _}
The canonical ring isomorphism between ⨁ i, A i
and R
Equations
- direct_sum.submonoid_coe_ring_hom A = direct_sum.to_semiring (λ (i : ι), (A i).subtype) _ _
The canonical ring isomorphism between ⨁ i, A i
and R
From add_subgroup
s #
Build a gsemiring
instance for a collection of add_subgroup
s.
Equations
- add_subgroup.gsemiring A = have i' : set_like.graded_monoid (λ (i : ι), (A i).to_add_submonoid), from _, add_submonoid.gsemiring (λ (i : ι), (A i).to_add_submonoid) i'
Build a gcomm_semiring
instance for a collection of add_subgroup
s.
Equations
- add_subgroup.gcomm_semiring A = have i' : set_like.graded_monoid (λ (i : ι), (A i).to_add_submonoid), from _, add_submonoid.gsemiring (λ (i : ι), (A i).to_add_submonoid) i'
The canonical ring isomorphism between ⨁ i, A i
and R
.
Equations
- direct_sum.subgroup_coe_ring_hom A = direct_sum.to_semiring (λ (i : ι), (A i).subtype) _ _
From submodules
s #
Build a gsemiring
instance for a collection of submodule
s.
Equations
- submodule.gsemiring A = have i' : set_like.graded_monoid (λ (i : ι), (A i).to_add_submonoid), from _, add_submonoid.gsemiring (λ (i : ι), (A i).to_add_submonoid) i'
Build a gsemiring
instance for a collection of submodule
s.
Equations
- submodule.gcomm_semiring A = have i' : set_like.graded_monoid (λ (i : ι), (A i).to_add_submonoid), from _, add_submonoid.gcomm_semiring (λ (i : ι), (A i).to_add_submonoid) i'
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.submodule_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.submodule_coe_alg_hom
.