Documentation

UnitConjecture.GroupRing

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 #

def FormalSum.mulMonom {R : Type} [inst : Ring R] {G : Type} [inst : Group G] (b : R) (h : G) :
FormalSum R GFormalSum R G

multiplication by a monomial

Equations
def FormalSum.mul {R : Type} [inst : Ring R] {G : Type} [inst : Group G] (fst : FormalSum R G) :
FormalSum R GFormalSum R G

multiplication for formal sums

Equations

Properties of multiplication on formal sums #

theorem GroupRing.mul_monom_zero {R : Type} [inst : Ring R] {G : Type} [inst : Group G] [inst : DecidableEq G] (g : G) (x₀ : G) (s : FormalSum R G) :

multiplication by the zero monomial

theorem GroupRing.mul_monom_dist {R : Type} [inst : Ring R] {G : Type} [inst : Group G] [inst : DecidableEq G] (b : R) (h : G) (x₀ : G) (s₁ : FormalSum R G) (s₂ : FormalSum R G) :

distributivity of multiplication by a monomial

theorem GroupRing.mul_dist {R : Type} [inst : Ring R] {G : Type} [inst : Group G] [inst : DecidableEq G] (x₀ : G) (s₁ : FormalSum R G) (s₂ : FormalSum R G) (s₃ : FormalSum R G) :
FormalSum.coords (FormalSum.mul s₁ (s₂ ++ s₃)) x₀ = FormalSum.coords (FormalSum.mul s₁ s₂) x₀ + FormalSum.coords (FormalSum.mul s₁ s₃) x₀

right distributivity

theorem GroupRing.mul_monom_monom_assoc {R : Type} [inst : Ring R] {G : Type} [inst : Group G] [inst : DecidableEq G] {x : G} (a : R) (b : R) (h : G) (x₀ : G) (s : FormalSum R G) :

associativity with two terms monomials

theorem GroupRing.mul_monom_assoc {R : Type} [inst : Ring R] {G : Type} [inst : Group G] [inst : DecidableEq G] (b : R) (h : G) (x₀ : G) (s₁ : FormalSum R G) (s₂ : FormalSum R G) :

associativity with one term a monomial

theorem GroupRing.mul_monom_add {R : Type} [inst : Ring R] {G : Type} [inst : Group G] [inst : DecidableEq G] (b₁ : R) (b₂ : R) (h : G) (x₀ : G) (s : FormalSum R G) :

left distributivity for multiplication by a monomial

theorem GroupRing.mul_zero_cons {R : Type} [inst : Ring R] {G : Type} [inst : Group G] [inst : DecidableEq G] {h : G} (s : FormalSum R G) (t : FormalSum R G) :

multiplication equivalent when adding term with 0 coefficient

Induced product on the quotient #

def GroupRing.mulAux {R : Type} [inst : Ring R] [inst : DecidableEq R] {G : Type} [inst : Group G] [inst : DecidableEq G] :
FormalSum R GR[G]R[G]

Quotient in second argument for group ring multiplication

Equations
  • One or more equations did not get rendered due to their size.
theorem GroupRing.mul_monom_invariant {R : Type} [inst : Ring R] [inst : DecidableEq R] {G : Type} [inst : Group G] [inst : DecidableEq G] (b : R) (h : G) (x₀ : G) (s₁ : FormalSum R G) (s₂ : FormalSum R G) (rel : ElementaryMove R G s₁ s₂) :

invariance under moves of multiplication by monomials

theorem GroupRing.first_arg_invariant {R : Type} [inst : Ring R] [inst : DecidableEq R] {G : Type} [inst : Group G] [inst : DecidableEq G] (s₁ : FormalSum R G) (s₂ : FormalSum R G) (t : FormalSum R G) (rel : ElementaryMove R G s₁ s₂) :

invariance under moves for the first argument for multipilication

def GroupRing.mul {R : Type} [inst : Ring R] [inst : DecidableEq R] {G : Type} [inst : Group G] [inst : DecidableEq G] :
R[G]R[G]R[G]

multiplication for free modules

Equations
  • One or more equations did not get rendered due to their size.

The Ring Structure #

instance GroupRing.groupRingMul {R : Type} [inst : Ring R] [inst : DecidableEq R] {G : Type} [inst : Group G] [inst : DecidableEq G] :
Mul (R[G])
Equations
  • GroupRing.groupRingMul = { mul := GroupRing.mul }
instance GroupRing.instOneFreeModule {R : Type} [inst : Ring R] {G : Type} [inst : Group G] [inst : DecidableEq G] :
One (R[G])
Equations
instance GroupRing.instAddCommGroupFreeModule {R : Type} [inst : Ring R] {G : Type} [inst : DecidableEq G] :
Equations
  • GroupRing.instAddCommGroupFreeModule = AddCommGroup.mk (_ : ∀ (x₁ x₂ : R[G]), x₁ + x₂ = x₂ + x₁)
instance GroupRing.instRingFreeModule {R : Type} [inst : Ring R] [inst : DecidableEq R] {G : Type} [inst : Group G] [inst : DecidableEq G] :
Ring (R[G])

The group ring is a ring

Equations