Group Rings #
We construct the Group ring R[G] given a group G and a ring R, both having
decidable equality. The ring structures is constructed using the (implicit) universal
property of R-modules. As a check on our definitions, R[G] is proved to be a Ring.
We first define multiplication on formal sums. We prove many properties that are used both
to show invariance under elementary moves and to prove that R[G] is a ring.
Multiplication on formal sums #
multiplication by a monomial
Equations
Instances For
Properties of multiplication on formal sums #
Induced product on the quotient #
Quotient in second argument for group ring multiplication
Equations
- LeanPool.Polylean.GroupRing.mulAux s = Quotient.lift (fun (x : LeanPool.Polylean.FormalSum R G) => ⟦s.mul x⟧) ⋯
Instances For
invariance under moves of multiplication by monomials
invariance under moves for the first argument for multipilication
The empty right factor is preserved by elementary moves in the first factor.
multiplication for free modules
Equations
- LeanPool.Polylean.GroupRing.mul = Quotient.lift (fun (s : LeanPool.Polylean.FormalSum R G) (t : R[G]) => LeanPool.Polylean.GroupRing.mulAux s t) ⋯
Instances For
The Ring Structure #
Equations
Equations
- One or more equations did not get rendered due to their size.
The group ring is a ring
Equations
- One or more equations did not get rendered due to their size.
Inclusions of the group and ring into the group ring #
Product R → G → R[G], r ↦ g ↦ r ⬝ g; used only in verification results.
Scalar multiplication by a group element is represented by the singleton formal sum.
Monoid homomorphism from G to R[G] given by g ↦ 1 ⬝ g
Equations
- LeanPool.Polylean.groupInclusionHom G = { toFun := LeanPool.Polylean.baseInclusion 1, map_one' := ⋯, map_mul' := ⋯ }
Instances For
As a function groupInclusionHom is g ↦ 1 ⬝ g
The monoid homomorphism G → R[G], g ↦ 1 ⬝ g is injective if 1 ≠ 0 in R.
For a field F the monoid homomorphism G → F[G], g ↦ 1 ⬝ g is injective.
The ring homomorphism R → R[G] given by a ↦ a ⬝ 1
Equations
- LeanPool.Polylean.ringInclusionHom G = { toFun := LeanPool.Polylean.coeffInclusion 1, map_one' := ⋯, map_mul' := ⋯, map_zero' := ⋯, map_add' := ⋯ }
Instances For
As a function, ringInclusionHom is r ↦ r ⬝ 1
The ring homomorphism R → R[G] given by a ↦ a ⬝ 1 is injective