Zulip Chat Archive

Stream: Is there code for X?

Topic: Wedderburn-Artin theorem


Stepan Nesterov (Jan 12 2026 at 16:13):

The following is the mathlib proof of the Wedderburn-Artin theorem in mathlib:

/-- The **Wedderburn–Artin Theorem**: an Artinian simple ring is isomorphic to a matrix
ring over the opposite of the endomorphism ring of its simple module. -/
theorem exists_ringEquiv_matrix_end_mulOpposite :
     (n : ) (_ : NeZero n) (I : Ideal R) (_ : IsSimpleModule R I),
      Nonempty (R ≃+* Matrix (Fin n) (Fin n) (Module.End R I)ᵐᵒᵖ) := by
  have n, hn, S, hS, e⟩⟩ := (isIsotypic R R).linearEquiv_fun
  refine n, hn, S, hS, ⟨.trans (.opOp R) <| .trans (.op ?_) (.symm .mopMatrix)⟩⟩
  exact .trans (.moduleEndSelf R) <| .trans e.conjRingEquiv (endVecRingEquivMatrixEnd ..)

Is there a way to extract the fact that specifically the map RMn(EndR(I))R \to M_n(\mathrm{End}_R(I)), which sends rr to mrmm \mapsto rm, is an isomorphism? The reason I need this is to prove that a group representation is absolutely irreducible iff its base change to the algebraic closure is absolutely irreducible. The informal proof runs as follows: if VV is an irreducible representation of GG over kk, then by Schur's lemma we have Endk[G](V)=k\mathrm{End}_{\overline{k}[G]}(V) = \overline{k}. Then the natural map k[G]Mn(k)\overline{k}[G] \to M_n(\overline{k}) is surjective by the claim above. Hence for any field extension FF of k\overline{k}, the map F[G]Mn(F)F[G] \to M_n(F) is surjective, hence VFV_F is irreducible.

Junyan Xu (Jan 12 2026 at 17:11):

Your outline seems to be missing the MulOpposite.
I think absolute irreducibility is equivalent to kEndR(I)k\to\mathrm{End}_R(I) being bijective?

Stepan Nesterov (Jan 12 2026 at 17:12):

Junyan Xu said:

Your outline seems to be missing the MulOpposite.
I think absolute irreducibility is equivalent to kEndR(I)k\to\mathrm{End}_R(I) being bijective?

Yes and the harder direction boils down to exactly this explicit form of Artin-Wedderburn

Stepan Nesterov (Jan 12 2026 at 17:17):

Oh wait I think I see what you're saying.
An alternative proof could be "If endomorphisms of the representation are more than kk, then after base change to k\overline{k}, there is an idempotent endomorphism, hence, a subrepresentation"

Junyan Xu (Jan 12 2026 at 17:20):

Lorenz invokes the Jacobson density theorem (should be easy from mathlib):
image.png
image.png

Kevin Buzzard (Jan 12 2026 at 17:20):

You can't extract the fact that you state from the theorem/proof as it stands (the proof is forgotten), but the proof is giving you an explicit isomorphism so you could rewrite everything as a def and get some kind of map, e.g.

noncomputable def AW_n :  := (isIsotypic R R).linearEquiv_fun.choose

instance AW_n_neZero : NeZero (AW_n R) := (isIsotypic R R).linearEquiv_fun.choose_spec.1

etc etc; you'll finish with

