Zulip Chat Archive

Stream: Is there code for X?

Topic: Direct Sum of Representations


Atticus Kuhn (Feb 18 2023 at 16:38):

It is a fact in representation theory that the direct sum of representations is a representation. I am trying to prove this fact. I looked in /representation_theory/* , but could not find it, so I decided to try proving it myself. Here is what I have so far

import algebra.module.linear_map
import representation_theory.basic


variables (k G : Type) [comm_semiring k] [monoid G]

def direct_sum_of_representations (i :Type ) (M : i  Type)
[decidable_eq i]
[ Π (j : i), add_comm_monoid (M j) ] [Π (j : i), module k (M j) ] [Π (j : i), representation k G (M j)]
: representation k G (direct_sum i (λ (j : i), M j)) := begin
 exact λg, sorry, sorry, sorry⟩,
end

What is the best way to prove this? I tried using direct_sum.lmk. Any help would be appreciated.

Kevin Buzzard (Feb 18 2023 at 18:42):

It's arguably a construction (ie a definition) rather than a fact (a theorem). You're missing a definition, not a proof.

Kevin Buzzard (Feb 18 2023 at 18:42):

You'll have to look in the API for direct sums to see how to define maps out of and into them

Eric Wieser (Feb 19 2023 at 01:27):

I would guess this is easiest to prove/construct by unfolding docs#representation

Eric Wieser (Feb 19 2023 at 12:16):

import algebra.module.linear_map
import representation_theory.basic

variables {k G : Type} [comm_semiring k] [monoid G]

/-- A more bundled version of `dfinsupp.map_range.linear_map`. -/
def dfinsupp.map_range.module_End {ι : Type*} {M : ι  Type*}
  [decidable_eq ι] [Π j, add_comm_monoid (M j)] [Π j, module k (M j)] :
  (Π i, module.End k (M i)) →* module.End k (Π₀ i, M i) :=
{ to_fun := dfinsupp.map_range.linear_map,
  map_one' := dfinsupp.map_range.linear_map_id,
  map_mul' := dfinsupp.map_range.linear_map_comp }

def direct_sum_of_representations (i :Type*) (M : i  Type*)
  [decidable_eq i]
  [Π j, add_comm_monoid (M j)] [Π j, module k (M j)]
  (r : Π j, representation k G (M j)) :
  representation k G (direct_sum i (λ (j : i), M j)) :=
dfinsupp.map_range.module_End.comp (pi.monoid_hom r)

Atticus Kuhn (Feb 19 2023 at 15:37):

Thank you both for your help. I can see that I will have to look more into dfinsupp in the future.

Eric Wieser (Feb 19 2023 at 15:39):

Note that docs#direct_sum is just a thin layer on top of docs#dfinsupp; if the API you want is missing for direct_sum, it probably exists for dfinsupp instead

Atticus Kuhn (Feb 20 2023 at 17:06):

Do you think I should make a PR to mathlib with this? representation_theory.basic has the tensor product of representations, but not the direct sum of representations.

Kevin Buzzard (Feb 20 2023 at 17:54):

We're in the middle of a big port right now, which makes things a bit more complicated than usual.

Eric Wieser (Feb 20 2023 at 17:57):

It's also worth asking whether by "direct sum" you perhaps actually want representation k G (Π i, M j), which I think we have somewhere too


Last updated: Dec 20 2023 at 11:08 UTC