Hi Jesus, Dan, On Thu, Oct 04, 2012 at 06:51:16AM -0700, JesusTorrado wrote: > Particle physicists love coroot style (we call it 'Dynkin labels'), so the > possibility of using it for indicating representations in a > WeylCharacterRing is great! > > For consistency, what about adding a style='coroots' for > weight_multiplicities() too? > > ... > > What do you think? Is it useful? Would there be a quicker way? Is it > already somehow implemented and I do not know it?
Thanks for your well laid out request! If I understand properly, particle physicists like to represent their weights as linear combinations of fundamental weights, and in dense notations. I.e. (-1,1) is -Lambda_1 + Lambda_2. Is that right? In this case, rather than inserting options here and there, I would recommend the following approach which would give a flexible environment that everyone could customize to his/her taste: (1) Generalize WeylCharacterRing to be parametrized by any realization L of a weight lattice. Then, all the weights would be represented as elements of L. Of course, the associated weight ring would use the same realization: sage: A2 = WeylCharacterRing(RootSystem(["A",2]).weight_lattice()) sage: rep = A2(1,0) sage: rep.weight_multiplicities() {Lambda1:1, Lambda2-Lambda1: 1, -Lambda2: 1 sage: A2 = WeylCharacterRing(RootSystem(["A",2]).ambient_lattice()) sage: rep = A2(2/3, -1/3, -1/3) # or something similar sage: rep.weight_multiplicities() {(2/3, -1/3, -1/3): 1, (-1/3, 2/3, -1/3): 1, (-1/3, -1/3, 2/3): 1} Of course, WeylCharacterRing("A2", style="coroots") and WeylCharacterRing("A2") would be shorthands for the above. In finite types, one could even think, about: A2 = WeylCharacterRing("A2", RootSystem(["A",2]).root_space()) But that's another story ... (2) Make root/weight/ambient space/lattices (and in general CombinatorialFreeModule) configurable, so that one could choose between sparse or dense notation: sage: L = RootSystem(["A",2]).weight_lattice(repr="sparse") sage: L.fundamental_weight(1) Lambda1 sage: L = RootSystem(["A",2]).weight_lattice(repr="dense") sage: L.fundamental_weight(1) (1,0) Probably we would want to make this configurable for all lattices in a given session. Something like sage: RootSystem.set_options(repr="dense") Dan: in the code for the WeylCharacterRing, do you foresee any piece of code that would not work generically for any realization of the weight lattice? Note: at some point, we probably will need to introduce a new object in Sage to model not only a realization of the weight lattice (i.e. a space that embeds the weight lattice), but the weight lattice itself, embedded in this larger space. That in order to state that the weight ring is the group algebra of the weight lattice itself, and not of the larger space in which it's embedded. By the way: I did not have time to comment on your optimization patch for the WeylCharacterRing. If I am understanding it properly, it amounts to having a fast data structure for weights, made of lists of int's, right? Basically, this is implementing a fast dense data structure for free modules over ZZ. Once your patch is in Sage, we should think about generalizing it: - Synchronize with Matthieu's work to implement fast dense (Combinatorial)FreeModule over ZZ - Use this for the root/weight/ambient lattices Dan: unless it's more urgent than this, all the above would be a good project to work on together at ICERM. Cheers, Nicolas -- Nicolas M. ThiƩry "Isil" <nthi...@users.sf.net> http://Nicolas.Thiery.name/ -- You received this message because you are subscribed to the Google Groups "sage-combinat-devel" group. To post to this group, send email to sage-combinat-devel@googlegroups.com. To unsubscribe from this group, send email to sage-combinat-devel+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/sage-combinat-devel?hl=en.