Commit 2021-03-04 14:43 a8d285cc
View on Github →feat(algebra/direct_sum_graded): endow direct_sum with a ring structure (#6053)
To quote the module docstring
This module provides a set of heterogenous typeclasses for defining a multiplicative structure over
⨁ i, A isuch that(*) : A i → A j → A (i + j); that is to say,Aforms an additively-graded ring. The typeclasses are:
direct_sum.ghas_one Adirect_sum.ghas_mul Adirect_sum.gmonoid Adirect_sum.gcomm_monoid ARespectively, these imbue the direct sum
⨁ i, A iwith:
has_onemul_zero_class,distribsemiring,ringcomm_semiring,comm_ringAdditionally, this module provides helper functions to construct
gmonoidandgcomm_monoidinstances for:
A : ι → submonoid S:direct_sum.ghas_one.of_submonoids,direct_sum.ghas_mul.of_submonoids,direct_sum.gmonoid.of_submonoids,direct_sum.gcomm_monoid.of_submonoidsA : ι → submonoid S:direct_sum.ghas_one.of_subgroups,direct_sum.ghas_mul.of_subgroups,direct_sum.gmonoid.of_subgroups,direct_sum.gcomm_monoid.of_subgroupsIf the
A iare disjoint, these provide a gradation of⨆ i, A i, and the mapping⨁ i, A i →+ ⨆ i, A ican be obtained asdirect_sum.to_monoid (λ i, add_submonoid.inclusion $ le_supr A i).