Ticket #8442: trac_8442-lie-rebased-4.5.2.2.patch

File trac_8442-lie-rebased-4.5.2.2.patch, 129.9 KB (added by bump, 3 years ago)
  • MANIFEST.in

    # HG changeset patch
    # User Daniel Bump <bump@match.stanford.edu>
    # Date 1282433435 25200
    # Node ID fc7cc70533c44701cdc21537ee1721dd396b8624
    # Parent  5b338f2e484f2065d3d30d47bc204d6e9ed13d12
    trac_8442-rebased-4.5.2.patch
    
    diff -r 5b338f2e484f -r fc7cc70533c4 MANIFEST.in
    a b  
    3434include doc/fr/a_tour_of_sage/eigen_plot.png 
    3535include doc/fr/a_tour_of_sage/sin_plot.png 
    3636recursive-include doc/en/reference/media * 
     37recursive-include doc/en/thematic_tutorials/media * 
    3738recursive-include doc/common/static * 
    3839recursive-include doc/common/themes * 
    3940include sage/ext/mac-app/README 
  • new file doc/en/thematic_tutorials/bibliography.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/bibliography.rst
    - +  
     1============ 
     2Bibliography 
     3============ 
     4 
     5.. [BumpNakasuji2010] D. Bump and M. Nakasuji. Casselman's basis of 
     6   Iwahori vectors and the Bruhat order. arXiv:1002.2996, 
     7   http://arxiv.org/abs/1002.2996. 
     8 
     9.. [Carrell1994] J. B. Carrell. The Bruhat graph of a Coxeter group, a 
     10   conjecture of Deodhar, and rational smoothness of Schubert varieties. In 
     11   *Algebraic Groups and Their Generalizations: Classical Methods*, 
     12   AMS Proceedings of Symposia in Pure Mathematics, 56, 53--61, 1994. 
     13 
     14.. [Casselman1980] W. Casselman. The unramified principal series of 
     15   `\mathfrak{p}`-adic groups I: The spherical function. *Compositio 
     16   Mathematica*, 40(3):387--406, 1980. 
     17 
     18.. [CormenEtAl2001] T. H. Cormen, C. E. Leiserson, R. L. Rivest, and 
     19   C. Stein. *Introduction to Algorithms*. The MIT Press, USA, 2nd 
     20   edition, 2001. 
     21 
     22.. [Deodhar1977] V. V. Deodhar. Some characterizations of Bruhat 
     23   ordering on a Coxeter group and determination of the relative 
     24   Moebius function. Inventiones Mathematicae, 39(2):187--198, 1977. 
     25 
     26.. [Dyer1993] M. J. Dyer. The nil Hecke ring and Deodhar's conjecture 
     27   on Bruhat intervals. Inventiones Mathematicae, 111(1):571--574, 1993. 
     28 
     29.. [FauserEtAl2006] B. Fauser, P. D. Jarvis, R. C. King, and 
     30   B. G. Wybourne. New branching rules induced by plethysm. *Journal of 
     31   Physics A*. 39(11):2611--2655, 2006. 
     32 
     33.. [Fulton1997] W. Fulton. *Young Tableaux*. Cambridge University 
     34   Press, 1997. 
     35 
     36.. [HainesEtAl2009] T. J. Haines, R. E. Kottwitz, and 
     37   A. Parsad. Iwahori-Hecke Algebras. arXiv:math/0309168, 
     38   http://arxiv.org/abs/math/0309168. 
     39 
     40.. [HongKang2002] J. Hong and S.-J. Kang. *Introduction to Quantum 
     41   Groups and Crystal Bases*. AMS Graduate Studies in Mathematics, 
     42   American Mathematical Society, 2002. 
     43 
     44.. [HoweEtAl2005] R. Howe, E.-C.Tan, and J. F. Willenbring. Stable 
     45   branching rules for classical symmetric pairs. *Transactions of the 
     46   American Mathematical Society*, 357(4):1601--1626, 2005. 
     47 
     48.. [Iwahori1964] N. Iwahori. On the structure of a Hecke ring of a 
     49   Chevalley group over a finite field. *J. Fac. Sci. Univ. Tokyo 
     50   Sect. I*, 10:215--236, 1964. 
     51 
     52.. [Jimbo1986] M. A. Jimbo. `q`-analogue of `U(\mathfrak{gl}(N+1))`, 
     53   Hecke algebra, and the Yang-Baxter equation. *Lett. Math. Phys*, 
     54   11(3):247--252, 1986. 
     55 
     56.. [Kashiwara1995] M. Kashiwara. On crystal bases. Representations of 
     57   groups (Banff, AB, 1994), 155--197, CMS Conference Proceedings, 16, 
     58   American Mathematical Society, Providence, RI, 1995. 
     59 
     60.. [KashiwaraNakashima1994] M. Kashiwara and T. Nakashima. Crystal 
     61   graphs for representations of the `q`-analogue of classical Lie 
     62   algebras. *Journal Algebra*, 165(2):295--345, 1994. 
     63 
     64.. [King1975] R. C. King. Branching rules for classical Lie groups 
     65   using tensor and spinor methods. *Journal of Physics A*, 
     66   8:429--449, 1975. 
     67 
     68.. [Knuth1970] D. Knuth. Permutations, matrices, and generalized Young 
     69   tableaux. *Pacific Journal of Mathematics*, 34(3):709--727, 1970. 
     70 
     71.. [Knuth1998] D. Knuth. *The Art of Computer 
     72   Programming. Volume 3. Sorting and Searching*. Addison Wesley 
     73   Longman, 1998. 
     74 
     75.. [McKayPatera1981] W. G. McKay and J. Patera. *Tables of Dimensions, 
     76   Indices and Branching Rules for Representations of Simple Lie 
     77   Algebras*. Marcel Dekker, 1981. 
     78 
     79.. [MenezesEtAl1996] A. J. Menezes, P. C. van Oorschot, and 
     80   S. A. Vanstone. *Handbook of Applied Cryptography*. CRC Press, Boca 
     81   Raton, FL, USA, 1996. 
     82 
     83.. [Reeder1992] M. Reeder. On certain Iwahori invariants in the 
     84   unramified principal series. *Pacific Journal of Mathematics*, 
     85   153(2):313--342, 1992. 
     86 
     87.. [Rogawski1985] J. Rogawski, On modules over the Hecke algebra of a 
     88   `p`-adic group. *Inventiones Mathematicae*, 79(3):443--465, 1985. 
     89 
     90.. [Stanley1999] R. P. Stanley. *Enumerative Combinatorics, Volume 
     91   2*. Cambridge University Press, 1999. 
     92 
     93.. [Stinson2006] D. R. Stinson. *Cryptography: Theory and Practice*. 
     94   Chapman & Hall/CRC, Boca Raton, USA, 3rd edition, 2006. 
     95 
     96.. [TrappeWashington2006] W. Trappe and L. C. Washington. *Introduction 
     97   to Cryptography with Coding Theory*. Pearson Prentice Hall, Upper 
     98   Saddle River, New Jersey, USA, 2nd edition, 2006. 
  • doc/en/thematic_tutorials/index.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/index.rst
    a b  
    1717   
    1818   functional_programming 
    1919   group_theory 
     20   lie 
     21   bibliography 
    2022 
    2123Indices and tables 
    2224================== 
  • new file doc/en/thematic_tutorials/lie.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/lie.rst
    - +  
     1.. -*- coding: utf-8 -*- 
     2 
     3============================================= 
     4Lie Methods and Related Combinatorics in Sage 
     5============================================= 
     6 
     7.. MODULEAUTHOR:: Daniel Bump, Stanford University 
     8 
     9These notes explain how to use the mathematical software Sage for 
     10Lie group computations. Sage also contains many combinatorial 
     11algorithms. We will cover only some of these. 
     12 
     13.. toctree:: 
     14   :maxdepth: 2 
     15 
     16   lie/introduction 
     17   lie/lie_basics 
     18   lie/weyl_character_ring 
     19   lie/branching_rules 
     20   lie/weight_ring 
     21   lie/weyl_groups 
     22   lie/crystals 
     23   lie/iwahori_hecke_algebra 
     24   lie/kazhdan_lusztig_polynomials 
  • new file doc/en/thematic_tutorials/lie/branching_rules.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/lie/branching_rules.rst
    - +  
     1------------------------------------- 
     2Maximal Subgroups and Branching Rules 
     3------------------------------------- 
     4 
     5 
     6Branching rules 
     7--------------- 
     8 
     9If `G` is a Lie group and `H` is a subgroup, one often needs to know 
     10how representations of `G` restrict to `H`. Irreducibles usually do 
     11not restrict to irreducibles. In some cases the restriction is regular 
     12and predictable, in other cases it is chaotic. The description of how 
     13irreducibles decompose into irreducibles is called a *branching rule*. 
     14 
     15References for this topic: 
     16 
     17- [FauserEtAl2006]_ 
     18 
     19- [King1975]_ 
     20 
     21- [HoweEtAl2005]_ 
     22 
     23- [McKayPatera1981]_ 
     24 
     25Sage has enough built-in branching rules to handle all cases where `G` 
     26is a classical group, that is, type A, B, C or D. It also has many 
     27built-in cases where `G` is an exceptional group. 
     28 
     29Clearly it is sufficient to consider the case where `H` is a maximal 
     30subgroup of `G`, since if this is known then one may branch down 
     31successively through a series of subgroups, each maximal in its 
     32predecessors. A problem is therefore to understand the maximal 
     33subgroups in a Lie group, and to give branching rules for each. 
     34 
     35For convenience Sage includes some branching rules to non-maximal 
     36subgroups, but strictly speaking these are not necessary. The goal is 
     37to give a sufficient set of built-in branching rules for all maximal 
     38subgroups, and this is accomplished for classical groups (types A, B, 
     39C or D) at least up to rank 8, and for many maximal subgroups of 
     40exceptional groups. 
     41 
     42 
     43Levi subgroups 
     44-------------- 
     45 
     46A Levi subgroup may or may not be maximal. They are easily 
     47classified. If one starts with a Dynkin diagram for `G` and removes a 
     48single node, one obtains a smaller Dynkin diagram, which is the Dynkin 
     49diagram of a smaller subgroup `H`. 
     50 
     51For example, here is the A3 Dynkin diagram:: 
     52 
     53    sage: A3 = WeylCharacterRing("A3") 
     54    sage: A3.dynkin_diagram() 
     55    O---O---O 
     56    1   2   3 
     57    A3 
     58 
     59We see that we may remove the node 3 and obtain A2, or the node 2 and 
     60obtain A1xA1. These correspond to the Levi subgroups `GL(3)` and 
     61`GL(2) \times GL(2)` of `GL(4)`. Let us construct the irreducible 
     62representations of `GL(4)` and branch them down to these down to 
     63`GL(3)` and `GL(2) \times GL(2)`:: 
     64 
     65    sage: A3 = WeylCharacterRing("A3") 
     66    sage: reps = [A3(v) for v in A3.fundamental_weights()]; reps 
     67    [A3(1,0,0,0), A3(1,1,0,0), A3(1,1,1,0)] 
     68    sage: A2 = WeylCharacterRing("A2") 
     69    sage: A1xA1 = WeylCharacterRing("A1xA1") 
     70    sage: [pi.branch(A2, rule="levi") for pi in reps] 
     71    [A2(0,0,0) + A2(1,0,0), A2(1,0,0) + A2(1,1,0), A2(1,1,0) + A2(1,1,1)] 
     72    sage: [pi.branch(A1xA1, rule="levi") for pi in reps] 
     73    [A1xA1(0,0,1,0) + A1xA1(1,0,0,0), 
     74     A1xA1(0,0,1,1) + A1xA1(1,0,1,0) + A1xA1(1,1,0,0), 
     75     A1xA1(1,0,1,1) + A1xA1(1,1,1,0)] 
     76 
     77Let us redo this calculation in coroot notation. As we have explained, 
     78coroot notation does not distinguish between representations of 
     79`GL(4)` that have the same restriction to `SL(4)`, so in effect we are 
     80now working with the groups `SL(4)` and its Levi subgroups `SL(3)` and 
     81`SL(2) \times SL(2)`:: 
     82 
     83    sage: A3 = WeylCharacterRing("A3", style="coroots") 
     84    sage: reps = [A3(v) for v in A3.fundamental_weights()]; reps 
     85    [A3(1,0,0), A3(0,1,0), A3(0,0,1)] 
     86    sage: A2 = WeylCharacterRing("A2", style="coroots") 
     87    sage: A1xA1 = WeylCharacterRing("A1xA1", style="coroots") 
     88    sage: [pi.branch(A2, rule="levi") for pi in reps] 
     89    [A2(0,0) + A2(1,0), A2(0,1) + A2(1,0), A2(0,0) + A2(0,1)] 
     90    sage: [pi.branch(A1xA1, rule="levi") for pi in reps] 
     91    [A1xA1(0,1) + A1xA1(1,0), 2*A1xA1(0,0) + A1xA1(1,1), A1xA1(0,1) + A1xA1(1,0)] 
     92 
     93Now we may observe a distinction difference in branching from 
     94`GL(4) \to GL(2) \times GL(2)` and with 
     95`SL(4) \to SL(2) \times SL(2)`. Consider the middle representation, 
     96which is the six dimensional exterior square. In the coroot notation, 
     97the restriction contained two copies of the trivial representation, 
     98``2*A1xA1(0,0)``. The other way, we had instead three distinct 
     99representations in the restriction, namely ``A1xA1(1,1,0,0)`` and 
     100``A1xA1(0,0,1,1)``, that is, `\det \otimes 1` and `1 \otimes \det`. 
     101 
     102The Levi subgroup ``A1xA1`` is actually not maximal. Indeed, we may 
     103factor the embedding: 
     104 
     105.. MATH:: 
     106 
     107    SL(2) \times SL(2) \to Sp(4) \to SL(4). 
     108 
     109Therfore there are branching rules ``A3 -> C2`` and ``C2 -> A2``, and 
     110we could accomplish the branching in two steps, thus:: 
     111 
     112    sage: A3 = WeylCharacterRing("A3", style="coroots") 
     113    sage: C2 = WeylCharacterRing("C2", style="coroots") 
     114    sage: B2 = WeylCharacterRing("B2", style="coroots") 
     115    sage: D2 = WeylCharacterRing("D2", style="coroots") 
     116    sage: A1xA1 = WeylCharacterRing("A1xA1", style="coroots") 
     117    sage: reps = [A3(fw) for fw in A3.fundamental_weights()] 
     118    sage: [pi.branch(C2, rule="symmetric").branch(B2, rule="isomorphic").\ 
     119    ....:     branch(D2, rule="extended").branch(A1xA1, rule="isomorphic") for pi in reps] 
     120    [A1xA1(0,1) + A1xA1(1,0), 2*A1xA1(0,0) + A1xA1(1,1), A1xA1(0,1) + A1xA1(1,0)] 
     121 
     122As you can see, we've redone the branching rather circuitously this 
     123way, making use of the branching rules ``A3->C2`` and ``B2->D2``, and 
     124two accidental isomorphisms ``C2=B2`` and ``D2=A1xA1``. It is much 
     125easier to go in one step using ``rule="levi"``, but reassuring that we 
     126get the same answer! 
     127 
     128 
     129Subgroups classified by the extended Dynkin diagram 
     130--------------------------------------------------- 
     131 
     132It is also true that if we remove one node from the extended Dynkin 
     133diagram that we obtain the Dynkin diagram of a subgroup. For example:: 
     134 
     135    sage: G2 = WeylCharacterRing("G2", style="coroots") 
     136    sage: G2.extended_dynkin_diagram() 
     137      3 
     138    O=<=O---O 
     139    1   2   0 
     140    G2~ 
     141 
     142Observe that by removing the 1 node that we obtain an A2 Dynkin 
     143diagram. Therefore the exceptional group G2 contains a copy of 
     144`SL(3)`. We branch the two representations of G2 corresponding to the 
     145fundamental weights to this copy of A2:: 
     146 
     147    sage: G2 = WeylCharacterRing("G2", style="coroots") 
     148    sage: A2 = WeylCharacterRing("A2", style="coroots") 
     149    sage: [G2(f).degree() for f in G2.fundamental_weights()] 
     150    [7, 14] 
     151    sage: [G2(f).branch(A2, rule="extended") for f in G2.fundamental_weights()] 
     152    [A2(0,0) + A2(0,1) + A2(1,0), A2(0,1) + A2(1,0) + A2(1,1)] 
     153 
     154The two representations of G2, of degrees 7 and 14 respectively, are 
     155the action on the octonions of trace zero and the adjoint 
     156representation. 
     157 
     158For embeddings of this type, the rank of the subgroup `H` is the same 
     159as the rank of `G`. This is in contrast with embeddings of Levi type, 
     160where `H` has rank one less than `G`. 
     161 
     162 
     163Orthogonal and symplectic subgroups of orthogonal and symplectic groups 
     164----------------------------------------------------------------------- 
     165 
     166If `G = SO(r+s)` then `G` has a subgroup `SO(r) \times SO(s)`. This 
     167lifts to an embedding of the universal covering groups 
     168 
     169.. MATH:: 
     170 
     171    \hbox{spin}(r) \times \hbox{spin}(s) \to \hbox{spin}(r+s). 
     172 
     173Sometimes this embedding is of extended type, and sometimes it is 
     174not. It is of extended type unless `r` and `s` are both odd. If it is 
     175of extended type then you may use ``rule="extended"``. In any case you 
     176may use ``rule="orthogonal_sum"``. The name refer to the origin of the 
     177embedding `SO(r) \times SO(s) \to SO(r+s)` from the decomposition of 
     178the underlying quadratic space as a direct sum of two orthogonal 
     179subspaces. 
     180 
     181There are four cases depending on the parity of `r` and `s`. For 
     182example, if `r = 2k` and `s = 2l` we have an embedding:: 
     183 
     184    ['D',k] x ['D',l] --> ['D',k+l] 
     185 
     186This is of extended type. Thus consider the embedding 
     187``D4xD3 -> D7``. Here is the extended Dynkin diagram:: 
     188 
     189      0 O           O 7 
     190        |           | 
     191        |           | 
     192    O---O---O---O---O---O 
     193    1   2   3   4   5   6 
     194 
     195Removing the 4 vertex results in a disconnected Dynkin diagram:: 
     196 
     197      0 O           O 7 
     198        |           | 
     199        |           | 
     200    O---O---O       O---O 
     201    1   2   3       5   6 
     202 
     203This is ``D4xD3``.  Therefore use the "extended" branching rule:: 
     204 
     205    sage: D7 = WeylCharacterRing("D7", style="coroots") 
     206    sage: D4xD3 = WeylCharacterRing("D4xD3", style="coroots") 
     207    sage: spin = D7(D7.fundamental_weights()[7]); spin 
     208    D7(0,0,0,0,0,0,1) 
     209    sage: spin.branch(D4xD3, rule="extended") 
     210    D4xD3(0,0,1,0,0,1,0) + D4xD3(0,0,0,1,0,0,1) 
     211 
     212Similarly we have embeddings:: 
     213 
     214    ['D',k] x ['B',l] --> ['B',k+l] 
     215 
     216These are also of extended type. For example consider the embedding of 
     217``D3xB2->B5``. Here is the ``B5`` extended Dynkin diagram:: 
     218 
     219        O 0 
     220        | 
     221        | 
     222    O---O---O---O=>=O 
     223    1   2   3   4   5 
     224 
     225Removing the 3 node gives:: 
     226 
     227        O 0 
     228        | 
     229    O---O       O=>=O 
     230    1   2       4   5 
     231 
     232and this is the Dynkin diagram or ``D3xB2``. For such branchings we 
     233again use ``rule="extended"``. 
     234 
     235Finally, there is an embedding :: 
     236 
     237    ['B',k] x ['B',l] --> ['D',k+l+1] 
     238 
     239This is *not* of extended type, so you may not use ``rule="extended"``. 
     240 
     241 
     242Symmetric subgroups 
     243------------------- 
     244 
     245If `G` admits an outer automorphism (usually of order two) then we may 
     246try to find the branching rule to the fixed subgroup `H`. It can be 
     247arranged that this automorphism maps the maximal torus `T` to itself 
     248and that a maximal torus `U` of `H` is contained in `T`. 
     249 
     250Suppose that the Dynkin diagram of `G` admits an automorphism. Then 
     251`G` itself admits an outer automorphism. The Dynkin diagram of the 
     252group `H` of invariants may be obtained by "folding" the Dynkin 
     253diagram of `G` along the automorphism. The exception is the branching 
     254rule `GL(2r) \implies SO(2r)`. 
     255 
     256Here are the branching rules that can be obtained using 
     257``rule="symmetric"``. 
     258 
     259+------------+-------------+---------------------------+ 
     260| `G`        | `H`         | Cartan Types              | 
     261+============+=============+===========================+ 
     262| `GL(2r)`   | `Sp(2r)`    | ``['A',2r-1] => ['C',r]`` | 
     263+------------+-------------+---------------------------+ 
     264| `GL(2r+1)` | `SO(2r+1)`  | ``['A',2r] => ['B',r]``   | 
     265+------------+-------------+---------------------------+ 
     266| `GL(2r)`   | `SO(2r)`    | ``['A',2r-1] => ['D',r]`` | 
     267+------------+-------------+---------------------------+ 
     268| `SO(2r)`   | `SO(2r-1)`  | ``['D',r] => ['B',r-1]``  | 
     269+------------+-------------+---------------------------+ 
     270| `E_6`      | `F_4`       | ``['E',6] => ['F',4]``    | 
     271+------------+-------------+---------------------------+ 
     272 
     273 
     274Tensor products 
     275--------------- 
     276 
     277If `G_1` and `G_2` are Lie groups, and we have representations 
     278`\pi_1: G_1 \to GL(n)` and `\pi_2: G_2 \to GL(m)` then the tensor 
     279product is a representation of `G_1 \times G_2`. It has its image 
     280in `GL(nm)` but sometimes this is conjugate to a subgroup of `SO(nm)` 
     281or `Sp(nm)`. In particular we have the following cases. 
     282 
     283+-------------------+---------------------------+------------------------------------------+ 
     284| Group             | Subgroup                  | Cartan Types                             | 
     285+===================+===========================+==========================================+ 
     286| `GL(rs)`          | `GL(r)\times GL(s)`       | ``['A', rs-1] => ['A',r-1] x ['A',s-1]`` | 
     287+-------------------+---------------------------+------------------------------------------+ 
     288| `SO(4rs+2r+2s+1)` | `SO(2r+1)\times SO(2s+1)` | ``['B',2rs+r+s] => ['B',r] x ['B',s]``   | 
     289+-------------------+---------------------------+------------------------------------------+ 
     290| `SO(4rs+2s)`      | `SO(2r+1)\times SO(2s)`   | ``['D',2rs+s] => ['B',r] x ['D',s]``     | 
     291+-------------------+---------------------------+------------------------------------------+ 
     292| `SO(4rs)`         | `SO(2r)\times SO(2s)`     | ``['D',2rs] => ['D',r] x ['D',s]``       | 
     293+-------------------+---------------------------+------------------------------------------+ 
     294| `SO(4rs)`         | `Sp(2r)\times Sp(2s)`     | ``['D',2rs] => ['C',r] x ['C',s]``       | 
     295+-------------------+---------------------------+------------------------------------------+ 
     296| `Sp(4rs+2s)`      | `SO(2r+1)\times Sp(2s)`   | ``['C',2rs+s] => ['B',r] x ['C',s]``     | 
     297+-------------------+---------------------------+------------------------------------------+ 
     298| `Sp(4rs)`         | `Sp(2r)\times SO(2s)`     | ``['C',2rs] => ['C',r] x ['D',s]``       | 
     299+-------------------+---------------------------+------------------------------------------+ 
     300 
     301These branching rules are obtained using ``rule="tensor"``. 
     302 
     303 
     304Symmetric powers 
     305---------------- 
     306 
     307The `k`-th symmetric and exterior power homomorphisms map 
     308`GL(n) \to GL \left({n+k-1 \choose k} \right)` and 
     309`GL \left({n \choose k} \right)`. The corresponding branching rules 
     310are not implemented but a special case is. The `k`-th symmetric power 
     311homomorphism `SL(2) \to GL(k+1)` has its image inside of `SO(2r+1)` if 
     312`k = 2r` and inside of `Sp(2r)` if `k = 2r-1`. Hence there are 
     313branching rules:: 
     314 
     315    ['B',r] => A1 
     316    ['C',r] => A1 
     317 
     318and these may be obtained using ``rule="symmetric_power"``. 
     319 
     320 
     321Plethysms 
     322--------- 
     323 
     324The above branching rules are sufficient for most cases, but a few 
     325fall between the cracks. Mostly these involve maximal subgroups of 
     326fairly small rank. 
     327 
     328The rule ``rule="plethysm"`` is a powerful rule that includes any 
     329branching rule from types A, B, C or D as a special case. Thus it 
     330could be used in place of the above rules and would give the same 
     331results. However, it is most useful when branching from `G` to a 
     332maximal subgroup `H` such that `rank(H) < rank(G)-1`. 
     333 
     334We consider a homomorphism `H \to G` where `G` is one of `SL(r+1)`, 
     335`SO(2r+1)`, `Sp(2r)` or `SO(2r)`. The function 
     336``branching_rule_from_plethysm`` produces the corresponding branching 
     337rule. The main ingredient is the character `\chi` of the 
     338representation of `H` that is the homomorphism to `GL(r+1)`, 
     339`GL(2r+1)` or `GL(2r)`. 
     340 
     341Let us consider the symmetric fifth power representation of 
     342`SL(2)`. This is implemented above by ``rule="symmetric_power"``, but 
     343suppose we want to use ``rule="plethysm"``. First we construct the 
     344homomorphism by invoking its character, to be called ``chi``:: 
     345 
     346    sage: A1 = WeylCharacterRing("A1", style="coroots") 
     347    sage: chi = A1([5]) 
     348    sage: chi.degree() 
     349    6 
     350    sage: chi.frobenius_schur_indicator() 
     351    -1 
     352 
     353This confirms that the character has degree 6 and is symplectic, so it 
     354corresponds to a homomorphism `SL(2) \to Sp(6)`, and there is a 
     355corresponding branching rule ``C3 => A1``:: 
     356 
     357    sage: C3 = WeylCharacterRing("C3", style="coroots") 
     358    sage: sym5rule = branching_rule_from_plethysm(chi, "C3") 
     359    sage: [C3(hwv).branch(A1, rule=sym5rule) for hwv in C3.fundamental_weights()] 
     360    [A1(5), A1(4) + A1(8), A1(3) + A1(9)] 
     361 
     362This is identical to the results we would obtain using 
     363``rule="symmetric_power"``:: 
     364 
     365    sage: [C3(v).branch(A1, rule="symmetric_power") for v in C3.fundamental_weights()] 
     366    [A1(5), A1(4) + A1(8), A1(3) + A1(9)] 
     367 
     368But the next example of plethysm gives a branching rule not available 
     369by other methods:: 
     370 
     371    sage: G2 = WeylCharacterRing("G2", style="coroots") 
     372    sage: D7 = WeylCharacterRing("D7", style="coroots") 
     373    sage: ad = G2(0,1); ad.degree() 
     374    14 
     375    sage: ad.frobenius_schur_indicator() 
     376    1 
     377 
     378This is the 14-dimensional adjoint representation of the exceptional 
     379group `G_2`. Since the Frobenius-Schur indicator is 1, the 
     380representation is orthogonal, and factors through `SO(14)`. Let us 
     381branch the fundamental representations:: 
     382 
     383    sage: for r in D7.fundamental_weights(): 
     384    ...      print D7(r).branch(G2, rule=branching_rule_from_plethysm(ad, "D7")) 
     385    ... 
     386    G2(0,1) 
     387    G2(0,1) + G2(3,0) 
     388    G2(0,0) + G2(2,0) + G2(3,0) + G2(0,2) + G2(4,0) 
     389    G2(0,1) + G2(2,0) + G2(1,1) + G2(0,2) + G2(2,1) + G2(4,0) + G2(3,1) 
     390    G2(1,0) + G2(0,1) + G2(1,1) + 2*G2(3,0) + 2*G2(2,1) + G2(1,2) + G2(3,1) + G2(5,0) + G2(0,3) 
     391    G2(1,1) 
     392    G2(1,1) 
     393 
     394 
     395Miscellaneous other subgroups 
     396----------------------------- 
     397 
     398Use ``rule="miscellaneous"`` for the branching rule ``B3 => G2``. This 
     399may also be obtained using a plethysm but for convenience this one is 
     400hand-coded. 
     401 
     402 
     403Nuts and bolts of branching rules 
     404--------------------------------- 
     405 
     406Sage has many built-in branching rules, enough to handle most 
     407cases. However, if you find a case where there is no existing rule, 
     408you may code it by hand. Moreover, it may be useful to understand how 
     409the built-in rules work. 
     410 
     411Suppose you want to branch from a group `G` to a subgroup `H`. 
     412Arrange the embedding so that a Cartan subalgebra `U` of `H` is 
     413contained in a Cartan subalgebra `T` of `G`. There is thus a mapping 
     414from the weight spaces `\hbox{Lie}(T)^* \to \hbox{Lie}(U)^*`.  Two 
     415embeddings will produce identical branching rules if they differ by an 
     416element of the Weyl group of `H`. The *rule* is this map 
     417`\hbox{Lie}(T)^*` ``= G.space()`` to 
     418`\hbox{Lie}(U)^*` ``= H.space()``, which you may implement as a 
     419function. 
     420 
     421As an example, let us consider how to implement the branching rule 
     422``A3 -> C2``.  Here ``H = C2 = Sp(4)`` embedded as a subgroup in 
     423``A3 = GL(4).`` The Cartan subalgebra `\hbox{Lie}(U)` consists of 
     424diagonal matrices with eigenvalues ``u1, u2, -u2, -u1``. Then 
     425``C2.space()`` is the two dimensional vector spaces consisting of the 
     426linear functionals ``u1`` and ``u2`` on ``U``. On the other hand 
     427`Lie(T) = \mathbb{R}^4`. A convenient way to see the restriction is to 
     428think of it as the adjoint of the map ``[u1,u2] -> [u1,u2,-u2,-u1]``, 
     429that is, ``[x0,x1,x2,x3] -> [x0-x3,x1-x2].`` Hence we may encode the 
     430rule:: 
     431 
     432    def brule(x): 
     433        return [x[0]-x[3], x[1]-x[2]] 
     434 
     435or simply:: 
     436 
     437    brule = lambda x: [x[0]-x[3], x[1]-x[2]] 
     438 
     439Let us check that this agrees with the built-in rule:: 
     440 
     441    sage: A3 = WeylCharacterRing(['A', 3]) 
     442    sage: C2 = WeylCharacterRing(['C', 2]) 
     443    sage: brule = lambda x: [x[0]-x[3], x[1]-x[2]] 
     444    sage: A3(1,1,0,0).branch(C2, rule=brule) 
     445    C2(0,0) + C2(1,1) 
     446    A3(1,1,0,0).branch(C2, rule="symmetric") 
     447    C2(0,0) + C2(1,1) 
     448 
     449 
     450Automorphisms and triality 
     451-------------------------- 
     452 
     453The case where `G=H` can be treated as a special case of a branching 
     454rule. In most cases (`A_r`, `D_r`, `E_6`) there is a unique 
     455automorphism and the branching rule can be obtained using 
     456``rule="automorphic"``. The exception is `D_4`, where an additional 
     457automorphism of order three can be obtained using 
     458``rule="triality"``. 
  • new file doc/en/thematic_tutorials/lie/crystals.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/lie/crystals.rst
    - +  
     1================== 
     2Classical Crystals 
     3================== 
     4 
     5 
     6Tableaux and representations of `GL(n)` 
     7--------------------------------------- 
     8 
     9Let `\lambda` be a partition. The *Young diagram* of `\lambda` is the 
     10array of boxes having `\lambda_i` boxes in the `i`-th row, left 
     11adjusted. Thus if `\lambda = (3, 2)` the diagram is: 
     12 
     13.. MATH:: 
     14 
     15    \def\lr#1#2#3{\multicolumn{1}{#1@{\hspace{.6ex}}c@{\hspace{.6ex}}#2}{\raisebox{-.3ex}{$#3$}}}\raisebox{-6ex} 
     16    {\begin{array}[b]{cccc}\cline{1-3} 
     17    \lr{|}{|}{\;} & \lr{|}{|}{\;} & \lr{|}{|}{\;} \\\cline{1-3} 
     18    \lr{|}{|}{}   & \lr{|}{|}{}   && \\\cline{1-2} 
     19    \end{array}} 
     20 
     21A *semi-standard Young tableau* of shape `\lambda` is a filling of the 
     22box by integers in which the rows are weakly decreasing and the 
     23columns are strictly decreasing. Thus 
     24 
     25.. MATH:: 
     26 
     27    \def\lr#1#2#3{\multicolumn{1}{#1@{\hspace{.6ex}}c@{\hspace{.6ex}}#2}{\raisebox{-.3ex}{$#3$}}}\raisebox{-6ex} 
     28    {\begin{array}[b]{cccc}\cline{1-3} 
     29    \lr{|}{|}{3} & \lr{|}{|}{2} & \lr{|}{|}{2} \\\cline{1-3} 
     30    \lr{|}{|}{2} & \lr{|}{|}{1} && \\\cline{1-2} 
     31    \end{array}} 
     32 
     33is a semistandard Young tableau. Sage has a Tableau class, and you may 
     34create this tableau as follows:: 
     35 
     36    sage: T = Tableau([[3,2,2], [2,1]]); T 
     37    [[3, 2, 2], [2, 1]] 
     38 
     39A partition of length `\le r+1` is a dominant weight for 
     40`GL(r+1, \mathbb{C})` according to the description of the ambient 
     41space in :ref:`standard-realizations`. Therefore it corresponds to an 
     42irreducible representation `\pi_\lambda = \pi_\lambda^{GL(r+1)}` of 
     43`GL(r+1, \mathbb{C})`. 
     44 
     45It is true that not every dominant weight `\lambda` is a partition, 
     46since a dominant weight might have some values `\lambda_i` 
     47negative. The dominant weight `\lambda` is a partition if and only if 
     48the character of `\lambda` is a polynomial as a function on the space 
     49`\hbox{Mat}_n(\mathbb{C})`. Thus for example `\det^{-1} = \pi_\lambda` 
     50with `\lambda = (-1, \dots, -1)`, which is a dominant weight but not 
     51a partition, and the character is not a polynomial function on 
     52`\hbox{Mat}_n(\mathbb{C})`. 
     53 
     54**Theorem** (Littlewood) If `\lambda` is a partition, then the number 
     55of Semi-Standard Young Tableaux with shape `\lambda` and entries in 
     56`{1,2,\dots,r+1}` is the dimension of `\pi_\lambda`. 
     57 
     58For example, if `\lambda = (3,2)` and `r = 2`, then we find 15 
     59tableaux with shape `\lambda` and entries in `\{1,2,3\}`: 
     60 
     61.. MATH:: 
     62 
     63    \begin{array}{ccccc} 
     64    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     65    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     66    \lr{1} & \lr{1} & \lr{1} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     67    \lr{2} & \lr{2} \\\cline{1-1}\cline{2-2} 
     68    \end{array}$}} 
     69    & 
     70    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     71    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     72    \lr{1} & \lr{1} & \lr{2} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     73    \lr{2} & \lr{2} \\\cline{1-1}\cline{2-2} 
     74    \end{array}$}} 
     75    & 
     76    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     77    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     78    \lr{1} & \lr{1} & \lr{3} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     79    \lr{2} & \lr{2} \\\cline{1-1}\cline{2-2} 
     80    \end{array}$}} 
     81    & 
     82    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     83    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     84    \lr{1} & \lr{1} & \lr{3} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     85    \lr{2} & \lr{3} \\\cline{1-1}\cline{2-2} 
     86    \end{array}$}} 
     87    & 
     88    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     89    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     90    \lr{1} & \lr{2} & \lr{3} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     91    \lr{2} & \lr{3} \\\cline{1-1}\cline{2-2} 
     92    \end{array}$}}\\\\ 
     93    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     94    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     95    \lr{1} & \lr{1} & \lr{3} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     96    \lr{3} & \lr{3} \\\cline{1-1}\cline{2-2} 
     97    \end{array}$}} 
     98    & 
     99    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     100    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     101    \lr{1} & \lr{2} & \lr{3} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     102    \lr{3} & \lr{3} \\\cline{1-1}\cline{2-2} 
     103    \end{array}$}} 
     104    & 
     105    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     106    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     107    \lr{2} & \lr{2} & \lr{3} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     108    \lr{3} & \lr{3} \\\cline{1-1}\cline{2-2} 
     109    \end{array}$}} 
     110    & 
     111    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     112    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     113    \lr{1} & \lr{1} & \lr{1} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     114    \lr{2} & \lr{3} \\\cline{1-1}\cline{2-2} 
     115    \end{array}$}} 
     116    & 
     117    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     118    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     119    \lr{1} & \lr{1} & \lr{2} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     120    \lr{2} & \lr{3} \\\cline{1-1}\cline{2-2} 
     121    \end{array}$}}\\\\ 
     122    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     123    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     124    \lr{1} & \lr{2} & \lr{2} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     125    \lr{2} & \lr{3} \\\cline{1-1}\cline{2-2} 
     126    \end{array}$}} 
     127    & 
     128    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     129    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     130    \lr{1} & \lr{1} & \lr{1} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     131    \lr{3} & \lr{3} \\\cline{1-1}\cline{2-2} 
     132    \end{array}$}} 
     133    & 
     134    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     135    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     136    \lr{1} & \lr{1} & \lr{2} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     137    \lr{3} & \lr{3} \\\cline{1-1}\cline{2-2} 
     138    \end{array}$}} 
     139    & 
     140    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     141    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     142    \lr{1} & \lr{2} & \lr{2} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     143    \lr{3} & \lr{3} \\\cline{1-1}\cline{2-2} 
     144    \end{array}$}} 
     145    & 
     146    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     147    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     148    \lr{2} & \lr{2} & \lr{2} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     149    \lr{3} & \lr{3} \\\cline{1-1}\cline{2-2} 
     150    \end{array}$}} 
     151    \end{array} 
     152 
     153This is consistent with the theorem since the dimension of the 
     154irreducible representation of `GL(3)` with highest weight `(3,2,0)` 
     155has dimension 15:: 
     156 
     157    sage: A2 = WeylCharacterRing("A2") 
     158    sage: A2(3,2,0).degree() 
     159    15 
     160 
     161In fact we may obtain the character of the representation from the set 
     162of tableaux. Indeed, one of the definitions of the Schur polynomial 
     163(due to Littlewood) is the following combinatorial one. If `T` is a 
     164tableaux, define the *weight* of `T` to be 
     165`\hbox{wt}(T) = (k_1,\dots,k_n)` where `k_i` is the number of `i`'s 
     166in the tableaux. Then the multiplicity of `\mu` in the character 
     167`\chi_\lambda` is the number of tableaux of weight `\lambda`. Thus if 
     168`\mathbf{z} = (z_1,\dots,z_n)`, we have 
     169 
     170.. MATH:: 
     171 
     172    \chi_\lambda(\mathbf{z}) = \sum_T \mathbf{z}^{\hbox{wt}(T)} 
     173 
     174where the sum is over all semi-standard Young tableaux of shape 
     175`\lambda` that have entries in `{1,2,\dots,r+1}`. 
     176 
     177 
     178Tableaux and representations of `S_k` 
     179------------------------------------- 
     180 
     181Representations of the symmetric group `S_k` are parametrized by 
     182partitions `\lambda` of `k`. The parametrization may be characterized 
     183as follows. Let `n` be any integer `\ge k`. Then both 
     184`GL(n,\mathbb{C})` and `S_k` act on `\otimes^k V` where 
     185`V = \mathbb{C}^n`. Indeed, `GL(n)` acts on each `V` and `S_k` 
     186permutes them. Then if `\pi_\lambda^{GL(n)}` is the representation of 
     187`GL(n,\mathbb{C})` with highest weight vector `\lambda` and 
     188`\pi_\lambda^{S_k}` is the irreducible representation of `S_k` 
     189parametrized by `\lambda` then 
     190 
     191.. MATH:: 
     192 
     193    \otimes^k V 
     194    \cong 
     195    \bigoplus_{\lambda\vdash k}\pi^{GL(n)}_\lambda\otimes\pi^{S_k}_\lambda 
     196 
     197as bimodules for the two groups. This is *Frobenius-Schur duality* and 
     198it serves to characterize the parametrization of the irreducible 
     199representations of `S_k` by partitions of `k`. 
     200 
     201Let us say that a Tableaux `T` of shape `\lambda\vdash k` is 
     202*standard* if `T` contains each entry `1,2,\dots,k` exactly once. 
     203 
     204**Theorem** (Young, 1927) The degree of `\pi_\lambda` is the number of 
     205standard tableaux of shape `\lambda`. 
     206 
     207 
     208The Robinson-Schensted-Knuth correspondence 
     209------------------------------------------- 
     210 
     211References: 
     212 
     213- [Knuth1998]_, section "Tableaux and Involutions". 
     214 
     215- [Knuth1970]_ 
     216 
     217- [Fulton1997]_ 
     218 
     219- [Stanley1999]_ 
     220 
     221The Robinson-Schensted-Knuth correspondence gives bijections between 
     222pairs of tableaux of various types and combinatorial objects of 
     223different types. We will not review the correspondence in detail here, 
     224but see the references. We note that Schensted insertion is 
     225implemented as the method ``schensted_insertion`` of Tableau class in 
     226Sage. 
     227 
     228Thus we have the following bijections: 
     229 
     230- Pairs of standard tableaux of the same shape `\lambda` as `\lambda` 
     231  runs through the partitions of `k` are in bijection with the `k!` 
     232  elements of `S_k`. 
     233 
     234- Pairs of tableaux `T_1` and `T_2` of shape `\lambda` where `\lambda` 
     235  runs through the partitions of `k` such that `T_1` is a standard 
     236  tableau and `T_2` is a semistandard tableau in `1,2,\dots,n` are in 
     237  bijection with the `n^k` words of length `k` in `1,2,\dots,n`. 
     238 
     239- Pairs of tableaux `T_1` and `T_2` of the same shape `\lambda` but 
     240  arbitrary size in `1,2,3,\dots,n` are in bijection with `n \times n` 
     241  positive integer matrices. 
     242 
     243- Pairs of tableaux `T_1` and `T_2` of conjugate shapes `\lambda` and 
     244  `\lambda'` are in bijection with `n \times n` matrices with entries 
     245  `0` or `1`. 
     246 
     247 
     248Analogies between representation theory and combinatorics 
     249--------------------------------------------------------- 
     250 
     251The three bijections cited above have the following analogs in 
     252representation theory. 
     253 
     254- The group algebra `\mathbb{C}` is an `S_k \times S_k` bimodule with 
     255  of dimension `k!`. It decomposes as a direct sum of 
     256  `\pi_\lambda^{S_k} \otimes \pi_\lambda^{S_k}`. 
     257 
     258- This is analogous to Frobenius-Schur duality, which decomposes the 
     259  `n^k`-dimensional vector space `V^k` where `V = \mathbb{C}` into the 
     260  direct sum of `\pi_\lambda^{GL(n)} \otimes \pi_\lambda^{S_k}` as a 
     261  bimodule, where `\lambda` runs through partitions of `k`. 
     262 
     263- This is analogous to the decomposition of the ring of polynomial 
     264  functions on `\hbox{Mat}(n, \mathbb{C})` on which 
     265  `GL(n, \mathbb{C}) \times GL(n, \mathbb{C})` acts by 
     266  `(g_1, g_2)f(X) = f({^t g_1}X g_2)`. The polynomial ring decomposes 
     267  into the direct sum of 
     268  `\pi^{GL(n)}_\lambda \otimes \pi^{GL(n)}_\lambda`. Taking traces 
     269  gives the Cauchy identity. 
     270 
     271- This is analogous to the decomposition of the exterior algebra over 
     272  `\hbox{Mat}(n, \mathbb{C})`. Taking traces gives the dual Cauchy 
     273  identity. 
     274 
     275 
     276Interpolating between representation theory and combinatorics 
     277------------------------------------------------------------- 
     278 
     279The theory of quantum groups interpolates between the representation 
     280theoretic picture and the combinatorial picture, and thereby explains 
     281these analogies. The representation `\pi_\lambda^{GL(n)}` is 
     282reinterpreted as a module for the quantized enveloping algebra 
     283`U_q(\mathfrak{gl}_n(\mathbb{C}))`, and the representation 
     284`\pi_\lambda^{S_k}` is reinterpreted as a module for the Iwahori 
     285Hecke algebra. Then Frobenius-Schur duality persists. See 
     286[Jimbo1986]_. When `q \to 1`, we recover the representation 
     287story. When `q \to 0`, we recover the combinatorial story. 
     288 
     289 
     290Kashiwara crystals 
     291------------------ 
     292 
     293References: 
     294 
     295- [Kashiwara1995]_ 
     296 
     297- [KashiwaraNakashima1994]_ 
     298 
     299- [HongKang2002]_ 
     300 
     301Kashiwara considered the highest weight modules of quantized 
     302enveloping algebras `U_q(\mathfrak{g})` in the limit when 
     303`q \to 0`. The enveloping algebra cannot be defined when `q = 0`, but 
     304a limiting structure can still be detected. This is the 
     305*crystal basis* of the module. 
     306 
     307Kashiwara's crystal bases have a combinatorial structure that sheds 
     308light even on purely combinatorial constructions on tableaux that 
     309predated quantum groups. It gives a good generalization to other 
     310Cartan types. 
     311 
     312We will not make the most general definition of a crystal. See the 
     313references for a more general definition. Let `\Lambda` be the weight 
     314lattice of a classical Cartan type. 
     315 
     316We now define a *crystal* of type `\Phi`. Let `\mathcal{B}` be a set, 
     317and let `0 \notin \mathcal{B}` be an auxiliary element. For each index 
     318`1 \le i \le r` we assume there given maps 
     319`e_i, f_i : \mathcal{B} \longrightarrow \mathcal{B} \cup \{0\}`, maps 
     320`\varepsilon_i, \phi_i : \mathcal{B} \longrightarrow \mathbb{Z}` and a 
     321map `\hbox{wt} : \mathcal{B} \longrightarrow \Lambda` satisfying 
     322certain assumptions, which we now describe. It is assumed that if 
     323`x, y \in \mathcal{B}` then `e_i (x) = y` if and only if 
     324`f_i (y) = x`. In this case, it is assumed that 
     325 
     326.. MATH:: 
     327 
     328    \hbox{wt} (y) = \hbox{wt} (x) + \alpha_i, 
     329    \qquad 
     330    \varepsilon_i (x) = \varepsilon_i (y) + 1, 
     331    \qquad \phi_i (x) = \phi_i (y) - 1. 
     332 
     333Moreover, we assume that 
     334 
     335.. MATH:: 
     336 
     337    \phi_i (x) - \varepsilon_i (x) 
     338    = 
     339    \left\langle \hbox{wt} (x), \alpha^{\vee}_i \right\rangle 
     340 
     341for all `x \in \mathcal{B}`. 
     342 
     343**Assumption** (Regularity) We will assume that `\varepsilon_i(v)` is 
     344the number of times that `e_i` may applied to `v`, and that 
     345`\phi_i(v)` is the number of times that `f_i` may be applied. That is, 
     346`\phi_i (x) = \max \{k|f_i^k x \neq 0\}` and 
     347`\varepsilon_i (x) = \max \{k|e_i^k (x) \neq 0\}`. 
     348 
     349This regularity assumption is not made by Kashiwara, but it is 
     350satisfied by the crystals that we are concerned with here. Kashiwara 
     351also allows `\varepsilon_i` and `\phi_i` to take the value `-\infty`. 
     352 
     353Given the crystal `\mathcal{B}`, the *character* `\chi_{\mathcal{B}}` is: 
     354 
     355.. MATH:: 
     356 
     357    \sum_{v\in\mathcal{B}} {\mathbf{z}}^{wt(v)}. 
     358 
     359Given any highest weight `\lambda`, constructions of Kashiwara and 
     360Nakashima, Littelmann and others produce a crystal 
     361`\chi_{\mathcal{B}_\lambda}` such that 
     362`\chi_{\mathcal{B}_\lambda} = \chi_\lambda`, where `\chi_\lambda` is 
     363the irreducible character with highest weight `\lambda`, as in 
     364:ref:`representations`. 
     365 
     366The crystal `\mathcal{B}_\lambda` is not uniquely characterized by the 
     367properties that we have stated so far. For Cartan types A, D, E it may 
     368be characterized by these properties together with certain other 
     369*Stembridge axioms*. We will take it for granted that there is a 
     370unique "correct" crystal `\mathcal{B}_\lambda` and discuss how these 
     371are constructed in Sage. 
     372 
     373 
     374Installing dot2tex 
     375------------------ 
     376 
     377Before giving examples of crystals, we digress to help you install 
     378dot2tex, which you will need in order to make latex images of 
     379crystals. 
     380 
     381You may download the following file: 
     382 
     383http://sage.math.washington.edu/home/nthiery/dot2tex-2.8.7.spkg 
     384 
     385Then run:: 
     386 
     387    sage -i dot2tex-2.8.7.spkg 
     388 
     389to install the package. 
     390 
     391 
     392Crystals of tableaux in Sage 
     393---------------------------- 
     394 
     395For type `A_r`, Kashiwara and Nakashima put a crystal structure on the 
     396set of tableaux with shape `\lambda` in `1,2,\dots,r+1`, and this is a 
     397realization of `\mathcal{B}_\lambda`. Moreover, this construction 
     398extends to other Cartan types, as we will explain. At the moment, we 
     399will consider how to draw pictures of these crystals. 
     400 
     401Once you have dot2tex installed, you may make images pictures of crystals 
     402as follows:: 
     403 
     404    sage: C = CrystalOfTableaux("A2", shape=[2,1]) 
     405    sage: C.latex_file("/tmp/a2rho.tex") 
     406 
     407Here `\lambda = (2,1)=(2,1,0)`. The crystal ``C`` is 
     408`\mathcal{B}_{\lambda}`. The character `\chi_\lambda` will therefore 
     409be the eight-dimensional irreducible character with this highest 
     410weight. The method ``latex_file`` produces 
     411 
     412.. image:: ../static/a2rho.png 
     413 
     414As you can see, the elements of this crystal are exactly the eight 
     415tableaux of shape `\lambda` with entries in `\{1,2,3\}`. The 
     416convention is that if `x,y \in \mathcal{B}` and `f_i(x) = y`, or 
     417equivalently `e_i(y) = x`, then we draw an arrow from `x \to y`. Thus 
     418the highest weight tableau is the one with no incoming arrows. Indeed, 
     419this is: 
     420 
     421.. MATH:: 
     422 
     423    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     424    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2} 
     425    \lr{1} & \lr{1} \\\cline{1-1}\cline{2-2} 
     426    \lr{2} \\\cline{1-1} 
     427    \end{array}$}} 
     428 
     429We recall that the weight of the tableau is `(k_1,k_2,k_3)` where 
     430`k_i` is the number of `i`'s in the tableau, so this tableau has 
     431weight `(2,1,0)`, which indeed equals `\lambda`. 
     432 
     433Once the crystal is created, you have access to the ambient space and 
     434its methods through the method ``weight_lattice_realization()``:: 
     435 
     436    sage: L = C.weight_lattice_realization(); L 
     437    Ambient space of the Root system of type ['A', 2] 
     438    sage: L.fundamental_weights() 
     439    Finite family {1: (1, 0, 0), 2: (1, 1, 0)} 
     440 
     441The highest weight vector is available as follows:: 
     442 
     443    sage: v = C.highest_weight_vector(); v 
     444    [[1, 1], [2]] 
     445 
     446or more simply:: 
     447 
     448    sage: C[0] 
     449    [[1, 1], [2]] 
     450 
     451Now we may apply the operators `e_i` and `f_i` to move around in the 
     452crystal:: 
     453 
     454    sage: v.f(1) 
     455    [[1, 2], [2]] 
     456    sage: v.f(1).f(1) 
     457    sage: v.f(1).f(1) == None 
     458    True 
     459    sage: v.f(1).f(2) 
     460    [[1, 3], [2]] 
     461    sage: v.f(1).f(2).f(2) 
     462    [[1, 3], [3]] 
     463    sage: v.f(1).f(2).f(2).f(1) 
     464    [[2, 3], [3]] 
     465    sage: v.f(1).f(2).f(2).f(1) == v.f(2).f(1).f(1).f(2) 
     466    True 
     467 
     468You can construct the character if you first make a Weyl character 
     469ring:: 
     470 
     471    sage: A2 = WeylCharacterRing("A2") 
     472    sage: C.character(A2) 
     473    A2(2,1,0) 
     474 
     475 
     476Crystals of letters 
     477------------------- 
     478 
     479For each of the classical Cartan types there is a *standard crystal* 
     480`\mathcal{B}_{\hbox{standard}}` from which other crystals can be built 
     481up by taking tensor products and extracting constituent irreducible 
     482crystals. This procedure is sufficient for Cartan types `A_r` and 
     483`C_r`. For types `B_r` and `D_r` the standard crystal must be 
     484supplemented with a *spin crystal*. 
     485 
     486.. image:: ../static/standard1.png 
     487 
     488The crystal of letters is a special case of the crystal of tableaux 
     489in the sense that `\mathcal{B}_{\hbox{standard}}` is isomorphic to 
     490the crystal of tableaux whose highest weight `\lambda` is the highest 
     491weight vector of the standard representation. Thus compare:: 
     492 
     493    sage: CrystalOfLetters("A3") 
     494    The crystal of letters for type ['A', 3] 
     495    sage: CrystalOfTableaux("A3", shape=[1]) 
     496    The crystal of tableaux of type ['A', 3] and shape(s) [[1]] 
     497 
     498These two crystals are different in implementation, but they are 
     499isomorphic, and in fact the second crystal is constructed from the 
     500first. Crystals of letters have a special role in the theory since 
     501they are particularly simple, yet as Kashiwara and Nakashima showed, 
     502the crystals of tableaux can be created from them.  We will review how 
     503this works. 
     504 
     505 
     506Tensor products of crystals 
     507--------------------------- 
     508 
     509Kashiwara defined the tensor product of crystals in a purely 
     510combinatorial way. The beauty of this construction is that it exactly 
     511parallels the tensor product of crystals of representations. That is, 
     512if `\lambda` and `\mu` are dominant weights, then 
     513`\mathcal{B}_\lambda \otimes \mathcal{B}_\mu` is a (usually 
     514disconnected) crystal which may contain multiple copies of 
     515`\mathcal{B}_\nu` (for another dominant weight `\nu`) but the number 
     516of copies of `\mathcal{B}_\nu` is exactly the multiplicity of 
     517`\chi_\nu` in `\chi_\lambda\chi_\mu`. 
     518 
     519We will describe two conventions for the tensor product of 
     520crystals. These conventions would have to be modified slightly without 
     521the regularity assumption. 
     522 
     523 
     524Kashiwara's definition 
     525^^^^^^^^^^^^^^^^^^^^^^ 
     526 
     527As a set, the tensor product `\mathcal{B} \otimes \mathcal{C}` of 
     528crystals `\mathcal{B}` and `\mathcal{C}` is the Cartesian product, but 
     529we denote the ordered pair `(x, y)` with `x \in \mathcal{B}` and 
     530`y \in \mathcal{C}` by `x \otimes y`. We define 
     531`\hbox{wt} (x \otimes y) = \hbox{wt} (x) + \hbox{wt}(y)`. We define 
     532 
     533.. MATH:: 
     534 
     535    f_i (x \otimes y) 
     536    = 
     537    \begin{cases} 
     538    f_i (x) \otimes y & \text{if $\phi_i (x) > \varepsilon_i (y)$},\\ 
     539    x \otimes f_i (y) & \text{if $\phi_i (x) \le \varepsilon_i (y)$}, 
     540    \end{cases} 
     541 
     542and 
     543 
     544.. MATH:: 
     545 
     546    e_i (x \otimes y) 
     547    = 
     548    \begin{cases} 
     549    e_i (x) \otimes y & \text{if $\phi_i (x) \ge \varepsilon_i (y)$},\\ 
     550    x \otimes e_i (y) & \text{if $\phi_i (x) < \varepsilon_i (y)$}. 
     551    \end{cases} 
     552 
     553It is understood that `x \otimes 0 = 0 \otimes x = 0`. We also define: 
     554 
     555.. MATH:: 
     556 
     557    \phi_i (x \otimes y) 
     558    = 
     559    \max (\phi_i (y), \phi_i (x) + \phi_i (y) - \varepsilon_i (y)), 
     560 
     561.. MATH:: 
     562 
     563    \varepsilon_i (x \otimes y) 
     564    = 
     565    \max (\varepsilon_i (x), \varepsilon_i (x) + \varepsilon_i (y) - \phi_i (x)) . 
     566 
     567 
     568Alternative definition 
     569^^^^^^^^^^^^^^^^^^^^^^ 
     570 
     571As a set, the tensor product `\mathcal{B} \otimes \mathcal{C}` of 
     572crystals `\mathcal{B}` and `\mathcal{C}` is the Cartesian product, but 
     573we denote the ordered pair `(y, x)` with `y \in \mathcal{B}` and 
     574`x \in \mathcal{C}` by `x \otimes y`. We define 
     575`\hbox{wt} (x \otimes y) = \hbox{wt} (y) + \hbox{wt}(x)`. We define 
     576 
     577.. MATH:: 
     578 
     579    f_i (x \otimes y) 
     580    = 
     581    \begin{cases} 
     582    f_i (x) \otimes y & \text{if $\phi_i (y) \le \varepsilon_i (x)$},\\ 
     583    x \otimes f_i (y) & \text{if $\phi_i (y) > \varepsilon_i (x)$}, 
     584    \end{cases} 
     585 
     586and 
     587 
     588.. MATH:: 
     589 
     590    e_i (x \otimes y) 
     591    = 
     592    \begin{cases} 
     593    e_i (x) \otimes y & \text{if $\phi_i (y) < \varepsilon_i (x)$},\\ 
     594    x \otimes e_i (y) & \text{if $\phi_i (y) \ge \varepsilon_i (x)$}. 
     595    \end{cases} 
     596 
     597It is understood that `y \otimes 0 = 0 \otimes y = 0`. We also define 
     598 
     599.. MATH:: 
     600 
     601    \phi_i (x \otimes y) 
     602    = 
     603    \max (\phi_i (x), \phi_i (y) + \phi_i (x) - \varepsilon_i (x)), 
     604 
     605.. MATH:: 
     606 
     607    \varepsilon_i (x \otimes y) 
     608    = 
     609    \max (\varepsilon_i (y), \varepsilon_i (y) + \varepsilon_i (x) - \phi_i (y)). 
     610 
     611The tensor product is associative: 
     612`(x \otimes y) \otimes z \mapsto x \otimes(y \otimes z)` is an 
     613isomorphism 
     614`(\mathcal{B} \otimes \mathcal{C}) \otimes \mathcal{D} \to \mathcal{B} \otimes (\mathcal{C} \otimes \mathcal{D})`, 
     615and so we may consider tensor products of arbitrary numbers of crystals. 
     616 
     617 
     618The relationship between the two definitions 
     619^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
     620The relationship between the two definitions is simply that the 
     621Kashiwara tensor product `\mathcal{B} \otimes \mathcal{C}` is the 
     622alternate tensor product `\mathcal{C} \otimes \mathcal{B}` in reverse 
     623order. Sage uses the alternative tensor product. Even though the 
     624tensor product construction is *a priori* asymmetrical, both 
     625constructions produce isomorphic crystals, and in particular Sage's 
     626crystals of tableaux are identical to Kashiwara's. 
     627 
     628 
     629Tensor products of crystals in Sage 
     630^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
     631You may construct the tensor product of several crystals in Sage using 
     632``TensorProductOfCrystals``:: 
     633 
     634    sage: C = CrystalOfLetters("A2") 
     635    sage: T = TensorProductOfCrystals(C,C,C); T 
     636    Full tensor product of the crystals [The crystal of letters for type ['A', 2], 
     637    The crystal of letters for type ['A', 2], The crystal of letters for type ['A', 2]] 
     638    sage: T.cardinality() 
     639    27 
     640    sage: T.highest_weight_vectors() 
     641    [[1, 1, 1], [1, 2, 1], [2, 1, 1], [3, 2, 1]] 
     642 
     643This crystal has four highest weight vectors. We may understand this 
     644as follows:: 
     645 
     646    sage: A2 = WeylCharacterRing("A2") 
     647    sage: chi_C = C.character(A2) 
     648    sage: chi_T = T.character(A2) 
     649    sage: chi_C 
     650    A2(1,0,0) 
     651    sage: chi_T 
     652    A2(1,1,1) + 2*A2(2,1,0) + A2(3,0,0) 
     653    sage: chi_T == chi_C^3 
     654    True 
     655 
     656As expected, the character of ``T`` is the cube of the character of 
     657``C``, and representations with highest weight `(1,1,1)`, `(3,0,0)` 
     658and `(2,1,0)`. This decomposition is predicted by Frobenius-Schur 
     659duality: the multiplicity of `\pi_\lambda^{GL(n)}` in 
     660`\otimes^3\mathbb{C}^3` is the degree of `\pi_\lambda^{S_3}`. 
     661 
     662It is useful to be able to select one irreducible constitutent of 
     663``T``. If we only want one of the irreducible constituents of ``T``, 
     664we can specify a list of highest weight vectors by the option 
     665``generators``. If the list has only one element, then we get an 
     666irreducible crystal. We can make four such crystals:: 
     667 
     668    sage: [T1,T2,T3,T4] = \ 
     669    [TensorProductOfCrystals(C,C,C,generators=[v]) for v in T.highest_weight_vectors()] 
     670    sage: [B.cardinality() for B in [T1,T2,T3,T4]] 
     671    [10, 8, 8, 1] 
     672    sage: [B.character(A2) for B in [T1,T2,T3,T4]] 
     673    [A2(3,0,0), A2(2,1,0), A2(2,1,0), A2(1,1,1)] 
     674 
     675We see that two of these crystals are isomorphic, with character 
     676``A2(2,1,0)``. Try:: 
     677 
     678    sage: T1.plot(), T2.plot(), T3.plot(), T4.plot() 
     679 
     680Elements of ``TensorProductOfCrystals(A,B,C, ...)`` are represented by 
     681sequences ``[a,b,c, ...]`` with ``a`` in ``A``, ``b`` in ``B``, etc. 
     682This of course represents `a \otimes b \otimes c \otimes \cdots`. 
     683 
     684 
     685Crystals of tableaux as tensor products of crystals 
     686--------------------------------------------------- 
     687 
     688Sage implements the ``CrystalOfTableaux`` as a subcrystal of a tensor 
     689product of the CrystalOfLetters. You can see how its done as follows:: 
     690 
     691    sage: T = CrystalOfTableaux("A3", shape=[3,1]) 
     692    sage: v = T.highest_weight_vector().f(1).f(2).f(3).f(1).f(2); v 
     693    [[1, 3, 4], [2]] 
     694    sage: v._list 
     695    [2, 1, 3, 4] 
     696 
     697We've looked at the internal representation of `v`, where it is 
     698represented as an element of the fourth tensor power of the 
     699``CrystalOfLetters``. We see that the tableau: 
     700 
     701.. MATH:: 
     702 
     703    {\def\lr#1{\multicolumn{1}{|@{\hspace{.6ex}}c@{\hspace{.6ex}}|}{\raisebox{-.3ex}{$#1$}}}\raisebox{-.6ex} 
     704    {$\begin{array}[b]{ccc}\cline{1-1}\cline{2-2}\cline{3-3} 
     705    \lr{1} & \lr{3} & \lr{4} \\\cline{1-1}\cline{2-2}\cline{3-3} 
     706    \lr{2} \\\cline{1-1} 
     707    \end{array}$}} 
     708 
     709is interpreted as the tensor: 
     710 
     711.. MATH:: 
     712 
     713    \begin{array}{|l|}\hline 
     714    2 \\ \hline 
     715    \end{array} 
     716    \otimes 
     717    \begin{array}{|l|} \hline 
     718    1 \\ \hline 
     719    \end{array} 
     720    \otimes 
     721    \begin{array}{|l|} \hline 
     722    4 \\ \hline 
     723    \end{array} 
     724    \otimes 
     725    \begin{array}{|l|} \hline 
     726    3 \\ \hline 
     727    \end{array} 
     728 
     729The elements of the tableau are read from bottom to top and from left 
     730to right. This is the *inverse middle-Eastern reading* of the 
     731tableau. See Hong and Kang, *loc. cit.* for discussion of the readings 
     732of a tableau. 
     733 
     734 
     735Spin crystals 
     736------------- 
     737 
     738For the Cartan types `A_r`, `C_r` or `G_2`, ``CrystalOfTableaux`` are 
     739capable of making any finite crystal. (For type `A_r` it is necessary 
     740that the highest weight `\lambda` be a partition.) 
     741 
     742For Cartan types `B_r` and `D_r`, ``CrystalOfTableaux`` fail to make 
     743`\mathcal{B}_\lambda` if `\lambda` is half-integral. For type `B_2` 
     744you can do this:: 
     745 
     746    sage: B = FastCrystal(['B',2], shape=[3/2,1/2]); B 
     747    The fast crystal for B2 with shape [3/2,1/2] 
     748    sage: v = B.highest_weight_vector(); v.weight() 
     749    (3/2, 1/2) 
     750 
     751However FastCrystals are only available for rank two Cartan types. We 
     752therefore have to do something else to create crystals of 
     753half-integral weight. 
     754 
     755For types `B_r` and `D_r` the solution to this problem involves the 
     756use of *spin crystals*. 
     757 
     758 
     759Type B spin crystal 
     760^^^^^^^^^^^^^^^^^^^ 
     761The spin crystal has highest weight `(1/2,\dots,1/2)`. This is the 
     762last fundamental weight. The irreducible representation with this 
     763weight is the spin representation of degree `2^r`. Its crystal is 
     764hand-coded in Sage:: 
     765 
     766    sage: Cspin = CrystalOfSpins("B3"); Cspin 
     767    The crystal of spins for type ['B', 3] 
     768    sage: Cspin.cardinality() 
     769    8 
     770 
     771We can make use of this to construct an arbitrary crystal with highest 
     772weight `\lambda`, where `\lambda` is a half-integral weight. For 
     773example, suppose that `\lambda = (3/2, 3/2, 1/2)`. The corresponding 
     774irreducible character will have degree 112:: 
     775 
     776    sage: B3 = WeylCharacterRing("B3") 
     777    sage: B3(3/2,3/2,1/2).degree() 
     778    112 
     779 
     780So `\mathcal{B}_\lambda` will have 112 elements. We can find it as a 
     781subcrystal of ``Cspin`` `\otimes \mathcal{B}_\mu`, where 
     782`\mu = \lambda-(1/2,1/2,1/2) = (1,1,0)`:: 
     783 
     784    sage: B3(1,1,0)*B3(1/2,1/2,1/2) 
     785    B3(1/2,1/2,1/2) + B3(3/2,1/2,1/2) + B3(3/2,3/2,1/2) 
     786 
     787We see that just taking the tensor product of these two crystals will 
     788produce a reducible crystal with three constitutents, and we want to 
     789extract the one we want. We do that as follows:: 
     790 
     791    sage: C1 = CrystalOfTableaux("B3", shape=[1,1]) 
     792    sage: C = TensorProductOfCrystals(C1, Cspin, generators=[[C1[0],Cspin[0]]]) 
     793    sage: C.cardinality() 
     794    112 
     795 
     796This is the desired crystal. 
     797 
     798 
     799Type D spin crystals 
     800^^^^^^^^^^^^^^^^^^^^ 
     801A similar situation pertains for type `D_r`, but now there are two 
     802spin crystals, both of degree `2^{r-1}`. These are hand-coded in sage:: 
     803 
     804    sage: SpinPlus = CrystalOfSpinsPlus("D4") 
     805    sage: SpinMinus = CrystalOfSpinsMinus("D4") 
     806    sage: SpinPlus[0].weight() 
     807    (1/2, 1/2, 1/2, 1/2) 
     808    sage: SpinMinus[0].weight() 
     809    (1/2, 1/2, 1/2, -1/2) 
     810    sage: [C.cardinality() for C in [SpinPlus,SpinMinus]] 
     811    [8, 8] 
     812 
     813You can use them similarly to the type B crystal of spins in order to 
     814construct any crystal of half-integral weight. 
     815 
     816 
     817Levi branching rules for crystals 
     818--------------------------------- 
     819 
     820Let `G` be a Lie group and `H` a Levi subgroup. We have already seen 
     821that the Dynkin diagram of `H` is obtained from that of `G` by erasing 
     822one or more nodes. 
     823 
     824If `\mathcal{C}` is a crystal for `G`, then we may obtain the 
     825corresponding crystal for `H` by a similar process. For example if the 
     826Dynkin diagram for `H` is obtained from the Dynkin diagram for `G` by 
     827erasing the `i`-th node, then if we erase all the edges in the crystal 
     828`\mathcal{C}` that are labeled with `i`, we obtain a crystal for `H`. 
     829 
     830 
     831Affine crystals 
     832--------------- 
     833 
     834Sage contains support for affine crystals. These lie outside the scope 
     835of this document. 
  • new file doc/en/thematic_tutorials/lie/introduction.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/lie/introduction.rst
    - +  
     1-------------------------- 
     2The Scope of this Document 
     3-------------------------- 
     4 
     5 
     6Lie groups and algebras 
     7----------------------- 
     8 
     9Sage can be used to do standard computations for Lie groups and Lie 
     10algebras. The following categories of representations are equivalent: 
     11 
     12- Complex representations of a compact, semisimple simply connected 
     13  Lie group `G`. 
     14 
     15- Complex representations of its Lie algebra `\mathfrak{g}`. This is a 
     16  real Lie algebra, so representations are not required to be complex 
     17  linear maps. 
     18 
     19- Complex representations of its complexified Lie algebra 
     20  `\mathfrak{g}_{\mathbb{C}} = \mathbb{C} \otimes \mathfrak{g}`. This 
     21  is a complex Lie algebra and representations are required to be 
     22  complex linear transformations. 
     23 
     24- The complex analytic representations of the semisimple 
     25  simply-connected complex analytic group `G_{\mathbb{C}}` having 
     26  `\mathfrak{g}_{\mathbb{C}}` as its Lie algebra. 
     27 
     28- Modules of the universal enveloping algebra 
     29  `U(\mathfrak{g}_{\mathbb{C}})`. 
     30 
     31- Modules of the quantized enveloping algebra 
     32  `U_q(\mathfrak{g}_{\mathbb{C}})`. 
     33 
     34For example, we could take `G = SU(n)`, 
     35`\mathfrak{g} = \mathfrak{sl}(n, \mathbb{R})`, 
     36`\mathfrak{g}_{\mathbb{C}} = \mathfrak{sl}(n, \mathbb{C})` and 
     37`G = SL(n, \mathbb{C})`. Because these categories are the same, their 
     38representations may be studied simultaneously. The above equivalences 
     39may be expanded to include reductive groups like `U(n)` and `GL(n)` 
     40with a bit of care. 
     41 
     42Here are some typical problems that can be solved using Sage: 
     43 
     44- Decompose a module in any one of these categories into irreducibles. 
     45 
     46- Compute the Frobenius-Schur indicator of an irreducible module. 
     47 
     48- Compute the tensor product of two modules. 
     49 
     50- If `H` is a subgroup of `G`, study the restriction of modules for 
     51  `G` to `H`. The solution to this problem is called a *branching rule*. 
     52 
     53- Find the multiplicities of the weights of the representation. 
     54 
     55In addition to its representations, which we may study as above, a Lie 
     56group has various related structures. These include: 
     57 
     58- The Weyl Group `W`. 
     59 
     60- The Weight Lattice. 
     61 
     62- The Root System 
     63 
     64- The Cartan Type. 
     65 
     66- The Dynkin diagram. 
     67 
     68- The extended Dynkin diagram. 
     69 
     70Sage contains methods for working with these structures. 
     71 
     72If there is something you need that is not implemented, getting it 
     73added to Sage will likely be possible. You may write your own 
     74algorithm for an unimplemented task, and if it is something others 
     75will be interested in, it is probably possible to get it added to 
     76Sage. 
     77 
     78 
     79Combinatorics 
     80------------- 
     81 
     82Sage supports a great many related mathematical objects. Some of these 
     83properly belong to combinatorics. It is beyond the scope of these 
     84notes to cover all the combinatorics in Sage, but we will try to touch 
     85on those combinatorial methods which have some connection with Lie 
     86groups and representation theory. These include: 
     87 
     88- The affine Weyl group, an infinite group containing `W`. 
     89 
     90- Kashiwara crystals, which are combinatorial analogs of modules in 
     91  the above categories. 
     92 
     93- Coxeter group methods applicable to Weyl groups and the affine Weyl 
     94  group, such as Bruhat order. 
     95 
     96- The Iwahori Hecke algebras, which are deformations of the group 
     97  algebras of `W` and the affine Weyl group. 
     98 
     99- Kazhdan-Lusztig polynomials. 
     100 
     101Preparation of this document was supported in part by NSF grant DMS-0652817. 
  • new file doc/en/thematic_tutorials/lie/iwahori_hecke_algebra.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/lie/iwahori_hecke_algebra.rst
    - +  
     1---------------------- 
     2Iwahori Hecke Algebras 
     3---------------------- 
     4 
     5The Iwahori Hecke algebra is defined in [Iwahori1964]_. In that 
     6original paper, the algebra occurs as the convolution ring of 
     7functions on a `p`-adic group that are compactly supported and 
     8invariant both left and right by the Iwahori subgroup. However Iwahori 
     9determined its structure in terms of generators and relations, and it 
     10turns out to be a deformation of the group algebra of the affine Weyl 
     11group. 
     12 
     13Once the presentation is found, the Iwahori Hecke algebra can be 
     14defined for any Coxeter group. It depends on a parameter `q` which in 
     15Iwahori's paper is the cardinality of the residue field. But it could 
     16just as easily be an indeterminate. 
     17 
     18Then the Iwahori Hecke algebra has the following description. Let 
     19`W` be a Coxeter group, with generators (simple reflections) 
     20`s_1,\dots,s_n`. They satisfy the relations `s_i^2 = 1` and the braid 
     21relations 
     22 
     23.. MATH:: 
     24 
     25    s_i s_j s_i s_j \cdots = s_j s_i s_j s_i \cdots 
     26 
     27where the number of terms on each side is the order of `s_i s_j`. 
     28 
     29The Iwahori Hecke algebra has a basis `T_1,\dots,T_n` subject to 
     30relations that resemble those of the `s_i`. They satisfy the braid 
     31relations and the quadratic relation 
     32 
     33.. MATH:: 
     34 
     35    (T_i-q)(T_i+1) = 0. 
     36 
     37This can be modified by letting `q_1` and `q_2` be two indeterminates 
     38and letting 
     39 
     40.. MATH:: 
     41 
     42    (T_i-q_1)(T_i-q_2) = 0. 
     43 
     44In this generality, Iwahori Hecke algebras have significance far 
     45beyond their origin in the representation theory of `p`-adic 
     46groups. For example, they appear in the geometry of Schubert 
     47varieties, where they are used in the definition of the 
     48Kazhdan-Lusztig polynomials. They appear in connection with quantum 
     49groups, and in Jones's original paper on the Jones polynomial. 
     50 
     51Here is how to create an Iwahori Hecke algebra:: 
     52 
     53    sage: R.<q> = PolynomialRing(ZZ) 
     54    sage: H = IwahoriHeckeAlgebraT("B3",q); H 
     55    The Iwahori Hecke Algebra of Type B3 in q,-1 over Univariate 
     56        Polynomial Ring in q over Integer Ring and prefix T 
     57    sage: T1,T2,T3 = H.algebra_generators() 
     58    sage: T1*T1 
     59    (q-1)*T1 + q 
     60 
     61If the Cartan type is affine, the generators will be numbered starting 
     62with ``T0`` instead of ``T1``. 
     63 
     64You may coerce a Weyl group element into the Iwahori Hecke algebra:: 
     65 
     66    sage: W = WeylGroup("G2",prefix="s") 
     67    sage: [s1,s2]=W.simple_reflections() 
     68    sage: P.<q> = LaurentPolynomialRing(QQ) 
     69    sage: H = IwahoriHeckeAlgebraT(W,q) 
     70    sage: H(s1*s2) 
     71    T1*T2 
     72 
     73 
     74Intertwining operators 
     75---------------------- 
     76 
     77The Iwahori Hecke operator can be used to study representations of 
     78`p`-adic groups that have fixed vectors with respect to the Iwahori 
     79subgroup. References: 
     80 
     81- [Rogawski1985]_ 
     82 
     83- [Reeder1992]_ 
     84 
     85- [HainesEtAl2009]_ 
     86 
     87- [BumpNakasuji2010]_ 
     88 
     89- [Casselman1980]_ 
     90 
     91A key feature of the theory are the intertwining operators between 
     92different induced representations. We will show how to implement these 
     93intertwining operators in Sage. 
     94 
     95For simplicity we will work over `G = SL(n,F)` where `F = \mathbb{Q}_q`, 
     96with `q` a prime number, but everything works for an arbitrary split 
     97reductive group over a nonarchimedean local field. If 
     98`\mathbf{z} = (z_1,\dots,z_n) \in \mathbb{C}^n`, define the following 
     99quasicharacters of `T(F)`, the diagonal subgroup in `G`: 
     100 
     101.. MATH:: 
     102 
     103    \chi_{\mathbf{z}} 
     104    \left(\begin{array}{ccc} 
     105    t_1 \\ 
     106    & \ddots \\ 
     107    && t_n 
     108    \end{array}\right) 
     109    = 
     110    \prod_{i=1}^n z_i^{\hbox{ord}(t_i)}, 
     111    \qquad 
     112   \delta 
     113   \left(\begin{array}{ccc} 
     114   t_1 \\ 
     115   & \ddots \\ 
     116   && t_n 
     117   \end{array}\right) 
     118   = 
     119   \prod_{i=1}^n |t_i|^{n+1-2i} 
     120 
     121We extend both to characters of the Borel subgroup `B(F)` of upper 
     122triangular matrices by letting the subgroup `N(F)` of upper triangular 
     123unipotent matrices be in the kernels. Let `V(\chi)` with 
     124`\chi = \chi_{\mathbf{z}}` is defined to be the space of locally 
     125constant functions `f` on `G` such that: 
     126 
     127.. MATH:: 
     128 
     129    f(b g) = (\delta^{1/2}\chi)(b)f(g),\qquad b\in B(F). 
     130 
     131We have a representation `\pi: G \to \hbox{End}(V(\chi))` by right 
     132translation: `\pi(g)f(h) = f(h g)`. These are the *spherical principal 
     133series representations*. Let `K = SL(n,\mathbb{Z}_q)`. This is the 
     134standard maximal compact subgroup. It has a homomorphism 
     135`K \to SL(n,\mathbb{F}_q)` by reduction modulo `q`. The subgroup `J` 
     136of elements of `K` whose images are upper triangular is an open 
     137subgroup, the *Iwahori subgroup*. 
     138 
     139Suppose that the `z_i` are all distinct. Then for each `w \in W` there 
     140exists an *intertwining integral* `M_w: V(\chi) \to V({^w\chi})` where 
     141the Weyl group acts on characters of `T(F)` by conjugation. This 
     142integral is defined by the formula 
     143 
     144.. MATH:: 
     145 
     146    M h(g) = \int_{N \cap w N_- w^{-1}} h(w^{-1}n g) \, dn 
     147 
     148where `N` is the group of upper triangular unipotent matrices and 
     149`N_-` is the group of lower triangular matrices. The integral is 
     150convergent provided `|z_i/z_{i+1}|<1` and in general it may be defined 
     151by analytic continuation in the `z_i` or another method. See Casselman 
     152*loc. cit.*. 
     153 
     154The problem is how to model the intertwining operators in Sage. 
     155 
     156Let `W = N(F) / T(\mathbb{Z}_q)` and `W' = N(F)/T(F)`. These are 
     157isomorphic to the affine and finite Weyl groups, that is, the Weyl 
     158groups with Cartan types ``[`A`,n-1,1]`` and ``[`A`,n-1]``, 
     159respectively. 
     160 
     161The *Iwahori Hecke algebra* `\mathcal{H}` is the ring of compactly 
     162supported functions `h` on `G` such that `h(k g k') = h(g)` when 
     163`k,k' \in J`. It is a ring under convolution. Then `V(\chi)` becomes a 
     164module over it by 
     165 
     166.. MATH:: 
     167 
     168    (h f)(g) = \int_G h(x) f(g x) \, dx. 
     169 
     170The subspace `V(\chi)^J` of `V(\chi)` consisting of elements that are 
     171fixed by `J` is invariant under `\mathcal{H}`. This module is 
     172finite-dimensional: in fact, its order is `|W'|=n!`, whereas `V(\chi)` 
     173itself is infinite dimensional. However the finite-dimensional 
     174`\mathcal{H}`-module `V(\chi)^J` accurately reflects the structure of 
     175the `G`-module `V(\chi)`. For example `V(\chi)` is irreducible as a 
     176`G`-module if and only if `V(\chi)^J` is irreducible as an 
     177`\mathcal{H}`-module. 
     178 
     179Normalizing the Haar measure so that `J` has volume `1`, let `T_w` be 
     180the characteristic function of `J w J`, and if `1 \le i \le r` let 
     181`T_i` denote `T_{\sigma_i}`. The `T_w` with `w \in W` form a basis, 
     182and the `T_i` form a set of algebra generators The `T_i` satisfy the 
     183same braid relations as the `s_i`, but the relation `\sigma_i^2 = 1` is 
     184replaced by `T_i^2 = (q - 1) T_i + q`. 
     185 
     186The subalgebra elements of `\mathcal{H}` consisting of functions that 
     187are supported in `K` is the finite Iwahori Hecke algebra 
     188`\mathcal{H}'`.  Thus `\dim (H) = |W|` but `\mathcal{H}` is 
     189infinite-dimensional The subalgebra `H` has generators 
     190`T_1, \dots, T_r` but omits `T_0`. 
     191 
     192We see that `W`, `W'`, `\mathcal{H}` and `\mathcal{H'}` are all 
     193objects that can be created in Sage. 
     194 
     195We define a vector space isomorphism 
     196`\alpha = \alpha (\chi) : V (\chi)^J \to H'` as follows. If 
     197`F \in V (\chi)^J` then let `\alpha (F) = f` where `f` is the function 
     198`f (g) = F (g^{- 1})` if `g \in K`, 0 if `g \notin K`. It may be 
     199checked that `\alpha (F) \in H'`. This allows us to model the 
     200`|W'|`-dimensional `\mathcal{H}`-module `V(\chi)` by the 
     201`|W'|`-dimensional subalgebra `\mathcal{H}'`. This idea, which appears 
     202in the paper of Rogawski cited above, is due to Joseph Bernstein. 
     203 
     204Let `w \in W` and define a map `\mathcal{M}_w: H \to H` by requiring that 
     205 
     206.. MATH:: 
     207 
     208    \alpha({^w\chi})\circ M_w = \mathcal{M}_w\circ\alpha(\chi) 
     209 
     210as maps from `V(\chi)^J \to H`. Since `M_w` and `\alpha(\chi)`, 
     211`\alpha({^w\chi})` are all homomorphisms of left `\mathcal{H}'`-modules, 
     212`\mathcal{M}_w` is a homomorphism of left `\mathcal{H}'` modules. Now 
     213let `\mu_{\mathbf{z}}(w) = \mathcal{M}_w(1)` where `1` denotes the 
     214identity element of `\mathcal{H}'`. 
     215 
     216Because `\mathcal{M}_w` is a `\mathcal{H}'`-module homomorphism, we have 
     217 
     218.. MATH:: 
     219 
     220    \mathcal{M}_w(h) 
     221    = 
     222    \mathcal{M}_w(h\cdot 1) 
     223    = 
     224    h \mathcal{M}_w(1) 
     225    = 
     226    h\cdot\mu_{\mathbf{z}}(w). 
     227 
     228In other words, the intertwining operator is modeled by multiplication 
     229by `\mu_{\mathbf{z}}(w)` when we identify `V(\chi)^J` and 
     230`V({^w\chi})^J` with `H` by means of the homomorphisms `\alpha`. We 
     231are therefore left with the problem of computing 
     232`\mu_{\mathbf{z}}(w)`. If `l(w_1w_2) = l(w_1)+l(w_2)` then 
     233`M_{w_1w_2} = M_{w_1}M_{w_2}` and it follows that 
     234 
     235.. MATH:: 
     236 
     237    \mu_{\mathbf{z}}(w_1w_2) 
     238    = 
     239    \mu_{\mathbf{z}}(w_2)\mu_{w_2\mathbf{z}}(w_1). 
     240 
     241(Here `w_2` acts on the spectral parameters `\mathbf{z}` in the 
     242obvious way.) Thus we are reduced to the determination of 
     243`\mu_{\mathbf{z}}(w)` when `w = s_i` is a simple reflection, and this 
     244is accomplished by Theorem 3.4 in Casselman, *loc. cit.*: 
     245 
     246.. MATH:: 
     247 
     248    \mu_{\mathbf{z}}(s_i) 
     249    = 
     250    \frac{1}{q}T_i + 
     251    \left(1-\frac{1}{q}\right) 
     252    \frac{\mathbf{z}^{\alpha_i}}{1-\mathbf{z}^{\alpha_i}}. 
     253 
     254Here the simple root `\alpha_i = (0,\dots,0,1,-1,0,\dots,0)` in the 
     255ambient lattice, where the `1` is in the `i`-th position, so 
     256`\mathbf{z}^\alpha_i = z_i/z_{i+1}`. 
     257 
     258In addition to the intertwining operators, let us construct a basis 
     259`\psi_w` of `V(\chi)^J` indexed by elements of `W'`. Let 
     260 
     261.. MATH:: 
     262 
     263    \psi_w(b k) 
     264    = 
     265    \begin{cases} 
     266    \delta^{1/2}\chi(b) & \text{if $k\in J u^{-1} J$ with $u \ge w$},\\ 
     267    0 & \text{otherwise}, 
     268    \end{cases} 
     269 
     270where `b\in B(F)` and `k \in K`. In order to make sense of this 
     271definition, bear in mind that every element of `G` has a decomposition 
     272as a product `b k` with `b \in B(F)` and `k \in K`, and every 
     273`k \in K` belongs to a unique double coset `J u^{-1} J` with `u \in W'`. 
     274 
     275The image of `\psi_w` under the homomorphism `\alpha` is just 
     276`\sum_{u \ge w} T_u`, and by abuse of notation we will denote this 
     277element of `\mathcal{H}'` also by `\psi_w`. Now let us ask to evaluate 
     278`m(u,v) = (\Lambda_v\psi_u)(1)`. It may be shown that `m(u,v) = 0` 
     279unless `u \le v`, and that `m(u,u) = 1`. In other words, the "matrix" 
     280`m` is upper triangular in the Bruhat order. 
     281 
     282Bump and Nakasuji used Sage to investigate this question and arrived 
     283at the following conjecture. This is conjectured for more general 
     284groups than just the `SL(n)` that we are considering, but only for the 
     285simply-laced groups (types A, D, E). It follows from the Deodhar 
     286conjecture that the set 
     287 
     288.. MATH:: 
     289 
     290    S(u,v) = \{\alpha \in \Phi^+|u \le v r_\alpha < v\} 
     291 
     292has cardinality `\ge l(v)-l(u)`, where `l` is the length function on 
     293`W'`. (Remember that `r_\alpha` is the reflection in the positive root 
     294`\alpha`.) If the Kazhdan-Lusztig polynomial `P_{w_0v,w_0u} = 1`, then 
     295`|S(u,v)| = l(v)-l(u)`. 
     296 
     297**Conjecture** (Bump and Nakasuji) If the Kazhdan-Lusztig polynomial 
     298`P_{w_0v,w_0u} = 1` then 
     299 
     300.. MATH:: 
     301 
     302    m(u,v) 
     303    = 
     304    \prod_{\alpha \in S(u,v)} 
     305    \frac{1-q^{-1}\mathbf{z}^\alpha}{1-\mathbf{z}^\alpha}. 
     306 
     307The following Sage code is capable of verifying this statement for 
     308``['A',3]``, and of course can be adapted to any root system. 
     309 
     310 
     311Intertwining operator program 
     312----------------------------- 
     313 
     314This program can compute both the actual and conjectured values of 
     315`m(u,v)`. 
     316 
     317:: 
     318 
     319   import copy 
     320 
     321   P1.<q> = PolynomialRing(QQ) 
     322   W = WeylGroup("A3", prefix="s") 
     323   KL = KazhdanLusztigPolynomial(W, q) 
     324 
     325   P.<q,z1,z2,z3,z4> = PolynomialRing(QQ) 
     326   F = Frac(P) 
     327   H = IwahoriHeckeAlgebraT(W,q,base_ring=F) 
     328   [s1,s2,s3] = W.simple_reflections() 
     329   w0 = W.long_element() 
     330   [T1,T2,T3] = H.algebra_generators() 
     331 
     332   def mu(z,s): 
     333       """ 
     334       Produces an element of the Hecke algebra that mimics 
     335       the intertwining integral corresponding to a simple 
     336       reflection. 
     337       """ 
     338       [z1,z2,z3,z4] = z 
     339       if s == s1: 
     340           return q^(-1)*T1+(1-1/q)*(z1/(z2-z1)) 
     341       elif s == s2: 
     342           return q^(-1)*T2+(1-1/q)*(z2/(z3-z2)) 
     343       elif s == s3: 
     344           return q^(-1)*T3+(1-1/q)*(z3/(z4-z3)) 
     345 
     346   def reflect(s,z): 
     347       """ 
     348       Applies the simple reflection s to the spectral data z. 
     349       """ 
     350       return (Matrix(z)*s.matrix()).list() 
     351 
     352   def intertwiner(w,debug=False): 
     353       """ 
     354       This is mu_z(w) in general. The function mu(z,s) implemented 
     355       above is only for simple reflections. 
     356 
     357       Run with debug=True to see what it is really doing. 
     358       """ 
     359       decomp = w.reduced_word() 
     360       decomp.reverse() 
     361       prod = H(1) 
     362       if debug: 
     363           clist = "" 
     364       for i in range(len(decomp)): 
     365           alist = copy.deepcopy(decomp[:i]) 
     366           z = [z1,z2,z3,z4] 
     367           for j in alist: 
     368               z = reflect(W.simple_reflection(j),z) 
     369           s = W.simple_reflection(decomp[i]) 
     370           if debug: 
     371               clist +="mu(%s,%s)"%(z.__repr__(),s.__repr__()) 
     372               if i < len(decomp)-1: 
     373                   clist += "*" 
     374           else: 
     375               prod = prod*mu(z,s) 
     376       if debug: 
     377           return clist 
     378       else: 
     379           return prod 
     380 
     381   def psi(u): 
     382       """ 
     383       u is a permutation. This produces the sum of the f_v for v>=u. 
     384       """ 
     385       u = H(u).support_of_term() 
     386       return sum(H(v) for v in W if u.bruhat_le(v)) 
     387 
     388   def ev(f): 
     389       """ 
     390       Evaluate the element of the space of Iwahori fixed vectors 
     391       in the induced model at the identity. 
     392       """ 
     393       return f.coefficient(W(1)) 
     394 
     395   def m(u,v): 
     396       """ 
     397       It is assumed that u <= v. Apply the v intertwiner to 
     398       psi(u) and evaluate at 1. 
     399       """ 
     400       u = W(u) 
     401       v = W(v) 
     402       return ev(psi(u)*intertwiner(H(v))) 
     403 
     404   def rfactor(alpha): 
     405       """ 
     406       If alpha is a root, returns (1-q^(-1)*z^alpha)/(1-z^alpha). 
     407       """ 
     408       z = [z1,z2,z3,z4] 
     409       za = prod(z[i]**alpha[i] for i in range(4)) 
     410       return (1-q^(-1)*za)/(1-za) 
     411 
     412   def conjectured_m(u,v): 
     413       """ 
     414       This is the value conjectured for m(u,v) by Bump and Nakasuji 
     415       if u and v satisfy a hypothesis. 
     416       """ 
     417       refdict = W.reflections() 
     418       S = [refdict[r] for r in refdict.keys() if u.bruhat_le(v*r) and (v*r).bruhat_le(v)] 
     419       return prod(rfactor(alpha) for alpha in S) 
  • new file doc/en/thematic_tutorials/lie/kazhdan_lusztig_polynomials.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/lie/kazhdan_lusztig_polynomials.rst
    - +  
     1--------------------------- 
     2Kazhdan-Lusztig Polynomials 
     3--------------------------- 
     4 
     5Sage can compute ordinary Kazhdan-Lusztig polynomials for Weyl groups 
     6or affine Weyl groups (and potentially other Coxeter groups). 
     7 
     8You must create a Weyl group ``W`` and a ring containing an 
     9indeterminate ``q``. The ring may be a univariate polynomial ring or a 
     10univariate Laurent polynomial ring. Then you may calculate 
     11Kazhdan-Lusztig polynomials as follows:: 
     12 
     13    sage: W = WeylGroup("A3", prefix="s") 
     14    sage: [s1,s2,s3] = W.simple_reflections() 
     15    sage: P.<q> = LaurentPolynomialRing(QQ) 
     16    sage: KL = KazhdanLusztigPolynomial(W,q) 
     17    sage: KL.R(s2, s2*s1*s3*s2) 
     18    q^3 - 3*q^2 + 3*q - 1 
     19    sage: KL.P(s2, s2*s1*s3*s2) 
     20    q + 1 
     21 
     22Thus we have the Kazhdan-Lusztig R and P polynomials. 
     23 
     24Known algorithms for computing Kazhdan-Lusztig polynomials are highly 
     25recursive, and caching of intermediate results is necessary for the 
     26programs not to be prohibitively slow. Therefore intermediate results 
     27are cached. This has the effect that as you run the program for any 
     28given ``KazhdanLusztigPolynomial`` class, the calculations will be 
     29slow at first but progressively faster as more polynomials are 
     30computed. 
     31 
     32You may see the results of the intermediate calculations by creating 
     33the class with the option ``trace="true"``. 
     34 
     35Since the parent of ``q`` must be a univariate ring, if you want to 
     36work with other indeterminates, *first* create a univariate polynomial 
     37or Laurent polynomial ring, and the Kazhdan-Lusztig class. *Then* 
     38create a ring containing ``q`` and the other variables:: 
     39 
     40    sage: W = WeylGroup("B3", prefix="s") 
     41    sage: [s1,s2,s3] = W.simple_reflections() 
     42    sage: P.<q> = PolynomialRing(QQ) 
     43    sage: KL = KazhdanLusztigPolynomial(W,q) 
     44    sage: P1.<x,y> = PolynomialRing(P) 
     45    sage: x*KL.P(s1*s3,s1*s3*s2*s1*s3) 
     46    (q + 1)*x 
  • new file doc/en/thematic_tutorials/lie/lie_basics.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/lie/lie_basics.rst
    - +  
     1---------------- 
     2Lie Group Basics 
     3---------------- 
     4 
     5 
     6Goals of this section 
     7--------------------- 
     8 
     9Since we must be brief here, this is not really a place to learn about 
     10Lie groups. Rather, the point of this section is to outline what you 
     11need to know to use Sage effectively for Lie computations, and to fix 
     12ideas and notations. 
     13 
     14 
     15Semisimple and reductive groups 
     16------------------------------- 
     17 
     18If `g \in GL(n,\mathbb{C})`, then `g` may be uniquely factored as 
     19`g_1 g_2` where `g_1` and `g_2` commute, with `g_1` semisimple 
     20(diagonalizable) and `g_2` unipotent (all its eigenvalues equal to 
     211). This follows from the Jordan canonical form. If `g = g_1` then `g` 
     22is called *semisimple* and if `g = g_2` then `g` is called 
     23*unipotent*. 
     24 
     25We consider a Lie group `G` and a class of representations such that 
     26if an element `g \in G` is unipotent (resp. semisimple) in one 
     27faithful representation from the class, then it is unipotent 
     28(resp. semisimple) in every faithful representation of the class. Thus 
     29the notion of being semisimple or unipotent is intrinsic. Examples: 
     30 
     31- Compact Lie groups with continuous representations 
     32 
     33- Complex analytic groups with analytic representations 
     34 
     35- Algebraic groups over `\mathbb{R}` with algebraic representations. 
     36 
     37A subgroup of `G` is called *unipotent* if it is connected and all its 
     38elements are unipotent. It is called a *torus* if it is connected, 
     39abelian, and all its elements are semisimple. The group `G` is called 
     40*reductive* if it has no nontrivial normal unipotent subgroup. For 
     41example, `GL(2,\mathbb{C})` is reductive, but its subgroup: 
     42 
     43.. MATH:: 
     44 
     45    \left\{\left( 
     46    \begin{array}{cc} 
     47    a & b \\ 
     48    & d 
     49    \end{array} 
     50    \right)\right\} 
     51 
     52is not since it has a normal unipotent subgroup 
     53 
     54.. MATH:: 
     55 
     56    \left\{\left( 
     57    \begin{array}{cc} 
     58    1 & b \\ 
     59    & 1 
     60    \end{array} 
     61    \right)\right\}. 
     62 
     63A group has a unique largest normal unipotent subgroup, called the 
     64*unipotent radical*, so it is reductive if and only if the unipotent 
     65radical is trivial. 
     66 
     67A Lie group is called *semisimple* it is reductive and furthermore has 
     68no nontrivial normal tori. For example `GL(2,\mathbb{C})` is reductive 
     69but not semisimple because it has a normal torus: 
     70 
     71.. MATH:: 
     72 
     73    \left\{\left( 
     74    \begin{array}{cc} 
     75    a \\ 
     76    & a 
     77    \end{array} 
     78    \right)\right\}. 
     79 
     80The group `SL(2,\mathbb{C})` is semisimple. 
     81 
     82 
     83Fundamental group and center 
     84---------------------------- 
     85 
     86If `G` is a semisimple Lie group then its center and fundamental group 
     87are finite abelian groups. The universal covering group `\tilde G` is 
     88therefore a finite extension with the same Lie algebra. Any 
     89representation of `G` may be reinterpreted as a representation of the 
     90simply connected `\tilde G`. Therefore we may as well consider 
     91representations of `\tilde G`, and restrict ourselves to the simply 
     92connected group. 
     93 
     94 
     95Parabolic subgroups and Levi subgroups 
     96-------------------------------------- 
     97 
     98Let `G` be a reductive complex analytic group. A maximal solvable 
     99subgroup of `G` is called a *Borel subgroup*. All Borel subgroups are 
     100conjugate. Any subgroup `P` containing a Borel subgroup is called a 
     101*parabolic subgroup*.  We may write `P` as a semidirect product of its 
     102maximal normal unipotent subgroup or *unipotent radical* `P` and a 
     103reductive subgroup `M`, which is determined up to conjugacy. The 
     104subgroup `M` is called a *Levi subgroup*. 
     105 
     106**Example:** Let `G = GL_n(\mathbb{C})` and let `r_1, \dots, r_k` be 
     107integers whose sum is `n`. Then we may consider matrices of the form: 
     108 
     109.. MATH:: 
     110 
     111    \left(\begin{array}{cccc} 
     112    g_1 & * & \cdots & * \\ 
     113    & g_2 & & * \\ 
     114    && \ddots \\ 
     115    &&& g_r 
     116    \end{array}\right) 
     117 
     118where `g_i \in GL(r_i,\mathbb{C}`. The unipotent radical consists of 
     119the subgroup in which all `g_i = I_{r_i}`. The Levi subgroup 
     120(determined up to conjugacy) is: 
     121 
     122.. MATH:: 
     123 
     124    M 
     125    = 
     126    \left\{\left( 
     127    \begin{array}{cccc} 
     128    g_1  \\ 
     129    & g_2 \\ 
     130    && \ddots \\ 
     131    &&& g_r 
     132    \end{array} 
     133    \right)\right\}, 
     134 
     135and is isomorphic to 
     136`M = GL(r_1,\mathbb{C}) \times \cdots \times GL(r_k,\mathbb{C})`. 
     137Therefore `M` is a Levi subgroup. 
     138 
     139The notion of a Levi subgroup can be extended to compact Lie 
     140groups. Thus `U(r_1) \times \cdots \times U(r_k)` is a Levi subgroup 
     141of `U(n)`. However Parabolic subgroups do not exist for compact Lie 
     142groups. 
     143 
     144 
     145Cartan types 
     146------------ 
     147 
     148Semisimple Lie groups are classified by their *Cartan types*. There 
     149are both reducible and irreducible Cartan types in Sage. Let us start 
     150with the irreducible types. Such a type is implemented in Sage as a 
     151pair ``[`X`,r]`` where `X` is one of A, B, C, D, E, F or G and `r` is a 
     152positive integer. If `X = D` then we must have `r > 1` and if `X` is 
     153one of the *exceptional types* `E`, `F` or `G` then `r` is limited to 
     154only a few possibilities. The exceptional types are:: 
     155 
     156    ['G',2],  ['F',4],  ['E',6], ['E',7] or ['E',8]. 
     157 
     158A simply-connected semisimple group is a direct product of simple Lie 
     159groups, which are given by the following table. The integer `r` is 
     160called the *rank*, and is the dimension of the maximal torus. 
     161 
     162Here are the Lie groups corresponding to the classical types: 
     163 
     164+---------------+-------------------------+-------------+ 
     165| compact group | complex analytic group  | Cartan type | 
     166+===============+=========================+=============+ 
     167| `SU(r+1)`     | `SL(r+1,\mathbb{C})`    | `A_r`       | 
     168+---------------+-------------------------+-------------+ 
     169| `spin(2r+1)`  | `spin(2r+1,\mathbb{C})` | `B_r`       | 
     170+---------------+-------------------------+-------------+ 
     171| `Sp(2r)`      | `Sp(2r,\mathbb{C})`     | `C_r`       | 
     172+---------------+-------------------------+-------------+ 
     173| `spin(2r)`    | `spin(2r,\mathbb{C})`   | `D_r`       | 
     174+---------------+-------------------------+-------------+ 
     175 
     176You may create these Cartan types and their Dynkin diagrams as follows:: 
     177 
     178    sage: ct = CartanType("D5"); ct 
     179    ['D', 5] 
     180 
     181Here ``"D5"`` is an abbreviation for ``['D',5]``. 
     182 
     183 
     184Dual Cartan types 
     185------------------ 
     186 
     187Every Cartan type has a dual, which you can get from within Sage:: 
     188 
     189    sage: CartanType("B4").dual() 
     190    ['C', 4] 
     191 
     192Types other than ``B`` and ``C`` are self-dual in the sense that the 
     193dual is isomorphic to the original type, but the isomorphism of a 
     194Cartan type with its dual might relabel the vertices. We can see this 
     195as follows:: 
     196 
     197    sage: CartanType("F4").dynkin_diagram() 
     198    O---O=>=O---O 
     199    1   2   3   4 
     200    F4 
     201    sage: CartanType("F4").dual() 
     202    ['F', 4]^* 
     203    sage: CartanType("F4").dual().dynkin_diagram() 
     204    O---O=<=O---O 
     205    1   2   3   4 
     206    F4* 
     207 
     208 
     209Reducible Cartan types 
     210---------------------- 
     211 
     212If `G` is a Lie group of finite index in `G_1 \times G_2`, where `G_1` 
     213and `G_2` are Lie groups of dimension `>0`, then `G` is called 
     214*reducible*. In this case, the root system of `G` is the disjoint 
     215union of the root systems of `G_1` and `G_2`, which lie in orthogonal 
     216subspaces of the ambient space of the weight space of `G`. The Cartan 
     217type of `G` is thus *reducible*. 
     218 
     219Reducible Cartan types are supported in Sage as follows:: 
     220 
     221    sage: RootSystem("A1xA1") 
     222    Root system of type A1xA1 
     223    sage: WeylCharacterRing("A1xA1") 
     224    The Weyl Character Ring of Type A1xA1 with Integer Ring coefficients 
     225 
     226 
     227Low dimensional Cartan types 
     228---------------------------- 
     229 
     230There are some isomorphisms that occur in low degree. 
     231 
     232+-------------+------------+-----------------+---------------------+ 
     233| Cartan Type | Group      | Equivalent Type | Isomorphic Group    | 
     234+=============+============+=================+=====================+ 
     235| B2          | `spin(5)`  | C2              | `Sp(4)`             | 
     236+-------------+------------+-----------------+---------------------+ 
     237| D3          | `spin(6)`  | A3              | `SL(4)`             | 
     238+-------------+------------+-----------------+---------------------+ 
     239| D2          | `spin(4)`  | A1xA1           | `SL(2)\times SL(2)` | 
     240+-------------+------------+-----------------+---------------------+ 
     241| B1          | `spin(3)`  | A1              | `SL(2)`             | 
     242+-------------+------------+-----------------+---------------------+ 
     243| C1          | `Sp(2)`    | A1              | `SL(2)`             | 
     244+-------------+------------+-----------------+---------------------+ 
     245 
     246Sometimes the redundant Cartan types such as D3 and D2 are excluded 
     247from the list of Cartan types. Folks will tell there's no such Cartan 
     248types. However Sage allows them since excluding them leads to 
     249exceptions having to be made in algorithms. A better approach, which 
     250is followed by Sage, is to allow the redundant Cartan types, but to 
     251implement the isomorphisms explicitly as special cases of branching 
     252rules. The utility of this approach may be seen by considering that 
     253the rank one group `SL(2)` has different natural weight lattices 
     254realizations depending on whether we consider it to be `SL(2)`, 
     255`spin(2)` or `Sp(2)`:: 
     256 
     257    sage: RootSystem("A1").ambient_space().simple_roots() 
     258    Finite family {1: (1, -1)} 
     259    sage: RootSystem("B1").ambient_space().simple_roots() 
     260    Finite family {1: (1)} 
     261    sage: RootSystem("C1").ambient_space().simple_roots() 
     262    Finite family {1: (2)} 
     263 
     264 
     265Affine Cartan types 
     266------------------- 
     267 
     268There are also affine Cartan types, which correspond to (infinite) 
     269affine Lie algebras. There is an affine Cartan type of the of the 
     270form ``[`X`,r,1]`` if ``X=A,B,C,D,E,F,G`` and ``[`X`,r]`` is an ordinary 
     271Cartan type. There are also *twisted affine types* of the form ``[X,r,k]`` 
     272where `k = 2` or 3 if the Dynkin diagram of the ordinary Cartan type 
     273``[X,r]`` has an automorphism of degree `k`. 
     274 
     275Illustrating some of the methods available for the untwisted affine 
     276Cartan type ``['A',4,1]``:: 
     277 
     278    sage: ct = CartanType(['A',4,1]); ct 
     279    ['A', 4, 1] 
     280    sage: ct.dual() 
     281    ['A', 4, 1] 
     282    sage: ct.classical() 
     283    ['A', 4] 
     284    sage: ct.dynkin_diagram() 
     285    0 
     286    O-----------+ 
     287    |           | 
     288    |           | 
     289    O---O---O---O 
     290    1   2   3   4 
     291    A4~ 
     292 
     293The twisted affine Cartan types are relabeling of the duals of certain 
     294untwisted Cartan types:: 
     295 
     296    sage: CartanType(['A',3,2]) 
     297    ['B', 2, 1]^* 
     298    sage: CartanType(['D',4,3]) 
     299    ['G', 2, 1]^* relabelled by {0: 0, 1: 2, 2: 1} 
     300 
     301 
     302Relabeled Cartan types 
     303---------------------- 
     304 
     305By default Sage uses the labeling of the Dynkin Diagram from Bourbaki, 
     306*Lie Groups and Lie Algebras* Chapters 4,5,6. There is another 
     307labeling of the vertices due to Dynkin. Most of the literature follows 
     308Bourbaki, though Kac's book *Infinite Dimensional Lie algebras* 
     309follows Dynkin. 
     310 
     311If you need to use Dynkin's labeling you should be aware that Sage 
     312does support relabeled Cartan types. See the documentation in 
     313``sage.combinat.root_system.type_relabel`` for further information. 
     314 
     315 
     316.. _standard-realizations: 
     317 
     318Standard realizations of the ambient spaces 
     319------------------------------------------- 
     320 
     321These realizations follow the Appendix in Bourbaki, *Lie Groups 
     322and Lie Algebras, Chapters 4-6*. 
     323 
     324 
     325Type A 
     326^^^^^^ 
     327 
     328For type `A_r` we use an `r+1` dimensional ambient space. This means 
     329that we are modeling the Lie group `U(r+1)` or `GL(r+1,\mathbb{C})` 
     330rather than `SU(r+1)` or `SL(r+1,\mathbb{C})`. The ambient space is 
     331identified with `\mathbb{Q}^{r+1}`:: 
     332 
     333   sage: RootSystem("A3").ambient_space().simple_roots() 
     334   Finite family {1: (1, -1, 0, 0), 2: (0, 1, -1, 0), 3: (0, 0, 1, -1)} 
     335   sage: RootSystem("A3").ambient_space().fundamental_weights() 
     336   Finite family {1: (1, 0, 0, 0), 2: (1, 1, 0, 0), 3: (1, 1, 1, 0)} 
     337   sage: RootSystem("A3").ambient_space().rho() 
     338   (3, 2, 1, 0) 
     339 
     340The dominant weights consist of integer `r+1`-tuples 
     341`\lambda = (\lambda_1,\dots,\lambda_{r+1})` such that 
     342`\lambda_1 \ge \dots \ge \lambda_{r+1}`. 
     343 
     344See :ref:`SLvsGL` for further remarks about Type A. 
     345 
     346 
     347Type B 
     348^^^^^^ 
     349For the remaining classical Cartan types `B_r`, `C_r` and `D_r` we use 
     350an `r`-dimensional ambient space:: 
     351 
     352   sage: RootSystem("B3").ambient_space().simple_roots() 
     353   Finite family {1: (1, -1, 0), 2: (0, 1, -1), 3: (0, 0, 1)} 
     354   sage: RootSystem("B3").ambient_space().fundamental_weights() 
     355   Finite family {1: (1, 0, 0), 2: (1, 1, 0), 3: (1/2, 1/2, 1/2)} 
     356   sage: RootSystem("B3").ambient_space().rho() 
     357   (5/2, 3/2, 1/2) 
     358 
     359This is the Cartan type of `spin(2r+1)`. The last fundamental weight 
     360``(1/2, 1/2, ... , 1/2)`` is the highest weight of the `2^r` 
     361dimensional *spin representation*. All the other fundamental 
     362representations factor through the homomorphism 
     363`spin(2r+1) \to SO(2r+1)` and are representations of the orthogonal 
     364group. 
     365 
     366The dominant weights consist of `r`-tuples of integers or 
     367half-integers `(\lambda_1,\dots,\lambda_r)` such that 
     368`\lambda_1 \ge \lambda_2 \dots \ge \lambda_r \ge 0`, and such that the 
     369differences `\lambda_i - \lambda_j \in \mathbb{Z}`. 
     370 
     371 
     372Type C 
     373^^^^^^ 
     374:: 
     375 
     376   sage: RootSystem("C3").ambient_space().simple_roots() 
     377   Finite family {1: (1, -1, 0), 2: (0, 1, -1), 3: (0, 0, 2)} 
     378   sage: RootSystem("C3").ambient_space().fundamental_weights() 
     379   Finite family {1: (1, 0, 0), 2: (1, 1, 0), 3: (1, 1, 1)} 
     380   sage: RootSystem("C3").ambient_space().rho() 
     381   (3, 2, 1) 
     382 
     383This is the Cartan type of the symplectic group `Sp(2r)`. 
     384 
     385The dominant weights consist of `r`-tuples of integers 
     386`\lambda = (\lambda_1,\dots,\lambda_{r+1})` such that 
     387`\lambda_1 \ge \cdots \ge \lambda_r \ge 0`. 
     388 
     389 
     390Type D 
     391^^^^^^ 
     392:: 
     393 
     394   sage: RootSystem("D4").ambient_space().simple_roots() 
     395   Finite family {1: (1, -1, 0, 0), 2: (0, 1, -1, 0), 3: (0, 0, 1, -1), 4: (0, 0, 1, 1)} 
     396   sage: RootSystem("D4").ambient_space().fundamental_weights() 
     397   Finite family {1: (1, 0, 0, 0), 2: (1, 1, 0, 0), 3: (1/2, 1/2, 1/2, -1/2), 4: (1/2, 1/2, 1/2, 1/2)} 
     398   sage: RootSystem("D4").ambient_space().rho() 
     399   (3, 2, 1, 0) 
     400 
     401This is the Cartan type of `spin(2r)`.  The last two fundamental 
     402weights are the highest weights of the two `2^{r-1}`-dimensional spin 
     403representations. 
     404 
     405The dominant weights consist of `r`-tuples of integers 
     406`\lambda = (\lambda_1,\dots,\lambda_{r+1})` such that 
     407`\lambda_1 \ge \cdots \ge \lambda_{r-1} \ge |\lambda_r|`. 
     408 
     409We leave the reader to examine the exceptional types. You can use 
     410Sage to list the fundamental dominant weights and simple roots. 
     411 
     412 
     413Weights and the ambient space 
     414----------------------------- 
     415 
     416Let `G` be a reductive complex analytic group. Let `T` be a maximal 
     417torus, `\Lambda = X^{\ast} (T)` be its group of analytic 
     418characters. Then `T \cong (\mathbb{C}^{\times})^r` for some `r` and 
     419`\Lambda \cong \mathbb{Z}^r`. 
     420 
     421**Example 1:** Let `G = \hbox{GL}_{r+1} (\mathbb{C})`. Then `T` is the 
     422diagonal subgroup and `X^{\ast} (T) \cong \mathbb{Z}^{r+1}`. If 
     423`\lambda = (\lambda_1, \dots, \lambda_n)` then `\lambda` is identified 
     424with the rational character 
     425 
     426.. MATH:: 
     427 
     428    {\bf t} 
     429    = 
     430    \left(\begin{array}{ccc} 
     431    t_1 &  & \\ 
     432    & \ddots & \\ 
     433    &  & t_n 
     434    \end{array}\right) 
     435    \longmapsto \prod t_i^{\lambda_i}. 
     436 
     437**Example 2:** Let `G = \hbox{SL}_{r+1} (\mathbb{C})`. Again `T` is 
     438the diagonal subgroup but now if 
     439`\lambda \in \mathbb{Z}^{\Delta} = \{(d, \cdots, d) | d \in \mathbb{Z}\} \subseteq \mathbb{Z}^{r+1}` 
     440then `\prod t_i^{\lambda_i} = \det ({\bf t})^d = 1`, so 
     441`X^{\ast} (T) \cong \mathbb{Z}^{r+1} /\mathbb{Z}^{\Delta} \cong \mathbb{Z}^r`. 
     442 
     443- Elements of `\Lambda` are called *weights*. 
     444 
     445- If `\pi: G \to GL(V)` is any representation we may restrict `\pi` to 
     446  `T`. Then the characters of `T` that occur in this restriction are 
     447  called the *weights of* `\pi`. 
     448 
     449- `G` acts on its Lie algebra by conjugation (the *adjoint representation*). 
     450 
     451- The nonzero weights of the adjoint representation are called *roots*. 
     452 
     453- The *ambient space* of `\Lambda` is `\mathbb{Q} \otimes \Lambda`. 
     454 
     455 
     456The root system 
     457--------------- 
     458 
     459As we have mentioned, `G` acts on its complexified Lie algebra 
     460`\mathfrak{g}_{\mathbb{C}}` by the adjoint representation. The zero 
     461weight space `\mathfrak{g}_{\mathbb{C}}(0)` is just the Lie algebra of 
     462`T` itself. The other nonzero weights each appear with multiplicity 
     463one and form an interesting configuration of vectors called the 
     464*root system* `\Phi`. 
     465 
     466It is convenient to partition `\Phi` into two sets `\Phi^+` and 
     467`\Phi^-` such that `\Phi^+` consists of all roots lying on one side of 
     468a hyperplane. Often we arrange things so that `G` is embedded in 
     469`GL(n,\mathbb{C})` in such a way that the positive weights correspond 
     470to upper triangular matrices. Thus if `\alpha` is a positive root, its 
     471weight space `\mathfrak{g}_{\mathbb{C}}(\alpha)` is spanned by a 
     472vector `X_\alpha`, and the exponential of this eigenspace in `G` is a 
     473one-parameter subgroup of unipotent matrices. It is always possible to 
     474arrange that this one-parameter subgroup consists of upper triangular 
     475matrices. 
     476 
     477If `\alpha` is a positive root that cannot be decomposed as a sum of 
     478other positive roots, then `\alpha` is called a *simple root*. If `G` 
     479is semisimple of rank `r`, then `r` is the number of positive 
     480roots. Let `\alpha_1,\dots,\alpha_r` be these. 
     481 
     482 
     483The Weyl group 
     484-------------- 
     485 
     486Let `G` be a complex analytic group. Let `T` be a maximal torus, and 
     487let `N(T)` be its normalizer. Let `W = N(T)/T` be the *Weyl group*. It 
     488acts on `T` by conjugation; therefore it acts on the weight lattice 
     489`\Lambda` and its ambient space.  The ambient space admits an inner 
     490product that is invariant under this action. Let `\left<v,w\right>` 
     491denote this inner product. If `\alpha` is a root let `r_\alpha` denote 
     492the reflection in the hyperplane of the ambient space that is 
     493perpendicular to `\alpha`. If `\alpha = \alpha_i` is a simple root, 
     494then we use the notation `s_i` to denote `r_\alpha`. 
     495 
     496Then `s_1,\dots,s_r` generate `W`, which is a *Coxeter group*. This 
     497means that it is generated by elements `s_i` of order two and that 
     498if `m(i,j)` is the order of `s_i s_j`, then 
     499 
     500.. MATH:: 
     501 
     502    W = \left<s_i| s_i^2=1, (s_i s_j)^{m(i,j)} = 1\right> 
     503 
     504is a presentation. An important function `l: W \to \mathbb{Z}` is the 
     505*length* function, where `l(w)` is the length of the shortest 
     506decomposition of `w` into a product of simple reflections. 
     507 
     508 
     509The dual root system 
     510-------------------- 
     511 
     512The *coroots* are certain linear functionals on the ambient space 
     513that also form a root system. Since the ambient space admits a 
     514`W`-invariant inner product, they may be identified with elements 
     515of the ambient space itself. Then they are proportional to the 
     516roots, though if the roots have different lengths, long roots 
     517correspond to short coroots and conversely. The coroot corresponding 
     518to the root `\alpha` is 
     519 
     520.. MATH:: 
     521 
     522    \alpha^\vee = \frac{2\alpha}{\left<\alpha,\alpha\right>}. 
     523 
     524 
     525The Dynkin diagram 
     526------------------ 
     527 
     528The Dynkin diagram is a graph whose vertices are in bijection with the 
     529set simple roots. We connect the vertices corresponding to roots that 
     530are not orthogonal. Usually two such vertices make an angle of 
     531`2\pi/3`, in which case we connect them with a single 
     532bond. Occasionally they may make an angle of `3\pi/4` in which case we 
     533connect them with a double bond, or `5\pi/6` in which case we connect 
     534them with a triple bond. If the bond is single, the roots have the 
     535same length with respect to the inner product on the ambient space. In 
     536the case of a double or triple bond, the two simple roots in questions 
     537have different length, and the bond is drawn as an arrow from the long 
     538root to the short root. Only the exceptional group `G_2` has a triple 
     539bond. 
     540 
     541There are various ways to get the Dynkin diagram:: 
     542 
     543    sage: DynkinDiagram("D5") 
     544            O 5 
     545            | 
     546            | 
     547    O---O---O---O 
     548    1   2   3   4 
     549    D5 
     550    sage: ct = CartanType("E6"); ct 
     551    ['E', 6] 
     552    sage: ct.dynkin_diagram() 
     553            O 2 
     554            | 
     555            | 
     556    O---O---O---O---O 
     557    1   3   4   5   6 
     558    E6 
     559    sage: B4=WeylCharacterRing("B4"); B4 
     560    The Weyl Character Ring of Type ['B', 4] with Integer Ring coefficients 
     561    sage: B4.dynkin_diagram() 
     562    O---O---O=>=O 
     563    1   2   3   4 
     564    B4 
     565    sage: RootSystem("G2").dynkin_diagram() 
     566      3 
     567    O=<=O 
     568    1   2 
     569    G2 
     570 
     571 
     572The affine root and the extended Dynkin diagram 
     573----------------------------------------------- 
     574 
     575For the extended Dynkin diagram, we add one negative root 
     576`\alpha_0`. This is the root whose negative is the highest weight in 
     577the adjoint representation. Sometimes this is called the 
     578*affine root*. We make the Dynkin diagram as before by measuring the 
     579angles between the roots.  This extended Dynkin diagram is useful for 
     580many purposes, such as finding maximal subgroups and for describing 
     581the affine Weyl group. 
     582 
     583The extended Dynkin diagram may be obtained as the Dynkin diagram of 
     584the corresponding untwisted affine type:: 
     585 
     586    sage: ct = CartanType("E6"); ct 
     587    ['E', 6] 
     588    sage: ct.affine() 
     589    ['E', 6, 1] 
     590    sage: ct.affine() == CartanType(['E',6,1]) 
     591    True 
     592    sage: ct.affine().dynkin_diagram() 
     593            O 0 
     594            | 
     595            | 
     596            O 2 
     597            | 
     598            | 
     599    O---O---O---O---O 
     600    1   3   4   5   6 
     601    E6~ 
     602 
     603The extended Dynkin diagram is also a method of the ``WeylCharacterRing``:: 
     604 
     605    sage: WeylCharacterRing("E7").extended_dynkin_diagram() 
     606                O 2 
     607                | 
     608                | 
     609    O---O---O---O---O---O---O 
     610    0   1   3   4   5   6   7 
     611    E7~ 
     612 
     613 
     614Fundamental weights and the Weyl vector 
     615--------------------------------------- 
     616 
     617There are certain weights `\omega_1,\dots,\omega_r` that: 
     618 
     619.. MATH:: 
     620 
     621    \frac{2\left<\alpha_i,\omega_j\right>}{\left<\alpha_i,\alpha_i\right>} 
     622    = 
     623    \delta(i,j). 
     624 
     625If `G` is semisimple then these are uniquely determined, whereas if 
     626`G` is reductive but not semisimple we may choose them conveniently. 
     627 
     628Let `\rho` be the sum of the fundamental dominant weights. If `G` is 
     629semisimple, then `\rho` is half the sum of the positive roots. In case 
     630`G` is not semisimple, we have noted, the fundamental weights are not 
     631completely determined by the inner product condition given above. If 
     632we make a different choice, then `\rho` is altered by a vector that is 
     633orthogonal to all roots. This is a harmless change for many purposes 
     634such as the Weyl character formula. 
     635 
     636In Sage, this issue arises only for Cartan type A. See :ref:`SLvsGL`. 
     637 
     638 
     639.. _representations: 
     640 
     641Representations and characters 
     642------------------------------ 
     643 
     644Let `\Lambda = X^{\ast} (T)` be the group of rational characters. Then 
     645`\Lambda \cong \mathbb{Z}^r`. 
     646 
     647- Recall that elements of `\Lambda \cong \mathbb{Z}^r` are called *weights*. 
     648 
     649- The Weyl group `W = N(T)/T` acts on `T`, hence on `\Lambda` and its 
     650  ambient space by conjugation. 
     651 
     652- The ambient space `\mathbb{Q} \otimes X^{\ast} (T) \cong \mathbb{Q}^r` 
     653  has a fundamental domain `\mathcal{C}^+` for the Weyl group `W` 
     654  called the *positive Weyl chamber*. Weights in `\mathcal{C}^+` are 
     655  called *dominant*. 
     656 
     657- Then `\mathcal{C}^+` consists of all vectors such that 
     658  `\left<\alpha,v\right> \ge 0` for all positive roots `\alpha`. 
     659 
     660- It is useful to embed `\Lambda` in `\mathbb{R}^r` and consider 
     661  weights as lattice points. 
     662 
     663- If `(\pi, V)` is a representation then restricting to `T`, the 
     664  module `V` decomposes into a direct sum of weight eigenspaces 
     665  `V(\mu)` with  multiplicity `m (\mu)` for weight `\mu`. 
     666 
     667- There is a unique *highest weight* `\lambda` with respect to the 
     668  partial order. We have `\lambda \in \mathcal{C}` and `m (\lambda) = 1`. 
     669 
     670- `V \longleftrightarrow \lambda` gives a bijection between 
     671  irreducible representations and   weights `\lambda` in 
     672  `\mathcal{C}^+`. 
     673 
     674Assuming that `G` is simply-connected (or more generally, reductive 
     675with a simply-connected derived group) every dominant weight `\lambda` 
     676is the highest weight of a unique irreducible representation 
     677`\pi_\lambda`, and `\lambda \mapsto \pi_\lambda` gives a 
     678parametrization of the isomorphism classes of irreducible 
     679representations of `G` by the dominant weights. 
     680 
     681The *character* of `\pi_\lambda` is the function 
     682`\chi_\lambda(g) = tr(\pi_\lambda(g))`. It is determined by its values 
     683on `T`. If `\mathbf(z) \in T` and `\mu \in \Lambda`, let us write 
     684`\mathbf{z}^\mu` for the value of `\mu` on `\mathbf{z}`. Then the 
     685character: 
     686 
     687.. MATH:: 
     688 
     689    \chi_\lambda(\mathbf{z}) 
     690    = 
     691    \sum_{\mu\in\Lambda}m(\mu)\,\mathbf{z}^\lambda. 
     692 
     693Sometimes this is written 
     694 
     695.. MATH:: 
     696 
     697    \chi_\lambda = \sum_{\mu\in\Lambda}m(\mu)\,e^\lambda. 
     698 
     699The meaning of `e^\lambda` is subject to interpretation, but we may 
     700regard it as the image of the additive group `\Lambda` in its group 
     701algebra. The character is then regarded as an element of this ring, 
     702the group algebra of `\Lambda`. 
     703 
     704 
     705Representations: an example 
     706--------------------------- 
     707 
     708.. image:: ../static/wcf1.png 
     709   :scale: 50 
     710 
     711In this example, `G = \hbox{SL}(3,\mathbb{C})`. We have drawn the 
     712weights of an irreducible representation with highest weight `\lambda`. 
     713The shaded region is `\mathcal{C}^+`. `\lambda` is a dominant weight, 
     714and the labeled vertices are the weights with positive multiplicity in 
     715`V(\lambda)`. The weights weights on the outside have `m(\mu) = 1`, 
     716while the six interior weights (with double circles) have `m(\mu) = 2`. 
     717 
     718 
     719.. _`Schur Polynomials`: 
     720 
     721Partitions and Schur polynomials 
     722-------------------------------- 
     723 
     724The considerations of this section are particular to type A. We review 
     725the relationship between characters of `GL(n,\mathbb{C})` and 
     726symmetric function theory. 
     727 
     728A *partition* `\lambda` is a sequence of descending nonnegative 
     729integers: 
     730 
     731.. MATH:: 
     732 
     733    \lambda 
     734    = 
     735    (\lambda_1, \lambda_2, \dots, \lambda_n), 
     736    \qquad 
     737    \lambda_1 \ge \lambda_2 \ge \cdots \ge \lambda_n \ge 0. 
     738 
     739We do not distinguish between two partitions if they differ only by 
     740some trailing zeros, so `(3, 2) = (3, 2, 0)`. If `l` is the last 
     741integer such that `\lambda_l > 0` then we say that `l` is the *length* 
     742of `\lambda`. If `k = \sum \lambda_i` then we say that `\lambda` is a 
     743*partition* of `k` and write `\lambda \vdash k`. 
     744 
     745A partition of length `\le n=r+1` is therefore a dominant weight of 
     746type ``['A',r]``. Not every dominant weight is a partition, since the 
     747coefficients in a dominant weight could be negative. Let us say that 
     748an element `\mu = (\mu_1, \mu_2, \cdots, \mu_n)` of the ``['A',r]`` 
     749root lattice is *effective* if the `\mu_i \ge 0`. Thus an effective 
     750dominant weight of ``['A',r]`` is a partition of length `\le n`, where 
     751`n = r+1`. 
     752 
     753Let `\lambda` be a dominant weight, and let `\chi_\lambda` be the 
     754character of `GL(n,\mathbb{C})` with highest weight `\lambda`. If `k` 
     755is any integer we may consider the weight 
     756`\lambda' = (\lambda_1+k,\dots,\lambda_n+k)` obtained by adding `k` to 
     757each entry. Then `\chi_{\lambda'} = \det^k \otimes \chi_\lambda`. 
     758Clearly by choosing `k` large enough, we may make `\lambda'` effective. 
     759 
     760So the characters of irreducible representations of `GL(n,\mathbb{C})` 
     761do not all correspond to partitions, but the characters indexed by 
     762partitions (effective dominant weights) are enough that we can 
     763write any character `\det^{-k}\chi_{\lambda'}` where `\lambda'` is a 
     764partition. If we take `k = -\lambda_n` we could also arrange that 
     765the last entry in `\lambda` is zero. 
     766 
     767If `\lambda` is an effective dominant weight, then every weight that 
     768appears in `\chi_\lambda` is effective. (Indeed, it lies in the convex 
     769hull of `w(\lambda)` where `w` runs through the Weyl group `W = S_n`.) 
     770This means that if 
     771 
     772.. MATH:: 
     773 
     774    g 
     775    = 
     776    \left(\begin{array}{ccc} 
     777    z_1 \\ 
     778    & \ddots \\ 
     779    && z_n 
     780    \end{array}\right) 
     781    \in GL(n,\mathbb{C}) 
     782 
     783then `\chi_\lambda(g)` is a polynomial in the eigenvalues of `g`. 
     784This is the *Schur polynomial* `s_\lambda(z_1,\dots,z_n)`. 
  • new file doc/en/thematic_tutorials/lie/weight_ring.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/lie/weight_ring.rst
    - +  
     1------------ 
     2Weight Rings 
     3------------ 
     4 
     5You may wish to work directly with the weights of a representation. 
     6 
     7``WeylCharacterRingElements`` are represented internally by a 
     8dictionary of their weights with multiplicities. However these are 
     9subject to a constraint: the coefficients must be invariant under the 
     10action of the Weyl group. 
     11 
     12The ``WeightRing`` is also a ring whose elements are represented 
     13internally by a dictionary of their weights with multiplicities, but 
     14it is not subject to this constraint of Weyl group invariance. The 
     15weights are allowed to be fractional, that is, elements of the ambient 
     16space. In other words, the weight ring is the group algebra over the 
     17ambient space of the weight lattice. 
     18 
     19To create a ``WeightRing`` first construct the Weyl Character Ring, 
     20then create the ``WeightRing`` as follows:: 
     21 
     22    sage: A2 = WeylCharacterRing(['A',2]) 
     23    sage: a2 = WeightRing(A2) 
     24 
     25You may coerce elements of the ``WeylCharacterRing`` into the weight 
     26ring. For example, if you want to see the weights of the adjoint 
     27representation of `GL(3)`, you may use the method ``mlist``, but 
     28another way is to coerce it into the weight ring:: 
     29 
     30    sage: ad = A2(1,0,-1) 
     31    sage: ad.mlist() 
     32    [[(-1, 1, 0), 1], [(0, 1, -1), 1], [(1, 0, -1), 1], [(0, 0, 0), 2], [(-1, 0, 1), 1], 
     33    [(0, -1, 1), 1], [(1, -1, 0), 1]] 
     34    sage: a2(ad) 
     35    a2(-1,0,1) + a2(-1,1,0) + a2(0,-1,1) + 2*a2(0,0,0) + a2(0,1,-1) + a2(1,-1,0) + a2(1,0,-1) 
     36 
     37For example, the Weyl denominator formula is usually written this way: 
     38 
     39.. MATH:: 
     40 
     41    \prod_{\alpha\in\Phi^+}\left(e^{\alpha/2}-e^{-\alpha/2}\right) 
     42    = 
     43    \sum_{w\in W} (-1)^{l(w)}e^{w(\rho)}. 
     44 
     45The notation is as follows. Here if `\lambda` is a weight, or more 
     46generally, an element of the ambient space, then `e^\lambda` means the 
     47image of `\lambda` in the group algebra of the ambient space of the 
     48weight lattice `\lambda`. Since this group algebra is just the weight 
     49ring, we can interpret `e^\lambda` as its image in the weight ring. 
     50 
     51Let us confirm the Weyl denominator formula for ``A2``:: 
     52 
     53    sage: A2 = WeylCharacterRing("A2") 
     54    sage: a2 = WeightRing(A2) 
     55    sage: L = A2.space() 
     56    sage: W = L.weyl_group() 
     57    sage: rho = A2.coerce_to_sl(L.rho()) 
     58    sage: lhs = prod(a2(alpha/2)-a2(-alpha/2) for alpha in L.positive_roots()); lhs 
     59    -a2(-1,0,1) + a2(-1,1,0) + a2(0,-1,1) - a2(0,1,-1) - a2(1,-1,0) + a2(1,0,-1) 
     60    sage: rhs = sum((-1)^(w.length())*a2(w.action(rho)) for w in W); rhs 
     61    -a2(-1,0,1) + a2(-1,1,0) + a2(0,-1,1) - a2(0,1,-1) - a2(1,-1,0) + a2(1,0,-1) 
     62    sage: lhs == rhs 
     63    True 
     64 
     65Note that we have to be careful to use the right value of `\rho`. The 
     66reason for this is explained in :ref:`SLvsGL`. 
     67 
     68We have seen that elements of the ``WeylCharacterRing`` can be coerced 
     69into the ``WeightRing``. Elements of the ``WeightRing`` can be coerced 
     70into the ``WeylCharacterRing`` *provided* they are invariant under the 
     71Weyl group. 
  • new file doc/en/thematic_tutorials/lie/weyl_character_ring.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/lie/weyl_character_ring.rst
    - +  
     1======================= 
     2The Weyl Character Ring 
     3======================= 
     4 
     5 
     6Weyl character rings 
     7-------------------- 
     8 
     9The Weyl character ring has a basis consisting of the irreducible 
     10representations of `G`, or equivalently, their characters. The 
     11addition and multiplication in the Weyl character ring correspond to 
     12direct sum and tensor product of representations. 
     13 
     14 
     15Methods of the ambient space 
     16---------------------------- 
     17 
     18In Sage, many useful features of the Lie group are available as 
     19methods of the ambient space:: 
     20 
     21    sage: S = RootSystem("B2").ambient_space(); S 
     22    Ambient space of the Root system of type ['B', 2] 
     23    sage: S.roots() 
     24    [(1, -1), (1, 1), (1, 0), (0, 1), (-1, 1), (-1, -1), (-1, 0), (0, -1)] 
     25    sage: S.fundamental_weights() 
     26    Finite family {1: (1, 0), 2: (1/2, 1/2)} 
     27    sage: S.positive_roots() 
     28    [(1, -1), (1, 1), (1, 0), (0, 1)] 
     29    sage: S.weyl_group() 
     30    Weyl Group of type ['B', 2] (as a matrix group acting on the ambient space) 
     31 
     32 
     33Methods of the Weyl character ring 
     34---------------------------------- 
     35 
     36If you are going to work with representations, you may want to create 
     37a *Weyl Character ring*. Many methods of the ambient space are 
     38available as methods of the Weyl character ring:: 
     39 
     40    sage: B3 = WeylCharacterRing("B3") 
     41    sage: B3.fundamental_weights() 
     42    Finite family {1: (1, 0, 0), 2: (1, 1, 0), 3: (1/2, 1/2, 1/2)} 
     43    sage: B3.simple_roots() 
     44    Finite family {1: (1, -1, 0), 2: (0, 1, -1), 3: (0, 0, 1)} 
     45    sage: B3.dynkin_diagram() 
     46    O---O=>=O 
     47    1   2   3 
     48    B3 
     49 
     50Other useful methods of the Weyl character ring include: 
     51 
     52- ``cartan_type`` 
     53 
     54- ``highest_root`` 
     55 
     56- ``positive_root`` 
     57 
     58- ``extended_dynkin_diagram`` 
     59 
     60- ``rank`` 
     61 
     62Some methods of the ambient space are not implemented as methods of 
     63the Weyl character ring. However, the ambient space itself is a 
     64method, and so you have access to its methods from the Weyl character 
     65ring:: 
     66 
     67    sage: B3.space().weyl_group() 
     68    Weyl Group of type ['B', 3] (as a matrix group acting on the ambient space) 
     69    sage: B3.space() 
     70    Ambient space of the Root system of type ['B', 3] 
     71    sage: B3.space().rho() 
     72    (5/2, 3/2, 1/2) 
     73    sage: B3.cartan_type() 
     74    ['B', 3] 
     75 
     76 
     77Coroot notation 
     78--------------- 
     79 
     80It is useful to give the Weyl character ring a name that corresponds 
     81to its Cartan type. This has the effect that the ring can parse its 
     82own output:: 
     83 
     84    sage: G2 = WeylCharacterRing("G2") 
     85    sage: [G2(fw) for fw in G2.fundamental_weights()] 
     86    [G2(1,0,-1), G2(2,-1,-1)] 
     87    sage: G2(1,0,-1) 
     88    G2(1,0,-1) 
     89 
     90Actually the prefix for the ring is configurable, so you don't really 
     91have to call this ring ``G2``. Type ``WeylCharacterRing?`` at the 
     92``sage:`` prompt for details. 
     93 
     94There is one important option that you may want to know about. This 
     95is *coroot notation*. You select this by specifying the option 
     96``style="coroots"`` when you create the ring. With the coroot style, 
     97the fundamental weights are represented ``(1,0,0, ...)``, 
     98``(0,1,0,...)`` instead of as vectors in the ambient space:: 
     99 
     100    sage: B3 = WeylCharacterRing("B3", style="coroots") 
     101    sage: [B3(fw) for fw in B3.fundamental_weights()] 
     102    [B3(1,0,0), B3(0,1,0), B3(0,0,1)] 
     103    sage: B3(0,0,1) 
     104    B3(0,0,1) 
     105    sage: B3(0,0,1).degree() 
     106    8 
     107 
     108The last representation is the eight dimensional spin representation 
     109of `G = spin(7)`, the double cover of the orthogonal group `SO(7)`. In 
     110the default notation it would be represented ``B3(1/2,1/2,1/2)``. 
     111 
     112With the coroot notation every irreducible representation is 
     113represented ``B3(a,b,c)`` where ``a``, ``b`` and ``c`` are nonnegative 
     114integers. This is often convenient. For many purposes the coroot style 
     115is preferable. 
     116 
     117One disadvantage: in the coroot style the Lie group or Lie algebra is 
     118treated as semisimple, so you lose the distinction between `GL(n)` and 
     119`SL(n)`; you also some information about representations of E6 and E7 
     120for the same reason. 
     121 
     122 
     123Tensor products of representations 
     124---------------------------------- 
     125 
     126The multiplication in the Weyl character ring corresponds to tensor 
     127product. This gives us a convenient way of decomposing a tensor 
     128product into irreducibles:: 
     129 
     130     sage: B3 = WeylCharacterRing("B3") 
     131     sage: fw = B3.fundamental_weights() 
     132     sage: spinweight = fw[3]; spinweight 
     133     (1/2, 1/2, 1/2) 
     134     sage: spin = B3(spinweight) 
     135     sage: spin.degree() 
     136     8 
     137     sage: chi = spin*spin; chi 
     138     B3(0,0,0) + B3(1,0,0) + B3(1,1,0) + B3(1,1,1) 
     139 
     140We have taken the eight-dimensional spin representation and tensored 
     141with itself. We see that the tensor square splits into four 
     142irreducibles, each with multiplicity one. 
     143 
     144The highest weights that appear here are available (with their 
     145coefficients) are available through the method ``hlist``:: 
     146 
     147    sage: chi.hlist() 
     148    [[(1, 1, 1), 1], [(1, 0, 0), 1], [(1, 1, 0), 1], [(0, 0, 0), 1]] 
     149    sage: [p[0] for p in chi.hlist()] 
     150    [(1, 1, 1), (1, 0, 0), (1, 1, 0), (0, 0, 0)] 
     151    sage: [B3(p[0]) for p in chi.hlist()] 
     152    [B3(1,1,1), B3(1,0,0), B3(1,1,0), B3(0,0,0)] 
     153    sage: [B3(p[0]).degree() for p in chi.hlist()] 
     154    [35, 7, 21, 1] 
     155    sage: sum(B3(p[0]).degree() for p in chi.hlist()) 
     156    64 
     157 
     158Here we've extracted the individual representations, computed 
     159their degrees and checked that they sum to 64. 
     160 
     161 
     162Weights 
     163------- 
     164 
     165The weights of the character are (with their coefficients) are 
     166available through the method ``mlist``. Continuing from the example in 
     167the last section:: 
     168 
     169    sage: chi.mlist() 
     170    [[(0, 1, 0), 4], [(1, -1, 1), 1], [(-1, -1, 1), 1], 
     171    [(0, 1, 1), 2], [(0, -1, -1), 2], [(0, -1, 0), 4], 
     172    [(1, -1, -1), 1], [(0, 1, -1), 2], [(-1, 0, 1), 2], 
     173    [(-1, 1, -1), 1], [(-1, -1, 0), 2], [(-1, 1, 0),2], 
     174    [(1, 0, 0), 4], [(-1, 0, 0), 4], [(1, 0, -1), 2], 
     175    [(0, 0, -1), 4], [(0, -1, 1), 2], [(1, 1, -1), 1], 
     176    [(0, 0, 1), 4], [(-1, 0, -1), 2], [(-1, 1, 1), 1], 
     177    [(1, 0, 1), 2], [(0, 0, 0), 8], [(-1, -1, -1), 1], 
     178    [(1, 1, 1), 1], [(1, 1, 0), 2], [(1, -1, 0), 2]] 
     179 
     180 
     181Frobenius-Schur indicator 
     182------------------------- 
     183 
     184The Frobeinus-Schur indicator of an irreducible representation of a 
     185compact Lie group `G` with character `\chi` is: 
     186 
     187.. MATH:: 
     188 
     189    \int_G\chi(g^2) \, dg 
     190 
     191The Haar measure is normalized so that `vol(G) = 1`. The 
     192Frobenius-Schur indicator equals 1 if the representation is real 
     193(orthogonal), `-1` if it is quaternionic (symplectic) and 0 if it is 
     194complex (not self-contragredient). This is a method of weight ring 
     195elements corresponding to irreducible representations. Let us compute 
     196the Frobenius-Schur indicators of the spin representations of some 
     197odd spin groups:: 
     198 
     199    sage: for r in [1..4]: 
     200    ....:    R = WeylCharacterRing(['B',r]) 
     201    ....:    spinweight = R.fundamental_weights().list()[-1] 
     202    ....:    print r, R(spinweight).frobenius_schur_indicator() 
     203    ....: 
     204    1 -1 
     205    2 -1 
     206    3 1 
     207    4 1 
     208 
     209We see that the spin representations of `spin(3)` and `spin(5)` are 
     210symplectic, while those of `spin(7)` and `spin(9)` are orthogonal. 
     211 
     212 
     213Symmetric and exterior square 
     214----------------------------- 
     215 
     216The tensor square of any representation decomposes as the direct sum 
     217of the symmetric and exterior squares:: 
     218 
     219    sage: C4 = WeylCharacterRing("C4",style="coroots") 
     220    sage: chi = C4(1,0,0,0); chi.degree() 
     221    8 
     222    sage: chi.symmetric_square() 
     223    C4(2,0,0,0) 
     224    sage: chi.exterior_square() 
     225    C4(0,0,0,0) + C4(0,1,0,0) 
     226    sage: chi^2 == chi.symmetric_square() + chi.exterior_square() 
     227    True 
     228 
     229Since in this example the exterior square contains the trivial 
     230representation we expect the Frobenius-Schur indicator to be `-1`, and 
     231indeed it is:: 
     232 
     233    sage: chi.frobenius_schur_indicator() 
     234    -1 
     235 
     236This is not surprising since this is the standard representation 
     237of a symplectic group, which is symplectic *by definition*! 
     238 
     239 
     240Weyl dimension formula 
     241---------------------- 
     242 
     243If the representation is truly large you will not be able to construct 
     244it in the Weyl character ring, since internally it is represented by a 
     245dictionary of its weights. If you want to know its degree, you can 
     246still compute that since Sage implements the Weyl dimension 
     247formula. The degree of the representation is implemented as a method 
     248of its highest weight vector:: 
     249 
     250    sage: L = RootSystem("E8").ambient_space() 
     251    sage: [L.weyl_dimension(f) for f in L.fundamental_weights()] 
     252    [3875, 147250, 6696000, 6899079264, 146325270, 2450240, 30380, 248] 
     253 
     254It is a fact that if `\rho` is the Weyl vector then the degree of the 
     255irreducible representation with highest weight `\rho` equals `2^N` 
     256where `N` is the number of positive roots. Let us check this for 
     257`E_8`. In this case `N = 120`:: 
     258 
     259   sage: len(L.positive_roots()) 
     260   120 
     261   sage: 2^120 
     262   1329227995784915872903807060280344576 
     263   sage: L.weyl_dimension(L.rho()) 
     264   1329227995784915872903807060280344576 
     265 
     266 
     267.. _SLvsGL: 
     268 
     269SL versus GL 
     270------------ 
     271 
     272Sage takes the weight space for type ``['A',r]`` to be `r+1` 
     273dimensional. As a biproduct, if you create the Weyl character ring 
     274with the command:: 
     275 
     276    sage: A2 = WeylCharacterRing("A2") 
     277 
     278Then you are effectively working with `GL(3)` instead of `SL(3)`. For 
     279example, the determinant is the character ``A2(1,1,1)``. However, as 
     280we will explain later, you can work with `SL(3)` if you like, so long 
     281as you are willing to work with fractional weights. On the other hand 
     282if you create the Weyl character ring with the command:: 
     283 
     284    sage: A2 = WeylCharacterRing("A2", style="coroots") 
     285 
     286Then you are working with `SL(3)`. 
     287 
     288There are some advantages to this arrangement. 
     289 
     290- The group `GL(r+1)` arises frequently in practice. For example, even 
     291  if you care mainly about semisimple groups, the group `GL(r+1)` may 
     292  arise as a Levi subgroup. 
     293 
     294- It avoids fractional weights. If you want to work with `SL(3)` the 
     295  fundamental weights are ``(2/3,-1/3,-1/3)`` and 
     296  ``(1/3,1/3,-2/3)``. If you work instead with `GL(3)`, they are 
     297  ``(1,0,0)`` and ``(1,1,0)``. For many mathematical purposes it 
     298  doesn't make any difference which you use. This is because the 
     299  difference between ``(2/3,-1/3,-1/3)`` and ``(1,0,0)`` is a vector 
     300  that is orthogonal to all the simple roots. Thus these vectors are 
     301  interchangeable. But for convenience avoiding fractional weights is 
     302  advantageous. 
     303 
     304However if you want to be an `SL` purist, Sage will support you. The 
     305weight space for `SL(3)` can be taken to be the hyperplane in 
     306`\mathbb{Q}^3` consisting of vectors `(a,b,c)` with 
     307`a+b+c = 0`. The fundamental weights for SL(3) are then 
     308``(2/3,-1/3,-1/3)`` and ``(1/3,1/3,-2/3)``, though Sage will tell you 
     309they are ``(1,0,0)`` and ``(1,1,0)``. The work-around is to filter 
     310them through the method ``coerce_to_sl`` as follows:: 
     311 
     312    sage: A2 = WeylCharacterRing("A2") 
     313    sage: [fw1,fw2] = [A2.coerce_to_sl(w) for w in A2.fundamental_weights()] 
     314    sage: [standard, contragredient] = [A2(fw1), A2(fw2)] 
     315    sage: standard, contragredient 
     316    (A2(2/3,-1/3,-1/3), A2(1/3,1/3,-2/3)) 
     317    sage: standard*contragredient 
     318    A2(0,0,0) + A2(1,0,-1) 
     319 
     320Sage is not confused by the fractional weights. Note that if you use 
     321coroot notation, you are working with SL automatically:: 
     322 
     323    sage: A2 = WeylCharacterRing("A2", style="coroots") 
     324    sage: A2(1,0).mlist() 
     325    [[(2/3, -1/3, -1/3), 1], [(-1/3, 2/3, -1/3), 1], [(-1/3, -1/3, 2/3), 1]] 
     326 
     327There is no convenient way to create the determinant in the Weyl 
     328character ring if you adopt the coroot style. 
     329 
     330Just as we coerced the fundamental weights into the `SL` weight 
     331lattice, you may need to coerce the Weyl vector `\rho` if you are 
     332working with `SL`. The default value for `\rho` in type `A_r` is 
     333`(r,r-1,\dots,0)`, but if you are an SL purist you want 
     334 
     335.. MATH:: 
     336 
     337    \left(\frac{r}{2}, \frac{r}{2}-1,\dots,-\frac{r}{2}\right). 
     338 
     339Therefore take the value of `\rho` that you get from the method of the 
     340ambient space and coerce it into `SL`:: 
     341 
     342    sage: rho = A2.coerce_to_sl(A2.space().rho()); rho 
     343    (1, 0, -1) 
     344    sage: rho == (1/2)*sum(a for a in A2.space().positive_roots()) 
     345    True 
     346 
     347You do not need to do this for other Cartan types. If you are working 
     348with (say) `F4` then a `\rho` is a `\rho` is a `\rho`:: 
     349 
     350    sage: F4 = WeylCharacterRing("F4") 
     351    sage: L = F4.space() 
     352    sage: rho = L.rho() 
     353    sage: rho == (1/2)*sum(a for a in L.positive_roots()) 
     354    True 
     355 
     356 
     357Caching 
     358------- 
     359 
     360You may improve the performance of a Weyl character ring by specifying 
     361``cache=True`` when you create the ring. This means that the results 
     362of intermediate computations are saved. The amount of improvement 
     363would depend on the type of computation you are doing. 
  • new file doc/en/thematic_tutorials/lie/weyl_groups.rst

    diff -r 5b338f2e484f -r fc7cc70533c4 doc/en/thematic_tutorials/lie/weyl_groups.rst
    - +  
     1------------------------------------------------ 
     2Weyl Groups, Coxeter Groups and the Bruhat Order 
     3------------------------------------------------ 
     4 
     5 
     6Classical and affine Weyl groups 
     7-------------------------------- 
     8 
     9You can create Weyl groups and affine Weyl groups for any root 
     10system. A variety of methods are available for these. Some of these 
     11are methods are available for general Coxeter groups. 
     12 
     13By default, elements of the Weyl group are represented as matrices:: 
     14 
     15    sage: WeylGroup("A3").simple_reflection(1) 
     16    [0 1 0 0] 
     17    [1 0 0 0] 
     18    [0 0 1 0] 
     19    [0 0 0 1] 
     20 
     21You may prefer a notation in which elements are written out as 
     22products of simple reflections. In order to implement this you need to 
     23specify a prefix, typically ``"s"``:: 
     24 
     25    sage: W = WeylGroup("A3",prefix="s") 
     26    sage: [s1,s2,s3] = W.simple_reflections() 
     27    sage: (s1*s2*s1).length() 
     28    3 
     29    sage: W.long_element() 
     30    s1*s2*s3*s1*s2*s1 
     31    sage: s1*s2*s3*s1*s2*s1 == s3*s2*s1*s3*s2*s3 
     32    True 
     33 
     34The Weyl group acts on the ambient space of the root lattice, which is 
     35accessed by the method ``domain``. To illustrate this, recall that if `w_0` is 
     36the long element then `\alpha \mapsto -w_0(\alpha)` is a permutation of the 
     37simple roots. We may compute this as follows:: 
     38 
     39    sage: W = WeylGroup("E6",prefix="s") 
     40    sage: w0 = W.long_element(); w0 
     41    s1*s3*s4*s5*s6*s2*s4*s5*s3*s4*s1*s3*s2*s4*s5*s6*s2*s4*s5*s3*s4*s1*s3*s2*s4*s5* 
     42    s3*s4*s1*s3*s2*s4*s1*s3*s2*s1 
     43    sage: sr = W.domain().simple_roots().list(); sr 
     44    [(1/2, -1/2, -1/2, -1/2, -1/2, -1/2, -1/2, 1/2), (1, 1, 0, 0, 0, 0, 0, 0), 
     45    (-1, 1, 0, 0, 0, 0, 0, 0), (0, -1, 1, 0, 0, 0, 0, 0), (0, 0, -1, 1, 0, 0, 0, 0), 
     46    (0, 0, 0, -1, 1, 0, 0, 0)] 
     47    sage: [-w0.action(a) for a in sr] 
     48    [(0, 0, 0, -1, 1, 0, 0, 0), (1, 1, 0, 0, 0, 0, 0, 0), (0, 0, -1, 1, 0, 0, 0, 0), 
     49    (0, -1, 1, 0, 0, 0, 0, 0), (-1, 1, 0, 0, 0, 0, 0, 0), 
     50    (1/2, -1/2, -1/2, -1/2, -1/2, -1/2, -1/2, 1/2)] 
     51 
     52We may ask when this permutation is trivial. If it is nontrivial it 
     53induces an automorphism of the Dynkin diagram, so it must be 
     54nontrivial when the Dynkin diagram has no automorphism. But if there 
     55is a nontrivial automorphism, the permutation might or might not be 
     56trivial:: 
     57 
     58    sage: def roots_not_permuted(ct): 
     59    ...       W = WeylGroup(ct) 
     60    ...       w0 = W.long_element() 
     61    ...       sr = W.domain().simple_roots() 
     62    ...       return all(a == -w0.action(a) for a in sr) 
     63    ... 
     64    sage: for ct in [CartanType(['D',r]) for r in [2..8]]: 
     65    ...      print ct,roots_not_permuted(ct) 
     66    ... 
     67    ['D', 2] True 
     68    ['D', 3] False 
     69    ['D', 4] True 
     70    ['D', 5] False 
     71    ['D', 6] True 
     72    ['D', 7] False 
     73    ['D', 8] True 
     74 
     75If `\alpha` is a root let `r_\alpha` denote the reflection in the 
     76hyperplane that is orthogonal to `\alpha`. We reserve the notation `s_\alpha` 
     77for the simple reflections, that is, the case where `\alpha` is a simple 
     78root. The reflections are just the conjugates of the simple reflections. 
     79 
     80The reflections are the keys in a finite family, which is a wrapper 
     81around a python dictionary. The values are the positive roots, so 
     82given a reflection, you can look up the corresponding root. If you 
     83want a list of all reflections, use the method ``keys`` for the 
     84family of reflections:: 
     85 
     86    sage: W = WeylGroup("B3",prefix="s") 
     87    sage: [s1,s2,s3] = W.simple_reflections() 
     88    sage: ref = W.reflections(); ref 
     89    sage: Finite family {s1*s2*s1: (1, 0, -1), s2: (0, 1, -1), s3*s2*s3: (0, 1, 1), 
     90    s3*s1*s2*s3*s1: (1, 0, 1), s1: (1, -1, 0), s2*s3*s1*s2*s3*s1*s2: (1, 1, 0), 
     91    s1*s2*s3*s2*s1: (1, 0, 0), s2*s3*s2: (0, 1, 0), s3: (0, 0, 1)} 
     92    sage: ref[s3*s2*s3] 
     93    (0, 1, 1) 
     94    sage: ref.keys() 
     95    [s1*s2*s1, s2, s3*s2*s3, s2*s3*s1*s2*s3*s1*s2, s1, s3*s1*s2*s3*s1, s1*s2*s3*s2*s1, s2*s3*s2, s3] 
     96 
     97If instead you want a dictionary whose keys are the roots and whose 
     98values are the reflections, you may use the inverse family:: 
     99 
     100    sage: altref = W.reflections().inverse_family(); altref 
     101    Finite family {(1, 0, 0): s1*s2*s3*s2*s1, (1, 0, 1): s3*s1*s2*s3*s1, (0, 1, 0): s2*s3*s2, 
     102    (0, 1, -1): s2, (1, 0, -1): s1*s2*s1, (0, 1, 1): s3*s2*s3, (1, 1, 0): s2*s3*s1*s2*s3*s1*s2, 
     103    (0, 0, 1): s3, (1, -1, 0): s1} 
     104    sage: [a1,a2,a3]=W.domain().simple_roots() 
     105    sage: a1+a2+a3 
     106    (1, 0, 0) 
     107    sage: altref[a1+a2+a3] 
     108    s1*s2*s3*s2*s1 
     109 
     110The Weyl group is implemented as a GAP matrix group. You therefore can 
     111display its character table. The character table is returned as a 
     112string, which you can print:: 
     113 
     114    sage: print WeylGroup("D4").character_table() 
     115    CT1 
     116 
     117          2  6  4  5  1  3  5  5  4  3  3  1  4  6 
     118          3  1  .  .  1  .  .  .  .  .  .  1  .  1 
     119 
     120            1a 2a 2b 6a 4a 2c 2d 2e 4b 4c 3a 4d 2f 
     121 
     122    X.1      1  1  1  1  1  1  1  1  1  1  1  1  1 
     123    X.2      1 -1  1  1 -1  1  1 -1 -1 -1  1  1  1 
     124    X.3      2  .  2 -1  .  2  2  .  .  . -1  2  2 
     125    X.4      3 -1  3  . -1 -1 -1 -1  1  1  . -1  3 
     126    X.5      3 -1 -1  .  1  3 -1 -1 -1  1  . -1  3 
     127    X.6      3  1  3  .  1 -1 -1  1 -1 -1  . -1  3 
     128    X.7      3  1 -1  . -1  3 -1  1  1 -1  . -1  3 
     129    X.8      3 -1 -1  .  1 -1  3 -1  1 -1  . -1  3 
     130    X.9      3  1 -1  . -1 -1  3  1 -1  1  . -1  3 
     131    X.10     4 -2  . -1  .  .  .  2  .  .  1  . -4 
     132    X.11     4  2  . -1  .  .  . -2  .  .  1  . -4 
     133    X.12     6  . -2  .  . -2 -2  .  .  .  .  2  6 
     134    X.13     8  .  .  1  .  .  .  .  .  . -1  . -8 
     135 
     136 
     137Affine Weyl groups 
     138------------------ 
     139 
     140Affine Weyl groups may be created the same way. You simply begin with 
     141an affine Cartan type:: 
     142 
     143    sage: W = WeylGroup(['A',2,1],prefix="s") 
     144    sage: W.cardinality() 
     145    +Infinity 
     146    sage: [s0,s1,s2] = W.simple_reflections() 
     147    sage: s0*s1*s2*s1*s0 
     148    s0*s1*s2*s1*s0 
     149 
     150The affine Weyl group differs from a classical Weyl group since it is 
     151infinite. The associated classical Weyl group is a subgroup that may be 
     152extracted as follows:: 
     153 
     154    sage: W = WeylGroup(['A',2,1],prefix="s") 
     155    sage: W1 = W.classical(); W1 
     156    Parabolic Subgroup of the Weyl Group of type ['A', 2, 1] (as a matrix group 
     157    acting on the root space) 
     158    sage: W1.simple_reflections() 
     159    Finite family {1: s1, 2: s2} 
     160 
     161Although ``W1`` in this example is isomorphic to ``WeylGroup("A2")`` it 
     162has a different matrix realization:: 
     163 
     164    sage: for s in WeylGroup(['A',2,1]).classical().simple_reflections(): 
     165    ...      print s 
     166    ...      print 
     167    ... 
     168    [ 1  0  0] 
     169    [ 1 -1  1] 
     170    [ 0  0  1] 
     171    <BLANKLINE> 
     172    [ 1  0  0] 
     173    [ 0  1  0] 
     174    [ 1  1 -1] 
     175 
     176    sage: for s in WeylGroup(['A',2]).simple_reflections(): 
     177    ...      print s 
     178    ...      print 
     179    ... 
     180    [0 1 0] 
     181    [1 0 0] 
     182    [0 0 1] 
     183    <BLANKLINE> 
     184    [1 0 0] 
     185    [0 0 1] 
     186    [0 1 0] 
     187 
     188 
     189Bruhat order 
     190------------ 
     191 
     192The Bruhat partial order on the Weyl group may be defined as follows. 
     193 
     194If `u,v \in W`, find a reduced expression of `v` into a product of 
     195simple reflections: `v = s_1 \cdots s_n`. (It is not assumed that the 
     196`s_i` are distinct.) If omitting some of the `s_i` gives a product 
     197that represents `u`, then `u \le v`. 
     198 
     199The Bruhat order is implemented in Sage as a method of Coxeter groups, 
     200and so it is available for Weyl groups, classical or affine. 
     201 
     202If `u`, `v \in W` then ``u.bruhat_le(v)`` returns true of 
     203`u \le v` in the Bruhat order. 
     204 
     205If `u \le v` then The *Bruhat interval* `[u,v]` is defined to be the 
     206set of all `t` such that `u \le t \le v`. One might try to implement 
     207this as follows:: 
     208 
     209    sage: W = WeylGroup("A2",prefix="s") 
     210    sage: [s1,s2] = W.simple_reflections() 
     211    sage: def bi(u,v) : return [t for t in W if u.bruhat_le(t) and t.bruhat_le(v)] 
     212    ... 
     213    sage: bi(s1,s1*s2*s1) 
     214    [s1, s1*s2, s1*s2*s1, s2*s1] 
     215 
     216This would not be a good definition since it would fail if `W` is 
     217affine and be inefficient of `W` is large. Sage has a Bruhat interval 
     218method:: 
     219 
     220    sage: W.bruhat_interval(s1,s1*s2*s1) 
     221    [s1*s2*s1, s2*s1, s1*s2, s1] 
     222 
     223This works even for affine Weyl groups. 
     224 
     225 
     226The Bruhat graph 
     227---------------- 
     228 
     229References: 
     230 
     231- [Carrell1994]_ 
     232 
     233- [Deodhar1977]_ 
     234 
     235- [Dyer1993]_ 
     236 
     237- [BumpNakasuji2010]_ 
     238 
     239The *Bruhat Graph* is a structure on the Bruhat interval. Suppose that 
     240`u \le v`. The vertices of the graph are `x` with `u \le x \le v`. 
     241There is a vertex connecting `x,y \in [x,y]` if `x = y.r` where `r` is 
     242a reflection. If this is true then either `x < y` or `y < x`. 
     243 
     244If `W` is a classical Weyl group the Bruhat graph is implemented in Sage:: 
     245 
     246    sage: W = WeylGroup("A3",prefix="s") 
     247    sage: [s1,s2,s3] = W.simple_reflections() 
     248    sage: bg = W.bruhat_graph(s2,s2*s1*s3*s2); bg 
     249    Digraph on 10 vertices 
     250    sage: bg.show3d() 
     251 
     252The Bruhat graph has interesting regularity properties that were 
     253investigated by Carrell and Peterson. It is a regular graph if both 
     254the Kazhdan Lusztig polynomials `P_{u,v}` and `P_{w_0v,w_0u}` are 1, 
     255where `w_0` is the long Weyl group element. It is closely related to 
     256the *Deodhar conjecture* which was proved by Deodhar, Carrell and 
     257Peterson, Dyer and Polo. 
     258 
     259Deodhar proved that if `u < v` then the Bruhat interval `[u,v]` 
     260contains as many elements of odd length as it does of even length. We 
     261observe that often this can be strengthened: if there exists a 
     262reflection `r` such that left (or right) multiplication by `r` takes 
     263the Bruhat interval `[u,v]` to itself, then this gives an explicit 
     264bijection between the elements of odd and even length in `[u,v]`. 
     265 
     266Let us search for such reflections. Put the following commands in a 
     267file and load or attach the file:: 
     268 
     269    W = WeylGroup("A3",prefix="s") 
     270    [s1,s2,s3]=W.simple_reflections() 
     271    ref = W.reflections().keys() 
     272 
     273    def find_reflection(u,v): 
     274        bi = W.bruhat_interval(u,v) 
     275        ret = [] 
     276        for r in ref: 
     277            if all( r*x in bi for x in bi): 
     278                ret.append(r) 
     279        return ret 
     280 
     281Now inspect the output of this command:: 
     282 
     283    sage: for v in W: 
     284    ...      for u in W.bruhat_interval(1,v): 
     285    ...         if u != v: 
     286    ...            print u,v,find_reflection(u,v) 
     287 
     288This shows that the Bruhat interval is stabilized by a reflection for 
     289all pairs `(u,v)` with `u < v` except the following two: 
     290`s_3s_1,s_1s_2s_3s_2s_1` and `s_2,s_2s_3s_1s_2`. Now these are 
     291precisely the pairs such that `u\prec v` in the notation of Kazhdan 
     292and Lusztig, and `l(v)-l(u) > 1`. One should not rashly suppose that 
     293this is a general characterization of the pairs `(u,v)` such that no 
     294reflection stabilizes the Bruhat interval, for this is not true, but 
     295it does suggest that the question is worthy of further investigation. 
  • sage/algebras/iwahori_hecke_algebra.py

    diff -r 5b338f2e484f -r fc7cc70533c4 sage/algebras/iwahori_hecke_algebra.py
    a b  
    7575        `(T_i-q_1)*(T_i-q_2) == 0` 
    7676 
    7777    together with the braid relations `T_i T_j T_i ... == T_j T_i T_j ...`, 
    78     where the number of terms on both sides is `k/2` with `k` the order of 
    79     `s_i s_j` in the Coxeter group. 
     78    where the number of terms on both sides is the order of `s_i s_j` in the 
     79    Coxeter group. 
    8080 
    8181    Weyl group elements form a basis of the Iwahori Hecke algebra `H` 
    8282    with the property that if `w1` and `w2` are Coxeter group elements