def AW_map : R ≃+* Matrix (Fin (AW_n R)) (Fin (AW_n R) (Module.End R (AW_I R)ᵐᵒᵖ := <what it says in the proof>

Junyan Xu (Jan 12 2026 at 17:22):

The proof of Wedderburn Artin goes like: RR is isomorphic to InI^n as RR-modules, so RopEndR(R)EndR(In)Mn(EndR(I))R^\mathrm{op}\cong \mathrm{End}_R(R)\cong \mathrm{End}_R(I^n)\cong M_n(\mathrm{End}_R(I)) as rings.

Stepan Nesterov (Jan 12 2026 at 17:23):

Junyan Xu said:

Lorenz invokes the Jacobson density theorem (should be easy from mathlib):
image.png
image.png

If VV is a semisimple AA-module this implies the map T:AEndK(V)T : A \to \mathrm{End}_K(V) is surjective -- that's exactly my question

Stepan Nesterov (Jan 12 2026 at 17:24):

I tried searching "Jacobson density" on leansearch.net, but didn't find anything

Junyan Xu (Jan 12 2026 at 17:26):

You just need to formalize this:
image.png

Stepan Nesterov (Jan 12 2026 at 17:28):

Junyan Xu said:

The proof of Wedderburn Artin goes like: RR is isomorphic to InI^n as RR-modules, so RopEndR(R)EndR(In)Mn(EndR(I))R^\mathrm{op}\cong \mathrm{End}_R(R)\cong \mathrm{End}_R(I^n)\cong M_n(\mathrm{End}_R(I)) as rings.

Are you saying that in the mathlib proof of Artin-Wedderburn, the isomorphism constructed is not rr to mrmm \mapsto rm?

Kevin Buzzard (Jan 12 2026 at 17:30):

For sure it's .trans (.opOp R) <| .trans (.op (.trans (.moduleEndSelf R) <| .trans e.conjRingEquiv (endVecRingEquivMatrixEnd ..))) (.symm .mopMatrix)

Kevin Buzzard (Jan 12 2026 at 17:35):

and that seems to be what Junyan wrote. Note that the isomorphism RInR\cong I^n is unspecified; it's coming from (isIsotypic R R).linearEquiv_fun which again is just an existence statement.

Junyan Xu (Jan 12 2026 at 17:35):

(deleted)

Junyan Xu (Jan 12 2026 at 17:44):

Stepan Nesterov said:

Are you saying that in the mathlib proof of Artin-Wedderburn, the isomorphism constructed is not rr to mrmm \mapsto rm?

RR acts on RR by right multiplication (the first ring isomorphism), and this action doesn't fix the copies of II s.
There is no map REndR(I)R\to\mathrm{End}_R(I) in general if RR is noncommutative, since mrmm\mapsto rm wouldn't be RR-linear.

Stepan Nesterov (Jan 12 2026 at 17:45):

Sorry I'm saying nonsense
I think I mean REndEndR(I)(I)R \to \mathrm{End}_{\mathrm{End}_R(I)}(I)

Stepan Nesterov (Jan 12 2026 at 17:45):

Where II is a right EndR(I)\mathrm{End}_R(I)-module

Junyan Xu (Jan 12 2026 at 17:52):

So this is the setting of Jacobson density instead; the proof of Wedderburn Artin doesn't involve such nested End.

Stepan Nesterov (Jan 12 2026 at 17:52):

And is Jacobson density not in mathlib?

Junyan Xu (Jan 12 2026 at 17:54):

not yet

Junyan Xu (Jan 12 2026 at 17:55):

Would you like me to do it? I'm probably more familiar with the IsSemisimpleModule API.

Stepan Nesterov (Jan 12 2026 at 17:57):

Can you give me an idiomatic statement and I can try to prove what I want with sorried Jacobson density?

Stepan Nesterov (Jan 12 2026 at 17:59):

(I might even say that the proof of Jacobson density is knownin1980s if I'm inside FLT :thinking: )

Junyan Xu (Jan 12 2026 at 18:16):

import Mathlib.RingTheory.SimpleModule.Basic

open Module (End)

variable {A M : Type*} [Ring A] [AddCommGroup M] [Module A M] [IsSemisimpleModule A M]

theorem jacobson_density (f : End (End A M) M) (s : Finset M) :
     a : A,  m  s, f m = a  m := by
  sorry

theorem Module.Finite.jacobson_density [Module.Finite (End A M) M] :
    Function.Surjective (Module.toModuleEnd A (S := End A M) M) := by
  sorry

Stepan Nesterov (Jan 12 2026 at 18:17):

Junyan Xu said:

import Mathlib.RingTheory.SimpleModule.Basic

open Module (End)

variable {A M : Type*} [Ring A] [AddCommGroup M] [Module A M] [IsSemisimpleModule A M]

theorem jacobson_density (s : Finset M) :
    letI C := End A M
     f : End C M,  a : A,  m  s, f m = a  m := by
  sorry

theorem Module.Finite.jacobson_density [Module.Finite (End A M) M] :
    Function.Surjective (Module.toModuleEnd A (S := End A M) M) := by
  sorry

Ok thank you so much!

Junyan Xu (Jan 12 2026 at 18:19):

changed the statement a bit; it's wasteful to introduce a name for C if it's only used once :)

Junyan Xu (Jan 13 2026 at 01:12):

#33906

Junyan Xu (Jan 13 2026 at 01:12):

Correction: Module.toModuleEnd A (S := End A M) M above should be Module.toModuleEnd (End A M) (S := A) M (the original statement is solved by id_surjective)


Last updated: Feb 28 2026 at 14:05 UTC