Zulip Chat Archive
Stream: Is there code for X?
Topic: A question about module
Edison Xie (Jun 24 2024 at 11:07):
I'm currently trying to prove the uniqueness of Wedderburn-Artin theorem and I'm stuck at a proposition as below:
import Mathlib.Tactic
local notation "M[" ι "," R "]" => Matrix ι ι R
variable (K : Type*) [Field K](B : Type*) [Field K] [Ring B] [Algebra K B] [FiniteDimensional K B]
instance (M : Type*) [AddCommGroup M] [Module B M] :
Algebra K (Module.End B M) where
smul := fun k x =>
{ toFun := fun m => x $ (algebraMap K B k) • m
map_add' := fun m1 m2 => by simp
map_smul' := fun b m => by
simp only [LinearMapClass.map_smul, RingHom.id_apply]
rw [← MulAction.mul_smul, Algebra.commutes k b, MulAction.mul_smul] }
toFun k :=
{ toFun := fun m => algebraMap K B k • m
map_add' := fun m1 m2 => by simp
map_smul' := fun m1 m2 => by
simp only [RingHom.id_apply]
rw [← MulAction.mul_smul, Algebra.commutes k m1, MulAction.mul_smul] }
map_one' := by simp only [_root_.map_one, one_smul]; rfl
map_mul' a b := by
ext m
simp only [_root_.map_mul, LinearMap.coe_mk, AddHom.coe_mk, LinearMap.mul_apply,
LinearMapClass.map_smul]
rw [← MulAction.mul_smul, Algebra.commutes, MulAction.mul_smul]
map_zero' := by simp only [map_zero, zero_smul]; rfl
map_add' a b := by
ext m
simp only [map_add, add_smul, LinearMap.coe_mk, AddHom.coe_mk, LinearMap.add_apply]
commutes' a x := by
ext m
simp only [RingHom.coe_mk, MonoidHom.coe_mk, OneHom.coe_mk, LinearMap.mul_apply,
LinearMap.coe_mk, AddHom.coe_mk, LinearMapClass.map_smul]
smul_def' a x := by
ext m
change x _ = _
simp only [_root_.map_smul, RingHom.coe_mk, MonoidHom.coe_mk, OneHom.coe_mk,
LinearMap.mul_apply, LinearMap.coe_mk, AddHom.coe_mk]
def test' (D : Type*) [DivisionRing D] [Algebra K D] (m : ℕ) (hm : m ≠ 0)
(Wdb : B ≃ₐ[K] M[Fin m, D]) (M : Type*)
[AddCommGroup M] [Module B M] [IsSimpleModule B M] :
Module.End B M ≃ₐ[K] Dᵐᵒᵖ := by sorry
And the math proof is on stack project lemma 11.5.1 https://stacks.math.columbia.edu/tag/074J
Edison Xie (Jun 24 2024 at 11:10):
A little help on test'
would be appreciated
Kim Morrison (Jun 24 2024 at 11:13):
Just noting that for your first instance you can generalize all the way to
variable (K : Type*) [CommSemiring K](B : Type*) [Semiring B] [Algebra K B]
instance (M : Type*) [AddCommMonoid M] [Module B M] :
Algebra K (Module.End B M) where
Kim Morrison (Jun 24 2024 at 11:13):
I'm very surprised this doesn't already exist!
Kim Morrison (Jun 24 2024 at 11:16):
The stacks link you gave isn't exactly the statement you're trying to prove. How about you write out an informal proof first?
Edison Xie (Jun 24 2024 at 11:17):
Kim Morrison said:
I'm very surprised this doesn't already exist!
Yes so do I
Edison Xie (Jun 24 2024 at 11:20):
Kim Morrison said:
The stacks link you gave isn't exactly the statement you're trying to prove. How about you write out an informal proof first?
sorry for the confusion the proof should be in https://stacks.math.columbia.edu/tag/074E here, lemma 11.4.6 (4)
Kim Morrison (Jun 24 2024 at 11:32):
Do you have the equivalence from 11.4.5 set up?
Edison Xie (Jun 24 2024 at 13:26):
[Quoting…]
Yes it's morita equivalence I have a file for that
Edison Xie (Jun 24 2024 at 13:29):
Eric Wieser (Jun 24 2024 at 20:23):
Kim Morrison said:
I'm very surprised this doesn't already exist!
@loogle Algebra _ (Module.End _ _)
loogle (Jun 24 2024 at 20:23):
:search: Module.End.instAlgebra
Eric Wieser (Jun 24 2024 at 20:24):
Is that not sufficiently general here?
Eric Wieser (Jun 24 2024 at 20:25):
I think the issue here is that you should resist the urge to construct new actions via composition with algebraMap
, and instead assume the action already exists, and enforce it is precisely this action via IsScalarTower
Kim Morrison (Jun 25 2024 at 01:08):
That is ... unintuitive but helpful!
Last updated: May 02 2025 at 03:31 UTC