Zulip Chat Archive

Stream: Is there code for X?

Topic: G/nG is a finite group of size n^d


Yaël Dillies (Oct 14 2024 at 07:50):

Suppose G is an abelian group free of rank d as a -module. Then G/nG is a finite group of rank d as a ZMod n-module. Is this easy to get from mathlib? We have a proof in PFR, but it's quite horrible.

Yaël Dillies (Oct 14 2024 at 07:51):

import Mathlib.LinearAlgebra.Dimension.Finrank
import Mathlib.LinearAlgebra.FreeModule.Basic
import Mathlib.RingTheory.Finiteness

variable {G : Type*} [AddCommGroup G] [Module.Free  G] [Module.Finite  G] {n : }

variable (G n) in
abbrev modN : Type _ := G  LinearMap.range (LinearMap.lsmul  G n)

/-- If `G` is a rank `d` free `ℤ`-module, then `G/nG` is a finite group of cardinality `n ^ d`. -/
example : Finite (modN G n)  Nat.card (modN G n) = n ^ Module.finrank  G := sorry

Kevin Buzzard (Oct 14 2024 at 07:54):

One could use the iso G/nGGZZ/nZ.G/nG\cong G\otimes_{\Z}\Z/n\Z.

Yaël Dillies (Oct 14 2024 at 07:55):

And can this be generalised away from ?

Yaël Dillies (Oct 14 2024 at 07:55):

Kevin Buzzard said:

One could use the iso G/nGGZZ/nZ.G/nG\cong G\otimes_{\Z}\Z/n\Z.

:idea: Does this have a name in mathlib?

Riccardo Brasca (Oct 14 2024 at 08:32):

We have Module.Free.tensor

Riccardo Brasca (Oct 14 2024 at 08:33):

see its proof to get the explicit basis if you need the rank

Riccardo Brasca (Oct 14 2024 at 08:36):

no sorry, this is not what you need

Riccardo Brasca (Oct 14 2024 at 08:36):

we may have something like that in flt-regular

Riccardo Brasca (Oct 14 2024 at 08:36):

@Andrew Yang

Andrew Yang (Oct 14 2024 at 09:51):

Not sure but the iso Kevin mentioned is
docs#quotTensorEquivQuotSMul


Last updated: May 02 2025 at 03:31 UTC