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 R→Mn(EndR(I))R \to M_n(\mathrm{End}_R(I)), which sends rr to m↦rmm \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 k→EndR(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 k→EndR(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 Rop≅EndR(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:A→EndK(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 Rop≅EndR(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 m↦rmm \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 R≅InR\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 m↦rmm \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 R→EndR(I)R\to\mathrm{End}_R(I) in general if RR is noncommutative, since m↦rmm\mapsto rm wouldn't be RR-linear.

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

Sorry I'm saying nonsense
I think I mean R→EndEndR(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