Computer Physics Communications 34 (1985) 339—345 North-Holland, Amsterdam
339
NUMBER OF STATES OF UNITARY GROUP REPRESENTATIONS M.F. SOTO, Jr. Baruch College, CUNY, New York, NY 10010, USA
and R. MIRMAN 155 East 34 Street, New York, NY 10016, USA Received 28 May 1984
PROGRAM SUMMARY Title of program: KOSNUM
Keywords: general purpose, unitary group, number of states, Kostka numbers
Catalogue number: ACDT Program obtainable from: CPC Program Library, Queen’s University of Belfast, N. Ireland (see application form in this issue) Computer: IBM 3081; Installation: City University of New York-University Computer Center Operating system: OS/MVS/JES3 Programming language usd: PL/l Optimizer High speed storage required: 240 Kbytes through S(3), SU(4)
Nature the physicalproblem To findofthe number of states and index classes for unitary group representations as a function of the labeling frames and distribution of numerals. Method of solution Find the Kostka numbers using matrix inversion. Restrictions on the size of the problem Usable for any unitary group for which time and storage are available.
No. of bits in a byte: 8 Typical running time Peripherals used: card reader, line printer or terminal
Through S(3), SU(4): 0.93 s.
No. of lines in combinedprogram and test deck: 1456 CPC library subprograms used: Cat, no.: AAMI; Title: SYMBNDS; Ref in CPC: 27 (1982) 57
Unusualfeatures of the program Some subroutines are in Fortran. Lists are used to find frame ordinals. Permuted strings of indices are used in finding the determinant.
OO1O-4655/85/$03.30 © Elsevier Science Publishers B.V. (North-Holland Physics Publishing Division)
M. F. Sow, Jr., R. Mirman
340
/ Number of states of unitary group
representations
LONG WRITE-UP 1. Infroduction
2. Programming
To construct the representations of the unitary group SU(NUG) requires arrays, whose bounds, determined by the number of index classes [1] and states, are needed before construction. In addition, knowing the bounds, we can check that all allowed classes and states have been generated, and only these. The number of states and number in each class are also useful in other ways. Here programs to calculate the bounds are given. The results are of value beyond the present use of them in a wide variety of fields, such as group theory, combinatorics, and so on. These are discussed by Stanley [2]. The values we calculate, the Kostka numbers, are known [3] (according to Stanley [2]), but not easily available. Even if they were, typing them in from tables makes no sense. This paper, and the included programs, are more accessible than Kostka’s tables, and we present them so as to be generally usable, Given a set of NMAX numerals, ~ of the first, 2 of the second, and so on, forming partition ~.tof NMAX, we wish to insert them into an S(NMAX) frame A (in our terminology, a shape in that of Stanley [2]). How many standard diagrams (nondecreasing rows, left to right, and strictly increasing columns, top to bottom) are there? The answer is the Kostka number KXM, which is found from the relationship between symmetric functions, as discussed by Stanley [2]. This gives a matrix, whose rows and columns are both labeled by the partitions of NMAX. The determinant of this matrix is a multinomial, labeled by a partition, each of whose terms are labeled by a partition. Thus, considering all partitions gives a matrix of the coefficients in these multinomials. The entries of the inverse of this matrix are the Kostka numbers. The conventions and procedures have been described (ref. [4], section 2), including the %INCLUDE feature, and the methods for removing it if desired. Besides the subroutines provided two others, MAXDIM and NUMREP, previously considered [5] are used.
The largest values of NMAX, which is NF, and NUG, which is NB, are read in (and written out). In a DO-loop on NMAX from 2 to NF the values for all symmetric groups from S(2) to S(NF) are found, starting with CALLs to MD, RN and RL, to find the maximum dimension, number of representations and row lengths, dimensions and conjugate frames, for each NMAX. 2.1. Finding the frame ordinal Frame ordinals for sets of row lengths are needed. Since they are found NMAX~times speed is important, so ordinals are stored using lists indexed by row lengths in a DO-loop over the frames, indexed by KAT. The row lengths are in matrix M, found in RL, and for ROW of frame KAT, the row length is denoted by RLN. The structure FRMINDX, BASED on POINTER PFX stores the ordinal. Before the loop on KAT pointer array PNF is set to NULL. A row length may occur for several frames; a frame is determined by the complete set of lengths. Each generation of FRMINDX is labeled by a value of RLN for a particular ROW. Thus, for the first row FRMINDX is ALLOCATEd if KAT is the ordinal of the first frame having first-row length RLN, shown by PNF(RLN) being NULL, then PNF(RLN) is set to PFX, saving the pointer to the current generation, recording that RLN has been encountered. Pointer PNR for the current generation is set to NULL. Whether this is the first encounter of RLN or not pointer PC is set to the address of that generation of FRMINDX determined by the current RLN. For lower rows the procedure is repeated, except instead of PNF, array PNR, in FRMINDX is used, and the generation of PNR is that pointed to by PC, the address of the generation of FRMINDX determined by the last length encountered of the next higher row. This array stores the addresses of all generations labeled by the current ROW for frames having the same set of row lengths for ROW 1, and less. The addresses are indexed by —
M.F. Soto, Jr., R. Mirman
/
Number of states of unitary group representations
the lengths of the current ROW. Thus, the first row length of a frame determines a generation of FRMINDX which contains the pointer array PNR, which for any second row length contains the address of the generation determined by the second row length, and so on. For any row, except the first, PC points to the generation determined by the next higher row, so saving the address of the current generation in the array of the previous generation. For the last row, MX, of the frame the ordinal KAT is stored in KAS of the current generation of structure FRMINDX. The total number of elements of PNR is less than NMAX2, whereas saving the ordinal in a (mostly empty) array indexed by the set of row lengths (which would be easier) would require NMAXNMAX elements, The ordinal of the frame whose row lengths are stored in array RLS is needed, and found in the loop on RWP over the rows. The current row length is RLN, and that of the next row RLNP, which is zero if RWP is the lowest row. For the first row PL and PLP are set to PNF(RLN), the address of the generation of FRMINDX determined by that first row of length RLN, the generation the search starts with. For lower rows PL is set to the PLP found previously, and, except for the lowest row, PLP to that PNR(RLNP) pointed to by PL. So for each row PL points to the generation storing row length RLNP and its address is stored in PLP to be used to give PL for the next row. For the last row, for which the succeeding row length is zero, KAS of the generation for this row, pointed to by PLP, gives the ordinal of the frame having the row lengths stored in RLS. It is assigned to KAC, and this having been found, the search is ended and the loop exited, 2.2. Computation of the matrices The matrices are found in a DO-loop on KAR, over all partitions of NMAX (these labeling the e’s), thus over the rows of the matrix to be inverted. The number of cycles of partition KAR is MX (the number of rows of frame KAR, so the length of the first row of its conjugate frame).
341
The matrix of the h ‘s whose determinant gives the e ‘s is given inside nested DO-loops on S and T, on its rows and columns. For row 5, of length M(NMAX,KAR,S), and column T the index on the h, stored as IND(S,T), is given in ref. [2], p. 182. Then matrix elements MAT(S,T, *) are stored. MAT(S,T,O) is the coefficient of element S, T and MAT(S,T,K) the power of h k’ If the index is negative all values of MAT(S,T, *) are 0, if 0, MAT(S,T,O) is 1, all other entries 0 (all powers 0), else the coefficient is 1 (MAT(S,T,0) = 1), while all powers are 0, except that going with the value of the index, which is 1 (MAT(S,T,IND(S,T))= 1). If the length of cycle S is 3, MAT(S,T,3 S + T) = 1, other values are 0, except that MAT(S,T,O) is 1. Next the determinant of this matrix is cornputed, in a loop over the terms of the expansion of the determinant, given by TDT. First the the array DET giving the current term, whose elements give the powers of the h ‘s, is initialized to 0, except DET(0), the coefficient is initialized to 1. Each term is a product of the same matrix elements (given in MAT), differently permuted. Each element has two indices, the first giving its position in the product, these are in natural order, while the set of second indices is a different permutation of the numerals 1 NFF (= MX!, with MX the number of rows of the frame, the determinant being that of an MX by MX matrix) for each term of the expansion. This permutation is first generated. The algorithm, PERM, used for the permutations is that of Trotter [6]and is discussed elsewhere [7]. The term is a product of MX matrix elements and is computed inside a loop on TRM by multiplying the current value of DET by the next matrix element given by indices TRM, the first index in natural order, and NIS(TRM), the index in position TRM of the permuted string. Two matrix elements are multiplied by multiplying coefficients (DET(0) and MAT(0)), and adding powers of the h’s; in a DO-loop over TME from 1 to NMAX (cycle lengths are between 1 and NMAX) DET and MAT (the powers of the h’s) are added. The result is DET for the current TRM. If any DET(0) is 0, the whole term is, and the computations for it are skipped. After the loop on —
...
342
M. F. Soto, Jr., R. Mirman
/
Number of states of unitary group representations
TRM, DET(0) is multiplied by SGN, the sign, which alternates with each term, giving term TDT in the expansion of the determinant, This term gives powers of the h ‘s which are row lengths of a frame, whose ordinal is next found. The row lengths are stored in RLS in order of length (the longest first). The sum of the lengths is RLT, and a loop over RWN, runs from NMAX to 1 (the longest length is stored first), UNTIL RLT = NMAX (when all rows have been considered). The index of RLS is RIF, initialized to 1, and RLS(RIF) is set to the current row length RWN, if there is one, indicated by DET(RWN) not being zero. A particular row length can appear more than once, so in each loop DET(RWN) is decreased by 1, and the row index increased by 1, until DET(RWN) is 0, and the next length is considered. With DET found, the matrix of coefficients HMAT is computed by finding, for each column, the terms in the determinant (which corresponds to row KAR) whose indices form partition KAC on NMAX labeling the column, and adding their coefficients (counting the number of terms). The power of h MH equals the number of rows of length MH, for all rows, if the partitions agree. The power is given by DET(MH), and stored in RLS. A search is made for the frame ordinal given by these row lengths, as discussed above. Once KAC is found the entry in that column HMAT(KAR,KAC), for row KAR, is increased by 1 (for each term so labeled). The resultant HMAT, after all the NFF terms in the TDT-loop, and all rows, have been considered, is the required matrix of the h’s. This matrix is then inverted to find the matrix whose entries are the Kostka numbers, The inversion is done by CALLing the IMSL routine LINV1F, discussed below, The CALL to LINV1 F has seven parameters. The first is HMAT, the matrix to be inverted. Then are the order and row dimensions, NRP, of HMAT, here the same, and the inverted matrix, HIMT, the matrix of Kostka numbers. The number of decimal places to which the elements are required to be correct is VP, set to 7. WKA is a one-dimensional vector with NRP elements needed by the subroutine. The final parameter is IER, arbitrarily set to —8 before
entry. This indicates whether the matrix is singular, or not of the required accuracy. The error values are 129 and 34. Finally subroutine NDC, in which the rest of the computations are done, is CALLed to find the number of diagrams for each frame. 2.3. Tests of correctness There are two check routines within the program. The first row of matrix HIMT stored as integers in HMTS gives the dimensions of the representations of S(NMAX), which are also cornputed by RL. These are compared and a discrepancy causes “ERROR” to be printed out with the values which disagree. The sum of each column of HMTS computed in NDC is the dimension of the unitary group representation whose frame labels the column. These dimensions are computed by routine DUR, and the values cornpared. A discrepancy causes the printout of “ERROR; IDU” and the values in disagreement. The results of this program are used elsewhere, and an error would cause problems, and thus show up, there. 3. The subroutines 3.1. The IMSL routines The Kostka numbers are entries in a matrix found by inverting another matrix. The inversion is done by CALLing the routine LINVi F, which is a commercial subroutine produced by IMSL. It requires the other IMSL routines LEQT1F, LUDATF, LUELMF, UERTST and UGETIO. For the convenience of users who do not have access to the IMSL library, IMSL, Inc. has provided these routines in source form, which are included here, Thus only the present programs, and others in the CPC Library are needed for these computations. These routines have internal documentation, and further information about them is provided in the IMSL manuals. We do not discuss them here, except for the description of the parameters in the CALL statements. The IMSL routines are in FORTRAN; in the JCL is a line needed to link the FORTRAN
M.F. Soto, Jr., R. Mirman
/
Number of states of unitary group representations
routines to the PL/I programs. This may differ for different installations and operating systems. In addition the CALLed subroutine is explicitly DECLAREd as FORTRAN at the beginning of the program. 3.2. Number of states: NDC The Kostka numbers are the number of ways of inserting a given set of numerals into a frame to give a standard diagram. For a given distribution there can be several index classes. The number of states is the Kostka number multiplied by the number of index classes. It is ND = K~~,NMAX!/(NMAX MW)!LRE(i)! —
x LRE(2)!
,..,
343
ber of index classes is the sum of the factors JFAC(NUG)/NER, for all ‘u’s for which ~ (= HMTS(JDF,MIC)) is nonzero. When NER is computed it is saved in NERS indexed by IDC giving distribution frame p., and is used here to find, the number of index classes, NTIC, as a function of the frames, in loops over MIC (the frame) and JDF (the distribution class). This is written out to be stored for later use. 3.4. Rowlenr.’ RL This routine to construct quantities for the symmetric groups was provided previously [8]. However, that version included computations, and so arrays, not needed here, which wastes storage. This
where MW is the last row of the frame, and the LRE’s are the number of rows all of the same length. The multiplier depends on p. only. There is a DO-loop over the distribution frames ~.t, indexed by IDC. The row lengths are stored in MZ, and sets of equal length rows in LRE. The product of the factorials of these numbers is MFR, and IFAC(NUG-MW) times MFR is NER. Thus, the overall factor is IFAC(NUG)/NER. In a DOloop over MCR, corresponding to frame A, each entry of the matrix of Kostka numbers, HMTS, labeled by frame p., is multiplied by this factor to give the matrix HMTS. The second index of this matrix gives the frame labeling the SU(NUG) representation, the first index the frame labeling the distribution class, and the entry is the number of states with this distribution of indices (summed over the index classes with this distribution). This is written out to be stored and used in other programs.
version provides only what is presently necessary. For a discussion of the routine see ref. [8].
3.3. Number of index classes: NIC
LHK, are computed, and the product of the hooklengths, LHP, and of the numerals, NMP, are found. After exiting the quotient is taken, giving the dimension IDU. This is an integer so 0.0001 is added to prevent rounding errors in the division from truncating it down i.
From these results we can find the number of index classes. The Kostka numbers give the number of states obtained for a frame using a particular distribution of numerals. If there were only one index class for a distribution the number of nonzero Kostka numbers, for frame A (the number of nonzero entries in the column headed by this frame), would be the number of index classes for the frame. For multiple sets of numerals the num-
3.5. Dimensions of unitary group representations: DUR The dimension of a representation of SU(N) is found from the formula (Patterson and Harter [9], fig. 3) using the frame labeling it. In the upper left hand box put N and move to the right putting in each box a numeral one greater than that to the left. Moving down a column put in each box a numeral one less than that above (and repeat the procedure for each row). Each box also has a hooklength, the distance from the rightmost box in its row to the bottom box in its column. The product of all the numerals divided by the product of all the hooklengths is the dimension. In the routine are two DO-loops, over IRW, the rows, and IBX, the columns (boxes) in each row. The numeral in a box, NBOX, and its hooklength,
Acknowledgements This work could not have been done without the help of John Kennedy, Donald Knuth, Beatrice
344
M.F Soto, Jr., R. Mirman
/
Number of states of unitary group representations
Loerinc and especially Richard Stanley. The grant of computer time by the City University of New York is gratefully acknowledged. We would like to thank IMSL, Inc. for providing us with subroutines in source form and permission to submit them with this program. The IMSL routines are proprietary and may not be removed from this program and used for any other purpose.
[3] C. Kostka, Crelle’s J. 93 (1882) 89; Jahresb. d. deutschen Math.-Verein. 16 (1907) 429. [4] M.F. Soto, Jr. and R. Mirman, Comput. Phys. Commun. 23 (1981) 81. [5] M.F. Soto, Jr. and R. Mirman, Comput. Phys. Commun. 27 (1982) 57. [6] HF. Trotter, Commun. ACM 5 (Aug. 1982) 434; Algorithm 115, Collected Algorithm of the ACM, vol. 1 (Association for Computing Machinery, New York, 1980). [7] M.F. Soto, Jr. and R. Mirman, Comput. Phys. Commun. 34 (1985) 337.
References
[8] M.F. Soto, Jr. and R. Mirman, Comput. Phys. Commun. 23 (1981) 95.
[1] R. Mirman, (submitted). [2] R.P. Stanley, Stud. AppI. Math. 50 (1971) 167, 259; Bull. Am. Math. Soc. 4 (1981) 254.
[9] C.W. Patterson and W.G. Harter, J. Math. Phys. 17 (1976) 1125.
M. F Soto, Jr., R. Mirman
/
Number ofstates of unitary group representations
345
TEST RUN OUTPUT MF~
3
NP~
4;
2 3MTS.1J= 3313TS31,1)= 331365’ 133115(1,1)— ~I1ICS(I)— 3(13*5= 131335(1.1)’ 3(IICS(1)= 3(1305= 131315(1.1)— P3TICS(I)= 3(13*5I3NTS(1,1)= IITICS(1)— 3(33*5= IIMTS(I,1)= HIITS(P,31— HMtS(I.1)= 133315(2,3)— Mpq’rs(I.l)131375(2,3)— NTICS(1) NP’AI IffiTSII,1)— IIFIS(2,3). 3(11C5(I)’ 3(13*5. 331315(1,1)— KPTS(2,3)= 3(TICS(1) ‘(13*5= 311315(1.1)— HIITS(2,3)— WTICS(I)=
2 7 2 2
2 I l33’TcU.2)~ I RMTS(I,2)~ llt!C= 0 I1$TS(I.2)= 3) NTICS(7)= WC2; 1 ,4p3TS(1,2)= I WTICS(2)= WUG3; 3 Iu3rS(1.2F3 NT!C5(27NUG— 4; 6 141315(1,2)’ 1, NT;CS(?1=
3 I 1 I 1
3
0 0 0 3 0 2 0 3 3 S 1 1
4 12 4
NIP— 1413T5(1,2)= 133375(3,1)— 131315(1,2)— 141315(3,1)— NUG H$TS(1,23= IIMTS(3,1) NT1CS(2)— NUG 311315(1,2)— 311315(3,1)— PITCS(7)= NIJG 141315(1,2)— 14MTS(3,1)= NT;CS(2)= NUC— 133315(1,2)— 133315(3,1)— ptTTCS(2)=
tH~ 1; I 13131512.1)— I 13131512.1)—
0 133315 t7.2)= 3) IH!TS(?,2)=
I; 1;
133315(2,7)
I;
0 141315(2,1)— 1:
3)
I 131315(2.1)— 3;
0 14131S(2,2)—
2;
3 I3MTS(?,1I— 6;
0 I31ITS(2.2)—
3;
6 IIPITS(2,I) 10; 3 2 0 2 0
113— 2; IlPlTSfl,3)— 131315(3.2)— l’13TS(1.3)— 141375(3.2)—
0 313(15(7,2)=
I 0 I 0
II33TS(2,1)= I3MTS(3,3)— IIVTS(?.1)= K~cTSf3.3)=
0 N’31S(?,Z)— I; 0 333315(2.2)’ 1;
1; 0 141315(1,3)— 0 131315(3,2)— 0 NTTCS(3)—
0 143(15(2.1)— 0 13331533,3)— I;
0 143115(7,2)— 1;
0
0 131315(1,3)— 0 141315(3.2)” 2 NT!C5(3)=
0 (41375(2,1)— 0 143115(3,3)—
0 133115(2,2)— 21
2
2 33141S(1.3)= 0 141315(3,2)’ 7 NTICS(3)=
I 1INIS(7,1)= 0 333(15(3,3)’ 10;
0 1431TS12,2)— 3;
6
31 133315(1.3)— 0 131315(3,2)— wT;cSI~=
4 133115(2,1)’ 0 H’ITS(3,3)= 201
0 P’ITS(2,?)— 4;
12
2;
3;
4; 16