atlasrep/bibl/Atlas1bib.xml0000644000175000017500000002327011551310762014254 0ustar samsam E.Artin Geometric algebra Interscience Publishers, Inc., New York-London 1957 0082463 (18,553e) 15.0X J. Dieudonné x+214 E.Artin Geometric algebra John Wiley & Sons Inc. 1988 Wiley Classics Library
New York
Reprint of the 1957 original, A Wiley-Interscience Publication 0-471-60839-4 1009557 (90h:51003) 51-02 (11Exx) x+214 Art57
Roger W.Carter Simple groups of <C>L</C>ie type John Wiley & Sons, London-New York-Sydney 1972 Pure and Applied Mathematics, Vol. 28 0407163 (53 #10946) 20G15 (20D05 22E20) Louis Solomon viii+331 Roger W.Carter Simple groups of <C>L</C>ie type John Wiley & Sons Inc. 1989 Wiley Classics Library
New York
Reprint of the 1972 original, A Wiley-Interscience Publication 0-471-50683-4 1013112 (90g:20001) 20-02 (20D05 20E32 20G15 20G40 22-02) x+335 Car72
Roger W.Carter Finite groups of <C>L</C>ie type John Wiley & Sons Inc. 1985 Pure and Applied Mathematics (New York)
New York
Conjugacy classes and complex characters, A Wiley-Interscience Publication 0-471-90554-2 794307 (87d:20060) 20G40 (20-02 20C15) David B. Surowski xii+544
Roger W.Carter Finite groups of <C>L</C>ie type John Wiley & Sons Ltd. 1993 Wiley Classics Library
Chichester
Conjugacy classes and complex characters, Reprint of the 1985 original, A Wiley-Interscience Publication 0-471-94109-3 1266626 (94k:20020) 20C33 (20-02 20G40) xii+544 Car85
C.Chevalley Sur certains groupes simples Tôhoku Math. J. (2) 1955 7 14–66 0040-8735 0073602 (17,457c) 20.0X F. I. Mautner The Tohoku Mathematical Journal. Second Series
H. S. M.Coxeter W. O. J.Moser Generators and relations for discrete groups Springer-Verlag 1965 Second edition. Ergebnisse der Mathematik und ihrer Grenzgebiete, Neue Folge, Band 14
Berlin
0174618 (30 #4818) 20.10 ix+161
H. S. M.Coxeter W. O. J.Moser Generators and relations for discrete groups Springer-Verlag 1972
New York
Third Ergebnisse der Mathematik und ihrer Grenzgebiete, Band 14 0349820 (50 #2313) 20-02 (05-02) ix+161
H. S. M.Coxeter W. O. J.Moser Generators and relations for discrete groups Springer-Verlag 1980 14 Ergebnisse der Mathematik und ihrer Grenzgebiete [Results in Mathematics and Related Areas]
Berlin
Fourth 3-540-09212-9 562913 (81a:20001) 20-01 ix+169
ConstanceDavis A bibliographical survey of simple groups of finite order, 1900–1965 Courant Institute of Mathematical Sciences, New York Univ., New York 1969 0248203 (40 #1457) 20.00 A. P. Street xxi+209 Leonard EugeneDickson Linear groups: <C>W</C>ith an exposition of the <C>G</C>alois field theory Dover Publications Inc. 1958 with an introduction by W. Magnus
New York
0104735 (21 #3488) 20.00 xvi+312
JeanDieudonné La géométrie des groupes classiques Springer-Verlag 1963 Seconde édition, revue et corrigée
Berlin
0158011 (28 #1239) 20.70 viii+125
Jean A.Dieudonné La géométrie des groupes classiques Springer-Verlag 1971
Berlin
Troisième édition, Ergebnisse der Mathematik und ihrer Grenzgebiete, Band 5 0310083 (46 #9186) 20G15 (15A63 15A66) J. Burlak viii+129
D.Gorenstein Reviews on finite groups American Mathematical Society 1974
Providence, R.I.
Reviews reprinted from Mathematical Reviews, Vols. 1-40, published during 1940–1970, Classified by Daniel Gorenstein 0349819 (50 #2312) 20-XX (00A15) xi+706 0282.00024
DanielGorenstein Finite simple groups Plenum Publishing Corp. 1982 University Series in Mathematics
New York
An introduction to their classification 0-306-40779-5 698782 (84j:20002) 20-02 (20D05) R. Solomon x+333
BhamaSrinivasan Representations of finite <C>C</C>hevalley groups Springer-Verlag 1979 764 Lecture Notes in Mathematics
Berlin
A survey 3-540-09716-3 551499 (83a:20054) 20G05 (14L30 20C15 20G40) G. I. Lehrer x+177
RobertSteinberg Variations on a theme of <C>C</C>hevalley Pacific J. Math. 1959 9 875–891 0030-8730 0109191 (22 #79) 22.00 (20.00) Rimhak Ree Pacific Journal of Mathematics
atlasrep/bibl/Atlas2bib.xml0000644000175000017500000062333311551311010014246 0ustar samsam D. R.Hughes A combinatorial construction of the small <C>M</C>athieu designs and groups Algebraic and geometric combinatorics North-Holland 1982 65 North-Holland Math. Stud. 259–264
Amsterdam
Men82 772601 (86j:05028) 05B05 (20D08) M11
GordonKeller A characterization of <C><M>A_6</M></C> and <C><M>M_{11}</M></C> J. Algebra 1969 13 409–421 0021-8693 0249498 (40 #2743) 20.20 M. Herzog Journal of Algebra M11
HiroshiKimura A characterization of <C><M>A_7</M></C> and <C><M>M_{11}</M></C>. <C>I</C> Hokkaido Math. J. 1974 3 213–217 0385-4035 0354827 (50 #7304) 20B10 David R. Mason Hokkaido Mathematical Journal M11
HiroshiKimura A characterization of <C><M>A_7</M></C> and <C><M>M_{11}</M></C>. <C>II</C> Hokkaido Math. J. 1975 4 39–44 0385-4035 0390028 (52 #10855a) 20B10 David R. Mason Hokkaido Mathematical Journal M11
HiroshiKimura A characterization of <C><M>A_7</M></C> and <C><M>M_{11}</M></C>. <C>III</C> Hokkaido Math. J. 1975 4 2 273–277 0385-4035 0390029 (52 #10855b) 20B10 David R. Mason Hokkaido Mathematical Journal M11
W. O. J.Moser Abstract definitions for the <C>M</C>athieu groups <C><M>M_{11}</M></C> and <C><M>M_{12}</M></C> Canad. Math. Bull. 1959 2 9–13 0008-4395 0101268 (21 #81) 20.00 Graham Higman Canadian Mathematical Bulletin. Bulletin Canadien de Mathématiques M11
Christopher W.Norman A characterization of the <C>M</C>athieu group <C><M>M_{11}</M></C> Math. Z. 1968 106 162–166 0025-5874 0230637 (37 #6197) 05.20 (20.00) R. G. Stanton Mathematische Zeitschrift M11
DavidParrott On the <C>M</C>athieu groups <C><M>M_{22}</M></C> and <C><M>M_{11}</M></C> Bull. Austral. Math. Soc. 1970 3 141–142 M11
DavidParrott On the <C>M</C>athieu groups <C><M>M_{22}</M></C> and <C><M>M_{11}</M></C> J. Austral. Math. Soc. 1970 11 69–81 0263-6115 0255669 (41 #329) 20.29 W. J. Wong Australian Mathematical Society. Journal. Series A. Pure Mathematics and Statistics M11
G. J. A.Schneider The Mathieu group <M>M_{11}</M> Oxford 1979 M. Sc. thesis M11
K. C.Ts'eng C. S.Li On the commutators of the simple <C>M</C>athieu groups J. China Univ. Sci. Techn. 1965 1 1 43–48 0253-2778 0217179 (36 \#270) 20.29 C. Y. Chao Journal of China University of Science and Technology. Zhongguo Kexue Jishu Daxue Xuebao M11
Harold N.Ward A form for <C><M>M_{11}</M></C> J. Algebra 1975 37 2 340–361 0021-8693 0384907 (52 #5777) 20B25 Gareth A. Jones Journal of Algebra M11
KenziAkiyama A note on the <C>M</C>athieu groups <C><M>M_{12}</M></C> and <C><M>M_{23}</M></C> Bull. Central Res. Inst. Fukuoka Univ. 1983 66 1–5 0287-0002 730316 (86m:20003a) 20B10 (20D08) Bulletin of Central Research Institute Fukuoka University M12
RichardBrauer PaulFong A characterization of the <C>M</C>athieu group <C><M>{\germ M}_{12}</M></C> Trans. Amer. Math. Soc. 1966 122 18–47 0002-9947 0207817 (34 #7631) 20.27 (20.80) Graham Higman Transactions of the American Mathematical Society M12
F.Buekenhout Geometries for the <C>M</C>athieu group <C><M>M_{12}</M></C> Combinatorial theory (Schloss Rauischholzhausen, 1982) Springer 1982 969 Lecture Notes in Math. 74–85
Berlin
JV82 692234 (84h:51034) 51E25 (05B25 20D08) M12
J. H.Conway Hexacode and tetracode—<C>MOG</C> and <C>MINIMOG</C> Computational group theory (Durham, 1982) Academic Press 1984 359–365
London
Atk84 760670 (86b:94020) 94B25 (05B05) Wolfgang Knapp M12
J. H.Conway Three lectures on exceptional groups Finite simple groups (Proc. Instructional Conf., Oxford, 1969) Academic Press 1971 215–247
London
PH71 0338152 (49 #2918) 20D05 Thomas Laffey M12
H. S. M.Coxeter Twelve points in <C><M>{\rm PG}(5,\,3)</M></C> with <C><M>95040</M></C> self-transformations Proc. Roy. Soc. London. Ser. A 1958 247 279–293 0962-8444 0120289 (22 #11044) 20.00 (50.00) R. G. Stanton Proceedings of the Royal Society. London. Series A. Mathematical, Physical and Engineering Sciences M12
R. T.Curtis The <C>S</C>teiner system <C><M>S(5,\,6,\,12)</M></C>, the <C>M</C>athieu group <C><M>M_{12}</M></C> and the ``kitten'' Computational group theory (Durham, 1982) Academic Press 1984 353–358
London
Atk84 760669 (86a:05011) 05B05 (20B25) Peter M. Neumann M12
G.Frobenius Über die Charaktere der mehrfach transitiven Gruppen Berliner Berichte 1904 558–571 M12
MarshallHall Jr. Note on the <C>M</C>athieu group <C><M>M_{12}</M></C> Arch. Math. 1962 13 334–340 0003-9268 0146245 (26 #3767) 20.29 W. Moser Archiv für Mathematische Logik und Grundlagenforschung M12
D. R.Hughes A combinatorial construction of the small <C>M</C>athieu designs and groups Algebraic and geometric combinatorics North-Holland 1982 65 North-Holland Math. Stud. 259–264
Amsterdam
Men82 772601 (86j:05028) 05B05 (20D08) M12
J. F.Humphreys The projective characters of the <C>M</C>athieu group <C><M>M_{12}</M></C> and of its automorphism group Math. Proc. Cambridge Philos. Soc. 1980 87 3 401–412 0305-0041 556920 (81k:20021) 20C25 (20C30) V. D. Mazurov MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society M12
B. HeinrichMatzat Konstruktion von <C>Z</C>ahlkörpern mit der <C>G</C>aloisgruppe <C><M>M_{12}</M></C> über <C><M>{\bf Q}(\sqrt{{-5}})</M></C> Arch. Math. (Basel) 1983 40 3 245–254 0003-889X 701271 (85g:11102) 11R32 Jack Sonn ACVMAL Archiv der Mathematik M12
W. O. J.Moser Abstract definitions for the <C>M</C>athieu groups <C><M>M_{11}</M></C> and <C><M>M_{12}</M></C> Canad. Math. Bull. 1959 2 9–13 0008-4395 0101268 (21 #81) 20.00 Graham Higman Canadian Mathematical Bulletin. Bulletin Canadien de Mathématiques M12
Gerhard J. A.Schneider On the <C><M>2</M></C>-modular representations of <C><M>M_{12}</M></C> Representations of algebras (Puebla, 1980) Springer 1981 903 Lecture Notes in Math. 302–314
Berlin
AL81 654719 (83g:20014) 20C20 (20C30) A. V. Borovik M12
Gerhard J. A.Schneider The vertices of the simple modules of <C><M>M_{12}</M></C> over a field of characteristic <C><M>2</M></C> J. Algebra 1983 83 1 189–200 0021-8693 710594 (84i:20013) 20C20 (20D08) P. Donovan JALGA4 Journal of Algebra M12
R. G.Stanton The <C>M</C>athieu groups Canadian J. Math. 1951 3 164–174 0008-414X 0040304 (12,672d) 20.0X J. S. Frame Canadian Journal of Mathematics. Journal Canadien de Mathématiques M12
G. N.Thwaites A characterization of <C><M>M_{12}</M></C> by centralizer of involution Quart. J. Math. Oxford Ser. (2) 1973 24 537–557 0033-5606 0332955 (48 #11280) 20D05 Mark P. Hale, Jr. The Quarterly Journal of Mathematics. Oxford. Second Series M12
J. A.Todd On representations of the <C>M</C>athieu groups as collineation groups J. London Math. Soc. 1959 34 406–416 0024-6107 0120290 (22 #11045) 20.00 (50.00) T. G. Room Journal of the London Mathematical Society. Second Series M12
J. A.Todd Abstract definitions for the <C>M</C>athieu groups Quart. J. Math. Oxford Ser. (2) 1970 21 421–424 0033-5606 0272878 (42 #7759) 20.10 A. P. Street The Quarterly Journal of Mathematics. Oxford. Second Series M12
T. A.Whitelaw On the <C>M</C>athieu group of degree twelve Proc. Cambridge Philos. Soc. 1966 62 351–364 0194520 (33 #2730) 20.72 (50.60) H. S. M. Coxeter M12
E.Witt Die 5-fach transitiven Gruppen von Mathieu Abh. Math. Sem. Hamburg 1938 12 256–264 M12
W. J.Wong A characterization of the <C>M</C>athieu group <C><M>M_{12}</M></C> Math. Z. 1964 84 378–388 0025-5874 0167522 (29 #4794) 20.29 W. Moser Mathematische Zeitschrift M12
Peter J.Cameron Another characterization of the small <C>J</C>anko group J. Math. Soc. Japan 1973 25 591–595 0320124 (47 #8665) 20B20 (20D05) Peter M. Neumann J1
G. R.Chapman Generators and relations for the cohomology ring of <C>J</C>anko's first group in the first twenty-one dimensions Groups—St. Andrews 1981 (St. Andrews, 1981) Cambridge Univ. Press 1982 71 London Math. Soc. Lecture Note Ser. 201–206
Cambridge
CR82b 679161 (83m:20068) 20J05 J1
J. H.Conway Three lectures on exceptional groups Finite simple groups (Proc. Instructional Conf., Oxford, 1969) Academic Press 1971 215–247
London
PH71 0338152 (49 #2918) 20D05 Thomas Laffey J1
PaulFong On decomposition numbers of <C><M>J_1</M></C> and <C><M>R(q)</M></C> Symposia Mathematica, Vol. XIII (Convegno di Gruppi e loro Rappresentazioni, INDAM, Rome, 1972) Academic Press 1974 415–422
London
0357578 (50 #10046) 20C20 I. M. Isaacs J1
Terence M.Gagen On groups with abelian <C>S</C>ylow <C><M>2</M></C>-groups Math. Z. 1965 90 268–272 see MR0215897, p. 99–100 0025-5874 0191963 (33 #190) 20.43 S. Lipschutz Mathematische Zeitschrift J1
T. M.Gagen On groups with Abelian 2-Sylow subgroups Proceedings of the International Conference on the Theory of Groups Gordon and Breach Science Publishers 1967 99–100
New York
KN67 J1
T. M.Gagen A characterization of <C>J</C>anko's simple group Proc. Amer. Math. Soc. 1968 19 1393–1395 0002-9939 0236257 (38 #4554) 20.29 M. Herzog Proceedings of the American Mathematical Society J1
G.Higman Construction of simple groups from character tables Finite simple groups (Proc. Instructional Conf., Oxford, 1969) Academic Press 1971 205–214
London
PH71 0342603 (49 #7349) 20D05 G. de B. Robinson J1
ZvonimirJanko A new finite simple group with abelian <C><M>2</M></C>-<C>S</C>ylow subgroups Proc. Nat. Acad. Sci. U.S.A. 1965 53 657–658 0173704 (30 #3914) 20.29 W. E. Deskins J1
ZvonimirJanko A new finite simple group with abelian <C>S</C>ylow <C><M>2</M></C>-subgroups and its characterization J. Algebra 1966 3 147–186 0021-8693 0193138 (33 #1359) 20.29 W. E. Deskins Journal of Algebra J1
ZvonimirJanko A characterization of a new simple group Proceedings of the International Conference on the Theory of Groups Gordon and Breach Science Publishers 1967 205–208
New York
KN67 J1
PeterLandrock Gerhard O.Michler Block structure of the smallest <C>J</C>anko group Math. Ann. 1978 232 3 205–238 0025-5831 0491929 (58 #11100) 20D05 W. Feit Mathematische Annalen J1
Jiong ShengLi The commutators of the small <C>J</C>anko group <C><M>J_1</M></C> J. Math. (Wuhan) 1981 1 2 175–179 Chinese 0255-7797 647861 (83j:20029) 20D08 Journal of Mathematics. Shuxue Zazhi J1
DonaldLivingstone On a permutation representation of the <C>J</C>anko group J. Algebra 1967 6 43–55 0021-8693 0207819 (34 #7633) 20.29 (20.80) F. C. Piper Journal of Algebra J1
R. P.Martineau A characterization of <C>J</C>anko's simple group of order <C><M>175,560</M></C> Proc. London Math. Soc. (3) 1969 19 709–729 0024-6115 0257215 (41 #1866) 20.29 W. J. Wong Proceedings of the London Mathematical Society. Third Series J1
ManleyPerkel A characterization of <C><M>J_1</M></C> in terms of its geometry Geom. Dedicata 1980 9 3 291–298 0304-4637 585936 (81j:05066) 05C25 (20B25 20D08) Hugo S. Sun GEMDAT Geometriae Dedicata J1
E.Shult A note on <C>J</C>anko's simple group of order <C><M>175,560</M></C> Proc. Amer. Math. Soc. 1972 35 342–348 0002-9939 0306303 (46 #5429) 20D05 M. Herzog Proceedings of the American Mathematical Society J1
T. A.Whitelaw Janko's group as a collineation group in <C><M>{\rm PG}(6,\,11)</M></C> Proc. Cambridge Philos. Soc. 1967 63 663–677 0214673 (35 #5522) 20.72 P. Dembowski J1
HiroyoshiYamaki On the <C>J</C>anko's simple group of order <C><M>175560</M></C> Osaka J. Math. 1972 9 111–112 0030-6126 0302757 (46 #1900) 20D05 R. W. Carter Osaka Journal of Mathematics J1
Stephen M.Gagola Jr. Sidney C.Garrison III Real characters, double covers, and the multiplier J. Algebra 1982 74 1 20–51 0021-8693 644216 (83a:20016) 20C25 J. L. Alperin JALGA4 Journal of Algebra M22
R. L.Griess The covering group of <M>M_{22}</M> and associated component problems Abstracts Amer. Math. Soc. 1980 1 213 M22
DieterHeld Eine <C>K</C>ennzeichnung der <C>M</C>athieu-<C>G</C>ruppe <C><M>M_{22}</M></C> und der alternierenden <C>G</C>ruppe <C><M>A_{10}</M></C> J. Algebra 1968 8 436–449 0021-8693 0229709 (37 #5283) 20.20 D. A. Robinson Journal of Algebra M22
J. F.Humphreys The projective characters of the <C>M</C>athieu group <C><M>M_{22}</M></C> J. Algebra 1982 76 1 1–24 0021-8693 659207 (83g:20015) 20C25 (20D08) V. D. Mazurov JALGA4 Journal of Algebra M22
ZvonimirJanko A characterization of the <C>M</C>athieu simple groups. <C>I</C>, <C>II</C> J. Algebra 9 (1968), 1-19; ibid. 1968 9 20–41 0021-8693 0229710 (37 #5284) 20.29 P. Fong Journal of Algebra M22
W.Jónsson J.McKay More about the <C>M</C>athieu group <C><M>M_{22}</M></C> Canad. J. Math. 1976 38 5 929–937 0008-414X 0427103 (55 #139) 05B25 (20D05) Francis Buekenhout Canadian Journal of Mathematics. Journal Canadien de Mathématiques M22
PierreMazet Sur le multiplicateur de <C>S</C>chur du groupe de <C>M</C>athieu <C><M>M_{22}</M></C> C. R. Acad. Sci. Paris Sér. A-B 1979 289 14 A659–A661 0151-0509 560327 (80m:20032) 20E34 (20D05) CHASAP Comptes Rendus Hebdomadaires des Séances de l'Académie des Sciences. Séries A et B M22
DavidParrott On the <C>M</C>athieu groups <C><M>M_{22}</M></C> and <C><M>M_{11}</M></C> Bull. Austral. Math. Soc. 1970 3 141–142 M22
DavidParrott On the <C>M</C>athieu groups <C><M>M_{22}</M></C> and <C><M>M_{11}</M></C> J. Austral. Math. Soc. 1970 11 69–81 0263-6115 0255669 (41 #329) 20.29 W. J. Wong Australian Mathematical Society. Journal. Series A. Pure Mathematics and Statistics M22
J.Tits Sur les systèmes de <C>S</C>teiner associés aux trois ``grands'' groupes de <C>M</C>athieu Rend. Mat. e Appl. (5) 1964 23 166–184 0183785 (32 #1262) 05.20 (20.20) J. E. McLaughlin M22 0126.26303
K. C.Ts'eng C. S.Li On the commutators of the simple <C>M</C>athieu groups J. China Univ. Sci. Techn. 1965 1 1 43–48 0253-2778 0217179 (36 \#270) 20.29 C. Y. Chao Journal of China University of Science and Technology. Zhongguo Kexue Jishu Daxue Xuebao M22
Arjeh M.Cohen Finite quaternionic reflection groups J. Algebra 1980 64 2 293–324 0021-8693 579063 (81g:20093) 20H15 J. D. Dixon JALGA4 Journal of Algebra J2
L.Finkelstein A.Rudvalis Maximal subgroups of the <C>H</C>all-<C>J</C>anko-<C>W</C>ales group J. Algebra 1973 24 486–493 0021-8693 0323889 (48 #2242) 20D05 B. Chang Journal of Algebra J2
Stephen M.Gagola Jr. Sidney C.Garrison III Real characters, double covers, and the multiplier J. Algebra 1982 74 1 20–51 0021-8693 644216 (83a:20016) 20C25 J. L. Alperin JALGA4 Journal of Algebra J2
DanielGorenstein KoichiroHarada A characterization of <C>J</C>anko's two new simple groups J. Fac. Sci. Univ. Tokyo Sect. I 1969 16 331–406 (1970) 0040-8980 0283075 (44 #308) 20.29 J. H. Walter Journal of the Faculty of Science. University of Tokyo. Section IA. Mathematics J2
MarshallHall Jr. DavidWales The simple group of order <C><M>604,800</M></C> J. Algebra 1968 9 417–450 0021-8693 0240192 (39 #1544) 20.29 A. Mann Journal of Algebra J2
MarshallHall Jr. DavidWales The simple group of order <C><M>604,800</M></C> Theory of Finite Groups (Symposium, Harvard Univ., Cambridge, Mass., 1968) Benjamin, New York 1969 79–90 BS69 0255668 (41 #328) 20.29 H. Nagao J2
A. P.Ilʹinyh A characterization of the <C>H</C>all-<C>J</C>anko finite simple group Mat. Zametki 1973 14 535–542 0025-567X 0325756 (48 #4102) 20D05 M. Herzog Akademiya Nauk SSSR. Matematicheskie Zametki J2
Z.Janko Some new simple groups of finite order Theory of finite groups: A symposium W. A. Benjamin, Inc., New York-Amsterdam 1969 Edited by Richard Brauer and Chih-han Sah 63–64 BS69 J2
J. H.Lindsey II On a projective representation of the <C>H</C>all-<C>J</C>anko group Bull. Amer. Math. Soc. 1968 74 1094 0230812 (37 #6370) 20.29 D. Wales J2
J. H.Lindsey Linear groups of degree 6 and the Hall-Janko group Theory of finite groups: A symposium W. A. Benjamin, Inc., New York-Amsterdam 1969 Edited by Richard Brauer and Chih-han Sah 97–100 BS69 J2
J. H.Lindsey II On a six dimensional projective representation of the <C>H</C>all-<C>J</C>anko group Pacific J. Math. 1970 35 175–186 0030-8730 0272888 (42 #7769) 20.29 J. D. Dixon Pacific Journal of Mathematics J2
JohnMcKay DavidWales The multipliers of the simple groups of order <C><M>604,800</M></C> and <C><M>50,232,960</M></C> J. Algebra 1971 17 262–272 0021-8693 0274577 (43 #340) 20.29 W. J. Wong Journal of Algebra J2
FredrickSmith A general characterization of the <C>J</C>anko simple group <C><M>J_2</M></C> Arch. Math. (Basel) 1974 25 17–22 0003-889X 0357585 (50 #10053) 20D05 Mark P. Hale, Jr. Archiv der Mathematik J2
J.Tits Le groupe de Janko d'ordre 604,800 Theory of finite groups: A symposium W. A. Benjamin, Inc., New York-Amsterdam 1969 Edited by Richard Brauer and Chih-han Sah 91–95 BS69 J2
D.Wales The uniqueness of the simple group of order <C><M>604800</M></C> as a subgroup of <C><M>{\rm SL}_6\,(4)</M></C> J. Algebra 1969 11 455–460 0021-8693 0236259 (38 #4556) 20.29 A. Mann Journal of Algebra J2
David B.Wales Generators of the <C>H</C>all-<C>J</C>anko group as a subgroup of <C><M>G_2\,(4)</M></C> J. Algebra 1969 13 513–516 0021-8693 0251133 (40 #4364) 20.29 A. P. Street Journal of Algebra J2
Robert A.Wilson The geometry of the <C>H</C>all-<C>J</C>anko group as a quaternionic reflection group Geom. Dedicata 1986 20 2 157–173 0046-5755 833844 (87i:20031) 20D08 (20H15 51F15) Stephen D. Smith GEMDAT Geometriae Dedicata b J2
KenziAkiyama A note on the <C>M</C>athieu groups <C><M>M_{12}</M></C> and <C><M>M_{23}</M></C> Bull. Central Res. Inst. Fukuoka Univ. 1983 66 1–5 0287-0002 730316 (86m:20003a) 20B10 (20D08) Bulletin of Central Research Institute Fukuoka University M23
N.Bryce On the <C>M</C>athieu group <C><M>M_{23}</M></C> J. Austral. Math. Soc. 1971 12 385–392 0263-6115 0291278 (45 #372) 20D05 W. J. Wong Australian Mathematical Society. Journal. Series A. Pure Mathematics and Statistics M23
UlrichDempwolff Eine <C>K</C>ennzeichnung der <C>G</C>ruppen <C><M>A_5</M></C> und <C><M>M_{23}</M></C> J. Algebra 1972 23 590–601 0021-8693 0314961 (47 #3510) 20D05 Henry S. Leonard, Jr. Journal of Algebra M23
ZvonimirJanko A characterization of the <C>M</C>athieu simple groups. <C>I</C>, <C>II</C> J. Algebra 9 (1968), 1-19; ibid. 1968 9 20–41 0021-8693 0229710 (37 #5284) 20.29 P. Fong Journal of Algebra M23
Lowell J.Paige A note on the <C>M</C>athieu groups Canad. J. Math. 1957 9 15–18 0008-414X 0084506 (18,871f) 20.0X T. Nakayama Canadian Journal of Mathematics. Journal Canadien de Mathématiques M23
J.Tits Sur les systèmes de <C>S</C>teiner associés aux trois ``grands'' groupes de <C>M</C>athieu Rend. Mat. e Appl. (5) 1964 23 166–184 0183785 (32 #1262) 05.20 (20.20) J. E. McLaughlin M23 0126.26303
A. E.Brouwer Polarities of <C>G</C>. <C>H</C>igman's symmetric design and a strongly regular graph on <C><M>176</M></C> vertices Aequationes Math. 1982 25 1 77–82 0001-9054 716379 (85e:05089) 05C25 (20B25 20D60) W. M. Kantor AEMABN Aequationes Mathematicae HS
A. R.Calderbank David B.Wales A global code invariant under the <C>H</C>igman-<C>S</C>ims group J. Algebra 1982 75 1 233–260 0021-8693 650419 (83d:20011) 20D08 (94B05) L. Dornhoff JALGA4 Journal of Algebra HS
J. S.Frame Computation of characters of the <C>H</C>igman-<C>S</C>ims group and its automorphism group J. Algebra 1972 20 320–349 0021-8693 0286902 (44 #4109) 20.80 I. M. Isaacs Journal of Algebra HS
DanielGorenstein Morton E.Harris A characterization of the <C>H</C>igman-<C>S</C>ims simple group J. Algebra 1973 24 565–590 0021-8693 0311756 (47 #318) 20D05 Graham Higman Journal of Algebra HS
Donald G.Higman Charles C.Sims A simple group of order <C><M>44,352,000</M></C> Math. Z. 1968 105 110–113 0025-5874 0227269 (37 #2854) 20.29 D. A. Robinson Mathematische Zeitschrift HS
GrahamHigman On the simple group of <C>D</C>. <C>G</C>. <C>H</C>igman and <C>C</C>. <C>C</C>. <C>S</C>ims Illinois J. Math. 1969 13 74–80 0019-2082 0240193 (39 #1545) 20.29 A. Mann Illinois Journal of Mathematics HS
J. F.Humphreys The modular characters of the <C>H</C>igman-<C>S</C>ims simple group Proc. Roy. Soc. Edinburgh Sect. A 1982 92 3-4 319–335 0308-2105 677491 (83m:20017) 20C20 (20D08) M. Herzog PEAMDU Proceedings of the Royal Society of Edinburgh. Section A. Mathematical and Physical Sciences HS
ZvonimirJanko S. K.Wong A characterization of the <C>H</C>igman-<C>S</C>ims simple group J. Algebra 1969 13 517–534 0021-8693 0260866 (41 #5486) 20.29 D. Gorenstein Journal of Algebra HS
HiroshiKimura On the <C>H</C>igman-<C>S</C>ims simple group of order <C><M>44,353,000</M></C> J. Algebra 1978 52 1 88–93 0021-8693 0480721 (58 #874) 20D05 George Glauberman Journal of Algebra HS
S. S.Magliveras The maximal subgroups of the Higman-Sims group Birmingham 1970 HS
Spyros S.Magliveras The subgroup structure of the <C>H</C>igman-<C>S</C>ims simple group Bull. Amer. Math. Soc. 1971 77 535–539 0283077 (44 #310) 20.29 W. J. Wong HS
JohnMcKay DavidWales The multiplier of the <C>H</C>igman-<C>S</C>ims simple group Bull. London Math. Soc. 1971 3 283–285 0024-6093 0292931 (45 #2012) 20D05 W. J. Wong The Bulletin of the London Mathematical Society HS
DavidParrott S. K.Wong On the <C>H</C>igman-<C>S</C>ims simple group of order <C><M>44,352,000</M></C> Pacific J. Math. 1970 32 501–516 0030-8730 0257216 (41 #1867) 20.29 D. A. Robinson Pacific Journal of Mathematics HS
ArunasRudvalis Characters of the covering group of the <C>H</C>igman-<C>S</C>ims group J. Algebra 1975 33 135–143 0021-8693 0354834 (50 #7311) 20C15 J. S. Frame Journal of Algebra HS
Charles C.Sims On the isomorphism of two groups of order <C><M>44,352,000</M></C> Theory of Finite Groups (Symposium, Harvard Univ., Cambridge, Mass., 1968) Benjamin, New York 1969 101–108 BS69 0248215 (40 #1469) 20.29 J. McKay HS
M. S.Smith On rank <C><M>3</M></C> permutation groups J. Algebra 1975 33 22–42 0021-8693 0384905 (52 #5775) 20B15 (05C99) E. L. Spitznagel, Jr. Journal of Algebra HS
Margaret S.Smith On the isomorphism of two simple groups of order <C><M>44,352,000</M></C> J. Algebra 1976 41 1 172–174 0021-8693 0417275 (54 #5332) 20D05 David C. Hunt Journal of Algebra HS
Margaret S.Smith A combinatorial configuration associated with the <C>H</C>igman-<C>S</C>ims simple group J. Algebra 1976 41 1 175–195 0021-8693 0447384 (56 #5696) 20B25 (05B30) Spyros S. Magliveras Journal of Algebra HS
DavidWales Uniqueness of the graph of a rank three group Pacific J. Math. 1969 30 271–276 0030-8730 0246947 (40 #216) 20.20 A. R. Camina Pacific Journal of Mathematics HS
Robert A.Wilson Maximal subgroups of automorphism groups of simple groups J. London Math. Soc. (2) 1985 32 3 460–466 0024-6107 825921 (87a:20017) 20D08 (20D45) Koichiro Harada JLMSAK Journal of the London Mathematical Society. Second Series c HS
J. H.Conway D. B.Wales Matrix generators for <C><M>J_3</M></C> J. Algebra 1974 29 474–476 0021-8693 0344331 (49 #9070) 20D05 Bhama Srinivasan Journal of Algebra J3
L.Finkelstein A.Rudvalis The maximal subgroups of <C>J</C>anko's simple group of order <C><M>50,\,232,\,960</M></C> J. Algebra 1974 30 122–143 0021-8693 0354846 (50 #7323) 20D05 David R. Mason Journal of Algebra J3
DanielFrohardt A trilinear form for the third <C>J</C>anko group J. Algebra 1983 83 2 349–379 0021-8693 714249 (84m:20023) 20D08 Michael Wester JALGA4 Journal of Algebra J3
DanielGorenstein KoichiroHarada A characterization of <C>J</C>anko's two new simple groups J. Fac. Sci. Univ. Tokyo Sect. I 1969 16 331–406 (1970) 0040-8980 0283075 (44 #308) 20.29 J. H. Walter Journal of the Faculty of Science. University of Tokyo. Section IA. Mathematics J3
GrahamHigman JohnMcKay On <C>J</C>anko's simple group of order <C><M>50,232,960</M></C> Bull. London Math. Soc. 1 (1969), 89–94; correction, ibid. 1969 1 219 0024-6093 0246955 (40 #224) 20.29 Charles C. Sims The Bulletin of the London Mathematical Society J3
GrahamHigman J.McKay On <C>J</C>anko's simple group of order <C><M>50,\,232,\,960</M></C> Theory of Finite Groups (Symposium, Harvard Univ., Cambridge, Mass., 1968) Benjamin, New York 1969 65–77 BS69 0245668 (39 #6974) 20.29 A. P. Street J3 Z.Janko Some new simple groups of finite order Theory of finite groups: A symposium W. A. Benjamin, Inc., New York-Amsterdam 1969 Edited by Richard Brauer and Chih-han Sah 63–64 BS69 J3 ZvonimirJanko Some new simple groups of finite order. <C>I</C> Symposia Mathematica (INDAM, Rome, 1967/68), Vol. 1 Academic Press 1969 25–64
London
0244371 (39 #5686) 20.29 A. P. Street J3
JohnMcKay DavidWales The multipliers of the simple groups of order <C><M>604,800</M></C> and <C><M>50,232,960</M></C> J. Algebra 1971 17 262–272 0021-8693 0274577 (43 #340) 20.29 W. J. Wong Journal of Algebra J3
RichardWeiss A geometric construction of <C>J</C>anko's group <C><M>J_3</M></C> Math. Z. 1982 179 1 91–95 0025-5874 643049 (84i:05062) 05C25 (05B25 20D08) MAZEAX Mathematische Zeitschrift J3
RichardWeiss On the geometry of <C>J</C>anko's group <C><M>J_3</M></C> Arch. Math. (Basel) 1982 38 5 410–419 0003-889X 666912 (83k:05054) 05C25 (20D08 20F32 51J05) Jürgen Bierbrauer ACVMAL Archiv der Mathematik. Archives of Mathematics. Archives Mathématiques J3
S. K.Wong On a new finite non-abelian simple group of <C>J</C>anko Bull. Austral. Math. Soc. 1969 1 59–79 0004-9727 0269734 (42 #4629) 20.29 A. Mann Bulletin of the Australian Mathematical Society J3
E. F.Assmus Jr. H. F.Mattson Perfect codes and the <C>M</C>athieu groups Arch. Math. (Basel) 1966 17 121–135 0003-889X 0204206 (34 #4050) 94.10 E. Weiss Archiv der Mathematik M24
N.Burgoyne P.Fong The <C>S</C>chur multipliers of the <C>M</C>athieu groups Nagoya Math. J. 1966 27 733–745 0027-7630 0197542 (33 #5707) 20.25 O. H. Kegel Nagoya Mathematical Journal M24
N.Burgoyne P.Fong A correction to: <Wrap Name="IntRef">``<C>T</C>he <C>S</C>chur multipliers of the <C>M</C>athieu groups''</Wrap> Nagoya Math. J. 1968 31 297–304 0027-7630 0219626 (36 #2705) 20.48 O. H. Kegel Nagoya Mathematical Journal M24 BF66b
ChangChoi On subgroups of <C><M>M_{24}</M></C>. <C>I</C>. <C>S</C>tabilizers of subsets Trans. Amer. Math. Soc. 1972 167 1–27 0002-9947 0294472 (45 #3542) 20B20 Gary M. Seitz Transactions of the American Mathematical Society M24
ChangChoi On subgroups of <C><M>M_{24}</M></C>. <C>II</C>. <C>T</C>he maximal subgroups of <C><M>M_{24}</M></C> Trans. Amer. Math. Soc. 1972 167 29–47 0002-9947 0294473 (45 #3543) 20B20 Gary M. Seitz Transactions of the American Mathematical Society M24
J. H.Conway The miracle octad generator Topics in group theory and computation (Proc. Summer School, University Coll., Galway, 1973) Academic Press 1977 62–68
London
Cur77b 0472991 (57 #12670) 20C30 (05B05 05C25) Norman Biggs a M24
J. H.Conway Hexacode and tetracode—<C>MOG</C> and <C>MINIMOG</C> Computational group theory (Durham, 1982) Academic Press 1984 359–365
London
Atk84 760670 (86b:94020) 94B25 (05B05) Wolfgang Knapp M24
J. H.Conway Three lectures on exceptional groups Finite simple groups (Proc. Instructional Conf., Oxford, 1969) Academic Press 1971 215–247
London
PH71 0338152 (49 #2918) 20D05 Thomas Laffey M24
R. T.Curtis On the Mathieu group <M>M_{24}</M> and related topics Cambridge 1972 M24
R. T.Curtis A new combinatorial approach to <C><M>M_{24}</M></C> Math. Proc. Cambridge Philos. Soc. 1976 79 1 25–42 0305-0041 0399247 (53 #3098) 20D05 Robert A. Liebler Mathematical Proceedings of the Cambridge Philosophical Society M24
R. T.Curtis The maximal subgroups of <C><M>M_{24}</M></C> Math. Proc. Cambridge Philos. Soc. 1977 81 2 185–192 0305-0041 0439926 (55 #12807) 20D05 Robert A. Liebler Mathematical Proceedings of the Cambridge Philosophical Society M24
G.Frobenius Über die Charaktere der mehrfach transitiven Gruppen Berliner Berichte 1904 558–571 M24
DietmarGarbe Jens L.Mennicke Some remarks on the <C>M</C>athieu groups Canad. Math. Bull. 1964 7 201–212 0008-4395 0162846 (29 #150) 20.29 J. A. Todd Canadian Mathematical Bulletin. Bulletin Canadien de Mathématiques M24
D.Garbe J.Mennicke Corrections: <Wrap Name="IntRef">``<C>S</C>ome remarks on the <C>M</C>athieu groups''</Wrap> Canad. Math. Bull. 1972 15 147 0008-4395 0311755 (47 #317) 20D05 Canadian Mathematical Bulletin. Bulletin Canadien de Mathématiques M24 GM64
Philip J.Greenberg Mathieu groups Courant Institute of Mathematical Sciences New York University 1973
New York
0352244 (50 #4731) 20D05 P. Fong iv+189 M24
DieterHeld The simple groups related to <C><M>M_{24}</M></C> J. Algebra 1969 13 253–296 0021-8693 0249500 (40 #2745) 20.25 J. H. Walter Journal of Algebra M24
G. D.James The modular characters of the <C>M</C>athieu groups J. Algebra 1973 27 57–111 0021-8693 0330277 (48 #8614) 20C20 J. S. Frame Journal of Algebra M24
M.Koike Automorphic forms and Mathieu groups Topics in finite group theory Kyoto University Research Institute for Mathematical Sciences 1982 47–56
Kyoto
Kyo82 M24
Jelisaveta KovačStriko A characterization of the finite simple groups <C><M>M_{24}, He</M></C> and <C><M>L_5(2).</M></C> J. Algebra 1976 43 2 375–397 0021-8693 0422406 (54 #10395) 20D05 David C. Hunt Journal of Algebra M24
Rudy J.List On the maximal subgroups of the <C>M</C>athieu groups. <C>I</C>. <C><M>M_{24}</M></C> Atti Accad. Naz. Lincei Rend. Cl. Sci. Fis. Mat. Natur. (8) 1977 62 4 432–438 0491909 (58 #11086) 20B20 (20D05) Ascher Wagner Atti della Accademia Nazionale dei Lincei. Rendiconti. Classe di Scienze Fisiche, Matematiche e Naturali M24
HeinzLüneburg Über die <C>G</C>ruppen von <C>M</C>athieu J. Algebra 1968 10 194–210 0021-8693 0231900 (38 #226) 20.20 (50.00) P. Dembowski Journal of Algebra M24
David R.Mason On the construction of the <C>S</C>teiner system <C><M>S(5,8,24)</M></C> J. Algebra 1977 47 1 77–79 0021-8693 0444752 (56 #3100) 20B25 (05B05) Hugo S. Sun Journal of Algebra M24
E.Mathieu Memoire sur l'etude des fonctions de plusieurs quantites J. Math. Pures Appl. 1861 6 241–243 M24
E.Mathieu Sur les fonctions cinq fois transitives de 24 quantites J. Math. Pures Appl. 1873 18 25–46 M24
PierreMazet Sur les multiplicateurs de <C>S</C>chur des groupes de <C>M</C>athieu J. Algebra 1982 77 2 552–576 0021-8693 673133 (84b:20011) 20C25 P. Fong JALGA4 Journal of Algebra M24
G. A.Miller Sur plusieurs groupes simples Bull. Soc. Math. France 1900 28 266–267 0037-9484 1504378 Contributed Item BSMFAA Bulletin de la Société Mathématique de France M24
VeraPless On the uniqueness of the <C>G</C>olay codes J. Combinatorial Theory 1968 5 215–228 0242561 (39 #3892) 94.10 P. Camion M24
RichardRasala Split codes and the <C>M</C>athieu groups J. Algebra 1976 42 2 422–471 0021-8693 0441544 (55 #14407) 94A10 (20B25) Harold N. Ward Journal of Algebra M24
Mark A.Ronan Locally truncated buildings and <C><M>M_{24}</M></C> Math. Z. 1982 180 4 489–501 0025-5874 667004 (83i:51022) 51E25 (05B25 20B25) Francis Buekenhout MAZEAX Mathematische Zeitschrift M24
U.Schoenwaelder Finite groups with a <C>S</C>ylow <C><M>2</M></C>-subgroup of type <C><M>M_{24}</M></C>. <C>I</C>, <C>II</C> J. Algebra 1974 28 20–45; ibid. 28 (1974), 46–56 0021-8693 0369511 (51 #5744) 20D05 M. Herzog Journal of Algebra M24
J. A.de Séguier Sur les equations de certains groupes C. R. Acad. Sci. Paris 1901 132 1030–1033 M24
J. A.de Séguier Sur certains groupes de <C>M</C>athieu Bull. Soc. Math. France 1904 32 116–124 0037-9484 1504474 Contributed Item BSMFAA Bulletin de la Société Mathématique de France M24
R. G.Stanton The <C>M</C>athieu groups Canadian J. Math. 1951 3 164–174 0008-414X 0040304 (12,672d) 20.0X J. S. Frame Canadian Journal of Mathematics. Journal Canadien de Mathématiques M24
J.Tits Sur les systèmes de <C>S</C>teiner associés aux trois ``grands'' groupes de <C>M</C>athieu Rend. Mat. e Appl. (5) 1964 23 166–184 0183785 (32 #1262) 05.20 (20.20) J. E. McLaughlin M24 0126.26303
J. A.Todd On representations of the <C>M</C>athieu groups as collineation groups J. London Math. Soc. 1959 34 406–416 0024-6107 0120290 (22 #11045) 20.00 (50.00) T. G. Room Journal of the London Mathematical Society. Second Series M24
J. A.Todd A representation of the <C>M</C>athieu group <C><M>M_{24}</M></C> as a collineation group Ann. Mat. Pura Appl. (4) 1966 71 199–238 0003-4622 0202854 (34 #2713) 20.72 (20.80) T. G. Room Annali di Matematica Pura ed Applicata. Serie Quarta M24
J. A.Todd A representation of the <C>M</C>athieu group <C><M>M_{24}</M></C> as a collineation group Rend. Mat. Appl., V. Ser. 1966 25 29–32 group theory English M24 0156.03102
J. A.Todd Abstract definitions for the <C>M</C>athieu groups Quart. J. Math. Oxford Ser. (2) 1970 21 421–424 0033-5606 0272878 (42 #7759) 20.10 A. P. Street The Quarterly Journal of Mathematics. Oxford. Second Series M24
E.Witt Die 5-fach transitiven Gruppen von Mathieu Abh. Math. Sem. Hamburg 1938 12 256–264 M24
E.Witt Über Steinersche Systeme Abh. Math. Sem. Hamburg 1938 12 265–274 M24
O.Diawara Sur le groupe simple de J. McLaughlin Bruxelles 1984 McL
LarryFinkelstein The maximal subgroups of <C>C</C>onway's group <C><M>C_3</M></C> and <C>M</C>c<C>L</C>aughlin's group J. Algebra 1973 25 58–89 0021-8693 0346046 (49 #10772) 20D05 T. M. Gagen Journal of Algebra McL
ZvonimirJanko S. K.Wong A characterization of the <C>M</C>c<C>L</C>aughlin's simple group J. Algebra 1972 20 203–225 0021-8693 0302756 (46 #1899) 20D05 H. Nagao Journal of Algebra McL
JackMcLaughlin A simple group of order <C><M>898,128,000</M></C> Theory of Finite Groups (Symposium, Harvard Univ., Cambridge, Mass., 1968) Benjamin, New York 1969 109–111 BS69 0242941 (39 #4268) 20.29 (05.00) E. L. Spitznagel, Jr. McL
M. S.Smith On rank <C><M>3</M></C> permutation groups J. Algebra 1975 33 22–42 0021-8693 0384905 (52 #5775) 20B15 (05C99) E. L. Spitznagel, Jr. Journal of Algebra McL
A. V.Borovik <C><M>3</M></C>-local characterization of the <C>H</C>eld group Algebra i Logika 1980 19 4 387–404, 503 Russian, English translation: Algebra and Logic 19 (1980), no.4, 255–266 (1981) 0373-9252 609020 (82g:20040) 20D08 B. K. Durakov Akademiya Nauk SSSR. Sibirskoe Otdelenie. Institut Matematiki. Algebra i Logika He
GregoryButler The maximal subgroups of the sporadic simple group of <C>H</C>eld J. Algebra 1981 69 1 67–81 0021-8693 613857 (82e:20022) 20D08 (20E28) Stephen D. Smith JALGA4 Journal of Algebra He
John J.Cannon GeorgeHavas Defining relations for the <C>H</C>eld-<C>H</C>igman-<C>T</C>hompson simple group Bull. Austral. Math. Soc. 1974 11 43–46 0004-9727 0360795 (50 #13242) 20D05 F. A. Sherk Bulletin of the Australian Mathematical Society He
MichaelDeckers On groups related to <C>H</C>eld's simple group Arch. Math. (Basel) 1974 25 23–28 0003-889X 0357581 (50 #10049) 20D05 Mark P. Hale, Jr. Archiv der Mathematik He
Ismail ŞuayipGüloğlu A characterization of the simple group <C><M>{\rm He}</M></C> J. Algebra 1979 60 1 261–281 0021-8693 549111 (80k:20018) 20D08 (20D05) Gary L. Walls JALGA4 Journal of Algebra He
DieterHeld Some simple groups related to <C><M>M_{24}</M></C> Theory of Finite Groups (Symposium, Harvard Univ., Cambridge, Mass., 1968) Benjamin, New York 1969 121–124 BS69 0241526 (39 #2866) 20.29 He
DieterHeld The simple groups related to <C><M>M_{24}</M></C> J. Algebra 1969 13 253–296 0021-8693 0249500 (40 #2745) 20.25 J. H. Walter Journal of Algebra He
DieterHeld The simple groups related to <C><M>M_{24}</M></C>. <C>II</C> J. Austral. Math. Soc. 1973 16 24–28 Collection of articles dedicated to the memory of Hanna Neumann, I 0263-6115 0327890 (48 #6232) 20D05 David R. Mason Australian Mathematical Society. Journal. Series A. Pure Mathematics and Statistics He
Jelisaveta KovačStriko A characterization of the finite simple groups <C><M>M_{24}, He</M></C> and <C><M>L_5(2).</M></C> J. Algebra 1976 43 2 375–397 0021-8693 0422406 (54 #10395) 20D05 David C. Hunt Journal of Algebra He
GeoffreyMason Stephen D.Smith Minimal <C><M>2</M></C>-local geometries for the <C>H</C>eld and <C>R</C>udvalis sporadic groups J. Algebra 1982 79 2, part 1 286–306 0021-8693 682880 (85b:20004) 20B25 (20D08 51E20) W. M. Kantor JALGA4 Journal of Algebra He
JohnMcKay Computing with finite simple groups Proceedings of the Second International Conference on the Theory of Groups (Australian Nat. Univ., Canberra, 1973) 1974 448–452. Lecture Notes in Math., Vol. 372
Berlin
Springer New74 0364431 (51 #685) 20D05 Henry S. Leonard, Jr. He
U.Schoenwaelder Finite groups with a <C>S</C>ylow <C><M>2</M></C>-subgroup of type <C><M>M_{24}</M></C>. <C>I</C>, <C>II</C> J. Algebra 1974 28 20–45; ibid. 28 (1974), 46–56 0021-8693 0369511 (51 #5744) 20D05 M. Herzog Journal of Algebra He
Robert A.Wilson Maximal subgroups of automorphism groups of simple groups J. London Math. Soc. (2) 1985 32 3 460–466 0024-6107 825921 (87a:20017) 20D08 (20D45) Koichiro Harada JLMSAK Journal of the London Mathematical Society. Second Series c He
Steven BrentAssa A characterization of <C><M>{}^2F_4(2)'</M></C> and the <C>R</C>udvalis group J. Algebra 1976 41 2 473–495 0021-8693 0414687 (54 #2782) 20D05 Gernot Stroth Journal of Algebra Ru
JürgenBierbrauer A <C><M>2</M></C>-local characterization of the <C>R</C>udvalis simple group J. Algebra 1979 58 2 563–571 0021-8693 540658 (80h:20028) 20D08 Arthur Reifart JALGA4 Journal of Algebra Ru
J. H.Conway A quaternionic construction for the <C>R</C>udvalis group Topics in group theory and computation (Proc. Summer School, University Coll., Galway, 1973) Academic Press 1977 69–81
London
Cur77b 0472996 (57 #12675) 20D05 Ulrich Dempwolff b Ru
J. H.Conway D. B.Wales Construction of the <C>R</C>udvalis group of order <C><M>145,\,926,\,144,\,000</M></C> J. Algebra 1973 27 538–548 0021-8693 0335620 (49 #400) 20D05 Henry S. Leonard, Jr. Journal of Algebra Ru
UlrichDempwolff A characterization of the <C>R</C>udvalis simple group of order <C><M>2^{14} \cdot 3^3 \cdot 5^3 \cdot 7 \cdot 13 \cdot 29</M></C> by the centralizers of noncentral involutions J. Algebra 1974 32 53–88 0021-8693 0352242 (50 #4729) 20D05 U. Schoenwaelder Journal of Algebra Ru
M.Hall A representation of the Rudvalis group Notices Amer. Math. Soc. 1973 20 A-88 Ru
GeoffreyMason Stephen D.Smith Minimal <C><M>2</M></C>-local geometries for the <C>H</C>eld and <C>R</C>udvalis sporadic groups J. Algebra 1982 79 2, part 1 286–306 0021-8693 682880 (85b:20004) 20B25 (20D08 51E20) W. M. Kantor JALGA4 Journal of Algebra Ru
V. D.Mazurov Characterization of the <C>R</C>udvalis group Mat. Zametki 1982 31 3 321–338, 473 Russian, English translation: Math. Notes 31 (1982), no. 3–4, 165–173 0025-567X 652837 (83f:20015) 20D08 József Pelikán Akademiya Nauk Soyuza SSR. Matematicheskie Zametki Ru
TetsuroOkuyama TomoyukiYoshida A characterization of the <C>R</C>udvalis group J. Math. Soc. Japan 1978 30 3 463–474 0491930 (58 #11101) 20D05 J. L. Alperin Ru
Michael E.O'Nan A characterization of the <C>R</C>udvalis group Comm. Algebra 1978 6 2 107–147 0092-7872 0498834 (58 #16870) 20D05 D. Wales Communications in Algebra Ru
DavidParrott A characterization of the <C>R</C>udvalis simple group Proc. London Math. Soc. (3) 1976 32 1 25–51 0024-6115 0390043 (52 #10869) 20D05 Ulrich Dempwolff Proceedings of the London Mathematical Society. Third Series Ru
A.Rudvalis A new simple group of order <M>2^{14}.3^3.5^3.7.13.29</M> Notices Amer. Math. Soc. 1973 20 A-95 Ru
A.Rudvalis The graph for a new group of order <M>2^{14}.3^3.5^3.7.13.29</M> Michigan 1972 preprint Ru
ArunasRudvalis A rank <C><M>3</M></C> simple group of order <C><M>2^{14} \cdot 3^3 \cdot 5^3 \cdot 7 \cdot 13 \cdot 29</M></C>. <C>I</C> J. Algebra 1984 86 1 181–218 0021-8693 727376 (86f:20018a) 20D08 (20E32) D. Wales JALGA4 Journal of Algebra Ru
ArunasRudvalis A rank <C><M>3</M></C> simple group <C><M>G</M></C> of order <C><M>2^{14} \cdot 3^3 \cdot 5^3 \cdot 7 \cdot 13 \cdot 29</M></C>. <C>II</C>. <C>C</C>haracters of <C><M>G</M></C> and <C><M>\hat{{G}}</M></C> J. Algebra 1984 86 1 219–258 0021-8693 727377 (86f:20018b) 20D08 (20E32) D. Wales JALGA4 Journal of Algebra Ru
Robert A.Wilson The geometry and maximal subgroups of the simple groups of <C>A</C>. <C>R</C>udvalis and <C>J</C>. <C>T</C>its Proc. London Math. Soc. (3) 1984 48 3 533–563 0024-6115 735227 (86e:20035) 20E28 (20C30 20D08) David C. Hunt PLMTAL Proceedings of the London Mathematical Society. Third Series b Ru
SatoshiYoshiara Maximal subgroups of the sporadic simple group of <C>R</C>udvalis Nihonkai Math. J. 1991 2 1 1–24 1341-9951 1120697 (93c:20035) 20D08 David C. Hunt Nihonkai Mathematical Journal Ru
K-C.Young Some simple subgroups of the Rudvalis simple group Notices Amer. Math. Soc. 1974 21 A-481 Ru
J. H.Lindsey II A correlation between <C><M>{\rm PSU}_4\,(3)</M></C>, the <C>S</C>uzuki group, and the <C>C</C>onway group Trans. Amer. Math. Soc. 1971 157 189–204 0002-9947 0283097 (44 #330) 20.75 A. Rudvalis Transactions of the American Mathematical Society Suz
J. H.Lindsey II On the <C>S</C>uzuki and <C>C</C>onway groups Bull. Amer. Math. Soc. 1970 76 1088–1090 0262388 (41 #6996) 20.80 J. D. Dixon Suz
J. H.Lindsey II On the <C>S</C>uzuki and <C>C</C>onway groups Representation theory of finite groups and related topics (Proc. Sympos. Pure Math., Vol. XXI, Univ. Wisconsin, Madison, Wis., 1970) Amer. Math. Soc. 1971 107–109
Providence, R.I.
Rei71 0316552 (47 #5099) 20D05 S. Oates Macdonald Suz
N. J.Patterson S. K.Wong A characterization of the <C>S</C>uzuki sporadic simple group of order <C><M>448, 345, 497, 600</M></C> J. Algebra 1976 39 1 277–286 0021-8693 0399253 (53 #3104) 20D05 David C. Hunt Journal of Algebra Suz
ArthurReifart A characterization of <C><M>{\rm Sz}</M></C> by the <C>S</C>ylow <C><M>2</M></C>-subgroup J. Algebra 1975 36 3 348–363 0021-8693 0387400 (52 #8243) 20D05 Thomas Laffey Journal of Algebra Suz
ArthurReifart A characterization of the sporadic simple group of <C>S</C>uzuki J. Algebra 1975 33 288–305 0021-8693 0374258 (51 #10458) 20D05 Henry S. Leonard, Jr. Journal of Algebra Suz
L. H.Soicher A natural series of presentations for the Suzuki chain of groups 1984 preprint Suz MichioSuzuki A simple group of order <C><M>448,345,497,600</M></C> Theory of Finite Groups (Symposium, Harvard Univ., Cambridge, Mass., 1968) Benjamin, New York 1969 113–119 BS69 0241527 (39 #2867) 20.29 Suz
Robert A.Wilson The complex <C>L</C>eech lattice and maximal subgroups of the <C>S</C>uzuki group J. Algebra 1983 84 1 151–188 0021-8693 716777 (86e:20034b) 20E28 (20D08) Stephen D. Smith JALGA4 Journal of Algebra c Suz
DonaldWright The irreducible characters of the simple group of <C>M</C>. <C>S</C>uzuki of order <C><M>448</M></C>, <C><M>345</M></C>, <C><M>497</M></C>, <C><M>600</M></C> J. Algebra 1974 29 303–323 0021-8693 0357576 (50 #10044) 20C15 D. Wales Journal of Algebra Suz
HiroyoshiYamaki A characterization of the <C>S</C>uzuki simple group of order <C><M>448, 345, 497,600</M></C> J. Algebra 1976 40 1 229–244 0021-8693 0409632 (53 #13384) 20D05 Geoffrey Mason Journal of Algebra Suz
HiroyoshiYamaki Characterizing the sporadic simple group of <C>S</C>uzuki by a <C><M>2</M></C>-local subgroup Math. Z. 1976 151 3 239–242 0025-5874 0422407 (54 #10396) 20D05 Geoffrey Mason Mathematische Zeitschrift Suz
S.Yoshiara The complex Leech lattice and sporadic Suzuki group Topics in finite group theory Kyoto University Research Institute for Mathematical Sciences 1982 26–46
Kyoto
Kyo82 Suz
S.Andrilli On the uniqueness of O'Nan's sporadic simple group Rutgers 1980 ON
Ismail ŞuayipGüloğlu A characterization of the simple group <C><M>{\rm ON}</M></C> Osaka J. Math. 1981 18 1 25–31 0030-6126 609975 (82g:20034) 20D05 A. V. Borovik OJMAA7 Osaka Journal of Mathematics b ON
A. P.Ilʹinyh Characterization of the simple <C>O</C>'<C>N</C>an-<C>S</C>ims group by the centralizer of an element of order three Mat. Zametki 1978 24 4 487–497, 589 0025-567X 513650 (80b:20016) 20D05 N. D. Podufalov Akademiya Nauk Soyuza SSR. Matematicheskie Zametki ON
Michael E.O'Nan Some evidence for the existence of a new simple group Proc. London Math. Soc. (3) 1976 32 3 421–479 0024-6115 0401905 (53 #5731) 20D05 Ulrich Dempwolff Proceedings of the London Mathematical Society. Third Series ON
A. J. E.Ryba The existence of a 45-dimensional 7-modular representation of <M>3.O'N</M> 1984 preprint, Cambridge ON
L. H.Soicher Presentations of some finite groups with applications to the <C>O</C>'<C>N</C>an simple group J. Algebra 1987 108 2 310–316 0021-8693 892906 (88e:20036) 20F05 (20D08) P. Fong JALGA4 Journal of Algebra ON
S. A.Syskin <C><M>3</M></C>-characterization of the <C>O</C>'<C>N</C>an-<C>S</C>ims group Mat. Sb. (N.S.) 1981 114(156) 3 471–478, 480 Russian 0368-8666 610210 (82f:20036) 20D08 M. Herzog Matematicheskiĭ Sbornik. Novaya Seriya ON
Robert A.Wilson The maximal subgroups of the <C>O</C>'<C>N</C>an group J. Algebra 1985 97 2 467–473 0021-8693 812997 (87d:20022) 20D08 József Pelikán JALGA4 Journal of Algebra b ON
SatoshiYoshiara The maximal subgroups of the sporadic simple group of <C>O</C>'<C>N</C>an J. Fac. Sci. Univ. Tokyo Sect. IA Math. 1985 32 1 105–141 0040-8980 783183 (86m:20025) 20D08 Mark A. Ronan JFTMAT Journal of the Faculty of Science. University of Tokyo. Section IA. Mathematics ON
DanielFendel A characterization of <C>C</C>onway's group <C><M>.3</M></C> Yale 1970 Co3
DanielFendel A characterization of <C>C</C>onway's group <C><M>.3</M></C> Bull. Amer. Math. Soc. 1970 76 1024–1025 0263915 (41 #8514) 20.29 W. J. Wong Co3
DanielFendel A characterization of <C>C</C>onway's group. 3 J. Algebra 1973 24 159–196 0021-8693 0314962 (47 #3511) 20D05 M. Herzog Journal of Algebra Co3
LarryFinkelstein The maximal subgroups of <C>C</C>onway's group <C><M>C_3</M></C> and <C>M</C>c<C>L</C>aughlin's group J. Algebra 1973 25 58–89 0021-8693 0346046 (49 #10772) 20D05 T. M. Gagen Journal of Algebra Co3
B.Mortimer The modular permutation representations of Conway's third group Carleton Math. Ser. 1981 172 Co3
M. F.Worboys Generators for the sporadic group <C><M>{\rm Co}_3</M></C> as a <C><M>(2,\,3,\,7)</M></C> group Proc. Edinburgh Math. Soc. (2) 1982 25 1 65–68 0013-0915 648901 (83h:20023) 20D08 Gerard M. Enright PEMSA3 Proceedings of the Edinburgh Mathematical Society. Series II Co3
TomoyukiYoshida A characterization of <C>C</C>onway's group <C><M>C_3</M></C> Hokkaido Math. J. 1974 3 232–242 0385-4035 0369513 (51 #5746) 20D05 M. Herzog Hokkaido Mathematical Journal Co3
Fredrick L.Smith A characterization of the <C><M>.2</M></C> <C>C</C>onway simple group J. Algebra 1974 31 91–116 0021-8693 0349832 (50 #2325) 20D05 W. J. Wong Journal of Algebra Co2
Robert A.Wilson The maximal subgroups of <C>C</C>onway's group <M>\cdot 2</M> J. Algebra 1983 84 1 107–114 0021-8693 716772 (86e:20034a) 20E28 (20D08) Stephen D. Smith JALGA4 Journal of Algebra b Co2
TomoyukiYoshida A characterization of the <C><M>.2</M></C> <C>C</C>onway simple group J. Algebra 1977 46 2 405–414 0021-8693 0439930 (55 #12811) 20D05 Arthur Reifart Journal of Algebra Co2
Steven B.Assa A characterization of <C><M>M(22)</M></C> J. Algebra 1981 69 2 455–466 0021-8693 617089 (82g:20032) 20D05 (20D08) Gerard M. Enright JALGA4 Journal of Algebra Fi22
J. H.Conway A construction for the smallest <C>F</C>ischer group <C><M>F_{22}</M></C> Finite groups '72 (Proc. Gainesville Conf., Univ. Florida, Gainesville, Fla., 1972) North-Holland 1973 27–35. North-Holland Math. Studies, Vol. 7
Amsterdam
GHS73 0372016 (51 #8233) 20D05 Ulrich Dempwolff Fi22
G. M.Enright The structure and subgroups of the Fischer groups <M>F_{22}</M> and <M>F_{23}</M> Cambridge 1976 Fi22
Gerard M.Enright A description of the <C>F</C>ischer group <C><M>F_{22}</M></C> J. Algebra 1977 46 2 334–343 0021-8693 0450389 (56 #8684) 20D05 David C. Hunt Journal of Algebra Fi22
Gerard M.Enright Subgroups generated by transpositions in <C><M>F_{22}</M></C> and <C><M>F_{23}</M></C> Comm. Algebra 1978 6 8 823–837 0092-7872 0476844 (57 #16395) 20D05 Koichiro Harada Communications in Algebra Fi22
BerndFischer Finite groups generated by <C><M>3</M></C>-transpositions. <C>I</C> Invent. Math. 1971 13 232–246 0020-9910 0294487 (45 #3557) 20D99 A. R. Camina Inventiones Mathematicae Fi22
D. G.Flaass <C><M>2</M></C>-local subgroups of <C>F</C>ischer groups Mat. Zametki 1984 35 3 333–342 Russian 0025-567X 741800 (86a:20014) 20D08 József Pelikán Akademiya Nauk SSSR. Matematicheskie Zametki Fi22
D. C.Hunt A sporadic simple group of B. Fischer of order <M>64,561,751,654,400</M> Warwick 1970 Fi22
David C.Hunt Character tables of certain finite simple groups Bull. Austral. Math. Soc. 1971 5 1–42 0004-9727 0302753 (46 #1896) 20C15 M. Herzog Bulletin of the Australian Mathematical Society Fi22
David C.Hunt A characterization of the finite simple group <C><M>M(22)</M></C> J. Algebra 1972 21 103–112 0021-8693 0299673 (45 #8721) 20D05 Henry S. Leonard, Jr. Journal of Algebra Fi22
JamshidMoori On certain groups associated with the smallest <C>F</C>ischer group J. London Math. Soc. (2) 1981 23 1 61–67 0024-6107 602239 (82g:20041) 20D08 (20C30) Henry S. Leonard, Jr. JLMSAK The Journal of the London Mathematical Society. Second Series Fi22
DavidParrott Characterizations of the <C>F</C>ischer groups. <C>I</C>, <C>II</C>, <C>III</C> Trans. Amer. Math. Soc. 1981 265 2 303–347 0002-9947 610952 (82d:20018) 20D05 Leo J. Alex TAMTAM Transactions of the American Mathematical Society Fi22
Robert A.Wilson On maximal subgroups of the <C>F</C>ischer group <C><M>{\rm Fi}_{22}</M></C> Math. Proc. Cambridge Philos. Soc. 1984 95 2 197–222 0305-0041 735364 (86e:20036) 20E28 (20D08) Gerard M. Enright MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society a Fi22
BertBeisiegel A note on <C>H</C>arada's simple group <C><M>F</M></C> J. Algebra 1977 48 1 142–149 0021-8693 0450387 (56 #8682) 20D05 Koichiro Harada Journal of Algebra HN
KoichiroHarada On the simple group <C><M>F</M></C> of order <C><M>2^{14} \cdot 3^6 \cdot 5^6 \cdot 7 \cdot 11 \cdot 19</M></C> Proceedings of the Conference on Finite Groups (Univ. Utah, Park City, Utah, 1975) 1976 119–276
New York
Academic Press SG76 0401904 (53 #5730) 20D05 W. J. Wong HN
KoichiroHarada The automorphism group and the <C>S</C>chur multiplier of the simple group of order <C><M>2^{14} \cdot 3^6 \cdot 5^6 \cdot 7 \cdot 11 \cdot 19</M></C> Osaka J. Math. 1978 15 3 633–635 0030-6126 510500 (80c:20016) 20D05 (20D45) Geoffrey Mason OJMAA7 Osaka Journal of Mathematics HN
S. P.Norton F and other simple groups Cambridge 1975 HN
S. P.Norton R. A.Wilson Maximal subgroups of the <C>H</C>arada-<C>N</C>orton group J. Algebra 1986 103 1 362–376 0021-8693 860712 (88b:20029) 20D08 (20E28) Geoffrey Mason JALGA4 Journal of Algebra HN
P. E.Smith On certain finite simple groups Cambridge 1975 HN
RichardLyons Evidence for a new finite simple group J. Algebra 1972 20 540–569 0021-8693 0299674 (45 #8722) 20D05 W. J. Wong Journal of Algebra Ly
RichardLyons Errata: <Wrap Name="IntRef">``<C>E</C>vidence for a new finite simple group'' (<Wrap Name="Bib_journal"><C>J</C>. <C>A</C>lgebra</Wrap> <Wrap Name="Bib_volume">20</Wrap> (<Wrap Name="Bib_year">1972</Wrap>), <Wrap Name="Bib_pages">540–569</Wrap>)</Wrap> J. Algebra 1975 34 188–189 0021-8693 0369506 (51 #5739) 20D05 W. J. Wong Journal of Algebra Ly Lyo72
WernerMeyer WolframNeutsch Über <C><M>5</M></C>-<C>D</C>arstellungen der <C>L</C>yonsgruppe Math. Ann. 1984 267 4 519–535 0025-5831 742897 (85k:20038) 20C20 (20D08 51E20) Stephen D. Smith MAANA Mathematische Annalen Ly
WernerMeyer WolframNeutsch RichardParker The minimal <C><M>5</M></C>-representation of <C>L</C>yons' sporadic group Math. Ann. 1985 272 1 29–39 0025-5831 794089 (86i:20025) 20D08 R. W. Carter MAANA Mathematische Annalen Ly
Charles C.Sims The existence and uniqueness of <C>L</C>yons' group Finite groups '72 (Proc. Gainesville Conf., Univ. Florida, Gainesville, Fla., 1972) North-Holland 1973 138–141. North-Holland Math. Studies, Vol. 7
Amsterdam
GHS73 0354881 (50 #7358) 20F10 Ly
Robert A.Wilson The subgroup structure of the <C>L</C>yons group Math. Proc. Cambridge Philos. Soc. 1984 95 3 403–409 0305-0041 755827 (86h:20018) 20D05 Geoffrey Mason MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society Ly
Robert A.Wilson The maximal subgroups of the <C>L</C>yons group Math. Proc. Cambridge Philos. Soc. 1985 97 3 433–436 0305-0041 778677 (86e:20017) 20D08 Geoffrey Mason MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society a Ly
RichardLyons The <C>S</C>chur multiplier of <C><M>F_3</M></C> is trivial Comm. Algebra 1984 12 15-16 1889–1898 0092-7872 745173 (85e:20019) 20D08 M. E. Harris COALDM Communications in Algebra Th
RobertMarkot A <C><M>2</M></C>-local characterization of the simple group <C><M>E</M></C> J. Algebra 1976 40 2 585–595 0021-8693 0409628 (53 #13380) 20D05 Ulrich Dempwolff Journal of Algebra Th
DavidParrott On <C>T</C>hompson's simple group J. Algebra 1977 46 2 389–404 0021-8693 0447396 (56 #5708) 20D05 David R. Mason Journal of Algebra Th
ArthurReifart A characterization of <C>T</C>hompson's sporadic simple group J. Algebra 1976 38 1 192–200 0021-8693 0393217 (52 #14027) 20D05 Koichiro Harada Journal of Algebra Th
P. E.Smith On certain finite simple groups Cambridge 1975 Th
P. E.Smith A simple subgroup of <C><M>M?</M></C> and <C><M>E_8(3)</M></C> Bull. London Math. Soc. 1976 8 2 161–165 0024-6093 0409630 (53 #13382) 20D05 David C. Hunt The Bulletin of the London Mathematical Society Th
fail
FrancisBuekenhout Diagrams for geometries and groups J. Combin. Theory Ser. A 1979 27 2 121–151 0097-3165 542524 (83f:51003) 51A05 (20D08 51J05) Joseph A. Thas JCBTA7 Journal of Combinatorial Theory. Series A Fi23
G. M.Enright The structure and subgroups of the Fischer groups <M>F_{22}</M> and <M>F_{23}</M> Cambridge 1976 Fi23
Gerard M.Enright A description of the <C>F</C>ischer group <C><M>F_{23}</M></C> J. Algebra 1977 46 2 344–354 0021-8693 0450390 (56 #8685) 20D05 David C. Hunt Journal of Algebra Fi23
Gerard M.Enright Subgroups generated by transpositions in <C><M>F_{22}</M></C> and <C><M>F_{23}</M></C> Comm. Algebra 1978 6 8 823–837 0092-7872 0476844 (57 #16395) 20D05 Koichiro Harada Communications in Algebra Fi23
BerndFischer Finite groups generated by <C><M>3</M></C>-transpositions. <C>I</C> Invent. Math. 1971 13 232–246 0020-9910 0294487 (45 #3557) 20D99 A. R. Camina Inventiones Mathematicae Fi23
David C.Hunt A characterization of the finite simple group <C><M>M(23)</M></C> J. Algebra 1973 26 431–439 0021-8693 0322046 (48 #410) 20D05 David R. Mason Journal of Algebra Fi23
David C.Hunt The character table of <C>F</C>ischer's simple group, <C><M>M(23)</M></C> Math. Comp. 1974 28 660–661; addendum, ibid. 28 (1974), no. 126, loose microfiche suppl. E6-F9 0025-5718 0369494 (51 #5727) 20C15 (20D05) M. Herzog Mathematics of Computation Fi23
DavidParrott Characterizations of the <C>F</C>ischer groups. <C>I</C>, <C>II</C>, <C>III</C> Trans. Amer. Math. Soc. 1981 265 2 303–347 0002-9947 610952 (82d:20018) 20D05 Leo J. Alex TAMTAM Transactions of the American Mathematical Society Fi23
S. K.Wong A characterization of the <C>F</C>ischer group <C><M>M(23)</M></C> by a <C><M>2</M></C>-local subgroup J. Algebra 1977 44 1 143–151 0021-8693 0424934 (54 #12892) 20D20 Arthur Reifart Journal of Algebra Fi23
J. H.Conway A perfect group of order <C><M>8,315,553,613,086,720,000</M></C> and the sporadic simple groups Proc. Nat. Acad. Sci. U.S.A. 1968 61 398–400 0237634 (38 #5915) 20.27 J. E. McLaughlin Co1
J. H.Conway A group of order <C><M>8,315,553,613,086,720,000</M></C> Bull. London Math. Soc. 1969 1 79–88 0024-6093 0248216 (40 #1470) 20.29 W. J. Wong The Bulletin of the London Mathematical Society Co1
J. H.Conway A characterisation of <C>L</C>eech's lattice Invent. Math. 1969 7 137–142 0020-9910 0245518 (39 #6824) 10.20 G. K. White Inventiones Mathematicae Co1
J. H.Conway Three lectures on exceptional groups Finite simple groups (Proc. Instructional Conf., Oxford, 1969) Academic Press 1971 215–247
London
PH71 0338152 (49 #2918) 20D05 Thomas Laffey Co1
J. H.Conway Groups, lattices, and quadratic forms Computers in algebra and number theory (Proc. SIAM-AMS Sympos. Appl. Math., New York, 1970) Amer. Math. Soc. 1971 135–139. SIAM-AMS Proc., Vol. IV
Providence, R.I.
BH71 0342602 (49 #7348) 20D05 (10E45) E. A. Connors Co1
J. H.Conway The automorphism group of the <C><M>26</M></C>-dimensional even unimodular <C>L</C>orentzian lattice J. Algebra 1983 80 1 159–163 0021-8693 690711 (85k:11030) 11H06 (05B40 11E57 11H31 11H99 20B25) JALGA4 Journal of Algebra Co1
J. H.Conway R. A.Parker N. J. A.Sloane The covering radius of the <C>L</C>eech lattice Proc. Roy. Soc. London Ser. A 1982 380 1779 261–290 0080-4630 660415 (84m:10022b) 10E30 (52A43 94B40) PRLAAZ Proceedings of the Royal Society. London. Series A. Mathematical and Physical Sciences Co1
J. H.Conway N. J. A.Sloane Twenty-three constructions for the <C>L</C>eech lattice Proc. Roy. Soc. London Ser. A 1982 381 1781 275–283 0080-4630 661720 (84m:10020) 10E05 (20F32 52A43 94B40) PRLAAZ Proceedings of the Royal Society. London. Series A. Mathematical and Physical Sciences Co1
J. H.Conway N. J. A.Sloane Lorentzian forms for the <C>L</C>eech lattice Bull. Amer. Math. Soc. (N.S.) 1982 6 2 215–217 0273-0979 640949 (84d:10036) 10E05 (10E25) J. S. Hsia BAMOAD American Mathematical Society. Bulletin. New Series Co1
R. T.Curtis On the Mathieu group <M>M_{24}</M> and related topics Cambridge 1972 Co1
R. T.Curtis On subgroups of <C><M>^{\ast}O</M></C>. <C>I</C>. <C>L</C>attice stabilizers J. Algebra 1973 27 549–573 0021-8693 0340404 (49 #5159) 20D05 Henry S. Leonard, Jr. Journal of Algebra Co1
R. T.Curtis On subgroups of <C><M>\cdot O</M></C>. <C>II</C>. <C>L</C>ocal structure J. Algebra 1980 63 2 413–434 0021-8693 570721 (81f:20020) 20D05 Henry S. Leonard, Jr. JALGA4 Journal of Algebra Co1
JamesLepowsky ArneMeurman An <C><M>E_8</M></C>-approach to the <C>L</C>eech lattice and the <C>C</C>onway group J. Algebra 1982 77 2 484–504 0021-8693 673130 (84a:10033) 10E30 (17B10 20D08 94B40) N. J. A. Sloane JALGA4 Journal of Algebra Co1
S.Norton A bound for the covering radius of the <C>L</C>eech lattice Proc. Roy. Soc. London Ser. A 1982 380 1779 259–260 0080-4630 660414 (84m:10022a) 10E30 (52A43 94B40) PRLAAZ Proceedings of the Royal Society. London. Series A. Mathematical and Physical Sciences Co1
N. J.Patterson On Conway's group .0 and some subgroups Cambridge 1972 Co1
ArthurReifart A remark on <C>C</C>onway's group .1 Arch. Math. (Basel) 1977 29 4 389–391 0003-889X 0473000 (57 #12679) 20D05 (20D45) R. G. Stanton Archiv der Mathematik Co1 0377.20011
ArthurReifart A <C><M>2</M></C>-local characterization of the simple groups <C><M>M(24)', .1</M></C>, and <C><M>J_4</M></C> J. Algebra 1978 50 1 213–227 0021-8693 0466302 (57 #6182) 20D05 Koichiro Harada Journal of Algebra Co1
J. G.Thompson Finite groups and even lattices J. Algebra 1976 38 2 523–524 0021-8693 0399257 (53 #3108) 20D30 A. R. Camina Journal of Algebra Co1
J.Tits Four presentations of Leech's lattice Proceedings of the Symposium held at the University of Durham, Durham, July 31–August 10, 1978 Academic Press Inc. [Harcourt Brace Jovanovich Publishers] 1980 303–307
London
Col80 Co1
Robert A.Wilson The maximal subgroups of <C>C</C>onway's group <C><M>{\rm Co}_1</M></C> J. Algebra 1983 85 1 144–165 0021-8693 723071 (86b:20015) 20D05 (20D08) JALGA4 Journal of Algebra a Co1
D. J.Benson The simple group <M>J_4</M> Cambridge 1980 J4
Ismail ŞuayipGüloğlu A characterization of the simple group <C><M>J_4</M></C> Osaka J. Math. 1981 18 1 13–24 0030-6126 609974 (82g:20033) 20D05 A. V. Borovik OJMAA7 Osaka Journal of Mathematics a J4
ZvonimirJanko A new finite simple group of order <C><M>86,775,571,046,077,562,880</M></C> which possesses <C><M>M_{24}</M></C> and the full covering group of <C><M>M_{22}</M></C> as subgroups J. Algebra 1976 42 2 564–596 0021-8693 0432751 (55 #5734) 20D05 Peter Landrock Journal of Algebra J4 0344.20010
WolfgangLempken The <C>S</C>chur multiplier of <C><M>J_4</M></C> is trivial Arch. Math. (Basel) 1978 30 267–270 0003-889X 0472998 (57 #12677) 20D05 Ulrich Dempwolff Archiv der Mathematik J4
WolfgangLempken A <C><M>2</M></C>-local characterization of <C>J</C>anko's simple group <C><M>J_4</M></C> J. Algebra 1978 55 2 403–445 0021-8693 523466 (80g:20026) 20D05 A. V. Borovik JALGA4 Journal of Algebra J4
GeoffreyMason Some remarks on groups of type <C><M>J_4</M></C> Arch. Math. (Basel) 1977 29 6 574–582 0003-889X 0463284 (57 #3237) 20D05 Koichiro Harada Archiv der Mathematik J4
SimonNorton The construction of <C><M>J_4</M></C> The Santa Cruz Conference on Finite Groups (Univ. California, Santa Cruz, Calif., 1979) Amer. Math. Soc. 1980 37 Proc. Sympos. Pure Math. 271–277
Providence, R.I.
CM80b 604593 (82a:20030) 20D08 J4
ArthurReifart Some simple groups related <C><M>M_{24}</M></C> J. Algebra 1977 45 1 199–209 0021-8693 0430056 (55 #3063) 20D05 Michael J. Collins Journal of Algebra J4
ArthurReifart Another characterization of <C>J</C>anko's simple group <C><M>J_4</M></C> J. Algebra 1977 49 2 621–627 0021-8693 0457555 (56 #15760) 20D05 Geoffrey Mason Journal of Algebra J4
ArthurReifart A <C><M>2</M></C>-local characterization of the simple groups <C><M>M(24)', .1</M></C>, and <C><M>J_4</M></C> J. Algebra 1978 50 1 213–227 0021-8693 0466302 (57 #6182) 20D05 Koichiro Harada Journal of Algebra J4
R. M.Stafford A characterization of Janko's new simple group <M>J_4</M> Notices Amer. Math. Soc. 1978 25 A-423 J4
Richard M.Stafford A characterization of <C>J</C>anko's simple group <C><M>J_4</M></C> by centralizers of elements of order <C><M>3</M></C> J. Algebra 1979 57 2 555–566 0021-8693 533814 (80h:20029) 20D08 W. J. Wong JALGA4 Journal of Algebra J4
G.Stroth An odd characterization of <C><M>J_4</M></C> Israel J. Math. 1978 31 2 189–192 0021-2172 516255 (80b:20018) 20D05 Shui Chi Chang ISJMAP Israel Journal of Mathematics J4
Stephen L.Davis RonaldSolomon Some sporadic characterizations Comm. Algebra 1981 9 17 1725–1742 0092-7872 631885 (83a:20024) 20D08 David C. Hunt COALDM Communications in Algebra Fi24'
BerndFischer Finite groups generated by <C><M>3</M></C>-transpositions. <C>I</C> Invent. Math. 1971 13 232–246 0020-9910 0294487 (45 #3557) 20D99 A. R. Camina Inventiones Mathematicae Fi24'
S. P.Norton F and other simple groups Cambridge 1975 Fi24' S. P.Norton Transposition algebras and the group <M>F_{24}</M> preprint Cambridge Fi24'
DavidParrott Characterizations of the <C>F</C>ischer groups. <C>I</C>, <C>II</C>, <C>III</C> Trans. Amer. Math. Soc. 1981 265 2 303–347 0002-9947 610952 (82d:20018) 20D05 Leo J. Alex TAMTAM Transactions of the American Mathematical Society Fi24'
ArthurReifart Some simple groups related <C><M>M_{24}</M></C> J. Algebra 1977 45 1 199–209 0021-8693 0430056 (55 #3063) 20D05 Michael J. Collins Journal of Algebra Fi24'
ArthurReifart A <C><M>2</M></C>-local characterization of the simple groups <C><M>M(24)', .1</M></C>, and <C><M>J_4</M></C> J. Algebra 1978 50 1 213–227 0021-8693 0466302 (57 #6182) 20D05 Koichiro Harada Journal of Algebra Fi24'
JürgenBierbrauer A characterization of the ``baby monster'' <C><M>F_2</M></C>, including a note on <C><M>^2E_6(2)</M></C> J. Algebra 1979 56 2 384–395 0021-8693 528582 (80h:20027) 20D06 (20D08) Leo J. Alex JALGA4 Journal of Algebra B
D. G.Higman A monomial character of <C>F</C>ischer's baby monster Proceedings of the Conference on Finite Groups (Univ. Utah, Park City, Utah, 1975) 1976 277–283
New York
Academic Press SG76 0409627 (53 #13379) 20D05 Bhama Srinivasan B
OveKroll PeterLandrock The characters of some <C><M>2</M></C>-blocks of the babymonster, its covering group and the monster Comm. Algebra 1978 6 18 1893–1921 0092-7872 511168 (80f:20016) 20D08 David C. Hunt COALDM Communications in Algebra B
Jeffrey S.Leon On the irreducible characters of a simple group of order <C><M>2^{41} \cdot 3^{13} \cdot 5^6 \cdot 7^2 \cdot 11 \cdot 13 \cdot 17 \cdot 19 \cdot 23 \cdot 31 \cdot 47</M></C> Proceedings of the Conference on Finite Groups (Univ. Utah, Park City, Utah, 1975) 1976 285–299
New York
Academic Press SG76 0401890 (53 #5716) 20C15 Leo J. Alex B
Jeffrey S.Leon Charles C.Sims The existence and uniqueness of a simple group generated by <C><M>\{ 3, 4 \}</M></C>-transpositions Bull. Amer. Math. Soc. 1977 83 5 1039–1040 0444765 (56 #3113) 20D05 A. R. Camina B
Charles C.Sims How to construct a Baby Monster Proceedings of the Symposium held at the University of Durham, Durham, July 31–August 10, 1978 Academic Press Inc. [Harcourt Brace Jovanovich Publishers] 1980 339–345
London
Col80 B
G.Stroth A characterization of <C>F</C>ischer's sporadic simple group of the order <C><M>2^{41} \cdot 3^{13} \cdot 5^6 \cdot 7^2 \cdot 11 \cdot 13 \cdot 17 \cdot 19 \cdot 23 \cdot 31 \cdot 47</M></C> J. Algebra 1976 40 2 499–531 0021-8693 0417277 (54 #5334) 20D05 David C. Hunt Journal of Algebra B
J. H.Conway Monsters and moonshine Math. Intelligencer 1979/80 2 4 165–171 0343-6993 600222 (82a:20028) 20D08 (10D12) Stephen D. Smith MAINDC The Mathematical Intelligencer M
J. H.Conway A simple construction for the <C>F</C>ischer-<C>G</C>riess monster group Invent. Math. 1985 79 3 513–540 0020-9910 782233 (86h:20019) 20D08 Geoffrey Mason INVMBH Inventiones Mathematicae M
J. H.Conway S. P.Norton Monstrous moonshine Bull. London Math. Soc. 1979 11 3 308–339 0024-6093 554399 (81j:20028) 20D08 (10D12) Stephen D. Smith LMSBBT The Bulletin of the London Mathematical Society M
Stephen L.Davis RonaldSolomon Some sporadic characterizations Comm. Algebra 1981 9 17 1725–1742 0092-7872 631885 (83a:20024) 20D08 David C. Hunt COALDM Communications in Algebra M
PaulFong Characters arising in the <C>M</C>onster-modular connection The Santa Cruz Conference on Finite Groups (Univ. California, Santa Cruz, Calif., 1979) Amer. Math. Soc. 1980 37 Proc. Sympos. Pure Math. 557–559
Providence, R.I.
CM80b 604633 (82a:20029) 20D08 (10D05 20C30) M
I. B.Frenkel J.Lepowsky A.Meurman A natural representation of the <C>F</C>ischer-<C>G</C>riess <C>M</C>onster with the modular function <C><M>J</M></C> as character Proc. Nat. Acad. Sci. U.S.A. 1984 81 10, Phys. Sci. 3256–3260 0027-8424 747596 (85e:20018) 20D08 (17B67 20C20) PNASA6 Proceedings of the National Academy of Sciences of the United States of America M
Robert L.Griess Jr. The structure of the ``monster'' simple group Proceedings of the Conference on Finite Groups (Univ. Utah, Park City, Utah, 1975) 1976 113–118
New York
Academic Press SG76 0399248 (53 #3099) 20D05 David C. Hunt M
Robert L.Griess Jr. A construction of <C><M>F_1</M></C> as automorphisms of a <C><M>196,883</M></C>-dimensional algebra Proc. Nat. Acad. Sci. U.S.A. 1981 78 2, part 1 686–691 0027-8424 605419 (82d:20022) 20D08 (17D99) Stephen D. Smith PNASA6 Proceedings of the National Academy of Sciences of the United States of America M
Robert L.Griess Jr. The friendly giant Invent. Math. 1982 69 1 1–102 0020-9910 671653 (84m:20024) 20D08 George Glauberman INVMBH Inventiones Mathematicae M
Robert L.Griess Jr. The <C>M</C>onster and its nonassociative algebra Finite groups—coming of age (Montreal, Que., 1982) Amer. Math. Soc. 1985 45 Contemp. Math. 121–157
Providence, RI
McK85 822237 (87f:20025) 20D08 Geoffrey Mason M
Victor G.Kac A remark on the <C>C</C>onway-<C>N</C>orton conjecture about the ``<C>M</C>onster'' simple group Proc. Nat. Acad. Sci. U.S.A. 1980 77 9, part 1 5048–5049 0027-8424 587277 (81m:20026) 20D08 (10D12 81D05) Stephen D. Smith PNASA6 Proceedings of the National Academy of Sciences of the United States of America M
O.Kroll The characters of a non-principal 2-block of the Monster <M>F_1</M> (?) Preprint Ser. Math. Inst. Aarhus Univ. 1977 31 M
OveKroll PeterLandrock The characters of some <C><M>2</M></C>-blocks of the babymonster, its covering group and the monster Comm. Algebra 1978 6 18 1893–1921 0092-7872 511168 (80f:20016) 20D08 David C. Hunt COALDM Communications in Algebra M
S. P.Norton The uniqueness of the <C>F</C>ischer-<C>G</C>riess <C>M</C>onster Finite groups—coming of age (Montreal, Que., 1982) Amer. Math. Soc. 1985 45 Contemp. Math. 271–285
Providence, RI
McK85 822242 (87b:20025) 20D08 (20D05) Koichiro Harada M
J. G.Thompson Uniqueness of the <C>F</C>ischer-<C>G</C>riess monster Bull. London Math. Soc. 1979 11 3 340–346 0024-6093 554400 (81e:20024) 20D08 Arthur Reifart LMSBBT The Bulletin of the London Mathematical Society a M
J. G.Thompson Finite groups and modular functions Bull. London Math. Soc. 1979 11 3 347–351 0024-6093 554401 (81j:20029) 20D08 (10D12) Stephen D. Smith LMSBBT The Bulletin of the London Mathematical Society b M
J. G.Thompson Some numerology between the <C>F</C>ischer-<C>G</C>riess <C>M</C>onster and the elliptic modular function Bull. London Math. Soc. 1979 11 3 352–353 0024-6093 554402 (81j:20030) 20D08 (10D12) Stephen D. Smith LMSBBT The Bulletin of the London Mathematical Society c M
JacquesTits Le <C>M</C>onstre (d'après <C>R</C>. <C>G</C>riess, <C>B</C>. <C>F</C>ischer et al.) Astérisque 1985 121-122 105–122 Seminar Bourbaki, Vol. 1983/84 0303-1179 768956 (86j:20014) 20D08 P. Fong Astérisque M
J.Tits On <C>R</C>. <C>G</C>riess' ``friendly giant'' Invent. Math. 1984 78 3 491–499 0020-9910 768989 (86f:20019) 20D08 Stephen D. Smith INVMBH Inventiones Mathematicae M
Tran VanTrung On the ``monster'' simple group J. Algebra 1979 60 2 559–562 0021-8693 549947 (81a:20030) 20D25 David C. Hunt JALGA4 Journal of Algebra M
L. G.Kovács B. H.Neumann Proceedings of the <C>I</C>nternational <C>C</C>onference on the <C>T</C>heory of <C>G</C>roups Gordon and Breach Science Publishers 1967
New York
0215897 (35 #6732) 20.00 xvii+397 0158.00208
R.Brauer C.Sah Theory of finite groups: <C>A</C> symposium W. A. Benjamin, Inc., New York-Amsterdam 1969 0240186 (39 #1538) 20.25 xiii+263 pp. (erratum, p. xiii) Topics in finite group theory 1982
Kyoto
Kyoto University Research Institute for Mathematical Sciences Sûrikaisekikenkyûsho Kôkyûroku No. 475 (1982) 702351 (84d:20004) 20-06 (20Dxx) Proceedings of a Symposium held at the Research Institute for Mathematical Sciences, Kyoto University, Kyoto, October 21–23, 1982 i–iii and 1–169 Kyo82
Michael J.Collins Finite simple groups. <C>II</C> 1980
London
Academic Press Inc. [Harcourt Brace Jovanovich Publishers] 0-12-181480-7 606048 (82h:20021) 20D05 (20C15 20C20 20D08) Stephen D. Smith Proceedings of the Symposium held at the University of Durham, Durham, July 31–August 10, 1978 xv+345
Michael D.Atkinson Computational group theory 1984
London
Academic Press Inc. [Harcourt Brace Jovanovich Publishers] 0-12-066270-1 760641 (85g:20001) 20-06 (68-06) Proceedings of the London Mathematical Society symposium held in Durham, July 30–August 9, 1982 xii+375
M. B.Powell G.Higman Finite simple groups Academic Press 1971
London
0327886 (48 #6228) 20DXX Proceedings of an Instructional Conference organized by the London Mathematical Society (a NATO Advanced Study Institute), Oxford, September 1969 xi+327
GarrettBirkhoff MarshallHall Jr. Computers in algebra and number theory American Mathematical Society 1971
Providence, R.I.
0327414 (48 #5756) 00A10 (10-04 20-04) SIAM-AMS Proceedings, Vol. IV vii+200
MauriceAuslander EmiloLluis Representations of algebras 1981 903 Lecture Notes in Mathematics
Berlin
Springer-Verlag 3-540-11179-4 654698 (83c:16030) 16A64 Proceedings of the Third International Conference held in Puebla, August 4–8, 1980 xv+371
Colin M.Campbell Edmund F.Robertson Groups—<C>S</C>t. <C>A</C>ndrews 1981 1982 71 London Mathematical Society Lecture Note Series
Cambridge
Cambridge University Press 0-521-28974-2 679152 (83j:20005) 20-06 Proceedings of the International Conference on Groups held at the Mathematical Institute, University of St. Andrews, St. Andrews, July 25–August 8, 1981 viii+360
fail fail Michael P. J.Curran Topics in group theory and computation Academic Press [Harcourt Brace Jovanovich Publishers] 1977
London
0-12-200150-8 0460427 (57 #421) 20-06 Proceedings of a Summer School held at University College, Galway, from 16th to 21st August, 1973 xiii+118
M. F.Newman Proceedings of the <C>S</C>econd <C>I</C>nternational <C>C</C>onference on the <C>T</C>heory of <C>G</C>roups Springer-Verlag 1974
Berlin
Held at the Australian National University, Canberra, August 13–24, 1973, With an introduction by B. H. Neumann, Lecture Notes in Mathematics, Vol. 372 0344315 (49 #9054) 20-06 vii+740
TerrenceGagen Mark P.Hale Jr. Ernest E.Shult Finite groups '72 North-Holland Publishing Co. 1973
Amsterdam
North-Holland Mathematics Studies, Vol. 7 0347962 (50 #460) 20DXX Proceedings of the Gainesville Conference on Finite Groups, University of Florida, Gainesville, Fla., March 23–24, 1972 vi+158 pp. (4 plates)
William R.Scott FletcherGross Proceedings of the <C>C</C>onference on <C>F</C>inite <C>G</C>roups Academic Press Inc. [Harcourt Brace Jovanovich Publishers] 1976
New York
Held at the University of Utah, Park City, Utah, February 10–13, 1975 0393202 (52 #14012) 20-06 xiii+565
EricMendelsohn Algebraic and geometric combinatorics North-Holland Publishing Co. 1982 65 North-Holland Mathematics Studies
Amsterdam
Annals of Discrete Mathematics, 15 0-444-86365-6 772576 (85k:05002) 05-06 xiii+376
DieterJungnickel KlausVedder Combinatorial theory 1982 969 Lecture Notes in Mathematics
Berlin
Springer-Verlag 3-540-11971-X 692229 (84b:05005) 05-06 Proceedings of a Conference held at Schloss Rauischholzhausen, May 6–9, 1982 ii+326
IrvingReiner Representation theory of finite groups and related topics American Mathematical Society 1971
Providence, R.I.
0314948 (47 #3497) 20CXX Proceedings of Symposia in Pure Mathematics, Vol. XXI v+178
BruceCooperstein GeoffreyMason The <C>S</C>anta <C>C</C>ruz <C>C</C>onference on <C>F</C>inite <C>G</C>roups American Mathematical Society 1980 37 Proceedings of Symposia in Pure Mathematics
Providence, R.I.
Held at the University of California, Santa Cruz, Calif., June 25–July 20, 1979 0-8218-1440-0 604551 (81m:20004) 20-06 (20Dxx) xviii+634
JohnMcKay Finite groups—coming of age 1985 45 Contemporary Mathematics
Providence, RI
American Mathematical Society 0-8218-5047-4 822230 (86j:20002) 20-06 (20Dxx) Proceedings of the Canadian Mathematical Society conference held at Concordia University, Montreal, Que., June 15–28, 1982 x+350
atlasrep/bibl/ABCbiblbib.xml0000644000175000017500000014770311551310735014355 0ustar samsam
D. J.Benson Brauer trees for <C><M>12M_{22}</M></C> J. Algebra 1985 95 2 398–408 0021-8693 801275 (87c:20030) 20C25 (20C20) John F. Humphreys JALGA4 Journal of Algebra
D. J.Benson J. F.Carlson Nilpotent elements in the <C>G</C>reen ring J. Algebra 1986 104 2 329–350 0021-8693 866779 (88b:20021) 20C20 (20C11) S. B. Conlon JALGA4 Journal of Algebra
R.Brauer C.Nesbitt <C>On the modular representations of groups of finite order. I.</C> Univ. of Toronto Studies, Math. Ser. 4. Toronto: Univ. of Toronto Press. 21 p. 1937 {Group theory} English 0018.29504
R.Brauer C.Nesbitt On the modular characters of groups Ann. of Math. (2) 1941 42 556–590 0003-486X 0004042 (2,309c) 20.0X G. de B. Robinson Annals of Mathematics. Second Series
R.Burkhardt Die <C>Z</C>erlegungsmatrizen der <C>G</C>ruppen <C><M>{\rm PSL}(2,p^f)</M></C> J. Algebra 1976 40 1 75–96 0021-8693 0480710 (58 #864) 20C20 P. Donovan Journal of Algebra
R.Burkhardt Über die <C>Z</C>erlegungszahlen der <C>S</C>uzukigruppen <C><M>{\rm Sz}(q)</M></C> J. Algebra 1979 59 2 421–433 0021-8693 543261 (81a:20018) 20C99 Karin Erdmann JALGA4 Journal of Algebra
R.Burkhardt Über die <C>Z</C>erlegungszahlen der unitären <C>G</C>ruppen <C><M>{\rm PSU}(3,\,2^{2f})</M></C> J. Algebra 1979 61 2 548–581 0021-8693 559855 (81a:20055) 20H05 (20C20 20C30) Ulrich Dempwolff JALGA4 Journal of Algebra
J. H.Conway R. T.Curtis S. P.Norton R. A.Parker R. A.Wilson Atlas of finite groups Oxford University Press 1985
Eynsham
Maximal subgroups and ordinary characters for simple groups, With computational assistance from J. G. Thackray 0-19-853199-0 827219 (88g:20025) 20D05 (20-02) R. L. Griess xxxiv+252
Charles W.Curtis IrvingReiner Methods of representation theory. <C>V</C>ol. <C>I</C> John Wiley & Sons Inc. 1981
New York
With applications to finite groups and orders, Pure and Applied Mathematics, A Wiley-Interscience Publication 0-471-18994-4 632548 (82i:20001) 20-02 (10C30 12A57 20Cxx) J. L. Alperin xxi+819
Charles W.Curtis IrvingReiner Methods of representation theory. <C>V</C>ol. <C>I</C> John Wiley & Sons Inc. 1990 Wiley Classics Library
New York
With applications to finite groups and orders, Reprint of the 1981 original, A Wiley-Interscience Publication 0-471-52367-4 1038525 (90k:20001) 20-02 (01A75 11R33 20Cxx) xxiv+819 CR81
David M.Evans The <C><M>7</M></C>-modular representations of <C>J</C>anko's smallest simple group J. Algebra 1985 96 1 35–44 0021-8693 808838 (86m:20012) 20C20 (20-04) P. Fong JALGA4 Journal of Algebra
WalterFeit The representation theory of finite groups North-Holland Publishing Co. 1982 25 North-Holland Mathematical Library
Amsterdam
0-444-86155-6 661045 (83g:20001) 20-02 (20C20) J. L. Alperin xiv+502
WalterFeit Blocks with cyclic defect groups for some sporadic groups Representation theory, II (Ottawa, Ont., 1984) Springer 1986 1178 Lecture Notes in Math. 25–63
Berlin
DGM86 842477 (87e:20023) 20C20 (20D08) J. L. Alperin
PaulFong On decomposition numbers of <C><M>J_1</M></C> and <C><M>R(q)</M></C> Symposia Mathematica, Vol. XIII (Convegno di Gruppi e loro Rappresentazioni, INDAM, Rome, 1972) Academic Press 1974 415–422
London
0357578 (50 #10046) 20C20 I. M. Isaacs
PaulFong BhamaSrinivasan Blocks with cyclic defect groups in <C><M>{\rm GL}(n,\,q)</M></C> Bull. Amer. Math. Soc. (N.S.) 1980 3 3 1041–1044 0002-9904 585186 (81k:20019) 20C20 (20G40) Karin Erdmann BAMOAD American Mathematical Society. Bulletin. New Series
PaulFong BhamaSrinivasan The blocks of finite general linear and unitary groups Invent. Math. 1982 69 1 109–153 0020-9910 671655 (83k:20013) 20C20 (20G05) P. Donovan INVMBH Inventiones Mathematicae
PaulFong BhamaSrinivasan Brauer trees in classical groups J. Algebra 1990 131 1 179–225 0021-8693 1055005 (91i:20008) 20C20 (20G40) Gerhard Hiss JALGA4 Journal of Algebra
M.Geck Beiträge zur Darstellungstheorie von Iwahori–Hecke Algebren RWTH Aachen 1993 Habilitationsschrift
Peter B.Gilkey Gary M.Seitz Some representations of exceptional <C>L</C>ie algebras Geom. Dedicata 1988 25 1-3 407–416 Geometries and groups (Noordwijkerhout, 1986) 0046-5755 925845 (89h:20056) 20G05 (17B25) G. E. Wall GEMDAT Geometriae Dedicata
David M.Goldschmidt Lectures on character theory Publish or Perish Inc. 1980
Wilmington, Del.
0-914098-17-9 575526 (81f:20001) 20-02 (20C10 20C15) Stephen D. Smith 249 pp. (not consecutively paged)
GerhardHiss The modular characters of the <C>T</C>its simple group and its automorphism group Comm. Algebra 1986 14 1 125–154 0092-7872 814141 (87c:20029) 20C20 Wolfgang Knapp COALDM Communications in Algebra
GerhardHiss On the decomposition numbers of <C><M>G_2(q)</M></C> J. Algebra 1989 120 2 339–360 0021-8693 989902 (90j:20011) 20C05 (16A26 20C20) Reiner Staszewski JALGA4 Journal of Algebra
G.Hiss Zerlegungszahlen endlicher <C>G</C>ruppen vom <C>L</C>ie-<C>T</C>yp in nicht-definierender <C>C</C>harakteristik. RWTH Aachen 1990 Habilitationsschrift
GerhardHiss The <C><M>3</M></C>-modular characters of the <C>R</C>udvalis sporadic simple group and its covering group Math. Comp. 1994 62 206 851–863 0025-5718 1212267 (94g:20013) 20C20 (20C34 20D08) P. Fong MCMPAF Mathematics of Computation
GerhardHiss KlausLux The <C>B</C>rauer characters of the <C>H</C>all-<C>J</C>anko group Comm. Algebra 1988 16 2 357–398 0092-7872 929124 (89d:20011) 20C20 Karin Erdmann COALDM Communications in Algebra
G.Hiss K.Lux Brauer trees of sporadic groups The Clarendon Press Oxford University Press 1989 Oxford Science Publications
New York
0-19-853381-0 1033265 (91k:20018) 20C20 (20-02 20D08) Harvey Blau x+526
GerhardHiss KlausLux The <C><M>5</M></C>-modular characters of the sporadic simple <C>F</C>ischer groups <C><M>{\rm Fi}_{22}</M></C> and <C><M>{\rm Fi}_{23}</M></C> Comm. Algebra 1994 22 9 3563–3590 With an appendix by Thomas Breuer 0092-7872 1278806 (95e:20020) 20C34 (20C40) A. S. Kondratʹev COALDM Communications in Algebra
GerhardHiss JürgenMüller The <C><M>5</M></C>-modular characters of the sporadic simple <C>R</C>udvalis group and its covering group Comm. Algebra 1995 23 12 4633–4667 0092-7872 1352561 (96h:20027) 20C34 (20C20) Donald L. White COALDM Communications in Algebra
GerhardHiss Donald L.White The <C><M>5</M></C>-modular characters of the covering group of the sporadic simple <C>F</C>ischer group <C><M>{\rm Fi}_{22}</M></C> and its automorphism group Comm. Algebra 1994 22 9 3591–3611 0092-7872 1278807 (95e:20021) 20C34 (20C40) A. S. Kondratʹev COALDM Communications in Algebra
GerhardHiss KlausLux RichardParker The <C><M>5</M></C>-modular characters of the <C>M</C>c<C>L</C>aughlin group and its covering group Manuscripta Math. 1991 73 1 91–114 0025-2611 1124313 (92g:20017) 20C20 (20D08) David Benson MSMHB2 Manuscripta Mathematica
GerhardHiss KlausLux JürgenMüller The <C><M>2</M></C>-modular decomposition matrices of the non-principal blocks of maximal defect of the triple cover of the sporadic simple <C>M</C>c<C>L</C>aughlin group J. Symbolic Comput. 1995 19 6 585–600 0747-7171 1370624 (96m:20023) 20C34 (20C40) Peter Fleischmann Journal of Symbolic Computation
G.Hiss C.Jansen K.Lux R. A.Parker Computing with <C>M</C>odular <C>C</C>haracters http://www.math.rwth-aachen.de/LDFM/homes/MOC/CoMoChaT/
J. F.Humphreys The projective characters of the <C>M</C>athieu group <C><M>M_{12}</M></C> and of its automorphism group Math. Proc. Cambridge Philos. Soc. 1980 87 3 401–412 0305-0041 556920 (81k:20021) 20C25 (20C30) V. D. Mazurov MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society
J. F.Humphreys The modular characters of the <C>H</C>igman-<C>S</C>ims simple group Proc. Roy. Soc. Edinburgh Sect. A 1982 92 3-4 319–335 0308-2105 677491 (83m:20017) 20C20 (20D08) M. Herzog PEAMDU Proceedings of the Royal Society of Edinburgh. Section A. Mathematical and Physical Sciences
I. MartinIsaacs Character theory of finite groups Academic Press [Harcourt Brace Jovanovich Publishers] 1976
New York
Pure and Applied Mathematics, No. 69 0460423 (57 #417) 20-02 Stephen D. Smith xii+303
I. MartinIsaacs Character theory of finite groups Dover Publications Inc. 1994
New York
Corrected reprint of the 1976 original [Academic Press, New York; MR0460423 (57 #417)] 0-486-68014-2 1280461 20C15 xii+303 Isa76
I. MartinIsaacs Character theory of finite groups AMS Chelsea Publishing, Providence, RI 2006 Corrected reprint of the 1976 original [Academic Press, New York; MR0460423] 978-0-8218-4229-4; 0-8218-4229-3 2270898 20-02 (20C05 20C15 20C20 20C25) xii+310 Isa76
G. D.James The modular characters of the <C>M</C>athieu groups J. Algebra 1973 27 57–111 0021-8693 0330277 (48 #8614) 20C20 J. S. Frame Journal of Algebra
G. D.James Representations of the symmetric groups over the field of order <C><M>2</M></C> J. Algebra 1976 38 2 280–308 0021-8693 0396734 (53 #595) 20C30 G. de B. Robinson Journal of Algebra
G. D.James On the decomposition matrices of the symmetric groups. <C>I</C> J. Algebra 1976 43 1 42–44 0021-8693 0430049 (55 #3057a) 20C30 A. Kerber Journal of Algebra
G. D.James On the decomposition matrices of the symmetric groups. <C>II</C> J. Algebra 1976 43 1 45–54 0021-8693 0430050 (55 #3057b) 20C30 A. Kerber Journal of Algebra
G. D.James A note on the decomposition matrices of <C><M>S_{12}</M></C> and <C><M>S_{13}</M></C> for the prime <C><M>3</M></C> J. Algebra 1978 53 2 410–411 0021-8693 502639 (80a:20005) 20B10 (20C15) H. Nagao JALGA4 Journal of Algebra
G. D.James The representation theory of the symmetric groups Springer 1978 682 Lecture Notes in Mathematics
Berlin
3-540-08948-9 513828 (80g:20019) 20C30 (20-02) Dragomir Ž. Ðoković v+156
GordonJames AdalbertKerber The representation theory of the symmetric group Addison-Wesley Publishing Co., Reading, Mass. 1981 16 Encyclopedia of Mathematics and its Applications With a foreword by P. M. Cohn, With an introduction by Gilbert de B. Robinson 0-201-13515-9 644144 (83k:20003) 20-02 (20C30) A. O. Morris xxviii+510
C.Jansen R. A.Wilson Two new constructions of the <C>O</C>'<C>N</C>an group J. London Math. Soc. (2) 1997 56 3 579–583 0024-6107 1610479 (98m:20022) 20D08 JLMSAK Journal of the London Mathematical Society. Second Series
C.Jansen R. A.Wilson The <C><M>2</M></C>-modular and <C><M>3</M></C>-modular decomposition numbers for the sporadic simple <C>O</C>'<C>N</C>an group and its triple cover J. London Math. Soc. (2) 1998 57 1 71–90 0024-6107 1624797 (99g:20025) 20C34 (20C20 20C40) Gerhard Hiss JLMSAK Journal of the London Mathematical Society. Second Series
C.Jansen R. A.Wilson The minimal faithful <C><M>3</M></C>-modular representation for the <C>L</C>yons group Comm. Algebra 1996 24 3 873–879 0092-7872 1374641 (97a:20021) 20C34 (20C40 20D08) Herbert Pahlings COALDM Communications in Algebra
FiroozKhosraviyani Decomposition numbers of exceptional <C>W</C>eyl groups. <C>I</C> J. Algebra 1984 91 2 390–409 0021-8693 769582 (86h:20011) 20C20 Richard Dipper JALGA4 Journal of Algebra
FiroozKhosraviyani Alun O.Morris Decomposition numbers of exceptional <C>W</C>eyl groups. <C>II</C> J. Algebra 1985 92 2 525–531 0021-8693 778465 (86m:20013) 20C20 Richard Dipper JALGA4 Journal of Algebra
A. S.Kondratʹev Decomposition numbers of the group <C><M>J_2</M></C> Algebra i Logika 1988 27 5 535–561, 619 Russian, translation in Algebra and Logic 27 (1988), no. 5, 333–349 (1989) 0373-9252 1047503 (91g:20017) 20D08 È. M. Palʹchik Akademiya Nauk SSSR. Sibirskoe Otdelenie. Institut Matematiki. Algebra i Logika
A. S.Kondratʹev Decomposition numbers of the groups <C><M>\hat{{J}}_2</M></C> and <C><M>{\rm Aut}(J_2)</M></C> Algebra i Logika 1988 27 6 690–710, 737 Russian, translation in Algebra and Logic 27 (1988), no. 6, 429–444 (1989) 0373-9252 1038106 (91b:20024) 20D08 È. M. Palʹchik Akademiya Nauk SSSR. Sibirskoe Otdelenie. Institut Matematiki. Algebra i Logika
P.Landrock Finite group algebras and their modules Cambridge University Press 1983 84 London Mathematical Society Lecture Note Series
Cambridge
0-521-27487-7 737910 (85h:20002) 20-02 (16A26 20C05 20C20) J. L. Alperin x+274
W.Lempken Constructing <C><M>J_4</M></C> in <C><M>{\rm GL}(1333,11)</M></C> Comm. Algebra 1993 21 12 4311–4351 0092-7872 1242834 (94i:20032) 20D08 Jonathan I. Hall COALDM Communications in Algebra
W.Lempken R.Staszewski Some <C><M>5</M></C>-modular representation theory for the simple group <C><M>{\rm McL}</M></C> Comm. Algebra 1993 21 5 1611–1629 0092-7872 1213977 (94a:20027) 20C34 (20D08) P. Fong COALDM Communications in Algebra
W.Lempken R.Staszewski A construction of <C><M>\widehat{{3}}{\rm McL}</M></C> and some representation theory in characteristic <C><M>5</M></C> Linear Algebra Appl. 1993 192 205–234 Computational linear algebra in algebraic and related problems (Essen, 1992) 0024-3795 1236744 (94k:20015) 20C20 V. D. Mazurov LAAPAW Linear Algebra and its Applications
K.Lux H.Pahlings Computational aspects of representation theory of finite groups Representation theory of finite groups and finite-dimensional algebras (Bielefeld, 1991) Birkhäuser 1991 95 Progr. Math. 37–64
Basel
MR91 1112157 (92g:20025) 20C40 Wolfgang Knapp
R. PatrickMartineau On representations of the <C>S</C>uzuki groups over fields of odd characteristic J. London Math. Soc. (2) 1972 6 153–160 0024-6107 0369498 (51 #5731) 20C20 A. O. Morris Journal of the London Mathematical Society. Second Series
WernerMeyer WolframNeutsch Über <C><M>5</M></C>-<C>D</C>arstellungen der <C>L</C>yonsgruppe Math. Ann. 1984 267 4 519–535 0025-5831 742897 (85k:20038) 20C20 (20D08 51E20) Stephen D. Smith MAANA Mathematische Annalen
WernerMeyer WolframNeutsch RichardParker The minimal <C><M>5</M></C>-representation of <C>L</C>yons' sporadic group Math. Ann. 1985 272 1 29–39 0025-5831 794089 (86i:20025) 20D08 R. W. Carter MAANA Mathematische Annalen
W.Nickel Endliche <C>K</C>örper in dem gruppentheoretischen <C>P</C>rogrammsystem <C>GAP</C> RWTH Aachen 1988 Diplomarbeit R. A.Parker The computer calculation of modular characters (the meat-axe) Computational group theory (Durham, 1982) Academic Press 1984 267–274
London
Atk84 760660 (85k:20041) 20C20 (20-04) Leo J. Alex
M.Ringe The <C>C</C>-<C>M</C>eat<C>A</C>xe, <C>D</C>ocumentation RWTH Aachen 1992
A. J. E.Ryba Calculation of the <C><M>7</M></C>-modular characters of the <C>H</C>eld group J. Algebra 1988 117 1 240–255 0021-8693 955602 (89g:20026) 20C20 (20D08) David Benson JALGA4 Journal of Algebra b
Alexander J. E.Ryba Robert A.Wilson Matrix generators for the <C>H</C>arada-<C>N</C>orton group Experiment. Math. 1994 3 2 137–145 1058-6458 1313878 (95k:20017) 20C34 (20C40 20D08) Wujie Shi Experimental Mathematics
M.Schönert Gap–3.4, <C>M</C>anual RWTH Aachen 1994
RobertSteinberg Representations of algebraic groups Nagoya Math. J. 1963 22 33–56 0027-7630 0155937 (27 #5870) 22.90 (14.50) H. K. Farahat Nagoya Mathematical Journal
I. A. I.Suleiman Modular Representations of Finite Simple Groups The University of Birmingham 1990 Ph. D. thesis
Ibrahim A. I.Suleiman The modular characters of the twisted <C>C</C>hevalley group <C><M>{}^2D_4(2)</M></C> and <C><M>{}^2D_4(2).2</M></C> Math. Japon. 1994 39 1 107–117 0025-5513 1261343 (94m:20038) 20C33 (20C20 20C40) Donald L. White MAJAA9 Mathematica Japonica
Ibrahim A.Suleiman Robert A.Wilson Computer construction of matrix representations of the covering group of the <C>H</C>igman-<C>S</C>ims group J. Algebra 1992 148 1 219–224 0021-8693 1161573 (93d:20029) 20C34 (20C20 20C40) Wolfgang Knapp JALGA4 Journal of Algebra
Ibrahim A.Suleiman Robert A.Wilson The <C><M>3</M></C>- and <C><M>5</M></C>-modular characters of the covering and the automorphism groups of the <C>H</C>igman-<C>S</C>ims group J. Algebra 1992 148 1 225–242 0021-8693 1161574 (93d:20030) 20C34 (20C20 20C40) Wolfgang Knapp JALGA4 Journal of Algebra
Ibrahim A.Suleiman Robert A.Wilson The <C><M>3</M></C>-modular characters of the <C>M</C>c<C>L</C>aughlin group <C><M>{\rm McL}</M></C> and its automorphism group <C><M>{\rm McL}.2</M></C> Groups, combinatorics & geometry (Durham, 1990) Cambridge Univ. Press 1992 165 London Math. Soc. Lecture Note Ser. 422–437
Cambridge
LS92a 1200279 (94c:20031) 20C34 (20C20) Peter Fleischmann
Ibrahim A. I.Suleiman Robert A.Wilson Construction of the fourfold cover of the <C>M</C>athieu group <C><M>M_{22}</M></C> Experiment. Math. 1993 2 1 11–14 1058-6458 1246480 (94h:20022) 20C34 Experimental Mathematics
Ibrahim A. I.Suleiman Robert A.Wilson The <C><M>2</M></C>-modular characters of <C>C</C>onway's group <C><M>{\rm Co}_2</M></C> Math. Proc. Cambridge Philos. Soc. 1994 116 2 275–283 0305-0041 1281546 (95e:20024) 20C40 (20C34) Herbert Pahlings MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society
J. G.Thackray Modular Representations of Some Finite Groups University of Cambridge 1981 Ph. D. thesis John G.Thompson Some finite groups which appear as <C><M>{\rm Gal}\,L/K</M></C>, where <C><M>K \subseteq{\bf Q}(μ_n)</M></C> Group theory, Beijing 1984 Springer 1986 1185 Lecture Notes in Math. 210–230
Berlin
Dua86 842445 (87i:11160) 11R32 (12F10 20C99) Richard Massy
Donald L.White Brauer trees of <C><M>2.F_4(2)</M></C> Comm. Algebra 1992 20 11 3353–3368 0092-7872 1186712 (93i:20009) 20C20 (20C33) Stefan Heiss COALDM Communications in Algebra
W.Willems Metrische Moduln über Gruppenringen Mainz 1976 Dissertation
Robert A.Wilson The <C><M>2</M></C>- and <C><M>3</M></C>-modular characters of <C><M>J_3</M></C>, its covering group and automorphism group J. Symbolic Comput. 1990 10 6 647–656 0747-7171 1087984 (92b:20016) 20C20 (20C40 20D08) Wolfgang Knapp Journal of Symbolic Computation
Robert A.Wilson Matrix generators for <C>F</C>ischer's group <C><M>{\rm Fi}_{24}</M></C> Math. Proc. Cambridge Philos. Soc. 1993 113 1 5–8 0305-0041 1188814 (93j:20042) 20D08 Ulrich Meierfrankenfeld MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society
Robert A.Wilson A new construction of the <C>B</C>aby <C>M</C>onster and its applications Bull. London Math. Soc. 1993 25 5 431–437 0024-6093 1233405 (94k:20027) 20D08 (20C34 20C40) Richard Lyons LMSBBT The Bulletin of the London Mathematical Society
Robert A.Wilson The <C>B</C>rauer tree for <C><M>J_3</M></C> in characteristic <C><M>17</M></C> J. Symbolic Comput. 1993 15 3 325–330 0747-7171 1229639 (94g:20021) 20C34 (68Q40) Jamshid Moori Journal of Symbolic Computation
Andrew J.Woldar On the <C><M>5</M></C>-decomposition matrix for <C>M</C>c<C>L</C>aughlin's sporadic simple group Comm. Algebra 1986 14 2 277–291 0092-7872 817046 (87a:20007) 20C20 (20D08) J. L. Alperin COALDM Communications in Algebra
Michael D.Atkinson Computational group theory 1984
London
Academic Press Inc. [Harcourt Brace Jovanovich Publishers] 0-12-066270-1 760641 (85g:20001) 20-06 (68-06) Proceedings of the London Mathematical Society symposium held in Durham, July 30–August 9, 1982 xii+375
V.Dlab P.Gabriel G.Michler Representation theory. <C>II</C> 1986 1178 Lecture Notes in Mathematics
Berlin
Springer-Verlag Groups and orders 3-540-16433-2 842475 (87b:20003) 20-06 (16-06 20Cxx) Proceedings of the fourth international conference on representations of algebras held at Carleton University, Ottawa, Ont., August 16–25, 1984 xvi+370
G. O.Michler C. M.Ringel Representation theory of finite groups and finite-dimensional algebras 1991 95 Progress in Mathematics
Basel
Birkhäuser Verlag 3-7643-2604-2 1112154 (91m:20005) 20-06 (00B25 16-06 20Cxx) Proceedings of the conference held at the University of Bielefeld, Bielefeld, May 15–17, 1991 x+520
MartinLiebeck JanSaxl Groups, combinatorics & geometry 1992 165 London Mathematical Society Lecture Note Series
Cambridge
Cambridge University Press 0-521-40685-4 1200244 (93g:20001) 20-06 (00B25 20Dxx) Proceedings of the L.M.S. Symposium on Groups and Combinatorics held in Durham, July 5–15, 1990 xiv+489
Hsio-FuTuan Group theory, <C>B</C>eijing 1984 1986 1185 Lecture Notes in Mathematics
Berlin
Springer-Verlag 3-540-16456-1 842438 (87d:20004) 20-06 Proceedings of an international symposium held at Beijing University, Beijing, August 27–September 8, 1984 vi+403
atlasrep/bibl/ABCapp2bib.xml0000644000175000017500000107465011551310711014302 0ustar samsam
MarkBenard Schur indexes of sporadic simple groups J. Algebra 1979 58 2 508–522 0021-8693 540655 (80e:20022) 20D08 (20C15) Gary L. Walls JALGA4 Journal of Algebra
JürgenBierbrauer A <C><M>2</M></C>-local characterization of the <C>R</C>udvalis simple group J. Algebra 1979 58 2 563–571 0021-8693 540658 (80h:20028) 20D08 Arthur Reifart JALGA4 Journal of Algebra
John J.Cannon JohnMcKay Kiang ChuenYoung The nonabelian simple groups <C><M>G</M></C>, <C><M>|G| < 10^5</M></C>\thinspace —\thinspace presentations Comm. Algebra 1979 7 13 1397–1406 0092-7872 539356 (80e:20023) 20D08 COALDM Communications in Algebra
Ismail ŞuayipGüloğlu A characterization of the simple group <C><M>{\rm He}</M></C> J. Algebra 1979 60 1 261–281 0021-8693 549111 (80k:20018) 20D08 (20D05) Gary L. Walls JALGA4 Journal of Algebra
OveKroll PeterLandrock The characters of some <C><M>2</M></C>-blocks of the babymonster, its covering group and the monster Comm. Algebra 1978 6 18 1893–1921 0092-7872 511168 (80f:20016) 20D08 David C. Hunt COALDM Communications in Algebra
PeterLandrock The non-principal <C><M>2</M></C>-blocks of sporadic simple groups Comm. Algebra 1978 6 18 1865–1891 0092-7872 511167 (80b:20020) 20D08 Lino Di Martino COALDM Communications in Algebra
JohnMcKay The non-abelian simple groups <C><M>G</M></C>, <C><M>|G| < 10^6</M></C>\thinspace —\thinspace character tables Comm. Algebra 1979 7 13 1407–1445 0092-7872 539357 (80e:20024) 20D08 COALDM Communications in Algebra
Stephen D.Smith Large extraspecial subgroups of widths <C><M>4</M></C> and <C><M>6</M></C> J. Algebra 1979 58 2 251–281 0021-8693 540638 (80g:20030) 20D08 Arthur Reifart JALGA4 Journal of Algebra
Richard M.Stafford A characterization of <C>J</C>anko's simple group <C><M>J_4</M></C> by centralizers of elements of order <C><M>3</M></C> J. Algebra 1979 57 2 555–566 0021-8693 533814 (80h:20029) 20D08 W. J. Wong JALGA4 Journal of Algebra
JürgenBierbrauer A characterization of the ``baby monster'' <C><M>F_2</M></C>, including a note on <C><M>^2E_6(2)</M></C> J. Algebra 1979 56 2 384–395 0021-8693 528582 (80h:20027) 20D06 (20D08) Leo J. Alex JALGA4 Journal of Algebra
FrancisBuekenhout The geometry of diagrams Relations between combinatorics and other parts of mathematics (Proc. Sympos. Pure Math., Ohio State Univ., Columbus, Ohio, 1978) Amer. Math. Soc. 1979 Proc. Sympos. Pure Math., XXXIV 69–75
Providence, R.I.
RC79 525320 (80b:51005) 51E99 (05B25 20D08) Joseph A. Thas
B. K.Durakov Characterization of some finite simple groups by a centralizer of elements of order three Mat. Sb. (N.S.) 1979 109(151) 4 533–554, 647 Russian 0368-8666 545053 (80m:20015) 20D06 (20D08) S. S. Levīshchenko Matematicheskiĭ Sbornik. Novaya Seriya
MichaelWester Endliche <C>G</C>ruppen, die eine <C>I</C>nvolution <C><M>z</M></C> besitzen, so daß <C><M>F^{\ast}(C(z))</M></C> das direkte <C>P</C>rodukt einer extraspeziellen <C><M>2</M></C>-<C>G</C>ruppe von kleiner <C>W</C>eite mit einer elementar-abelschen <C><M>2</M></C>-<C>G</C>ruppe ist. <C>I</C> J. Algebra 1979 60 2 321–336 0021-8693 549933 (80k:20015) 20D05 (20D08) W. J. Wong JALGA4 Journal of Algebra
JürgenBierbrauer On a certain class of <C><M>2</M></C>-local subgroups in finite simple groups Rend. Sem. Mat. Univ. Padova 1980 62 137–163 0041-8994 582947 (81i:20017) 20D08 Gerard M. Enright Rendiconti del Seminario Matematico dell'Università di Padova
J. H.Conway S. P.Norton Monstrous moonshine Bull. London Math. Soc. 1979 11 3 308–339 0024-6093 554399 (81j:20028) 20D08 (10D12) Stephen D. Smith LMSBBT The Bulletin of the London Mathematical Society
Victor G.Kac A remark on the <C>C</C>onway-<C>N</C>orton conjecture about the ``<C>M</C>onster'' simple group Proc. Nat. Acad. Sci. U.S.A. 1980 77 9, part 1 5048–5049 0027-8424 587277 (81m:20026) 20D08 (10D12 81D05) Stephen D. Smith PNASA6 Proceedings of the National Academy of Sciences of the United States of America
RonaldSolomon Some standard components of sporadic type J. Algebra 1978 53 1 93–124 0021-8693 498549 (81h:20018) 20D08 U. Dempwolff JALGA4 Journal of Algebra
J. G.Thompson Uniqueness of the <C>F</C>ischer-<C>G</C>riess monster Bull. London Math. Soc. 1979 11 3 340–346 0024-6093 554400 (81e:20024) 20D08 Arthur Reifart LMSBBT The Bulletin of the London Mathematical Society a
J. G.Thompson Finite groups and modular functions Bull. London Math. Soc. 1979 11 3 347–351 0024-6093 554401 (81j:20029) 20D08 (10D12) Stephen D. Smith LMSBBT The Bulletin of the London Mathematical Society b
J. G.Thompson Some numerology between the <C>F</C>ischer-<C>G</C>riess <C>M</C>onster and the elliptic modular function Bull. London Math. Soc. 1979 11 3 352–353 0024-6093 554402 (81j:20030) 20D08 (10D12) Stephen D. Smith LMSBBT The Bulletin of the London Mathematical Society c
KoichiroHarada DavidParrott On finite groups having <C><M>2</M></C>-local subgroups <C><M>E_{{2^{2n}}}{\rm O}^{±}\,(2n,\,2)</M></C> J. Algebra 1980 63 2 331–345 0021-8693 570716 (81g:20030) 20D05 (20D08) Gary L. Walls JALGA4 Journal of Algebra
ManleyPerkel A characterization of <C><M>J_1</M></C> in terms of its geometry Geom. Dedicata 1980 9 3 291–298 0304-4637 585936 (81j:05066) 05C25 (20B25 20D08) Hugo S. Sun GEMDAT Geometriae Dedicata
A. V.Borovik <C><M>3</M></C>-local characterization of the <C>H</C>eld group Algebra i Logika 1980 19 4 387–404, 503 Russian, English translation: Algebra and Logic 19 (1980), no.4, 255–266 (1981) 0373-9252 609020 (82g:20040) 20D08 B. K. Durakov Akademiya Nauk SSSR. Sibirskoe Otdelenie. Institut Matematiki. Algebra i Logika
GregoryButler The maximal subgroups of the sporadic simple group of <C>H</C>eld J. Algebra 1981 69 1 67–81 0021-8693 613857 (82e:20022) 20D08 (20E28) Stephen D. Smith JALGA4 Journal of Algebra
J. H.Conway Monsters and moonshine Math. Intelligencer 1979/80 2 4 165–171 0343-6993 600222 (82a:20028) 20D08 (10D12) Stephen D. Smith MAINDC The Mathematical Intelligencer
PaulFong Characters arising in the <C>M</C>onster-modular connection The Santa Cruz Conference on Finite Groups (Univ. California, Santa Cruz, Calif., 1979) Amer. Math. Soc. 1980 37 Proc. Sympos. Pure Math. 557–559
Providence, R.I.
CM80b 604633 (82a:20029) 20D08 (10D05 20C30)
Robert L.Griess Jr. A construction of <C><M>F_1</M></C> as automorphisms of a <C><M>196,883</M></C>-dimensional algebra Proc. Nat. Acad. Sci. U.S.A. 1981 78 2, part 1 686–691 0027-8424 605419 (82d:20022) 20D08 (17D99) Stephen D. Smith PNASA6 Proceedings of the National Academy of Sciences of the United States of America
MarcelHerzog DavidWright Characterization of a family of simple groups by their character table. <C>II</C> J. Austral. Math. Soc. Ser. A 1980/81 30 2 168–170 0263-6115 607927 (82e:20023) 20D08 (20C15) JAMADS Australian Mathematical Society. Journal. Series A
JamshidMoori On certain groups associated with the smallest <C>F</C>ischer group J. London Math. Soc. (2) 1981 23 1 61–67 0024-6107 602239 (82g:20041) 20D08 (20C30) Henry S. Leonard, Jr. JLMSAK The Journal of the London Mathematical Society. Second Series
SimonNorton The construction of <C><M>J_4</M></C> The Santa Cruz Conference on Finite Groups (Univ. California, Santa Cruz, Calif., 1979) Amer. Math. Soc. 1980 37 Proc. Sympos. Pure Math. 271–277
Providence, R.I.
CM80b 604593 (82a:20030) 20D08
LarissaQueen Modular functions and finite simple groups The Santa Cruz Conference on Finite Groups (Univ. California, Santa Cruz, Calif., 1979) Amer. Math. Soc. 1980 37 Proc. Sympos. Pure Math. 561–566
Providence, R.I.
CM80b 604634 (82g:20042) 20D08 (10D05 20G30)
Charles C.Sims How to construct a Baby Monster Proceedings of the Symposium held at the University of Durham, Durham, July 31–August 10, 1978 Academic Press Inc. [Harcourt Brace Jovanovich Publishers] 1980 339–345
London
Col80
S. A.Syskin <C><M>3</M></C>-characterization of the <C>O</C>'<C>N</C>an-<C>S</C>ims group Mat. Sb. (N.S.) 1981 114(156) 3 471–478, 480 Russian 0368-8666 610210 (82f:20036) 20D08 M. Herzog Matematicheskiĭ Sbornik. Novaya Seriya
J.Tits Quaternions over <C><M>{\bf Q}(\sqrt{{5}})</M></C>, <C>L</C>eech's lattice and the sporadic group of <C>H</C>all-<C>J</C>anko J. Algebra 1980 63 1 56–75 0021-8693 568564 (82k:20034) 20D08 (10E20) II J. H. Lindsey JALGA4 Journal of Algebra
Steven B.Assa A characterization of <C><M>M(22)</M></C> J. Algebra 1981 69 2 455–466 0021-8693 617089 (82g:20032) 20D05 (20D08) Gerard M. Enright JALGA4 Journal of Algebra
David C.Hunt A computer-based atlas of finite simple groups The Santa Cruz Conference on Finite Groups (Univ. California, Santa Cruz, Calif., 1979) Amer. Math. Soc. 1980 37 Proc. Sympos. Pure Math. 507–510
Providence, R.I.
CM80b 604629 (82a:20022) 20C30 (20D08)
J.Lepowsky Euclidean <C>L</C>ie algebras and the modular function <C><M>j</M></C> The Santa Cruz Conference on Finite Groups (Univ. California, Santa Cruz, Calif., 1979) Amer. Math. Soc. 1980 37 Proc. Sympos. Pure Math. 567–570
Providence, R.I.
CM80b 604635 (82h:17010) 17B65 (20D08) S. Milne
V. I.Loginov A note on finite groups that admit coprime automorphisms Vestnik Moskov. Univ. Ser. I Mat. Mekh. 1980 6 58–61, 118 Russian. English summary 0201-7385 602689 (82b:20028) 20D10 (20D08) Vestnik Moskovskogo Universiteta. Seriya I. Matematika, Mekhanika
A. P.Ogg Modular functions The Santa Cruz Conference on Finite Groups (Univ. California, Santa Cruz, Calif., 1979) Amer. Math. Soc. 1980 37 Proc. Sympos. Pure Math. 521–532
Providence, R.I.
CM80b 604631 (82h:10037) 10D05 (20D08) David Goss
ArthurReifart GernotStroth Some simple groups with <C><M>2</M></C>-local <C><M>3</M></C>-rank at most <C><M>3</M></C> J. Algebra 1980 64 1 102–139 0021-8693 575786 (82d:20019) 20D05 (20D08) Stephen D. Smith JALGA4 Journal of Algebra
Gary M.Seitz Some standard groups J. Algebra 1981 70 1 299–302 0021-8693 618396 (82g:20037) 20D05 (20D08) Gerard M. Enright JALGA4 Journal of Algebra
J. G.Thompson A finiteness theorem for subgroups of <C><M>{\rm PSL}(2,\,{\bf R})</M></C> which are commensurable with <C><M>{\rm PSL}(2,\,{\bf Z})</M></C> The Santa Cruz Conference on Finite Groups (Univ. California, Santa Cruz, Calif., 1979) Amer. Math. Soc. 1980 37 Proc. Sympos. Pure Math. 533–555
Providence, R.I.
CM80b 604632 (82b:20067) 20H05 (10D07 20D08 22E40) James E. Humphreys
J. G.Thompson Finite-dimensional representations of free products with an amalgamated subgroup J. Algebra 1981 69 1 146–149 0021-8693 613864 (82e:20007) 20C15 (20D08) Stephen D. Smith JALGA4 Journal of Algebra
Tran VanTrung Eine <C>K</C>ennzeichnung der endlichen einfachen <C>G</C>ruppe <C><M>J_4</M></C> von <C>J</C>anko durch eine <C><M>2</M></C>-lokale <C>U</C>ntergruppe Rend. Sem. Mat. Univ. Padova 1980 62 35–45 0041-8994 582939 (82f:20035) 20D05 (20D08) Bernd Baumann Rendiconti del Seminario Matematico dell'Università di Padova
A. R.Calderbank David B.Wales A global code invariant under the <C>H</C>igman-<C>S</C>ims group J. Algebra 1982 75 1 233–260 0021-8693 650419 (83d:20011) 20D08 (94B05) L. Dornhoff JALGA4 Journal of Algebra
K. B.Tchakerian The maximal subgroups of the <C>T</C>its simple group C. R. Acad. Bulgare Sci. 1981 34 12 1637 0366-8681 655846 (83e:20023) 20D08 CRABAA Doklady Bolgarskoĭ Akademii Nauk. Comptes Rendus de l'Académie Bulgare des Sciences
Stephen L.Davis RonaldSolomon Some sporadic characterizations Comm. Algebra 1981 9 17 1725–1742 0092-7872 631885 (83a:20024) 20D08 David C. Hunt COALDM Communications in Algebra
Jiong ShengLi The commutators of the small <C>J</C>anko group <C><M>J_1</M></C> J. Math. (Wuhan) 1981 1 2 175–179 Chinese 0255-7797 647861 (83j:20029) 20D08 Journal of Mathematics. Shuxue Zazhi
V. D.Mazurov Characterization of the <C>R</C>udvalis group Mat. Zametki 1982 31 3 321–338, 473 Russian, English translation: Math. Notes 31 (1982), no. 3–4, 165–173 0025-567X 652837 (83f:20015) 20D08 József Pelikán Akademiya Nauk Soyuza SSR. Matematicheskie Zametki
S. A.Syskin Abstract properties of sporadic simple groups Uspekhi Mat. Nauk 1980 35 5(215) 181–212, 272 Russian, English translation: Russian Math. Surveys 35 (1980), no. 5, 209–246 0042-1316 595144 (83c:20027) 20D08 Akademiya Nauk SSSR i Moskovskoe Matematicheskoe Obshchestvo. Uspekhi Matematicheskikh Nauk
M. F.Worboys Generators for the sporadic group <C><M>{\rm Co}_3</M></C> as a <C><M>(2,\,3,\,7)</M></C> group Proc. Edinburgh Math. Soc. (2) 1982 25 1 65–68 0013-0915 648901 (83h:20023) 20D08 Gerard M. Enright PEMSA3 Proceedings of the Edinburgh Mathematical Society. Series II
FrancisBuekenhout Diagrams for geometries and groups J. Combin. Theory Ser. A 1979 27 2 121–151 0097-3165 542524 (83f:51003) 51A05 (20D08 51J05) Joseph A. Thas JCBTA7 Journal of Combinatorial Theory. Series A
Kai NahCheng DieterHeld Finite groups with a standard component of type <C><M>L_3(4)</M></C>. <C>I</C> Rend. Sem. Mat. Univ. Padova 1981 65 59–75 (1982) 0041-8994 653283 (83h:20020) 20D05 (20D08) Gerard M. Enright Rendiconti del Seminario Matematico dell'Università di Padova
JózsefDénes Ki HangKim Simple groups and <C>B</C>oolean matrices An. Fac. Ciênc. Univ. Porto 1980 62 1-4 5–7 0374-521X 663063 (83j:20028) 20D06 (05C25 20D08) AFPOAI Anais de Faculdade de Ciências. Universidade do Porto
DavidFord JohnMcKay Representations and <C>C</C>oxeter graphs The geometric vein Springer 1981 549–554
New York
DGS81 661802 (83h:20010) 20C15 (20D08)
KoichiroHarada On a commutative nonassociative algebra associated with a multiply transitive group J. Fac. Sci. Univ. Tokyo Sect. IA Math. 1981 28 3 843–849 (1982) 0040-8980 656059 (83g:20005) 20B25 (20D08) V. D. Mazurov JFTMAT Journal of the Faculty of Science. University of Tokyo. Section IA. Mathematics
J. F.Humphreys The projective characters of the <C>M</C>athieu group <C><M>M_{22}</M></C> J. Algebra 1982 76 1 1–24 0021-8693 659207 (83g:20015) 20C25 (20D08) V. D. Mazurov JALGA4 Journal of Algebra
J. F.Humphreys The modular characters of the <C>H</C>igman-<C>S</C>ims simple group Proc. Roy. Soc. Edinburgh Sect. A 1982 92 3-4 319–335 0308-2105 677491 (83m:20017) 20C20 (20D08) M. Herzog PEAMDU Proceedings of the Royal Society of Edinburgh. Section A. Mathematical and Physical Sciences
V. G.Kac Infinite-dimensional algebras, <C>D</C>edekind's <C><M>η</M></C>-function, classical <C>M</C>öbius function and the very strange formula Adv. in Math. 1978 30 2 85–136 0001-8708 513845 (83a:17014a) 17B65 (10A45 20D08) Ronald C. King ADMTA4 Advances in Mathematics
V. G.Kac An elucidation of: <Wrap Name="IntRef">``<C>I</C>nfinite-dimensional algebras, <C>D</C>edekind's <C><M>η</M></C>-function, classical <C>M</C>öbius function and the very strange formula''</Wrap>. <C><M>E_8^{(1)}</M></C> and the cube root of the modular invariant <C><M>j</M></C> Adv. in Math. 1980 35 3 264–273 0001-8708 563927 (83a:17014b) 17B65 (10A45 20D08) Ronald C. King ADMTA4 Advances in Mathematics Kac78
``A note on the Mathieu groups M_{12} and M_{23}''
GabrieleKorchmáros The line ovals of the <C>L</C>üneburg plane of order <C><M>2^{2r}</M></C> that can be transformed into themselves by a collineation group isomorphic to the simple group <C><M>{\rm Sz}(2^r)</M></C> of <C>S</C>uzuki Atti Accad. Naz. Lincei Mem. Cl. Sci. Fis. Mat. Natur. Sez. Ia (8) 1979 15 6 293–315 0365-0286 560152 (83c:51005) 51A40 (05B25 20D08) C. W. L. Garner AALMAP Atti della Accademia Nazionale dei Lincei. Memorie. Classe di Scienze Fisiche, Matematiche e Naturali. Sezione Ia. Matematica, Meccanica, Astronomia, Geodesia e Geofisica. Serie VIII
LarissaQueen Modular functions arising from some finite groups Math. Comp. 1981 37 156 547–580 0025-5718 628715 (83d:20008) 20C15 (10D07 20D08) Leo J. Alex MCMPAF Mathematics of Computation
Mark A.Ronan Coverings of certain finite geometries Finite geometries and designs (Proc. Conf., Chelwood Gate, 1980) Cambridge Univ. Press 1981 49 London Math. Soc. Lecture Note Ser. 316–331
Cambridge
CHH81 627510 (83b:51015) 51E99 (05B25 20D08) Francis Buekenhout
RichardWeiss On the geometry of <C>J</C>anko's group <C><M>J_3</M></C> Arch. Math. (Basel) 1982 38 5 410–419 0003-889X 666912 (83k:05054) 05C25 (20D08 20F32 51J05) Jürgen Bierbrauer ACVMAL Archiv der Mathematik. Archives of Mathematics. Archives Mathématiques
MichelBroué MichelEnguehard <C>G</C>éométrie de <C>G</C>raham <C>H</C>igman et groupe de <C>H</C>igman-<C>S</C>ims Séminaire sur les groupes finis. Tome I Université de Paris VII U.E.R. de Mathématiques 1983 14 Publications Mathématiques de l'Université Paris VII [Mathematical Publications of the University of Paris VII] 1–49
Paris
MichelBroué <C>G</C>roupes finis, séries formelles et fonctions modulaires Séminaire sur les groupes finis. Tome I Université de Paris VII U.E.R. de Mathématiques 1983 14 Publications Mathématiques de l'Université Paris VII [Mathematical Publications of the University of Paris VII] 105–127
Paris
DanielFrohardt A trilinear form for the third <C>J</C>anko group J. Algebra 1983 83 2 349–379 0021-8693 714249 (84m:20023) 20D08 Michael Wester JALGA4 Journal of Algebra
Robert L.Griess Jr. The friendly giant Invent. Math. 1982 69 1 1–102 0020-9910 671653 (84m:20024) 20D08 George Glauberman INVMBH Inventiones Mathematicae
Robert A.Wilson The quaternionic lattice for <C><M>2G_2(4)</M></C> and its maximal subgroups J. Algebra 1982 77 2 449–466 0021-8693 673128 (84f:20020) 20D08 (20D45) James F. Hurley JALGA4 Journal of Algebra
ThomasBeth DieterJungnickel Mathieu groups, <C>W</C>itt designs, and <C>G</C>olay codes Geometries and groups (Berlin, 1981) Springer 1981 893 Lecture Notes in Math. 157–179
Berlin
AJ81 655063 (84a:05009) 05B25 (20D08 51E05) Robert A. Liebler
F.Buekenhout Geometries for the <C>M</C>athieu group <C><M>M_{12}</M></C> Combinatorial theory (Schloss Rauischholzhausen, 1982) Springer 1982 969 Lecture Notes in Math. 74–85
Berlin
JV82 692234 (84h:51034) 51E25 (05B25 20D08)
Colin M.Campbell Edmund F.Robertson The efficiency of simple groups of order <C><M>< 10^5</M></C> Comm. Algebra 1982 10 2 217–225 0092-7872 674990 (84g:20028) 20D06 (20D08 20F05) Gerard M. Enright COALDM Communications in Algebra
LinoDi Martino M. ChiaraTamburini Bellani Do finite simple groups always contain subgroups which are not intersection of maximal subgroups? Istit. Lombardo Accad. Sci. Lett. Rend. A 1980 114 65–72 (1982) Italian summary 0021-2504 698670 (84i:20018) 20D06 (20D08) Gerard M. Enright Istituto Lombardo. Accademia di Scienze e Lettere. Rendiconti. Scienze Matematiche, Fisiche, Chimiche e Geologiche. A
J. F.Humphreys Projective character tables for the finite simple groups of order less than one million Comm. Algebra 1983 11 7 725–751 0092-7872 694599 (84e:20012) 20C25 (20D06 20D08) W. J. Wong COALDM Communications in Algebra
JamesLepowsky ArneMeurman An <C><M>E_8</M></C>-approach to the <C>L</C>eech lattice and the <C>C</C>onway group J. Algebra 1982 77 2 484–504 0021-8693 673130 (84a:10033) 10E30 (17B10 20D08 94B40) N. J. A. Sloane JALGA4 Journal of Algebra
A.Reifart G.Stroth On finite simple groups containing perspectivities Geom. Dedicata 1982 13 1 7–46 0046-5755 679214 (84g:20005) 20B25 (20D08 51A10) Ascher Wagner GEMDAT Geometriae Dedicata
Gerhard J. A.Schneider The vertices of the simple modules of <C><M>M_{12}</M></C> over a field of characteristic <C><M>2</M></C> J. Algebra 1983 83 1 189–200 0021-8693 710594 (84i:20013) 20C20 (20D08) P. Donovan JALGA4 Journal of Algebra
RichardWeiss A geometric construction of <C>J</C>anko's group <C><M>J_3</M></C> Math. Z. 1982 179 1 91–95 0025-5874 643049 (84i:05062) 05C25 (05B25 20D08) MAZEAX Mathematische Zeitschrift
AlmaD'Aniello On the existence of self-normalizing nilpotent subgroups in some simple groups. <C>I</C> Atti Accad. Naz. Lincei Rend. Cl. Sci. Fis. Mat. Natur. (8) 1982 73 6 203–206 (1983) Italian. English summary 0392-7881 739389 (85g:20022a) 20D08 (20D10) R. Schmidt AANLAW Atti della Accademia Nazionale dei Lincei. Rendiconti. Classe di Scienze Fisiche, Matematiche e Naturali. Serie VIII
AlmaD'Aniello On the existence of self-normalizing nilpotent subgroups in some simple groups. <C>II</C> Atti Accad. Naz. Lincei Rend. Cl. Sci. Fis. Mat. Natur. (8) 1983 74 1 1–6 Italian. English summary 0392-7881 739392 (85g:20022b) 20D08 (20D10) R. Schmidt AANLAW Atti della Accademia Nazionale dei Lincei. Rendiconti. Classe di Scienze Fisiche, Matematiche e Naturali. Serie VIII
I. B.Frenkel J.Lepowsky A.Meurman A natural representation of the <C>F</C>ischer-<C>G</C>riess <C>M</C>onster with the modular function <C><M>J</M></C> as character Proc. Nat. Acad. Sci. U.S.A. 1984 81 10, Phys. Sci. 3256–3260 0027-8424 747596 (85e:20018) 20D08 (17B67 20C20) PNASA6 Proceedings of the National Academy of Sciences of the United States of America
RichardLyons The <C>S</C>chur multiplier of <C><M>F_3</M></C> is trivial Comm. Algebra 1984 12 15-16 1889–1898 0092-7872 745173 (85e:20019) 20D08 M. E. Harris COALDM Communications in Algebra
M. A.Ronan G.Stroth Minimal parabolic geometries for the sporadic groups European J. Combin. 1984 5 1 59–91 0195-6698 746047 (85e:20020) 20D08 (51B25 51E25) W. M. Kantor European Journal of Combinatorics
HiroyoshiYamaki A conjecture of <C>F</C>robenius and the sporadic simple groups Comm. Algebra 1983 11 22 2513–2518 0092-7872 733339 (85k:20049) 20D08 Richard M. Thomas COALDM Communications in Algebra
R. E.Borcherds J. H.Conway L.Queen N. J. A.Sloane A monster <C>L</C>ie algebra? Adv. in Math. 1984 53 1 75–79 0001-8708 748897 (85j:17024) 17B67 (11H06 20D08) O. V. Shvartsman ADMTA4 Advances in Mathematics
Colin M.Campbell Edmund F.Robertson Presentations for the simple groups <C><M>G</M></C>, <C><M>10^5 < |G| < 10^6</M></C> Comm. Algebra 1984 12 21-22 2643–2663 0092-7872 757785 (85m:20020) 20D06 (20-04 20D08 20F05) David C. Hunt COALDM Communications in Algebra
R. T.Curtis Eight octads suffice J. Combin. Theory Ser. A 1984 36 1 116–123 0097-3165 728509 (85b:05030) 05B05 (20D08) T. S. Griggs JCBTA7 Journal of Combinatorial Theory. Series A
GeoffreyMason Stephen D.Smith Minimal <C><M>2</M></C>-local geometries for the <C>H</C>eld and <C>R</C>udvalis sporadic groups J. Algebra 1982 79 2, part 1 286–306 0021-8693 682880 (85b:20004) 20B25 (20D08 51E20) W. M. Kantor JALGA4 Journal of Algebra
WernerMeyer WolframNeutsch Über <C><M>5</M></C>-<C>D</C>arstellungen der <C>L</C>yonsgruppe Math. Ann. 1984 267 4 519–535 0025-5831 742897 (85k:20038) 20C20 (20D08 51E20) Stephen D. Smith MAANA Mathematische Annalen
J. H.Conway A simple construction for the <C>F</C>ischer-<C>G</C>riess monster group Invent. Math. 1985 79 3 513–540 0020-9910 782233 (86h:20019) 20D08 Geoffrey Mason INVMBH Inventiones Mathematicae
LinoDi Martino Maria ChiaraTamburini Bellani On the solvability of finite <C>IM</C>-groups Istit. Lombardo Accad. Sci. Lett. Rend. A 1981 115 235–242 (1984) Italian summary 0021-2504 780472 (86g:20020) 20D08 (20F99) G. Zappa Istituto Lombardo. Accademia di Scienze e Lettere. Rendiconti. Scienze Matematiche e Applicazioni. A
D. G.Flaass <C><M>2</M></C>-local subgroups of <C>F</C>ischer groups Mat. Zametki 1984 35 3 333–342 Russian 0025-567X 741800 (86a:20014) 20D08 József Pelikán Akademiya Nauk SSSR. Matematicheskie Zametki
Igor B.Frenkel JamesLepowsky ArneMeurman A moonshine module for the <C>M</C>onster Vertex operators in mathematics and physics (Berkeley, Calif., 1983) Springer 1985 3 Math. Sci. Res. Inst. Publ. 231–273
New York
LMS85 781381 (86m:20024) 20D08 (17B10 17B67) Alex Jay Feingold
D.Frohardt Toward the construction of an algebra for <C>O</C>'<C>N</C>an's group Proceedings of the Rutgers group theory year, 1983–1984 (New Brunswick, N.J., 1983–1984) Cambridge Univ. Press 1985 107–110
Cambridge
AGLetal85 817241 20D08 (20C20)
D. F.Holt The triviality of the multiplier of <C>T</C>hompson's group <C><M>F_3</M></C> J. Algebra 1985 94 2 317–323 0021-8693 792957 (86f:20017) 20D08 (20E32 20F05) Ulrich Dempwolff JALGA4 Journal of Algebra
MasaakiKitazume A <C><M>2</M></C>-local geometry for the <C>F</C>ischer group <C><M>F_{24}</M></C> J. Fac. Sci. Univ. Tokyo Sect. IA Math. 1984 31 1 59–79 0040-8980 743519 (86e:20016) 20D08 (20F32 51E30) Stephen D. Smith JFTMAT Journal of the Faculty of Science. University of Tokyo. Section IA. Mathematics
R. J.List M. A.Salman On the representation of <C>C</C>onway's group in <C><M>{\rm O}^+_{24}(2)</M></C> Geom. Dedicata 1984 17 2 185–188 0046-5755 771195 (86c:20020) 20D08 Geoffrey Mason GEMDAT Geometriae Dedicata
A. A.Makhnëv A characterization of the <C>T</C>its simple group Groups and other algebraic systems with finiteness conditions ``Nauka'' Sibirsk. Otdel. 1984 4 Trudy Inst. Mat. 28–49
Novosibirsk
Russian Mer84 755885 (86k:20012) 20D08 V. Mazurov
WernerMeyer WolframNeutsch RichardParker The minimal <C><M>5</M></C>-representation of <C>L</C>yons' sporadic group Math. Ann. 1985 272 1 29–39 0025-5831 794089 (86i:20025) 20D08 R. W. Carter MAANA Mathematische Annalen
S. P.Norton More on moonshine Computational group theory (Durham, 1982) Academic Press 1984 185–193
London
Atk84 760657 (86h:20020) 20D08
ArunasRudvalis A rank <C><M>3</M></C> simple group of order <C><M>2^{14} \cdot 3^3 \cdot 5^3 \cdot 7 \cdot 13 \cdot 29</M></C>. <C>I</C> J. Algebra 1984 86 1 181–218 0021-8693 727376 (86f:20018a) 20D08 (20E32) D. Wales JALGA4 Journal of Algebra
ArunasRudvalis A rank <C><M>3</M></C> simple group <C><M>G</M></C> of order <C><M>2^{14} \cdot 3^3 \cdot 5^3 \cdot 7 \cdot 13 \cdot 29</M></C>. <C>II</C>. <C>C</C>haracters of <C><M>G</M></C> and <C><M>\hat{{G}}</M></C> J. Algebra 1984 86 1 219–258 0021-8693 727377 (86f:20018b) 20D08 (20E32) D. Wales JALGA4 Journal of Algebra
G.Stroth S. K.Wong Minimal parabolic systems involving <C><M>S_5</M></C> and <C><M>S_3</M></C> Proceedings of the Rutgers group theory year, 1983–1984 (New Brunswick, N.J., 1983–1984) Cambridge Univ. Press 1985 225–228
Cambridge
AGLetal85 817254 20D08 (20G05 20G40)
J.Tits On <C>R</C>. <C>G</C>riess' ``friendly giant'' Invent. Math. 1984 78 3 491–499 0020-9910 768989 (86f:20019) 20D08 Stephen D. Smith INVMBH Inventiones Mathematicae
JacquesTits Le <C>M</C>onstre (d'après <C>R</C>. <C>G</C>riess, <C>B</C>. <C>F</C>ischer et al.) Astérisque 1985 121-122 105–122 Seminar Bourbaki, Vol. 1983/84 0303-1179 768956 (86j:20014) 20D08 P. Fong Astérisque
Robert A.Wilson The maximal subgroups of the <C>L</C>yons group Math. Proc. Cambridge Philos. Soc. 1985 97 3 433–436 0305-0041 778677 (86e:20017) 20D08 Geoffrey Mason MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society b
SatoshiYoshiara The maximal subgroups of the sporadic simple group of <C>O</C>'<C>N</C>an J. Fac. Sci. Univ. Tokyo Sect. IA Math. 1985 32 1 105–141 0040-8980 783183 (86m:20025) 20D08 Mark A. Ronan JFTMAT Journal of the Faculty of Science. University of Tokyo. Section IA. Mathematics
KenziAkiyama A note on the <C>M</C>athieu groups <C><M>M_{12}</M></C> and <C><M>M_{23}</M></C> Bull. Central Res. Inst. Fukuoka Univ. 1983 66 1–5 0287-0002 730316 (86m:20003a) 20B10 (20D08) Bulletin of Central Research Institute Fukuoka University
KenziAkiyama Corrections and supplements to: <Wrap Name="IntRef">``<C>A</C> note on the <C>M</C>athieu groups <C><M>M_{12}</M></C> and <C><M>M_{23}</M></C>''</Wrap> Fukuoka Univ. Sci. Rep. 1984 14 2 53–59 0386-118X 771175 (86m:20003b) 20B10 (20D08) Fukuoka University Science Reports Aki83
M.Aschbacher R.Guralnick Some applications of the first cohomology group J. Algebra 1984 90 2 446–460 0021-8693 760022 (86m:20060) 20J06 (20C15 20D08) W. Kimmerle JALGA4 Journal of Algebra
J. L.Brenner R. M.Guralnick JamesWiegold Two-generator groups. <C>III</C> Contributions to group theory Amer. Math. Soc. 1984 33 Contemp. Math. 82–89
Providence, RI
ARS84 767101 (86f:20030) 20F05 (20D08) H. Heineken
Patrick L. H.Brooke On matrix representations and codes associated with the simple group of order <C><M>25920</M></C> J. Algebra 1984 91 2 536–566 0021-8693 769588 (86d:20012) 20C20 (20B25 20D08 94B99) Jürgen Bierbrauer JALGA4 Journal of Algebra
Colin M.Campbell Edmund F.Robertson On the simple groups of order less than <C><M>10^5</M></C> Groups—Korea 1983 (Kyoungju, 1983) Springer 1984 1098 Lecture Notes in Math. 15–20
Berlin
KN84 781353 (86g:20018) 20D06 (20D08 20F05) Gerard M. Enright
A. N.Fëdorov Quasi-identities of finite simple groups Vestnik Moskov. Univ. Ser. I Mat. Mekh. 1983 5 16–18 Russian, English translation: Moscow Univ. Math. Bull. 38 (1983), no. 5, 17–20 0201-7385 722443 (86a:20013) 20D06 (08B05 20D08) Vestnik Moskovskogo Universiteta. Seriya I. Matematika, Mekhanika
D. R.Hughes A combinatorial construction of the small <C>M</C>athieu designs and groups Algebraic and geometric combinatorics North-Holland 1982 65 North-Holland Math. Stud. 259–264
Amsterdam
Men82 772601 (86j:05028) 05B05 (20D08)
John F.Humphreys The <C>S</C>chur multiplier of the automorphism group of the <C>M</C>athieu group <C><M>M_{22}</M></C> Rocky Mountain J. Math. 1985 15 1 155–156 0035-7596 779259 (86e:20013) 20C25 (20D08 20F28) Henry S. Leonard, Jr. RMJMAE The Rocky Mountain Journal of Mathematics
A. I.Kostrikin The mathematical heritage of <C>O</C>. <C>Y</C>u. <C>S</C>hmidt Algebra Moskov. Gos. Univ. 1982 3–6
Moscow
Russian Kos82a 790697 (86h:01058) 01A60 (20D08) E. G. Giessmann
G.Mason Modular forms and the theory of <C>T</C>hompson series Proceedings of the Rutgers group theory year, 1983–1984 (New Brunswick, N.J., 1983–1984) 1985 391–407
Cambridge
Cambridge Univ. Press AGLetal85 817271 11F11 (11F33 20C30 20D08)
A.Neumaier Rectagraphs, diagrams, and <C>S</C>uzuki's sporadic simple group Algebraic and geometric combinatorics North-Holland 1982 65 North-Holland Math. Stud. 305–318
Amsterdam
Men82 772605 (86b:51024) 51E25 (05C25 20D08) Francis Buekenhout
Cheryl E.Praeger Symmetric graphs and the classification of the finite simple groups Groups—Korea 1983 (Kyoungju, 1983) Springer 1984 1098 Lecture Notes in Math. 99–110
Berlin
KN84 781363 (86f:05069) 05C25 (20B15 20D08) Norman Biggs
Thomas M.Thompson From error-correcting codes through sphere packings to simple groups Mathematical Association of America 1983 21 Carus Mathematical Monographs
Washington, DC
0-88385-023-0 749038 (86j:94002) 94-03 (01A60 11T71 20D08 52A45 94Bxx) M. Răduică xiv+228
JacquesTits Symétries C. R. Acad. Sci. Sér. Gén. Vie Sci. 1985 2 1 13–25 0762-0969 795679 (86i:20001) 20-01 (12F10 20D08) H. S. M. Coxeter Comptes Rendus de l'Académie des Sciences. Série Générale. La Vie des Sciences
Robert A.Wilson The maximal subgroups of <C>C</C>onway's group <C><M>{\rm Co}_1</M></C> J. Algebra 1983 85 1 144–165 0021-8693 723071 (86b:20015) 20D05 (20D08) JALGA4 Journal of Algebra a
Robert A.Wilson The maximal subgroups of <C>C</C>onway's group <M>\cdot 2</M> J. Algebra 1983 84 1 107–114 0021-8693 716772 (86e:20034a) 20E28 (20D08) Stephen D. Smith JALGA4 Journal of Algebra b
Robert A.Wilson The complex <C>L</C>eech lattice and maximal subgroups of the <C>S</C>uzuki group J. Algebra 1983 84 1 151–188 0021-8693 716777 (86e:20034b) 20E28 (20D08) Stephen D. Smith JALGA4 Journal of Algebra c
Robert A.Wilson On maximal subgroups of the <C>F</C>ischer group <C><M>{\rm Fi}_{22}</M></C> Math. Proc. Cambridge Philos. Soc. 1984 95 2 197–222 0305-0041 735364 (86e:20036) 20E28 (20D08) Gerard M. Enright MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society b
Robert A.Wilson The geometry and maximal subgroups of the simple groups of <C>A</C>. <C>R</C>udvalis and <C>J</C>. <C>T</C>its Proc. London Math. Soc. (3) 1984 48 3 533–563 0024-6115 735227 (86e:20035) 20E28 (20C30 20D08) David C. Hunt PLMTAL Proceedings of the London Mathematical Society. Third Series a
MichaelAschbacher Overgroups of <C>S</C>ylow subgroups in sporadic groups Mem. Amer. Math. Soc. 1986 60 343 iv+235 0065-9266 831891 (87e:20037) 20D08 (20B25 20D05) Gernot Stroth MAMCAU Memoirs of the American Mathematical Society
FrancisBuekenhout Diagram geometries for sporadic groups Finite groups—coming of age (Montreal, Que., 1982) Amer. Math. Soc. 1985 45 Contemp. Math. 1–32
Providence, RI
McK85 822231 (87d:20019) 20D08 (51B25) S. V. Tsaranov
Kerope B.Tchakerian The maximal subgroups of the <C>T</C>its simple group Pliska Stud. Math. Bulgar. 1986 8 85–93 0204-9805 866648 (87m:20050) 20D08 (20E28) Geoffrey Mason Pliska Studia Mathematica Bulgarica
LinoDi Martino Mathieu groups Note Mat. 1984 4 2 149–435 (1985) Italian 1123-2536 820420 (87a:20015) 20D08 Jürgen Bierbrauer Note di Matematica
I. B.Frenkel J.Lepowsky A.Meurman An <C><M>E_8</M></C>-approach to <C><M>F_1</M></C> Finite groups—coming of age (Montreal, Que., 1982) Amer. Math. Soc. 1985 45 Contemp. Math. 99–120
Providence, RI
McK85 822236 (87e:20038) 20D08 (17B25) O. V. Shvartsman
I. B.Frenkel J.Lepowsky A.Meurman An introduction to the <C>M</C>onster Workshop on unified string theories (Santa Barbara, Calif., 1985) World Sci. Publishing 1986 533–546
Singapore
GG86 849120 20D08
Robert L.Griess Jr. The <C>M</C>onster and its nonassociative algebra Finite groups—coming of age (Montreal, Que., 1982) Amer. Math. Soc. 1985 45 Contemp. Math. 121–157
Providence, RI
McK85 822237 (87f:20025) 20D08 Geoffrey Mason
R. L.Griess Jr. Schur multipliers of the known finite simple groups. <C>III</C> Proceedings of the Rutgers group theory year, 1983–1984 (New Brunswick, N.J., 1983–1984) Cambridge Univ. Press 1985 69–80
Cambridge
DGM86 817238 (87g:20027) 20D08 (20C25) R. W. Carter
Jonathan I.Hall MarshallHall Jr. Geometry of the <C>H</C>all-<C>J</C>anko group Proceedings of the conference on groups and geometry, Part B (Madison, Wis., 1985) 1985 2 390–398 COS85 0741-9937 852415 (87m:20051) 20D08 (51E30) Geoffrey Mason Algebras, Groups and Geometries Algebras Groups Geom. Jian HuaHuang A characterization of the <C><M>2</M></C>-local subgroups of <C>R</C>udvalis group and <C>H</C>igman-<C>S</C>ims group Group theory, Beijing 1984 Springer 1986 1185 Lecture Notes in Math. 289–307
Berlin
Dua86 842449 (87g:20028) 20D08 Gernot Stroth
David C.Hunt Rational rigidity and the sporadic groups J. Algebra 1986 99 2 577–592 0021-8693 837564 (87h:20036) 20D08 Koichiro Harada JALGA4 Journal of Algebra
A. A.Ivanov S. V.Tsaranov S. V.Shpektorov Maximal subgroups of the <C>O</C>'<C>N</C>an-<C>S</C>ims sporadic simple group and its automorphism group Dokl. Akad. Nauk SSSR 1986 291 4 777–780 Russian, English translation: Soviet Math. Dokl. 34 (1987), no. 3, 534–537 0002-3264 871938 (87m:20052) 20D08 (20E28) V. D. Mazurov Doklady Akademii Nauk SSSR
L. S.Kazarin A problem of <C>S</C>. <C>A</C>. <C>C</C>hunikhin Studies in group theory Akad. Nauk SSSR Ural. Nauchn. Tsentr 1984 81–99, 151
Sverdlovsk
Russian Sta84 818998 (87c:20042) 20D08 V. D. Mazurov
V. D.Mazurov N. P.Mazurova Large subgroups of the simple group <C><M>F_2</M></C> Mat. Zametki 1985 37 2 145–151, 299 Russian 0025-567X 784358 (87a:20016) 20D08 (20-04) József Pelikán Akademiya Nauk SSSR. Matematicheskie Zametki
S. P.Norton The uniqueness of the <C>F</C>ischer-<C>G</C>riess <C>M</C>onster Finite groups—coming of age (Montreal, Que., 1982) Amer. Math. Soc. 1985 45 Contemp. Math. 271–285
Providence, RI
McK85 822242 (87b:20025) 20D08 (20D05) Koichiro Harada
M. A.Ronan Buildings and sporadic groups Finite groups—coming of age (Montreal, Que., 1982) Amer. Math. Soc. 1985 45 Contemp. Math. 295–301
Providence, RI
McK85 822244 (87d:20020) 20D08 (51B25) S. V. Tsaranov
L. A.Rosati Buildings and the geometry of diagrams Springer-Verlag 1986 1181 Lecture Notes in Mathematics
Berlin
Lectures given at the third 1984 session of the Centro Internazionale Matematico Estivo (CIME) held in Como, August 26–September 4, 1984 3-540-16466-9 843388 (87d:51001) 51-06 (00A11 05-06 20-06 20D05 20D08 20E32 51B05) viii+269
Stephen D.Smith On the head characters of the <C>M</C>onster simple group Finite groups—coming of age (Montreal, Que., 1982) Amer. Math. Soc. 1985 45 Contemp. Math. 303–313
Providence, RI
McK85 822245 (87h:20037) 20D08 Geoffrey Mason
G.Stroth Parabolics in finite groups Proceedings of the Rutgers group theory year, 1983–1984 (New Brunswick, N.J., 1983–1984) Cambridge Univ. Press 1985 211–223
Cambridge
AGLetal85 817253 (87d:20021) 20D08 (20-02 20G40) Francis Buekenhout
Robert A.Wilson The maximal subgroups of the <C>O</C>'<C>N</C>an group J. Algebra 1985 97 2 467–473 0021-8693 812997 (87d:20022) 20D08 József Pelikán JALGA4 Journal of Algebra c
Robert A.Wilson Maximal subgroups of automorphism groups of simple groups J. London Math. Soc. (2) 1985 32 3 460–466 0024-6107 825921 (87a:20017) 20D08 (20D45) Koichiro Harada JLMSAK Journal of the London Mathematical Society. Second Series a
Robert A.Wilson Is <C><M>J_1</M></C> a subgroup of the <C>M</C>onster? Bull. London Math. Soc. 1986 18 4 349–350 0024-6093 838799 (87i:20030) 20D08 P. Fong LMSBBT The Bulletin of the London Mathematical Society b
Robert A.Wilson The geometry of the <C>H</C>all-<C>J</C>anko group as a quaternionic reflection group Geom. Dedicata 1986 20 2 157–173 0046-5755 833844 (87i:20031) 20D08 (20H15 51F15) Stephen D. Smith GEMDAT Geometriae Dedicata a
HiroyoshiYamaki A conjecture of <C>F</C>robenius and the sporadic simple groups. <C>II</C> Math. Comp. 1986 46 174 609–611, S43–S46 0025-5718 829631 (87i:20033) 20D08 Richard M. Thomas MCMPAF Mathematics of Computation
Z.Arad J.Stavi M.Herzog Powers and products of conjugacy classes in groups Products of conjugacy classes in groups Springer 1985 1112 Lecture Notes in Math. 6–51
Berlin
AH85 783068 20D06 (20A15 20D08)
ZviArad DavidChillag GadiMoran Groups with a small covering number Products of conjugacy classes in groups Springer 1985 1112 Lecture Notes in Math. 222–244
Berlin
AH85 783071 20D06 (20D08 20D60)
V. A.Belonogov A generalization of thin groups Studies in group theory Akad. Nauk SSSR Ural. Nauchn. Tsentr 1984 32–38, 150
Sverdlovsk
Russian Sta84 818992 (87b:20019) 20D05 (20D08) N. D. Podufalov
Richard E.Borcherds Vertex algebras, <C>K</C>ac-<C>M</C>oody algebras, and the <C>M</C>onster Proc. Nat. Acad. Sci. U.S.A. 1986 83 10 3068–3071 0027-8424 843307 (87m:17033) 17B67 (17B10 20D08) S. I. Gelʹfand PNASA6 Proceedings of the National Academy of Sciences of the United States of America
Kai NahCheng DieterHeld Finite groups with a standard-component of type <C><M>L_3(4)</M></C>. <C>II</C> Rend. Sem. Mat. Univ. Padova 1985 73 147–167 0041-8994 799904 (87c:20037) 20D05 (20D08) Gerard M. Enright Rendiconti del Seminario Matematico della Università di Padova. The Mathematical Journal of the University of Padova
WalterFeit Blocks with cyclic defect groups for some sporadic groups Representation theory, II (Ottawa, Ont., 1984) Springer 1986 1178 Lecture Notes in Math. 25–63
Berlin
DGM86 842477 (87e:20023) 20C20 (20D08) J. L. Alperin
J. A.Harvey Twisting the heterotic string Workshop on unified string theories (Santa Barbara, Calif., 1985) World Sci. Publishing 1986 704–718
Singapore
GG86 849133 81G20 (20D08 81E20)
GudrunHoyden-Siedersleben Realisierung der <C>J</C>ankogruppen <C><M>J_1</M></C> und <C><M>J_2</M></C> als <C>G</C>aloisgruppen über <C><M>{\bf Q}</M></C> J. Algebra 1985 97 1 17–22 0021-8693 812166 (87e:12004) 12E05 (11R32 20D08) W. Feit JALGA4 Journal of Algebra
Michael J.Kallaher John B.Fink Sporadic simple groups acting on finite translation planes Finite geometries (Winnipeg, Man., 1984) Dekker 1985 103 Lecture Notes in Pure and Appl. Math. 171–178
New York
BB85 826807 (87k:51025) 51E15 (20B25 20D08 20H15 51A40)
ShimyKarni Covering numbers of groups of small order and sporadic groups Products of conjugacy classes in groups Springer 1985 1112 Lecture Notes in Math. 52–196
Berlin
AH85 783069 20D06 (20C15 20D08 20D60)
MasaoKoike Mathieu group <C><M>M_{24}</M></C> and modular forms Nagoya Math. J. 1985 99 147–157 0027-7630 805086 (87e:11060) 11F11 (11F20 20D08) Marvin I. Knopp NGMJA2 Nagoya Mathematical Journal
A. A.Makhnëv Finite simple groups with a standard subgroup of type <C><M>L_3(4)</M></C> Mat. Zametki 1985 37 1 7–12, 137 Russian 0025-567X 792228 (87e:20034) 20D05 (20D08) Sergei A. Syskin Akademiya Nauk SSSR. Matematicheskie Zametki
GeoffreyMason <C><M>M_{24}</M></C> and certain automorphic forms Finite groups—coming of age (Montreal, Que., 1982) Amer. Math. Soc. 1985 45 Contemp. Math. 223–244
Providence, RI
McK85 822240 (87c:11041) 11F11 (20C15 20D08) Marvin I. Knopp
A. V.Romanovskiĭ Isklyuchitelnye kharaktery konechnykh grupp ``Nauka i Tekhnika'' 1985
Minsk
806958 (87a:20005) 20C15 (20D08 20D20) Gerhard Pazderski 148
Mark A.Ronan Stephen D.Smith Universal presheaves on group geometries, and modular representations J. Algebra 1986 102 1 135–154 0021-8693 853235 (87m:20022) 20C05 (20D08 20G05 51B25 57S30) Guy Rousseau JALGA4 Journal of Algebra
Stephen D.Smith Residual geometries for sporadic and classical groups—a survey Finite groups—coming of age (Montreal, Que., 1982) Amer. Math. Soc. 1985 45 Contemp. Math. 315–334
Providence, RI
McK85 822246 (87d:51010) 51B25 (20D08) Francis Buekenhout
John G.Thompson Some finite groups which appear as <C><M>{\rm Gal}\,L/K</M></C>, where <C><M>K \subseteq{\bf Q}(μ_n)</M></C> J. Algebra 1984 89 2 437–499 0021-8693 751155 (87f:12012) 12F10 (11F80 20D08) B. Heinrich Matzat JALGA4 Journal of Algebra
RichardWeiss A characterization of the group <C><M>\hat{{M}}_{12}</M></C> Proceedings of the conference on groups and geometry, Part B (Madison, Wis., 1985) 1985 2 555–563 COS85 0741-9937 852424 (87k:20010) 20B25 (05C25 20D08) Geoffrey Mason Algebras, Groups and Geometries Algebras Groups Geom.
Andrew J.Woldar On the <C><M>5</M></C>-decomposition matrix for <C>M</C>c<C>L</C>aughlin's sporadic simple group Comm. Algebra 1986 14 2 277–291 0092-7872 817046 (87a:20007) 20C20 (20D08) J. L. Alperin COALDM Communications in Algebra
FrancisBuekenhout SarahRees The subgroup structure of the <C>M</C>athieu group <C><M>M_{12}</M></C> Math. Comp. 1988 50 182 595–605 0025-5718 929556 (88m:20024) 20D08 Koichiro Harada MCMPAF Mathematics of Computation
Ts. R.Gentchev Factorizations of the sporadic simple groups Arch. Math. (Basel) 1986 47 2 97–102 0003-889X 859256 (88f:20031) 20D08 (20D40) ACVMAL Archiv der Mathematik
Robert L.Griess Jr. The <C>S</C>chur multiplier of <C>M</C>c<C>L</C>aughlin's simple group. <C>A</C>ddendum: <Wrap Name="IntRef">``<C>S</C>chur multipliers of the known finite simple groups. <C>III</C>'' [<C>P</C>roceedings of the <C>R</C>utgers group theory year, 1983–1984 (<C>N</C>ew <C>B</C>runswick, <C>N</C>.<C>J</C>., 1983–1984), 69–80, <C>C</C>ambridge <C>U</C>niv. <C>P</C>ress, <C>C</C>ambridge, 1985; <C>MR</C>0817238 (87g:20027)]</Wrap> Arch. Math. (Basel) 1987 48 1 31 0003-889X 878003 (88d:20029) 20D08 (20C25) R. W. Carter ACVMAL Archiv der Mathematik Gri85b
Robert L.Griess Jr. Sporadic groups, code loops and nonvanishing cohomology Proceedings of the Northwestern conference on cohomology of groups (Evanston, Ill., 1985) 1987 44 191–214 0022-4049 FP87 885104 (88c:20024) 20D08 (20J06 20N05) David Benson JPAAA2 Journal of Pure and Applied Algebra J. Pure Appl. Algebra
A. A.Ivanov S. V.Shpektorov A geometry for the <C>O</C>'<C>N</C>an-<C>S</C>ims group, connected with the <C>P</C>etersen graph Uspekhi Mat. Nauk 1986 41 3(249) 183–184 Russian 0042-1316 854252 (88j:20014) 20D08 (05C25 51B25) Akademiya Nauk SSSR i Moskovskoe Matematicheskoe Obshchestvo. Uspekhi Matematicheskikh Nauk
Mohammad I.Khanfar A <C><M>28</M></C>-dimensional representation in <C><M>F_2</M></C> of a subgroup of the <C>R</C>udvalis group Arabian J. Sci. Engrg. 1987 12 2 231–235 Arabic summary 0377-9211 886721 (88g:20026) 20D08 (20F05) Gerard M. Enright AJSEDY Arabian Journal for Science and Engineering
Peter B.Kleidman Robert A.Wilson <C>T</C>he maximal subgroups of <C><M>{\rm Fi}_{22}</M></C> Math. Proc. Cambridge Philos. Soc. 1987 102 1 17–23 0305-0041 886431 (88j:20015a) 20D08 (20E28) Geoffrey Mason MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society
Peter B.Kleidman Robert A.Wilson Corrigendum: <Wrap Name="IntRef">``<C>T</C>he maximal subgroups of <C><M>{\rm Fi}_{22}</M></C>''</Wrap> Math. Proc. Cambridge Philos. Soc. 1988 103 2 383 0305-0041 923691 (88j:20015b) 20D08 (20E28) Geoffrey Mason MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society KW87
N. P.Mazurova Subgroups of large finite groups and a problem of linear optimization Algebra i Logika 1986 25 4 405–414, 494 Russian, English translation: Algebra and Logic 25 (1986), no. 4, 257–260 0373-9252 903552 (88m:20025) 20D08 (90C05) È. M. Palʹchik Akademiya Nauk SSSR. Sibirskoe Otdelenie. Institut Matematiki. Algebra i Logika
S. P.Norton R. A.Wilson Maximal subgroups of the <C>H</C>arada-<C>N</C>orton group J. Algebra 1986 103 1 362–376 0021-8693 860712 (88b:20029) 20D08 (20E28) Geoffrey Mason JALGA4 Journal of Algebra
HerbertPahlings The subgroup structure of the <C>H</C>all-<C>J</C>anko group <C><M>J_2</M></C> Bayreuth. Math. Schr. 1987 23 135–165 0172-1062 882062 (88g:20027) 20D08 (20E07 20E28) Gerard M. Enright Bayreuther Mathematische Schriften
Wu JieShi A characterization of <C><M>J_1</M></C> and <C><M>{\rm PSL}_2(2^n)</M></C> Adv. in Math. (Beijing) 1987 16 4 397–401 Chinese. English summary 1000-0917 915862 (88i:20025) 20D08 (20D06 20G40) Advances in Mathematics. Shuxue Jinzhan
RichardWeiss A characterization and another construction of <C>J</C>anko's group <C><M>J_3</M></C> Trans. Amer. Math. Soc. 1986 298 2 621–633 0002-9947 860383 (88g:20028) 20D08 (05C25 20F05) Richard M. Thomas TAMTAM Transactions of the American Mathematical Society
R. A.Wilson Maximal subgroups of sporadic groups Proceedings of groups—St. Andrews 1985 Cambridge Univ. Press 1986 121 London Math. Soc. Lecture Note Ser. 352–358
Cambridge
RC86 896534 (88e:20016) 20D08 (20E28) Koichiro Harada c
Robert A.Wilson Some subgroups of the <C>B</C>aby <C>M</C>onster Invent. Math. 1987 89 1 197–218 0020-9910 892191 (88d:20030) 20D08 (20E28) Bernd Baumann INVMBH Inventiones Mathematicae a
Robert A.Wilson The local subgroups of the <C>F</C>ischer groups J. London Math. Soc. (2) 1987 36 1 77–94 0024-6107 897676 (88k:20037) 20D08 Geoffrey Mason JLMSAK Journal of the London Mathematical Society. Second Series b
Robert A.Wilson The odd-local subgroups of the <C>M</C>onster J. Austral. Math. Soc. Ser. A 1988 44 1 1–16 0263-6115 914399 (88k:20038) 20D08 Gernot Stroth JAMADS Australian Mathematical Society. Journal. Series A. Pure Mathematics and Statistics a
Robert A.Wilson Some subgroups of the <C>T</C>hompson group J. Austral. Math. Soc. Ser. A 1988 44 1 17–32 0263-6115 914400 (88k:20039) 20D08 Gernot Stroth JAMADS Australian Mathematical Society. Journal. Series A. Pure Mathematics and Statistics c
Andrew J.Woldar On the maximal subgroups of <C>L</C>yons' group Comm. Algebra 1987 15 6 1195–1203 0092-7872 882949 (88b:20030) 20D08 (20E28) Koichiro Harada COALDM Communications in Algebra
L. B.Beasley J. L.Brenner Two-generator groups. <C>IV</C>. <C>C</C>onjugate pairs of generators in <C><M>{\rm PSL}(2,p),\;{\rm PSL}(3,p)</M></C>. <C>T</C>he spread of the <C>M</C>athieu groups. <C>C</C>ospread. <C>O</C>uter dimension Proceedings of the seventeenth Southeastern international conference on combinatorics, graph theory, and computing (Boca Raton, Fla., 1986) 1986 53 95–112 HMSR86 0384-9864 885239 (88f:20052) 20F05 (20D06 20D08 20G40) H. Heineken Congressus Numerantium. A Conference Journal on Numerical Themes Congr. Numer.
OusmaneDiawara Les caractères permutants primitifs du groupe sporadique de <C>M</C>c<C>L</C>aughlin Bull. Soc. Math. Belg. Sér. B 1986 38 2 131–135 0037-9476 871308 (88h:20009) 20C15 (20D08) BMBEAC Bulletin de la Société Mathématique de Belgique. Série B
JohnFink Michael J.Kallaher Simple groups acting on translation planes J. Geom. 1987 29 2 126–139 0047-2468 904569 (88j:51009) 51E15 (20D08 51A40) Ulrich Dempwolff JGMAY3 Journal of Geometry
J. A.Harvey Twisting the heterotic string Lewes string theory workshop (Lewes, Del., 1985) World Sci. Publishing 1986 262–276
Singapore
CH86 848762 81E20 (20D08 83E15)
GudrunHoyden-Siedersleben B. HeinrichMatzat Realisierung sporadischer einfacher <C>G</C>ruppen als <C>G</C>aloisgruppen über <C>K</C>reisteilungskörpern J. Algebra 1986 101 1 273–286 0021-8693 843705 (88d:12001) 12E05 (11R32 20D08) W. Feit JALGA4 Journal of Algebra
A. A.Ivanov I. V.Chuvaeva Action of the group <C><M>M_{12}</M></C> on <C>H</C>adamard matrices Investigations in the algebraic theory of combinatorial objects (Russian) Vsesoyuz. Nauchno-Issled. Inst. Sistem. Issled. 1985 159–169
Moscow
Russian KF85b 921467 (88k:20033) 20C30 (05B20 20D08) E. J. F. Primrose
B. HeinrichMatzat AndreasZeh-Marschke Realisierung der <C>M</C>athieugruppen <C><M>M_{11}</M></C> und <C><M>M_{12}</M></C> als <C>G</C>aloisgruppen über <C><M>{\bf Q}</M></C> J. Number Theory 1986 23 2 195–202 0022-314X 845901 (88c:12008) 12G05 (11R32 20D08) W. Feit JNUTA9 Journal of Number Theory
Th.Ostermann Charaktertafeln von <C>S</C>ylownormalisatoren sporadischer einfacher <C>G</C>ruppen Universität Essen Fachbereich Mathematik 1986 14 Vorlesungen aus dem Fachbereich Mathematik der Universität GH Essen [Lecture Notes in Mathematics at the University of Essen]
Essen
872094 (88g:20002) 20-04 (20C20 20D08) M. F. Newman x+187
L. H.Soicher Presentations of some finite groups with applications to the <C>O</C>'<C>N</C>an simple group J. Algebra 1987 108 2 310–316 0021-8693 892906 (88e:20036) 20F05 (20D08) P. Fong JALGA4 Journal of Algebra
Francesca DallaVolta Sporadic groups generated by three involutions Istit. Lombardo Accad. Sci. Lett. Rend. A 1985 119 65–87 (1987) Italian. English summary 0021-2504 927856 (89f:20023) 20D08 (20D05) F. Pérez Monasor Istituto Lombardo. Accademia di Scienze e Lettere. Rendiconti. Scienze Matematiche e Applicazioni. A
O.Diawara Sur les classes de conjugaison des sous-groupes du groupe simple sporadique <C><M>{\rm Mc}</M></C> de <C>J</C>. <C>M</C>c<C>L</C>aughlin. <C>I</C> Simon Stevin 1987 61 3-4 217–234 0037-5454 941731 (89j:20023a) 20D08 (20E15) P. Fong SSWNAX Simon Stevin. A Quarterly Journal of Pure and Applied Mathematics
O.Diawara Sur les classes de conjugaison des sous-groupes du groupe simple sporadique <C><M>{\rm Mc}</M></C> de <C>J</C>. <C>M</C>c<C>L</C>aughlin. <C>II</C> Simon Stevin 1987 61 3-4 235–263 0037-5454 941732 (89j:20023b) 20D08 (20E15) P. Fong SSWNAX Simon Stevin. A Quarterly Journal of Pure and Applied Mathematics
Dragomir Ž.Ðoković Presentations of some finite simple groups J. Austral. Math. Soc. Ser. A 1988 45 2 143–168 0263-6115 951574 (89k:20023) 20D08 (20F05) Gerard M. Enright JAMADS Australian Mathematical Society. Journal. Series A. Pure Mathematics and Statistics
AdilsonGonçalves A characterization of <C><M>J_1</M></C> by a piece of its character table Notas Soc. Mat. Chile 1987 6 1 27–36 0716-1298 933016 (89d:20015) 20D08 (20C15) P. Fong Notas de la Sociedad de Matemática de Chile
Chat YinHo A new <C><M>7</M></C>-local subgroup of the <C>M</C>onster J. Algebra 1988 115 2 513–520 0021-8693 943274 (89h:20026) 20D08 Geoffrey Mason JALGA4 Journal of Algebra
A. A.Ivanov S. V.Shpectorov Geometries for sporadic groups related to the <C>P</C>etersen graph. <C>I</C> Comm. Algebra 1988 16 5 925–953 0092-7872 926330 (89c:20031) 20D08 (05C25 51B25) Jonathan I. Hall COALDM Communications in Algebra
Peter B.Kleidman The maximal subgroups of the <C>S</C>teinberg triality groups <C><M>^3D_4(q)</M></C> and of their automorphism groups J. Algebra 1988 115 1 182–199 0021-8693 937609 (89f:20024) 20D08 (20E28) È. M. Palʹchik JALGA4 Journal of Algebra
Peter B.Kleidman Robert A.Wilson The maximal subgroups of <C><M>J_4</M></C> Proc. London Math. Soc. (3) 1988 56 3 484–510 0024-6115 931511 (89b:20044) 20D08 (20E28) Gernot Stroth PLMTAL Proceedings of the London Mathematical Society. Third Series
V. D.Mazurov N. P.Mazurova Broad subgroups of sporadic groups. <C>I</C> Structural problems in group theory (Russian) Akad. Nauk SSSR Ural. Nauchn. Tsentr 1986 71–84, 140
Sverdlovsk
Russian Sta86 915193 (89e:20035) 20D08 È. M. Palʹchik
Simon P.Norton On the group <C><M>{\rm Fi}_{24}</M></C> Geom. Dedicata 1988 25 1-3 483–501 Geometries and groups (Noordwijkerhout, 1986) 0046-5755 ACK88 925848 (89k:20024) 20D08 GEMDAT Geometriae Dedicata
A. J. E.Ryba A new construction of the <C>O</C>'<C>N</C>an simple group J. Algebra 1988 112 1 173–197 0021-8693 921973 (89b:20045) 20D08 Geoffrey Mason JALGA4 Journal of Algebra a
Wu JieShi A new characterization of the sporadic simple groups Group theory (Singapore, 1987) de Gruyter 1989 531–540
Berlin
CL89 981868 (89k:20025) 20D08 P. Fong
Leonard H.Soicher Presentations for <C>C</C>onway's group <C><M>{\rm Co}_1</M></C> Math. Proc. Cambridge Philos. Soc. 1987 102 1 1–3 0305-0041 886429 (89b:20046) 20D08 (20F05) MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society
GernotStroth RichardWeiss Modified <C>S</C>teinberg relations for the group <C><M>J_4</M></C> Geom. Dedicata 1988 25 1-3 513–525 Geometries and groups (Noordwijkerhout, 1986) 0046-5755 ACK88 925850 (89c:20032) 20D08 R. W. Carter GEMDAT Geometriae Dedicata
MichioSuzuki Elementary proof of the simplicity of sporadic groups Group theory (Singapore, 1987) de Gruyter 1989 195–206
Berlin
CL89 981842 (89k:20026) 20D08 Ulrich Dempwolff
JacquesTits Théorie des groupes Ann. Collège France 1985/86 86 101–112 0069-5580 965793 (89h:20027) 20D08 (11F22) Antonio Pasini Annuaire du Collège de France
JacquesTits Le module du ``moonshine'' [d'après <C>I</C>. <C>F</C>renkel, <C>J</C>. <C>L</C>epowsky et <C>A</C>. <C>M</C>eurman] Astérisque 1987 152-153 5, 285–303 (1988) Séminaire Bourbaki, Vol. 1986/87 0303-1179 936860 (89i:20030) 20D08 (11F22 17B65) P. Fong Astérisque
Marguerite-MarieVirotte-Ducharme Une construction du groupe de <C>F</C>ischer <C><M>{\rm Fi}(24)</M></C> Mém. Soc. Math. France (N.S.) 1987 27 73 English summary 0037-9484 911223 (89a:20013) 20D08 Jonathan I. Hall Mémoires de la Société Mathématique de France. Nouvelle Série
Robert A.Wilson On the <C><M>3</M></C>-local subgroups of <C>C</C>onway's group <C><M>{\rm Co}_1</M></C> J. Algebra 1988 113 1 261–262 0021-8693 928064 (89c:20033) 20D08 Geoffrey Mason JALGA4 Journal of Algebra b
TakeshiKondo TakashiTasaka The theta functions of sublattices of the <C>L</C>eech lattice. <C>II</C> J. Fac. Sci. Univ. Tokyo Sect. IA Math. 1987 34 3 545–572 0040-8980 927601 (89h:11030) 11H06 (11E45 11F27 20D08) N. J. A. Sloane JFTMAT Journal of the Faculty of Science. University of Tokyo. Section IA. Mathematics
J. H.Lindsey II A new lattice for the <C>H</C>all-<C>J</C>anko group Proc. Amer. Math. Soc. 1988 103 3 703–709 0002-9939 947642 (89g:20075) 20G20 (11H06 20D08 20G05) Geoffrey Mason PAMYAR Proceedings of the American Mathematical Society
H.Pahlings Some sporadic groups as <C>G</C>alois groups Rend. Sem. Mat. Univ. Padova 1988 79 97–107 0041-8994 964023 (89i:12004) 12F10 (20D08) J. L. Alperin Rendiconti del Seminario Matematico della Università di Padova. The Mathematical Journal of the University of Padova
Wei ShengQiu An equivalent representation of the <C>M</C>athieu group <C><M>M_{11}</M></C> and its equicentralizer subgroups Northeast. Math. J. 1988 4 1 90–100 1000-1778 970648 (89k:05017) 05B05 (20B25 20D08) Cheryl E. Praeger Northeastern Mathematical Journal. Dongbei Shuxue
A. J. E.Ryba Calculation of the <C><M>7</M></C>-modular characters of the <C>H</C>eld group J. Algebra 1988 117 1 240–255 0021-8693 955602 (89g:20026) 20C20 (20D08) David Benson JALGA4 Journal of Algebra b
S. V.Shpektorov Geometric characterization of the group <C><M>M_{22}</M></C> Investigations in the algebraic theory of combinatorial objects (Russian) Vsesoyuz. Nauchno-Issled. Inst. Sistem. Issled. 1985 112–123
Moscow
Russian KF85b 921463 (89m:51012) 51D20 (20D08 51B05) S. V. Tsaranov
AllanTrojan Geometry in <C>J</C>anko's first group J. Geom. 1988 33 1-2 168–171 0047-2468 963995 (89m:20005) 20B25 (05C25 20D08 51E30) Gernot Stroth JGMAY3 Journal of Geometry
SatoshiYoshiara A lattice theoretical construction of a <C>GAB</C> of the <C>S</C>uzuki sporadic simple group J. Algebra 1988 112 1 198–239 0021-8693 921974 (89a:51030) 51E25 (20D08) Gernot Stroth JALGA4 Journal of Algebra
Johnv. Bon Arjeh M.Cohen HansCuypers Graphs related to <C>H</C>eld's simple group J. Algebra 1989 123 1 6–26 0021-8693 1000473 (90h:20019) 20D08 (05C25 20B25) Marston Conder JALGA4 Journal of Algebra
R. T.Curtis Further elementary techniques using the miracle octad generator Proc. Edinburgh Math. Soc. (2) 1989 32 3 345–353 0013-0915 1015478 (90k:20031) 20D08 Geoffrey Mason PEMSA3 Proceedings of the Edinburgh Mathematical Society. Series II a
R. T.Curtis Natural constructions of the <C>M</C>athieu groups Math. Proc. Cambridge Philos. Soc. 1989 106 3 423–429 0305-0041 1010366 (90h:20020) 20D08 Geoffrey Mason MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society b
OusmaneDiawara The primitive permutation characters of the <C>H</C>eld sporadic simple group Bull. Soc. Math. Belg. Sér. B 1989 41 2 239–246 0037-9476 1022749 (90k:20032) 20D08 (20C15) Gerard M. Enright BMBEAC Bulletin de la Société Mathématique de Belgique. Série B
Robert L.Griess Jr. UlrichMeierfrankenfeld YoavSegev A uniqueness proof for the <C>M</C>onster Ann. of Math. (2) 1989 130 3 567–602 0003-486X 1025167 (90j:20030) 20D08 Gernot Stroth ANMAAH Annals of Mathematics. Second Series
DieterHeld The situation of <C><M>{\rm Sp}_4(4) \cdot 2</M></C> in the sporadic simple group <C><M>{\rm He}</M></C> Rend. Sem. Mat. Univ. Padova 1988 80 117–125 (1989) 0041-8994 988117 (90f:20021) 20D08 S. V. Tsaranov Rendiconti del Seminario Matematico della Università di Padova. The Mathematical Journal of the University of Padova
G.Hiss K.Lux Brauer trees of sporadic groups The Clarendon Press Oxford University Press 1989 Oxford Science Publications
New York
0-19-853381-0 1033265 (91k:20018) 20C20 (20-02 20D08) Harvey Blau x+526
A. A.Ivanov S. V.Shpectorov Geometries for sporadic groups related to the <C>P</C>etersen graph. <C>II</C> European J. Combin. 1989 10 4 347–361 0195-6698 1005841 (90h:20021) 20D08 (05B25 05C25 51B25) Jonathan I. Hall European Journal of Combinatorics
Peter B.Kleidman Richard A.Parker Robert A.Wilson The maximal subgroups of the <C>F</C>ischer group <C><M>{\rm Fi}_{23}</M></C> J. London Math. Soc. (2) 1989 39 1 89–101 0024-6107 989922 (90e:20014) 20D08 S. V. Tsaranov JLMSAK Journal of the London Mathematical Society. Second Series
MasaoKoike Moonshine. <C>S</C>imple groups and unusual relations to automorphic functions Sūgaku 1988 40 3 237–246 Japanese 0039-470X 974763 (90c:20023) 20D08 (11F03 11F20 11F22) Hong Wen Lu SUGKAQ Mathematical Society of Japan. Sūgaku (Mathematics)
Stephen A.Linton The maximal subgroups of the <C>T</C>hompson group J. London Math. Soc. (2) 1989 39 1 79–88 0024-6107 989921 (90c:20024) 20D08 (20E28) S. V. Tsaranov JLMSAK Journal of the London Mathematical Society. Second Series
V. D.Mazurov N. P.Mazurova A minimal permutation representation of the simple group <C><M>F_5</M></C> Algebra i Logika 1987 26 3 298–317, 398 Russian, English translation: Algebra and Logic 26 (1987), no. 3, 167–178 0373-9252 962884 (90d:20034) 20D08 (20D05) Akademiya Nauk SSSR. Sibirskoe Otdelenie. Institut Matematiki. Algebra i Logika
V. D.Mazurov N. P.Mazurova The minimal permutation representation of the <C>T</C>hompson group Problems in algebra, No. 4 (Russian) (Gomelʹ, 1986) ``Universitet·skoe'' 1989 115–123
Minsk
Russian She89 1011920 (90i:20019) 20D08 (20B15) È. M. Palʹchik
WolframNeutsch WernerMeyer A root system for the <C>L</C>yons group Math. Ann. 1989 283 2 285–299 0025-5831 980599 (90a:20029) 20D08 (51B25) Richard M. Thomas MAANA Mathematische Annalen
PeterRowley On the minimal parabolic system related to <C><M>M_{24}</M></C> J. London Math. Soc. (2) 1989 40 1 40–56 0024-6107 1028913 (90k:20033) 20D08 Gernot Stroth JLMSAK Journal of the London Mathematical Society. Second Series
Wu JieShi A characteristic property of the <C>M</C>athieu groups Chinese Ann. Math. Ser. A 1988 9 5 575–580 Chinese 1000-8314 996733 (90d:20035) 20D08 Jian Hua Huang Chinese Annals of Mathematics. Series A. Shuxue Niankan. A Ji
Wu JieShi A characterization of the <C>C</C>onway simple group <C><M>{\rm Co}_2</M></C> J. Math. (Wuhan) 1989 9 2 171–172 Chinese 0255-7797 1015210 (90g:20016) 20D08 Dao-Rong Ton Journal of Mathematics. Shuxue Zazhi
Anestis A.Toptsis New two-element generating sets for <C><M>M22</M></C>, <C><M>M23</M></C>, <C><M>M24</M></C> Computers in algebra (Chicago, IL, 1985) Dekker 1988 111 Lecture Notes in Pure and Appl. Math. 155–159
New York
Tan88 1060767 20D08 (20F05)
E FangWang Equicentralizer subgroups of sporadic simple groups Group theory (Singapore, 1987) de Gruyter 1989 541–551
Berlin
CL89 981869 (90a:20030) 20D08 (20D25) Wujie Shi
JieWang Computing covering numbers of sporadic simple groups Beijing Daxue Xuebao 1988 24 5 527–534 Chinese. English summary 0479-8023 999245 (90d:20036) 20D08 Jian Hua Huang Beijing Daxue Xuebao. Ziran Kexue Ban. Beijing University Journal. Natural Sciences
Andrew J.Woldar On <C>H</C>urwitz generation and genus actions of sporadic groups Illinois J. Math. 1989 33 3 416–437 0019-2082 996351 (90i:20020) 20D08 (57S25) Marston Conder IJMTAW Illinois Journal of Mathematics b
SatoshiYoshiara Some geometries for <C><M>J_3</M></C> and <C><M>\textrm{O'N}</M></C> European J. Combin. 1989 10 5 499–506 0195-6698 1014558 (90j:20031) 20D08 (20F32 51E30) Ulrich Dempwolff European Journal of Combinatorics b
SatoshiYoshiara On the geometry of the <C>H</C>all-<C>J</C>anko group on 315 points Geom. Dedicata 1989 32 2 173–201 0046-5755 1029673 (90m:20020) 20D08 (51E30) Ulrich Dempwolff GEMDAT Geometriae Dedicata a
IlanZisser The covering numbers of the sporadic simple groups Israel J. Math. 1989 67 2 217–224 0021-2172 1026564 (90k:20034) 20D08 P. Fong ISJMAP Israel Journal of Mathematics
ZviArad HinnitLipman-Gutweter On products of characters in finite groups Houston J. Math. 1989 15 3 305–326 0362-1588 1032392 (90k:20014) 20C15 (20D06 20D08) David Chillag HJMADZ Houston Journal of Mathematics
R. T.Curtis Geometric interpretations of the ``natural'' generators of the <C>M</C>athieu groups Math. Proc. Cambridge Philos. Soc. 1990 107 1 19–26 0305-0041 1021870 (90j:20008) 20B25 (20D08 94B05) Marston Conder MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society
L.Dixon P.Ginsparg J.Harvey Beauty and the beast: superconformal symmetry in a <C>M</C>onster module Comm. Math. Phys. 1988 119 2 221–241 0010-3616 968697 (90b:81119) 81E99 (17A70 17B65 20D08 81E40) Geoffrey Mason CMPHAY Communications in Mathematical Physics
WalterFeit Some finite groups with nontrivial centers which are <C>G</C>alois groups Group theory (Singapore, 1987) de Gruyter 1989 87–109
Berlin
CL89 981836 (90d:12004) 12F10 (12E10 20D06 20D08) Cheryl E. Praeger
DavidFord JohnMcKay Ramifications of <C>R</C>amanujan's work on <C><M>η</M></C>-products Proc. Indian Acad. Sci. Math. Sci. 1989 99 3 221–229 0253-4142 1032708 (90k:11051) 11F22 (11F20 20D08 81E40) Geoffrey Mason Indian Academy of Sciences. Proceedings. Mathematical Sciences
IgorFrenkel JamesLepowsky ArneMeurman Vertex operator algebras and the <C>M</C>onster Academic Press Inc. 1988 134 Pure and Applied Mathematics
Boston, MA
0-12-267065-5 996026 (90h:17026) 17B65 (17B67 20D08 81D15 81E40) Kailash C. Misra liv+508
Jian HuaHuang Ji XinMa BerndStellmacher Amalgams of rank <C><M>2</M></C> in characteristic <C><M>3</M></C> involving <C><M>L_2(5)</M></C> Acta Math. Sinica (N.S.) 1989 5 3 263–270 A Chinese summary appears in Acta Math. Sinica 33 (1990), no. 4, 576 1000-9574 1019626 (90j:20056) 20E06 (20D08) Gernot Stroth Acta Mathematica Sinica. New Series
MasaoKoike Modular forms and the automorphism group of <C>L</C>eech lattice Nagoya Math. J. 1988 112 63–79 0027-7630 974265 (90h:11038) 11F22 (20D08) Geoffrey Mason NGMJA2 Nagoya Mathematical Journal
Mong-LungLang On a question raised by <C>C</C>onway-<C>N</C>orton J. Math. Soc. Japan 1989 41 2 263–284 0025-5645 984751 (90h:11039) 11F22 (11H06 20D08) Geoffrey Mason NISUBC Journal of the Mathematical Society of Japan
HanfriedLenz Variations on the projective plane of order four Mitt. Math. Sem. Giessen 1989 192 79–84 0373-8221 1010202 (90i:51006) 51E05 (05B30 20D08) Ferenc Wettl MMUGAU Mitteilungen aus dem Mathematischen Seminar Giessen
J.Lepowsky Perspectives on vertex operators and the <C>M</C>onster The mathematical heritage of Hermann Weyl (Durham, NC, 1987) Amer. Math. Soc. 1988 48 Proc. Sympos. Pure Math. 181–197
Providence, RI
Wel88 974335 (90f:17031) 17B65 (05A19 17B10 17B67 20D08 81E40) Vyjayanthi Chari
Martin W.Liebeck Cheryl E.Praeger JanSaxl The maximal factorizations of the finite simple groups and their automorphism groups Mem. Amer. Math. Soc. 1990 86 432 iv+151 0065-9266 1016353 (90k:20048) 20D40 (20D06 20D08 20G40) Ulrich Dempwolff MAMCAU Memoirs of the American Mathematical Society
Eric A.Lord Geometry of the <C>M</C>athieu groups and <C>G</C>olay codes Proc. Indian Acad. Sci. Math. Sci. 1988 98 2-3 153–177 0253-4142 994130 (90g:11168) 11T71 (20D08 51E20 94B25) Jacques Wolfmann Indian Academy of Sciences. Proceedings. Mathematical Sciences
GeoffreyMason Finite groups and <C>H</C>ecke operators Math. Ann. 1989 283 3 381–409 0025-5831 985239 (90k:11052) 11F22 (11F25 20D08) Marvin I. Knopp MAANA Mathematische Annalen
JohnMcKay HubertusStrauss The <C><M>q</M></C>-series of monstrous moonshine and the decomposition of the head characters Comm. Algebra 1990 18 1 253–278 0092-7872 1037906 (90m:11065) 11F22 (20C15 20D08 33A99) Geoffrey Mason COALDM Communications in Algebra
ShigeruMukai Finite groups of automorphisms of <C><M>K3</M></C> surfaces and the <C>M</C>athieu group Invent. Math. 1988 94 1 183–221 0020-9910 958597 (90b:32053) 32J15 (14J28 14J50 20B25 20D08) Geoffrey Mason INVMBH Inventiones Mathematicae
Alan R.Prince The <C>H</C>all-<C>J</C>anko group as a collineation group of an infinite projective plane Quart. J. Math. Oxford Ser. (2) 1989 40 157 93–100 0033-5606 985539 (90a:51004) 51A10 (20B25 20D08 20H15 51A35) Ulrich Dempwolff QJMAAT The Quarterly Journal of Mathematics. Oxford. Second Series
Mark A.Ronan Stephen D.Smith Computation of <C><M>2</M></C>-modular sheaves and representations for <C><M>L_4(2), A_7, 3S_6,</M></C> and <C><M>M_{24}</M></C> Comm. Algebra 1989 17 5 1199–1237 0092-7872 993399 (90c:20020) 20C20 (20D08 51D20) Gernot Stroth COALDM Communications in Algebra
Leonard H.Soicher Presentations for some groups related to <C><M>{\rm Co}_1</M></C> Computers in algebra (Chicago, IL, 1985) Dekker 1988 111 Lecture Notes in Pure and Appl. Math. 151–154
New York
Tan88 1060766 20F05 (20D08)
Leonard H.Soicher From the <C>M</C>onster to the <C>B</C>imonster J. Algebra 1989 121 2 275–280 0021-8693 992763 (90j:20071) 20F05 (20D08) Gerard M. Enright JALGA4 Journal of Algebra
Gary L.Walls Nonsimple groups which are the product of simple groups Arch. Math. (Basel) 1989 53 3 209–216 0003-889X 1006709 (90k:20049) 20D40 (20D06 20D08) Gerard M. Enright ACVMAL Archiv der Mathematik
Andrew J.Woldar Genus actions of finite simple groups Illinois J. Math. 1989 33 3 438–450 0019-2082 996352 (90h:20038) 20E32 (20D08 57S25) Marston Conder IJMTAW Illinois Journal of Mathematics a
MichaelAschbacher The existence of <C><M>J_3</M></C> and its embeddings in <C><M>E_6</M></C> Geom. Dedicata 1990 35 1-3 143–154 0046-5755 1066563 (91i:20016) 20D08 Jian Hua Huang GEMDAT Geometriae Dedicata
Thomas A.Fournelle Kenneth W.Weston A geometric approach to some group presentations Combinatorial group theory (College Park, MD, 1988) Amer. Math. Soc. 1990 109 Contemp. Math. 25–33
Providence, RI
FGT90 1076374 (91k:20023) 20D08 (20F05) R. W. Carter
D.Held J.Hrabě de Angelis A block-theory-free characterization of <C><M>M_{24}</M></C> Rend. Sem. Mat. Univ. Padova 1989 82 133–150 (1990) 0041-8994 1049588 (91f:20018) 20D08 (20F05) Gernot Stroth Rendiconti del Seminario Matematico della Università di Padova. The Mathematical Journal of the University of Padova
DieterHeld JörgHrabě de Angelis A character-theory-free characterization of the <C>M</C>athieu group <C><M>M_{12}</M></C> J. Austral. Math. Soc. Ser. A 1990 49 2 212–230 0263-6115 1061042 (91j:20042) 20D08 Geoffrey Mason JAMADS Australian Mathematical Society. Journal. Series A. Pure Mathematics and Statistics
A. S.Kondratʹev Decomposition numbers of the groups <C><M>\hat{{J}}_2</M></C> and <C><M>{\rm Aut}(J_2)</M></C> Algebra i Logika 1988 27 6 690–710, 737 Russian, translation in Algebra and Logic 27 (1988), no. 6, 429–444 (1989) 0373-9252 1038106 (91b:20024) 20D08 È. M. Palʹchik Akademiya Nauk SSSR. Sibirskoe Otdelenie. Institut Matematiki. Algebra i Logika
A. S.Kondratʹev Decomposition numbers of the group <C><M>J_2</M></C> Algebra i Logika 1988 27 5 535–561, 619 Russian, translation in Algebra and Logic 27 (1988), no. 5, 333–349 (1989) 0373-9252 1047503 (91g:20017) 20D08 È. M. Palʹchik Akademiya Nauk SSSR. Sibirskoe Otdelenie. Institut Matematiki. Algebra i Logika
WolfgangLempken On local and maximal subgroups of <C>J</C>anko's simple group <C><M>J_4</M></C> Rend. Accad. Naz. Sci. XL Mem. Mat. (5) 1989 13 1 47–103 Italian summary 0392-4106 1041743 (91f:20019) 20D08 (20E28) Gerard M. Enright Rendiconti. Accademia Nazionale delle Scienze detta dei XL. Serie V. Memorie di Matematica. Parte I
V. D.Mazurov The minimal permutation representation of the <C>T</C>hompson simple group Algebra i Logika 1988 27 5 562–580, 619 Russian, translation in Algebra and Logic 27 (1988), no. 5, 350–361 0373-9252 1047504 (91c:20031) 20D08 È. M. Palʹchik Akademiya Nauk SSSR. Sibirskoe Otdelenie. Institut Matematiki. Algebra i Logika
U.Meierfrankenfeld G.Stroth Quadratic <C><M>{\rm GF}(2)</M></C>-modules for sporadic simple groups and alternating groups Comm. Algebra 1990 18 7 2099–2139 0092-7872 1063127 (91g:20018) 20D08 (20C20 20D06) Stephen D. Smith COALDM Communications in Algebra
A. J. E.Ryba Matrix generators for the <C>H</C>eld group Computers in algebra (Chicago, IL, 1985) Dekker 1988 111 Lecture Notes in Pure and Appl. Math. 135–141
New York
Tan88 1060764 (91k:20024) 20D08 (20-04) c
Wu JieShi A characterization of the <C>H</C>igman-<C>S</C>ims simple group Houston J. Math. 1990 16 4 597–602 0362-1588 1097091 (91m:20024) 20D08 HJMADZ Houston Journal of Mathematics
V. M.Sitnikov Minimal permutation representation of <C>J</C>anko's finite simple group <C><M>J_4</M></C> Mat. Zametki 1990 47 1 137–146, 173 Russian, translation in Math. Notes 47 (1990), no. 1–2, 88–94 0025-567X 1048270 (91c:20032) 20D08 (20B99) È. M. Palʹchik Akademiya Nauk SSSR. Matematicheskie Zametki
Leonard H.Soicher A new existence and uniqueness proof for the <C>O</C>'<C>N</C>an group Bull. London Math. Soc. 1990 22 2 148–152 0024-6093 1045285 (91i:20017) 20D08 Gerard M. Enright LMSBBT The Bulletin of the London Mathematical Society
G.Stroth R.Weiss A new construction of the group <C><M>{\rm Ru}</M></C> Quart. J. Math. Oxford Ser. (2) 1990 41 162 237–243 0033-5606 1053664 (91m:20025) 20D08 Gerard M. Enright QJMAAT The Quarterly Journal of Mathematics. Oxford. Second Series
RichardWeiss SatoshiYoshiara A geometric characterization of the groups <C><M>{\rm Suz}</M></C> and <C><M>{\rm HS}</M></C> J. Algebra 1990 133 1 182–196 0021-8693 1063390 (91g:20019) 20D08 (20F32 51E12) Ulrich Dempwolff JALGA4 Journal of Algebra
Robert A.Wilson Vector stabilizers and subgroups of <C>L</C>eech lattice groups J. Algebra 1989 127 2 387–408 0021-8693 1028461 (91g:20020) 20D08 (20C20 20E28) JALGA4 Journal of Algebra
Andrew J.Woldar Representing <C><M>M_{11},\;M_{12},\;M_{22}</M></C> and <C><M>M_{23}</M></C> on surfaces of least genus Comm. Algebra 1990 18 1 15–86 0092-7872 1037897 (91g:20021a) 20D08 (57S25) Marston Conder COALDM Communications in Algebra a
Andrew J.Woldar Corrigendum to: <Wrap Name="IntRef">``<C>R</C>epresenting <C><M>M_{11},\;M_{12},\;M_{22}</M></C> and <C><M>M_{23}</M></C> on surfaces of least genus''</Wrap> Comm. Algebra 1990 18 2 605 0092-7872 1047330 (91g:20021b) 20D08 (57S25) Marston Conder COALDM Communications in Algebra b Wol90a
MichaelAschbacher Peter B.Kleidman On a conjecture of <C>Q</C>uillen and a lemma of <C>R</C>obinson Arch. Math. (Basel) 1990 55 3 209–217 0003-889X 1075043 (91j:20040) 20D06 (20D08) P. Fong ACVMAL Archiv der Mathematik
L.Babai W. M.Kantor A.Lubotsky Small-diameter <C>C</C>ayley graphs for finite simple groups European J. Combin. 1989 10 6 507–522 0195-6698 1022771 (91a:20038) 20F32 (05C25 20D06 20D08) Dave Witte Morris European Journal of Combinatorics
Richard E.Borcherds The monster <C>L</C>ie algebra Adv. in Math. 1990 83 1 30–47 0001-8708 1069386 (91k:17027) 17B67 (11F22 11H06 20D08) Geoffrey Mason ADMTA4 Advances in Mathematics
Colin M.Campbell E. F.Robertson P. D.Williams Efficient presentations for finite simple groups and related groups Groups—Korea 1988 (Pusan, 1988) Springer 1989 1398 Lecture Notes in Math. 65–72
Berlin
KN89 1032811 (91a:20031) 20F05 (20D06 20D08) Wolfgang Knapp
L.Dolan P.Goddard P.Montague Conformal field theory, triality and the <C>M</C>onster group Phys. Lett. B 1990 236 2 165–172 0370-2693 1040215 (91f:17019) 17B65 (20D08 81T40) Geoffrey Mason PYLBAJ Physics Letters. B b
ElisabethGerner-Henrich Ein <C>A</C>partment für eine <C>G</C>eometrie der sporadischen einfachen <C>G</C>ruppe <C><M>{\rm He}</M></C> J. Algebra 1990 135 1 228–246 0021-8693 1076088 (91h:51010) 51E24 (20D08) Francis Buekenhout JALGA4 Journal of Algebra
A. A.Ivanov S. V.Shpectorov The <C><M>P</M></C>-geometry for <C><M>M_{23}</M></C> has no nontrivial <C><M>2</M></C>-coverings European J. Combin. 1990 11 4 373–379 0195-6698 1067208 (91j:51018) 51E24 (20D08) Gernot Stroth European Journal of Combinatorics
YasushiIwakata Minimal subschemes of the group association schemes of <C>M</C>athieu groups Graphs Combin. 1990 6 3 239–244 0911-0119 1081198 (91i:05123) 05E30 (20D08) GRCOE5 Graphs and Combinatorics
A.Jamali E. F.Robertson Efficient presentations for certain simple groups Comm. Algebra 1989 17 10 2521–2528 0092-7872 1019179 (91c:20045) 20F05 (20D06 20D08) COALDM Communications in Algebra
W. M.Kantor Some <C>C</C>ayley graphs for simple groups Discrete Appl. Math. 1989 25 1-2 99–104 Combinatorics and complexity (Chicago, IL, 1987) 0166-218X 1031265 (91a:20039) 20F32 (05C25 20D06 20D08) Dave Witte Morris DAMADU Discrete Applied Mathematics. The Journal of Combinatorial Algorithms, Informatics and Computational Sciences
AvinoamMann DanSegal Uniform finiteness conditions in residually finite groups Proc. London Math. Soc. (3) 1990 61 3 529–545 0024-6115 1069514 (91j:20093) 20F22 (20D08 20E26) Maziar Shirvani PLMTAL Proceedings of the London Mathematical Society. Third Series
H.Pahlings Some sporadic groups as <C>G</C>alois groups. <C>II</C> Rend. Sem. Mat. Univ. Padova 1989 82 163–171 (1990) 0041-8994 1049591 (91b:12006) 12F12 (20D08) J. L. Alperin Rendiconti del Seminario Matematico della Università di Padova. The Mathematical Journal of the University of Padova
R. A.Parker R. A.Wilson The computer construction of matrix representations of finite groups over finite fields J. Symbolic Comput. 1990 9 5-6 583–590 Computational group theory, Part 1 0747-7171 1075424 (91j:20001) 20-04 (20C40 20D08) R. W. Carter Journal of Symbolic Computation
G.Stroth Some geometry for <C>M</C>c<C>L</C> Comm. Algebra 1989 17 11 2825–2833 0092-7872 1025611 (91b:51019) 51E24 (20D08) S. V. Tsaranov COALDM Communications in Algebra
G.Stroth Chamber systems, geometries and parabolic systems whose diagram contains only bonds of strength <C><M>1</M></C> and <C><M>2</M></C> Invent. Math. 1990 102 1 209–234 0020-9910 1069247 (91h:20059) 20F32 (05B25 20D06 20D08 51E24) Stephen D. Smith INVMBH Inventiones Mathematicae
Sergey V.Tsaranov Geometries and amalgams of <C><M>J_1</M></C> Comm. Algebra 1990 18 4 1119–1135 0092-7872 1059942 (91m:51012a) 51E25 (20D08 51E24) Guy Rousseau COALDM Communications in Algebra a
Sergei V.Tsaranov Corrections to the paper: <Wrap Name="IntRef">``<C>G</C>eometries and amalgams of <C><M>J_1</M></C>''</Wrap> Comm. Algebra 1990 18 12 4387 0092-7872 1084454 (91m:51012b) 51E25 (20D08 51E24) Guy Rousseau COALDM Communications in Algebra b Tsa90a
MichaelAschbacher YoavSegev The uniqueness of groups of type <C><M>J_4</M></C> Invent. Math. 1991 105 3 589–607 0020-9910 1117152 (92g:20026) 20D08 Gernot Stroth INVMBH Inventiones Mathematicae
MichaelAschbacher YoavSegev The uniqueness of groups of <C>L</C>yons type J. Amer. Math. Soc. 1992 5 1 75–98 0894-0347 1124978 (92k:20022) 20D08 Gernot Stroth Journal of the American Mathematical Society a
MarstonConder Random walks in large finite groups Australas. J. Combin. 1991 4 49–57 Combinatorial mathematics and combinatorial computing (Palmerston North, 1990) 1034-4942 1129268 (92h:20030) 20D08 (20P05) Gary Sherman The Australasian Journal of Combinatorics
MarstonConder The symmetric genus of the <C>M</C>athieu groups Bull. London Math. Soc. 1991 23 5 445–453 0024-6093 1141014 (92k:20023) 20D08 (20D60) Andrew Woldar LMSBBT The Bulletin of the London Mathematical Society
John H.Conway Simon P.Norton Leonard H.Soicher The <C>B</C>imonster, the group <C><M>Y_{555}</M></C>, and the projective plane of order <C><M>3</M></C> Computers in algebra (Chicago, IL, 1985) Dekker 1988 111 Lecture Notes in Pure and Appl. Math. 27–50
New York
Tan88 1060755 (92f:20018) 20D08 (51E15) J. Weinstein
WolfgangLempken ChristopherParker PeterRowley <C><M>(S_3,S_5)</M></C>- and <C><M>(S_3,S_6)</M></C>-amalgams J. Algebra 1991 143 2 518–522 0021-8693 1132585 (92j:20010) 20D08 (20E42) Gernot Stroth JALGA4 Journal of Algebra
Stephen A.Linton Corrections to: <Wrap Name="IntRef">``<C>T</C>he maximal subgroups of the <C>T</C>hompson group'' [<Wrap Name="Bib_journal"><C>J</C>. <C>L</C>ondon <C>M</C>ath. <C>S</C>oc. (2)</Wrap> <Wrap Name="Bib_volume">39</Wrap> (<Wrap Name="Bib_year">1989</Wrap>), <Wrap Name="Bib_number">no. 1</Wrap>, <Wrap Name="Bib_pages">79–88</Wrap>; <C>MR</C>0989921 (90c:20024)]</Wrap> J. London Math. Soc. (2) 1991 43 2 253–254 0024-6107 1111583 (92c:20031) 20D08 (20E28) JLMSAK Journal of the London Mathematical Society. Second Series Lin89
Stephen A.Linton Robert A.Wilson The maximal subgroups of the <C>F</C>ischer groups <C><M>{\rm Fi}_{24}</M></C> and <C><M>{\rm Fi}'_{24}</M></C> Proc. London Math. Soc. (3) 1991 63 1 113–164 0024-6115 1105720 (92h:20031) 20D08 (20E28) Gerard M. Enright PLMTAL Proceedings of the London Mathematical Society. Third Series
OliverPfaff On the simplicity of <C><M>{\cdot}2</M></C> and <C><M>{\cdot}3</M></C> Discrete Math. 1991 97 1-3 319–331 0012-365X 1140813 (92k:20024) 20D08 Ulrich Meierfrankenfeld DSMHA4 Discrete Mathematics
Yong CaiRen Finite simple groups all of whose <C><M>2</M></C>-maximal subgroups are <C>PQN</C>-groups Acta Math. Sinica 1990 33 6 798–803 Chinese 0583-1431 1090630 (92c:20032) 20D08 (20D25 20E28) Jian Hua Huang SHHPBO Acta Mathematica Sinica. Shuxue Xuebao
YoavSegev On the uniqueness of <C>F</C>ischer's <C>B</C>aby <C>M</C>onster Proc. London Math. Soc. (3) 1991 62 3 509–536 0024-6115 1095231 (92c:20033) 20D08 Gernot Stroth PLMTAL Proceedings of the London Mathematical Society. Third Series
Leonard H.Soicher A new uniqueness proof for the <C>H</C>eld group Bull. London Math. Soc. 1991 23 3 235–238 0024-6093 1123331 (92k:20025) 20D08 Gerard M. Enright LMSBBT The Bulletin of the London Mathematical Society
Leonard H.Soicher More on the group <C><M>Y_{555}</M></C> and the projective plane of order <C><M>3</M></C> J. Algebra 1991 136 1 168–174 0021-8693 1085128 (92d:20020) 20D08 (20F05 51E15) Ulrich Dempwolff JALGA4 Journal of Algebra
Andrew J.Woldar Sporadic simple groups which are <C>H</C>urwitz J. Algebra 1991 144 2 443–450 0021-8693 1140615 (92k:20026) 20D08 Ronald Solomon JALGA4 Journal of Algebra
AlejandroAdem JohnMaginnis R. JamesMilgram The geometry and cohomology of the <C>M</C>athieu group <C><M>M_{12}</M></C> J. Algebra 1991 139 1 90–133 0021-8693 1106342 (92g:20083) 20J06 (20D08) David Benson JALGA4 Journal of Algebra
L.Dolan Conformal field theory, triality and the <C>M</C>onster group Superstrings and particle theory (Tuscaloosa, AL, 1989) World Sci. Publ., River Edge, NJ 1990 103–116 CH90 1158066 81T40 (11H06 20D08 94B05)
L.Dolan P.Goddard P.Montague Conformal field theory of twisted vertex operators Nuclear Phys. B 1990 338 3 529–601 0550-3213 1063589 (92a:17032) 17B65 (17B81 20D08 81T40) Geoffrey Mason NUPBBO Nuclear Physics. B a
GerhardHiss KlausLux RichardParker The <C><M>5</M></C>-modular characters of the <C>M</C>c<C>L</C>aughlin group and its covering group Manuscripta Math. 1991 73 1 91–114 0025-2611 1124313 (92g:20017) 20C20 (20D08) David Benson MSMHB2 Manuscripta Mathematica
Peter B.Kleidman Robert A.Wilson <C><M>J_3 < E_6(4)</M></C> and <C><M>M_{12} < E_6(5)</M></C> J. London Math. Soc. (2) 1990 42 3 555–561 0024-6107 1087228 (92b:20056) 20G40 (20D08 20E28) Ulrich Dempwolff JLMSAK Journal of the London Mathematical Society. Second Series
GeoffreyMason <C><M>G</M></C>-elliptic systems and the genus zero problem for <C><M>M_{24}</M></C> Bull. Amer. Math. Soc. (N.S.) 1991 25 1 45–53 0273-0979 1080615 (92b:11027) 11F22 (20D08) Marvin I. Knopp BAMOAD American Mathematical Society. Bulletin. New Series
SerdarNergiz CihanSaçlıoğlu On-shell three-string amplitudes and the structure constants of the <C>M</C>onster <C>L</C>ie algebra Internat. J. Modern Phys. A 1990 5 13 2647–2665 0217-751X 1057668 (92f:17038) 17B81 (11H06 20D08 81R10 81T30) Geoffrey Mason International Journal of Modern Physics A. Particles and Fields. Gravitation. Cosmology. Nuclear Physics
JacquesTits Symmetrie Miscellanea mathematica Springer 1991 293–304
Berlin
HHR91 1131132 (92g:51018) 51F15 (20D08 20H15) J. M. Wills
RichardWeiss A characterization of the group <C><M>{\rm Co}_3</M></C> as a transitive extension of <C><M>{\rm HS}</M></C> Arch. Math. (Basel) 1991 56 3 209–213 0003-889X 1091872 (92c:51023) 51E24 (20B25 20D08) Norbert Knarr ACVMAL Archiv der Mathematik
RichardWeiss A geometric characterization of the groups <C><M>M_{12},\;{\rm He}</M></C> and <C><M>{\rm Ru}</M></C> J. Math. Soc. Japan 1991 43 4 795–814 0025-5645 1126150 (92k:20076) 20F32 (20D08 51E12) Ulrich Dempwolff NISUBC Journal of the Mathematical Society of Japan
Robert A.Wilson The <C><M>2</M></C>- and <C><M>3</M></C>-modular characters of <C><M>J_3</M></C>, its covering group and automorphism group J. Symbolic Comput. 1990 10 6 647–656 0747-7171 1087984 (92b:20016) 20C20 (20C40 20D08) Wolfgang Knapp Journal of Symbolic Computation
IlanZisser The product of all the irreducible characters of a finite simple group Arch. Math. (Basel) 1991 57 2 109–113 0003-889X 1116186 (92e:20005) 20C15 (20D06 20D08) Roderick Gow ACVMAL Archiv der Mathematik
M. D. E.Conder R. A.Wilson A. J.Woldar The symmetric genus of sporadic groups Proc. Amer. Math. Soc. 1992 116 3 653–663 0002-9939 1126192 (93a:20027) 20D08 Gernot Stroth PAMYAR Proceedings of the American Mathematical Society
H.Pahlings Errata corrige: <Wrap Name="IntRef">``<C>S</C>ome sporadic groups as <C>G</C>alois groups. <C>II</C>'' [<Wrap Name="Bib_journal"><C>R</C>end. <C>S</C>em. <C>M</C>at. <C>U</C>niv. <C>P</C>adova</Wrap> <Wrap Name="Bib_volume">82</Wrap> (<Wrap Name="Bib_year">1989</Wrap>), <Wrap Name="Bib_pages">163–171</Wrap>; <C>MR</C>1049591 (91b:12006)]</Wrap> Rend. Sem. Mat. Univ. Padova 1991 85 309–310 0041-8994 1142546 (93a:12006) 12F12 (20D08) Rendiconti del Seminario Matematico della Università di Padova. The Mathematical Journal of the University of Padova Pah89
S. G.Chekanov Broad subgroups of some sporadic groups Algebra i Logika 1990 29 1 82–101, 130 Russian, translation in Algebra and Logic 29 (1990), no. 1, 60–74 (1991) 0373-9252 1131606 (93b:20029) 20D08 V. D. Mazurov Akademiya Nauk SSSR. Sibirskoe Otdelenie. Institut Matematiki. Algebra i Logika
A. A.Ivanov A presentation for <C><M>J_4</M></C> Proc. London Math. Soc. (3) 1992 64 2 369–396 0024-6115 1143229 (93b:20030) 20D08 (20B25 20F29) Gernot Stroth PLMTAL Proceedings of the London Mathematical Society. Third Series
Andrew J.Woldar The symmetric genus of the <C>H</C>igman-<C>S</C>ims group <C>HS</C> and bounds for <C>C</C>onway's groups <C><M>{\rm Co}_1, {\rm Co}_2</M></C> Illinois J. Math. 1992 36 1 47–52 0019-2082 1133769 (93b:20031) 20D08 (57S99) Geoffrey Mason IJMTAW Illinois Journal of Mathematics
A. R.Prince Strongly irreducible collineation groups and the <C>H</C>all-<C>J</C>anko group Period. Math. Hungar. 1991 23 2 99–104 0031-5303 1142510 (93b:51013) 51E15 (20B25 20D08) Gernot Stroth PMHGAW Periodica Mathematica Hungarica. Journal of the János Bolyai Mathematical Society
SatoshiYoshiara Maximal subgroups of the sporadic simple group of <C>R</C>udvalis Nihonkai Math. J. 1991 2 1 1–24 1341-9951 1120697 (93c:20035) 20D08 David C. Hunt Nihonkai Mathematical Journal
MichaelAschbacher YoavSegev Extending morphisms of groups and graphs Ann. of Math. (2) 1992 135 2 297–323 0003-486X 1154595 (93d:20034) 20D08 (05C25) Ulrich Meierfrankenfeld ANMAAH Annals of Mathematics. Second Series b
Johnvan Bon RichardWeiss A characterization of the groups <C><M>{\rm Fi}_{22},\;{\rm Fi}_{23}</M></C> and <C><M>{\rm Fi}_{24}</M></C> Forum Math. 1992 4 4 425–432 0933-7741 1166264 (93d:20035) 20D08 FOMAEF Forum Mathematicum
Alexander A.Ivanov Geometric presentations of groups with an application to the <C>M</C>onster Proceedings of the International Congress of Mathematicians, Vol. I, II (Kyoto, 1990) 1991 1443–1453
Tokyo
Math. Soc. Japan Sat91 1159328 (93d:20036) 20D08 (20F05) Gernot Stroth
A. A.Makhnëv Finite groups with small <C><M>3</M></C>-element centralizers Group-theoretic investigations (Russian) Akad. Nauk SSSR Ural. Otdel. 1990 43–53
Sverdlovsk
Sta90 1159129 (93e:20027) 20D08 (20D20) I. Ya. Subbotin
P.Bántay Orbifolds, <C>H</C>opf algebras, and the <C>M</C>oonshine Lett. Math. Phys. 1991 22 3 187–194 0377-9017 1129173 (93e:17012) 17B37 (11F22 16W30 20D08 81R50) Geoffrey Mason LMPHDY Letters in Mathematical Physics. A Journal for the Rapid Dissemination of Short Contributions in the Field of Mathematical Physics
Michael P.Tuite Monstrous <C>M</C>oonshine from orbifolds Comm. Math. Phys. 1992 146 2 277–309 0010-3616 1165184 (93f:11036) 11F22 (20D08) Geoffrey Mason CMPHAY Communications in Mathematical Physics
Martin W.Liebeck JanSaxl Maximal subgroups of finite simple groups and their automorphism groups Proceedings of the International Conference on Algebra, Part 1 (Novosibirsk, 1989) 1992 131 Contemp. Math. 243–259
Providence, RI
Amer. Math. Soc. BEK92 1175777 (93g:20032) 20D06 (20D08 20E28) A. S. Kondratʹev
Johnvan Bon RichardWeiss An existence lemma for groups generated by <C><M>3</M></C>-transpositions Invent. Math. 1992 109 3 519–534 0020-9910 1176202 (93g:20033) 20D08 (05C25) A. S. Kondratʹev INVMBH Inventiones Mathematicae
ChristopherParker Some module results for groups with diagram <Alt Only="LaTeX"> <M>\circ\!\textrm{---}\!\!\circ\widetilde{\!\!=\!=\!}\circ</M></Alt> <Alt Not="LaTeX">o--o=~=o</Alt> Comm. Algebra 1992 20 7 1857–1871 0092-7872 1167078 (93g:20034) 20D08 (20E06) Gernot Stroth COALDM Communications in Algebra
RichardWeiss A geometric characterization of the groups <C><M>{\rm McL}</M></C> and <C><M>{\rm Co}_3</M></C> J. London Math. Soc. (2) 1991 44 2 261–269 0024-6107 1136439 (93g:20035) 20D08 JLMSAK Journal of the London Mathematical Society. Second Series
Alexander A.Ivanov A geometric characterization of <C>F</C>ischer's <C>B</C>aby <C>M</C>onster J. Algebraic Combin. 1992 1 1 45–69 0925-9899 1162641 (93h:20018) 20D08 (20F32) Ulrich Meierfrankenfeld JAOME7 Journal of Algebraic Combinatorics. An International Journal
G.Stroth S. K.Wong Some chamber systems belonging to sporadic simple groups Proc. London Math. Soc. (3) 1992 65 3 505–554 0024-6115 1182101 (93h:20019) 20D08 (20F32) Ulrich Meierfrankenfeld PLMTAL Proceedings of the London Mathematical Society. Third Series
S. V.Shpectorov The universal <C><M>2</M></C>-cover of the <C><M>P</M></C>-geometry <C><M>G(\textrm{Co}_2)</M></C> European J. Combin. 1992 13 4 291–312 0195-6698 1179526 (93h:51014) 51E24 (20D08) Hendrik Van Maldeghem European Journal of Combinatorics
Ts. R.Gentchev K. B.Tchakerian Factorizations of simple groups of order up to <C><M>10^{12}</M></C> C. R. Acad. Bulgare Sci. 1992 45 2 9–12 1310-1331 1184894 (93i:20033) 20E32 (20D08) Jian Hua Huang Dokladi na B\cdprime lgarskata Akademiya na Naukite. Comptes Rendus de l'Académie Bulgare des Sciences
Robert A.Wilson Some new subgroups of the <C>B</C>aby <C>M</C>onster Bull. London Math. Soc. 1993 25 1 23–28 0024-6093 1190359 (93j:20041) 20D08 È. M. Palʹchik LMSBBT The Bulletin of the London Mathematical Society
Robert A.Wilson Matrix generators for <C>F</C>ischer's group <C><M>{\rm Fi}_{24}</M></C> Math. Proc. Cambridge Philos. Soc. 1993 113 1 5–8 0305-0041 1188814 (93j:20042) 20D08 Ulrich Meierfrankenfeld MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society
V. P.Burichenko On a special loop, <C>D</C>ixon form and lattice connected with <C><M>{\rm O}_7(3)</M></C> Mat. Sb. 1991 182 10 1408–1429 Russian, translation in Math. USSR-Sb. 74 (1993), no. 1, 145–167 0368-8666 1135932 (93k:20031) 20D08 (20N05) R. L. Griess Matematicheskiĭ Sbornik
David JohnGreen On the cohomology of the sporadic simple group <C><M>J_4</M></C> Math. Proc. Cambridge Philos. Soc. 1993 113 2 253–266 0305-0041 1198410 (93k:20073) 20J06 (20D08) Robert M. Guralnick MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society
AlejandroAdem R. JamesMilgram <C><M>A_5</M></C>-invariants, the cohomology of <C><M>L_3(4)</M></C> and related extensions Proc. London Math. Soc. (3) 1993 66 1 187–224 0024-6115 1189097 (93m:20070) 20J06 (20D08 55R35 55R40) Nobuaki Yagita PLMTAL Proceedings of the London Mathematical Society. Third Series
J. H.Conway N. J. A.Sloane Sphere packings, lattices and groups Springer-Verlag 1993 290 Grundlehren der Mathematischen Wissenschaften [Fundamental Principles of Mathematical Sciences]
New York
Second With additional contributions by E. Bannai, R. E. Borcherds, J. Leech, S. P. Norton, A. M. Odlyzko, R. A. Parker, L. Queen and B. B. Venkov 0-387-97912-3 1194619 (93h:11069) 11H31 (05B40 11H06 20D08 52C07 52C17 94B75) xliv+679
GeoffreyMason Remarks on moonshine and orbifolds Groups, combinatorics & geometry (Durham, 1990) Cambridge Univ. Press 1992 165 London Math. Soc. Lecture Note Ser. 108–120
Cambridge
LS92a 1200254 (93m:11034) 11F22 (20D08) Steven N. Kass
J. H.Conway <C><M>Y_{555}</M></C> and all that Groups, combinatorics & geometry (Durham, 1990) Cambridge Univ. Press 1992 165 London Math. Soc. Lecture Note Ser. 22–23
Cambridge
LS92a 1200247 (94a:20032) 20D08 Wujie Shi
J. H.Conway A. D.Pritchard Hyperbolic reflections for the <C>B</C>imonster and <C><M>3{\rm Fi}_{24}</M></C> Groups, combinatorics & geometry (Durham, 1990) Cambridge Univ. Press 1992 165 London Math. Soc. Lecture Note Ser. 24–45
Cambridge
LS92a 1200248 (94a:20033) 20D08 Wujie Shi
ChristopherParker Groups containing a subdiagram <Alt Only="LaTeX"> <M>\circ\!\textrm{---}\!\!\circ\widetilde{\!\!=\!=\!}\circ</M></Alt> <Alt Not="LaTeX">o--o=~=o</Alt> Proc. London Math. Soc. (3) 1992 65 1 85–120 0024-6115 1162489 (94a:20034) 20D08 Jonathan I. Hall PLMTAL Proceedings of the London Mathematical Society. Third Series
YoavSegev On the uniqueness of the <C>H</C>arada-<C>N</C>orton group J. Algebra 1992 151 2 261–303 0021-8693 1184036 (94a:20035) 20D08 Jonathan I. Hall JALGA4 Journal of Algebra
Daniel E.Frohardt Stephen D.Smith Universal embeddings for the <C><M>{}^3\!D_4(2)</M></C> hexagon and <C><M>J_2</M></C> near-octagon European J. Combin. 1992 13 6 455–472 0195-6698 1193554 (94a:51004) 51A45 (20D08 51E12) Norbert Knarr European Journal of Combinatorics
DieterHeld JörgHrabě de Angelis A character-theory-free characterization of the simple groups <C><M>M_{11}</M></C> and <C><M>L_3(3)</M></C> Note Mat. 1990 10 suppl. 2 283–304 1123-2536 1221946 (94b:20026) 20D05 (20D08) N. K. Dickson Note di Matematica
Leonard H.Soicher On simplicial complexes related to the <C>S</C>uzuki sequence graphs Groups, combinatorics & geometry (Durham, 1990) Cambridge Univ. Press 1992 165 London Math. Soc. Lecture Note Ser. 240–248
Cambridge
LS92a 1200264 (94b:51020) 51E24 (05C25 20D08) Antonio Pasini
A. A.Ivanov A geometric characterization of the <C>M</C>onster Groups, combinatorics & geometry (Durham, 1990) Cambridge Univ. Press 1992 165 London Math. Soc. Lecture Note Ser. 46–62
Cambridge
LS92a 1200249 (94c:20033) 20D08 (51E24) Ronald Solomon
S. P.Norton Constructing the <C>M</C>onster Groups, combinatorics & geometry (Durham, 1990) Cambridge Univ. Press 1992 165 London Math. Soc. Lecture Note Ser. 63–76
Cambridge
LS92a 1200250 (94c:20034) 20D08 Ronald Solomon
Marguerite-MarieVirotte-Ducharme Présentations des groupes de <C>F</C>ischer. <C>II</C> Geom. Dedicata 1993 45 2 121–162 English summary 0046-5755 1202096 (94c:20035) 20D08 (20F05) Jonathan I. Hall GEMDAT Geometriae Dedicata
GheorgheSilberberg Simple groups of near factorial order Pure Math. Appl. Ser. A 1992 3 1-2 9–16 (1993) 0866-4943 1217457 (94d:20015) 20D06 (20D08) Stephen D. Smith Pure Mathematics and Applications. Series A
BhaskarBagchi A regular two-graph admitting the <C>H</C>all-<C>J</C>anko-<C>W</C>ales group Sankhyā Ser. A 1992 54 Special Issue 35–45 Combinatorial mathematics and applications (Calcutta, 1988) 0581-572X 1234676 (94d:05149) 05E30 (20B25 20D08) Sankhyā. The Indian Journal of Statistics. Series A
A. A.Ivanov The minimal parabolic geometry of the <C>C</C>onway group <C><M>{\rm Co}_1</M></C> is simply connected Combinatorics '90 (Gaeta, 1990) North-Holland 1992 52 Ann. Discrete Math. 259–273
Amsterdam
BBC92 1195816 (94d:51014) 51E24 (20D08) Gernot Stroth
Peter B.Kleidman Robert A.Wilson Sporadic simple subgroups of finite exceptional groups of <C>L</C>ie type J. Algebra 1993 157 2 316–330 0021-8693 1220771 (94e:20020) 20D06 (20D08 20G40) R. W. Carter JALGA4 Journal of Algebra
MichaelAschbacher YoavSegev Uniqueness of sporadic groups Groups, combinatorics & geometry (Durham, 1990) Cambridge Univ. Press 1992 165 London Math. Soc. Lecture Note Ser. 1–11
Cambridge
LS92a 1200245 (94e:20021) 20D08 A. A. Makhnev
MichaelAschbacher YoavSegev The study of <C><M>J_4</M></C> via the theory of uniqueness systems Groups, combinatorics & geometry (Durham, 1990) Cambridge Univ. Press 1992 165 London Math. Soc. Lecture Note Ser. 12–21
Cambridge
LS92a 1200246 (94e:20022) 20D08 A. A. Makhnev
Hui LingLi Wu JieShi Characterization of some sporadic simple groups Chinese Ann. Math. Ser. A 1993 14 2 144–151 Chinese. Chinese summary 1000-8314 1229814 (94e:20023) 20D08 Dao-Rong Ton SANJEG Chinese Annals of Mathematics. Series A. Shuxue Niankan. A Ji
S.Pianta Projective embedding of fibered groups and the <C>S</C>uzuki groups Combinatorics '90 (Gaeta, 1990) North-Holland 1992 52 Ann. Discrete Math. 463–469
Amsterdam
BBC92 1195828 (94e:51005) 51A45 (20D08) Jonathan I. Hall
M. D. E.Conder R. A.Wilson A. J.Woldar The symmetric genus of sporadic groups: announced results Coding theory, design theory, group theory (Burlington, VT, 1990) Wiley 1993 Wiley-Intersci. Publ. 163–169
New York
JVA93 1227128 (94f:20033) 20D08 (20F32)
Richard E.Borcherds Monstrous moonshine and monstrous <C>L</C>ie superalgebras Invent. Math. 1992 109 2 405–444 0020-9910 1172696 (94f:11030) 11F22 (17A70 17B67 20D08) Steven N. Kass INVMBH Inventiones Mathematicae b
D.Alexander C.Cummins J.McKay C.Simons Completely replicable functions Groups, combinatorics & geometry (Durham, 1990) Cambridge Univ. Press 1992 165 London Math. Soc. Lecture Note Ser. 87–98
Cambridge
LS92a 1200252 (94g:11029) 11F22 (20D08)
WernerMeyer WolframNeutsch Associative subalgebras of the <C>G</C>riess algebra J. Algebra 1993 158 1 1–17 0021-8693 1223664 (94g:17007) 17A99 (20D08) Jonathan I. Hall JALGA4 Journal of Algebra
J. H.Conway From hyperbolic reflections to finite groups Groups and computation (New Brunswick, NJ, 1991) Amer. Math. Soc. 1993 11 DIMACS Series in Discrete Mathematics and Theoretical Computer Science 41–51
Providence, RI
FK93 1235794 (94h:20023) 20D06 (20D08 20F05 20F55) Hiroyoshi Yamaki
Richard E.Borcherds Introduction to the <C>M</C>onster <C>L</C>ie algebra Groups, combinatorics & geometry (Durham, 1990) Cambridge Univ. Press 1992 165 London Math. Soc. Lecture Note Ser. 99–107
Cambridge
LS92a 1200253 (94h:11043) 11F22 (17A70 17B10 17B67 20D08) Steven N. Kass a
Charles R.Ferenbaugh The genus-zero problem for <C><M>n|h</M></C>-type groups Duke Math. J. 1993 72 1 31–63 0012-7094 1242878 (94i:20030) 20D08 (11F06) Wujie Shi DUMJAO Duke Mathematical Journal
DanielGorenstein A brief history of the sporadic simple groups The Gelʹfand Mathematical Seminars, 1990–1992 Birkhäuser Boston 1993 137–143
Boston, MA
CGL93 1247286 (94i:20031) 20D08 (20-02) Richard Lyons
W.Lempken Constructing <C><M>J_4</M></C> in <C><M>{\rm GL}(1333,11)</M></C> Comm. Algebra 1993 21 12 4311–4351 0092-7872 1242834 (94i:20032) 20D08 Jonathan I. Hall COALDM Communications in Algebra
MichaelAschbacher Simple connectivity of <C><M>p</M></C>-group complexes Israel J. Math. 1993 82 1-3 1–43 0021-2172 1239044 (94j:20012) 20D06 (20D08) Ronald Solomon ISJMAP Israel Journal of Mathematics
A. A.Ivanov Constructing the <C>M</C>onster via its <C><M>Y</M></C>-presentation Combinatorics, Paul Erdős is eighty, Vol. 1 János Bolyai Math. Soc. 1993 Bolyai Soc. Math. Stud. 253–269
Budapest
MSSz93 1249716 (94j:20013) 20D08 Ulrich Meierfrankenfeld
KayMagaard Monodromy and sporadic groups Comm. Algebra 1993 21 12 4271–4297 0092-7872 1242832 (94j:20014) 20D08 (20F05) Andrew Woldar COALDM Communications in Algebra
L.Dolan Fermionic conformal field theory Strings '90 (College Station, TX, 1990) World Sci. Publ., River Edge, NJ 1991 347–354 ABD91 1256507 (94j:81217) 81T40 (17B81 20D08 81R10)
Hui LingLi Wu JieShi A characterization of some sporadic simple groups Chinese J. Contemp. Math. 1993 14 2 105–113 0898-5111 1260347 (94k:20026) 20D08 (20D60) A. S. Kondratʹev Chinese Journal of Contemporary Mathematics
Robert A.Wilson A new construction of the <C>B</C>aby <C>M</C>onster and its applications Bull. London Math. Soc. 1993 25 5 431–437 0024-6093 1233405 (94k:20027) 20D08 (20C34 20C40) Richard Lyons LMSBBT The Bulletin of the London Mathematical Society
Robert A.Wilson The symmetric genus of the <C>B</C>aby <C>M</C>onster Quart. J. Math. Oxford Ser. (2) 1993 44 176 513–516 0033-5606 1251930 (94k:20028) 20D08 Jonathan I. Hall QJMAAT The Quarterly Journal of Mathematics. Oxford. Second Series
Andrew J.Woldar <C><M>3/2</M></C>-generation of the sporadic simple groups Comm. Algebra 1994 22 2 675–685 0092-7872 1255885 (94k:20029) 20D08 (20E32) Jian Hua Huang COALDM Communications in Algebra
A.Shaalan M.Ramadan On <C>MNP</C>-groups Ann. Univ. Sci. Budapest. Eötvös Sect. Math. 1993 36 23–30 0524-9007 1250471 (94k:20032) 20D10 (20D08 20F16) Gary L. Walls ABRMBT Annales Universitatis Scientiarum Budapestinensis de Rolando Eötvös Nominatae. Sectio Mathematica
GeoffreyMason Vertex operator representations of <C><M>\hat{{A}}_N</M></C> organized by an affine space J. Algebra 1993 157 1 128–160 0021-8693 1219662 (94k:17046) 17B67 (17B40 17B68 20D08) Alex Jay Feingold JALGA4 Journal of Algebra
A. I.Kostrikin Algebra Moskov. Gos. Univ. 1982
Moscow
Russian 790696 (86d:00003) 00A10 164
MartinAigner DieterJungnickel Geometries and groups 1981 893 Lecture Notes in Mathematics
Berlin
Springer-Verlag 3-540-11166-2 655055 (83c:51002) 51-06 (05-06 20-06) Proceedings of the Colloquium held at the Freie Universität Berlin, Berlin, May 1981 x+250
DieterJungnickel KlausVedder Combinatorial theory 1982 969 Lecture Notes in Mathematics
Berlin
Springer-Verlag 3-540-11971-X 692229 (84b:05005) 05-06 Proceedings of a Conference held at Schloss Rauischholzhausen, May 6–9, 1982 ii+326
P. J.Cameron J. W. P.Hirschfeld D. R.Hughes Finite geometries and designs 1981 49 London Mathematical Society Lecture Note Series
Cambridge
Cambridge University Press 0-521-28378-7 627480 (82g:05003) 05-06 (05Bxx 20B25 51Exx) Proceedings of the Second Isle of Thorns Conference held at Chelwood Gate, June 15–19, 1980 iii+371
ChandlerDavis BrankoGrünbaum F. A.Sherk The geometric vein Springer-Verlag 1981
New York
The Coxeter Festschrift 0-387-90587-1 661767 (83e:51003) 51-06 (01A70 52-06) viii+598 pp. (1 plate)
EricMendelsohn Algebraic and geometric combinatorics North-Holland Publishing Co. 1982 65 North-Holland Mathematics Studies
Amsterdam
Annals of Discrete Mathematics, 15 0-444-86365-6 772576 (85k:05002) 05-06 xiii+376
PeterHilton FriedrichHirzebruch ReinholdRemmert Miscellanea mathematica Springer-Verlag 1991
Berlin
3-540-54174-8 1131113 (92d:00038) 00B30 (01-06) xiv+326
Kenneth I.Appel John G.Ratcliffe Paul E.Schupp Contributions to group theory American Mathematical Society 1984 33 Contemporary Mathematics
Providence, RI
Papers dedicated to Roger C. Lyndon on the occasion of his sixty-fifth birthday 0-8218-5035-0 767092 (85g:20002) 20-06 xi+519
L. A.Shemetkov Voprosy algebry. <C>V</C>yp. 4 ``Universitet·skoe'' 1989
Minsk
Papers from the Tenth All-Union Symposium on Group Theory held in Gomelʹ, September 9–11, 1986 1011905 (90d:20003) 20-06 183
M. Kh.Klin I. A.Faradzhev Issledovaniya po algebraicheskoi teorii kombinatornykh obektov Vsesoyuz. Nauchno-Issled. Inst. Sistem. Issled. 1985
Moscow
921454 (88h:05002) 05-06 (00A10) 187
L.Clavelli B.Harms Superstrings and particle theory World Scientific Publishing Co. Inc. 1990
River Edge, NJ
Papers from the conference held at the University of Alabama, Tuscaloosa, Alabama, November 8–11, 1989 981-02-0157-5 1158059 (92m:81226) 81T30 (81-06) x+353
Z.Arad M.Herzog Products of conjugacy classes in groups Springer-Verlag 1985 1112 Lecture Notes in Mathematics
Berlin
3-540-13916-8 783067 (87h:20001) 20-02 (03C60) J. L. Brenner i+244
Hsio-FuTuan Group theory, <C>B</C>eijing 1984 1986 1185 Lecture Notes in Mathematics
Berlin
Springer-Verlag 3-540-16456-1 842438 (87d:20004) 20-06 Proceedings of an international symposium held at Beijing University, Beijing, August 27–September 8, 1984 vi+403
J.Lepowsky S.Mandelstam I. M.Singer Vertex operators in mathematics and physics 1985 3 Mathematical Sciences Research Institute Publications
New York
Springer-Verlag 0-387-96121-6 781369 (86b:17001) 17-06 (81-06 81Exx) Proceedings of a conference held at the Mathematical Sciences Research Institute, Berkeley, Calif., November 10–17, 1983 xiv+482
Martin C.Tangora Computers in algebra Marcel Dekker Inc. 1988 111 Lecture Notes in Pure and Applied Mathematics
New York
Papers from the conference held at the University of Illinois at Chicago, Chicago, Illinois, December 1985 0-8247-7975-4 1060752 (90m:00036) 00A11 (20-06) viii+162
Michael J.Collins Finite simple groups. <C>II</C> 1980
London
Academic Press Inc. [Harcourt Brace Jovanovich Publishers] 0-12-181480-7 606048 (82h:20021) 20D05 (20C15 20C20 20D08) Stephen D. Smith Proceedings of the Symposium held at the University of Durham, Durham, July 31–August 10, 1978 xv+345
Michael D.Atkinson Computational group theory 1984
London
Academic Press Inc. [Harcourt Brace Jovanovich Publishers] 0-12-066270-1 760641 (85g:20001) 20-06 (68-06) Proceedings of the London Mathematical Society symposium held in Durham, July 30–August 9, 1982 xii+375
R. O.Wells Jr. The mathematical heritage of <C>H</C>ermann <C>W</C>eyl 1988 48 Proceedings of Symposia in Pure Mathematics
Providence, RI
American Mathematical Society 0-8218-1482-6 974327 (89f:00026) 00A11 Proceedings of a conference held at Duke University, Durham, North Carolina, May 12–16, 1987 viii+344
A. C.Kim B. H.Neumann Groups—<C>K</C>orea 1983 1984 1098 Lecture Notes in Mathematics
Berlin
Springer-Verlag 3-540-13890-0 781351 (86b:20002) 20-06 Proceedings of a conference on combinatorial group theory held at Kyoungju, August 26–31, 1983 viii+183
A. C.Kim B. H.Neumann Groups—<C>K</C>orea 1988 1989 1398 Lecture Notes in Mathematics
Berlin
Springer-Verlag 3-540-51695-6 1032805 (90h:20004) 20-06 Proceedings of the Second International Conference on Group Theory held in Pusan, August 15–21, 1988 vi+189
L.Clavelli A.Halprin Lewes string theory workshop 1986
Singapore
World Scientific Publishing Co. 9971-50-033-7 848750 (88a:81006) 81-06 (81E20 81E30 81G25 83E15) M. A. Namazie Proceedings of the workshop held in Lewes, Del., July 6–27, 1985 viii+302
Donald W.Crowe J. MarshallOsborn LouisSolomon Proceedings of the conference on groups and geometry. <C>P</C>art <C>B</C> 1985
Palm Harbor, FL
Hadronic Press Inc. Held in honor of Richard H. Bruck at the University of Wisconsin, Madison, Wis., July 21–24, 1985, Algebras Groups Geom. 2 (1985), no. 4 0741-9937 852413 (87d:51002) 51-06 i–v and 380–578
BenjaminFine AnthonyGaglione Francis C. Y.Tang Combinatorial group theory 1990 109 Contemporary Mathematics
Providence, RI
American Mathematical Society 0-8218-5116-0 1076370 (91e:20001) 20-06 Proceedings of the AMS Special Session on Combinatorial Group Theory—Infinite Groups held at the University of Maryland, College Park, Maryland, April 23–24, 1988 xii+191
JohnMcKay Finite groups—coming of age 1985 45 Contemporary Mathematics
Providence, RI
American Mathematical Society 0-8218-5047-4 822230 (86j:20002) 20-06 (20Dxx) Proceedings of the Canadian Mathematical Society conference held at Concordia University, Montreal, Que., June 15–28, 1982 x+350
M.Aschbacher A. M.Cohen W. M.Kantor Geometries and groups 1988
Dordrecht
D. Reidel Publishing Co. Geom. Dedicata 25 (1988), no. 1-3 0046-5755 925831 (88j:20002) 20-06 (51-06) Proceedings of the workshop on geometries and groups, finite and algebraic, held in Noordwijkerhout, March 24–28, 1986 GEMDAT i–viii and 1–542
Yu. I.Merzlyakov Gruppy i drugie algebraicheskie sistemy s usloviyami konechnosti 1984 4 Trudy Instituta Matematiki [Proceedings of the Institute of Mathematics]
Novosibirsk
``Nauka'' Sibirsk. Otdel. 755883 (85f:20003) 20-06 (17-06) 160
V.Dlab P.Gabriel G.Michler Representation theory. <C>II</C> 1986 1178 Lecture Notes in Mathematics
Berlin
Springer-Verlag Groups and orders 3-540-16433-2 842475 (87b:20003) 20-06 (16-06 20Cxx) Proceedings of the fourth international conference on representations of algebras held at Carleton University, Ottawa, Ont., August 16–25, 1984 xvi+370
MichaelAschbacher DanielGorenstein RichardLyons MichaelO'Nan CharlesSims WalterFeit Proceedings of the <C>R</C>utgers group theory year, 1983–1984 1985
Cambridge
Cambridge University Press Held at Rutgers University, New Brunswick, N.J., January 1983–June 1984 0-521-26493-6 817229 (86j:20003) 20-06 xii+415
M.Green D.Gross Workshop on unified string theories World Scientific Publishing Co. 1986
Singapore
Papers from the workshop held at the University of California, Santa Barbara, Calif., July 29–August 16, 1985 9971-50-031-0; 9971-50-032-9 849101 (87i:81012) 81-06 (81G20 83-06 83E15 83E50) Arthur Greenspoon viii+745
Kai NahCheng Yu KiangLeong Group theory 1989
Berlin
Walter de Gruyter & Co. 3-11-011366-X 981831 (89j:20001) 20-06 Proceedings of the Singapore Group Theory Conference held at the National University of Singapore, Singapore, June 8–19, 1987 xviii+586
A. I.Starostin Issledovaniya po teorii grupp Akad. Nauk SSSR Ural. Nauchn. Tsentr 1984
Sverdlovsk
818990 (86i:20006) 20-06 152
A. I.Starostin Strukturnye voprosy teorii grupp Akad. Nauk SSSR Ural. Nauchn. Tsentr 1986
Sverdlovsk
915187 (88f:20007) 20-06 144
Dijen K.Ray-Chaudhuri Relations between combinatorics and other parts of mathematics 1979 Proceedings of Symposia in Pure Mathematics, XXXIV
Providence, R.I.
American Mathematical Society 0-8218-1434-6 525315 (80a:05005) 05-06 Proceedings of the Symposium in Pure Mathematics of the American Mathematical Society held at the Ohio State University, Columbus, Ohio, March 20–23, 1978 xiii+378
BruceCooperstein GeoffreyMason The <C>S</C>anta <C>C</C>ruz <C>C</C>onference on <C>F</C>inite <C>G</C>roups American Mathematical Society 1980 37 Proceedings of Symposia in Pure Mathematics
Providence, R.I.
Held at the University of California, Santa Cruz, Calif., June 25–July 20, 1979 0-8218-1440-0 604551 (81m:20004) 20-06 (20Dxx) xviii+634
E. F.Robertson C. M.Campbell Proceedings of groups—<C>S</C>t. <C>A</C>ndrews 1985 1986 121 London Mathematical Society Lecture Note Series
Cambridge
Cambridge University Press Held at the University of St. Andrews, St. Andrews, July 27–August 10, 1985 0-521-33854-9 896497 (88e:20005) 20-06 x+358
Catharine AnneBaker Lynn MargaretBatten Finite geometries Marcel Dekker Inc. 1985 103 Lecture Notes in Pure and Applied Mathematics
New York
Papers from the conference held at Saint John's College, Winnipeg, Man., July 9–18, 1984 0-8247-7488-4 826788 (87a:51002) 51-06 (05B25) xiv+375
Ichir{ō}Satake Proceedings of the <C>I</C>nternational <C>C</C>ongress of <C>M</C>athematicians. <C>V</C>ol. <C>I</C>, <C>II</C> 1991
Tokyo
Mathematical Society of Japan Held in Kyoto, August 21–29, 1990 4-431-70047-1 1159197 (92m:00054) 00B25 Vol. I: lxxxviii+768 pp.; Vol. II: pp. i–xiv and 769–1684
A. I.Starostin Teoretiko-gruppovye issledovaniya Akad. Nauk SSSR Ural. Otdel. 1990
Sverdlovsk
1159124 (92k:20002) 20-06 144
L. A.Bokutʹ Yu. L.Ershov A. I.Kostrikin Proceedings of the <C>I</C>nternational <C>C</C>onference on <C>A</C>lgebra. <C>P</C>art 1 1992 131 Contemporary Mathematics
Providence, RI
American Mathematical Society Dedicated to the memory of A. I. Malʹcev [A. I. Malʹtsev], Held in Novosibirsk, August 21–26, 1989 0-8218-5136-5 1175757 (93b:00029) 00B25 (00B30) xxvi+712
MartinLiebeck JanSaxl Groups, combinatorics & geometry 1992 165 London Mathematical Society Lecture Note Series
Cambridge
Cambridge University Press 0-521-40685-4 1200244 (93g:20001) 20-06 (00B25 20Dxx) Proceedings of the L.M.S. Symposium on Groups and Combinatorics held in Durham, July 5–15, 1990 xiv+489
A.Barlotti A.Bichara P. V.Ceccherini G.Tallini Combinatorics '90 1992 52 Annals of Discrete Mathematics
Amsterdam
North-Holland Publishing Co. Recent trends and applications 0-444-89452-7 1195793 (93f:05003) 05-06 (00B25 51-06) Proceedings of the International Conference held in Gaeta, May 20–27, 1990 x+566
D.Jungnickel S. A.Vanstone K. T.Arasu M.Aschbacher J.Dinitz R.Foote Coding theory, design theory, group theory 1993 A Wiley-Interscience Publication
New York
John Wiley & Sons Inc. 0-471-55703-X 1227113 (94b:00043) 00B30 (05-06 20-06 51-06) Proceedings of the Marshall Hall Conference held at the University of Vermont, Burlington, Vermont, September 13–18, 1990 xxviii+299
LarryFinkelstein William M.Kantor Groups and computation 1993 11 DIMACS Series in Discrete Mathematics and Theoretical Computer Science
Providence, RI
American Mathematical Society 0-8218-6599-4 1235790 (94c:20003) 20-06 (20B40) Proceedings of the DIMACS Workshop held at Rutgers University, New Brunswick, New Jersey, October 7–10, 1991 xx+313
L.Corwin I.Gelʹfand J.Lepowsky The <C>G</C>elʹfand <C>M</C>athematical <C>S</C>eminars, 1990–1992 Birkhäuser Boston Inc. 1993
Boston, MA
0-8176-3689-7 1247277 (94e:00018) 00B15 x+235
D.Miklós V. T.Sós T.Szőnyi Combinatorics, <C>P</C>aul <C>E</C>rdős is eighty. <C>V</C>ol. 1 János Bolyai Mathematical Society 1993 Bolyai Society Mathematical Studies
Budapest
963-8022-74-4 1249700 (94e:00019) 00B25 (05-06) 527
R.Arnowitt R.Bryan M. J.Duff D.Nanopoulos C. N.Pope E.Sezgin Strings '90 1991
River Edge, NJ
World Scientific Publishing Co. Inc. 981-02-0312-8 1256491 (94h:81126) 81T30 (81-06) Proceedings of the Fourth Annual Superstring Workshop held at Texas A & M University, College Station, Texas, March 12–17, 1990 xii+533
E. M.Friedlander S. B.Priddy Proceedings of the <C>N</C>orthwestern conference on cohomology of groups 1987
Amsterdam
Elsevier Science B.V. Held at Northwestern University, Evanston, Ill., March 18–22, 1985, J. Pure Appl. Algebra 44 (1987), no. 1-3 0022-4049 885091 (87m:20002) 20-06 (20Jxx) JPAAA2 i–viii and 1–353
F.Hoffman R. C.Mullin R. G.Stanton K. B.Reid Proceedings of the seventeenth <C>S</C>outheastern international conference on combinatorics, graph theory, and computing 1986
Winnipeg, MB
Utilitas Mathematica Publishing Inc. Held at Florida Atlantic University, Boca Raton, Fla., February 10–14, 1986, Congr. Numer. 53 (1986) 0384-9864 885228 (87m:05005a) 05-06 1–288
atlasrep/bibl/mindegbib.xml0000644000175000017500000005204711551310437014375 0ustar samsam D. J.Benson The simple group <M>J_4</M> Cambridge 1980 J. H.Conway R. T.Curtis S. P.Norton R. A.Parker R. A.Wilson Atlas of finite groups Oxford University Press 1985
Eynsham
Maximal subgroups and ordinary characters for simple groups, With computational assistance from J. G. Thackray 0-19-853199-0 827219 (88g:20025) 20D05 (20-02) R. L. Griess xxxiv+252
<Wrap Name="Package">GAP</Wrap> – <C>G</C>roups, <C>A</C>lgorithms, and <C>P</C>rogramming, <C>V</C>ersion 4.4 http://www.gap-system.org 2004 GAP groups; *; gap; manual The GAP Group
Robert L.Griess Jr. Stephen D.Smith Minimal dimensions for modular representations of the <C>M</C>onster Comm. Algebra 1994 22 15 6279–6294 0092-7872 1303004 (96a:20021) 20C34 Ulrich Meierfrankenfeld COALDM Communications in Algebra
AnneHenke GerhardHiss JürgenMüller The <C><M>7</M></C>-modular decomposition matrices of the sporadic <C>O</C>'<C>N</C>an group J. London Math. Soc. (2) 1999 60 1 58–70 0024-6107 1721815 (2000i:20023) 20C34 (20C20 20C33 20C40) Donald L. White JLMSAK Journal of the London Mathematical Society. Second Series
S.Hensing <M>5</M>-modulare <C>Z</C>erlegungszahlen der sporadischen einfachen <C>G</C>ruppe <C><M>Co_1</M></C> und ihrer Überlagerungsgruppe <C><M>2.Co_1</M></C> Universität Heidelberg 1993 Diplomarbeit
GerhardHiss The <C><M>3</M></C>-modular characters of the <C>R</C>udvalis sporadic simple group and its covering group Math. Comp. 1994 62 206 851–863 0025-5718 1212267 (94g:20013) 20C20 (20C34 20D08) P. Fong MCMPAF Mathematics of Computation
GerhardHiss Decomposition matrices of the <C>C</C>hevalley group <C><M>F_4(2)</M></C> and its covering group Comm. Algebra 1997 25 8 2539–2555 0092-7872 1459575 (98d:20016) 20C33 (20C20 20C40) Julianne G. Rainbolt COALDM Communications in Algebra
G.Hiss K.Lux Brauer trees of sporadic groups The Clarendon Press Oxford University Press 1989 Oxford Science Publications
New York
0-19-853381-0 1033265 (91k:20018) 20C20 (20-02 20D08) Harvey Blau x+526
GerhardHiss KlausLux The <C><M>5</M></C>-modular characters of the sporadic simple <C>F</C>ischer groups <C><M>{\rm Fi}_{22}</M></C> and <C><M>{\rm Fi}_{23}</M></C> Comm. Algebra 1994 22 9 3563–3590 With an appendix by Thomas Breuer 0092-7872 1278806 (95e:20020) 20C34 (20C40) A. S. Kondratʹev COALDM Communications in Algebra
GerhardHiss JürgenMüller The <C><M>5</M></C>-modular characters of the sporadic simple <C>R</C>udvalis group and its covering group Comm. Algebra 1995 23 12 4633–4667 0092-7872 1352561 (96h:20027) 20C34 (20C20) Donald L. White COALDM Communications in Algebra
GerhardHiss Donald L.White The <C><M>5</M></C>-modular characters of the covering group of the sporadic simple <C>F</C>ischer group <C><M>{\rm Fi}_{22}</M></C> and its automorphism group Comm. Algebra 1994 22 9 3591–3611 0092-7872 1278807 (95e:20021) 20C34 (20C40) A. S. Kondratʹev COALDM Communications in Algebra
G.Hiss C.Jansen K.Lux R. A.Parker Computing with <C>M</C>odular <C>C</C>haracters http://www.math.rwth-aachen.de/LDFM/homes/MOC/CoMoChaT/ BertramHuppert Character theory of finite groups Walter de Gruyter & Co. 1998 25 de Gruyter Expositions in Mathematics
Berlin
3-11-015421-8 1645304 (99j:20011) 20C15 (20C05 20C10) Gerhard Hiss vi+618
BertramHuppert NormanBlackburn Finite groups. <C>II</C> Springer-Verlag 1982 242 Grundlehren der Mathematischen Wissenschaften [Fundamental Principles of Mathematical Sciences]
Berlin
AMD, 44 3-540-10632-4 650245 (84i:20001a) 20-02 (20Dxx) xiii+531
C.Jansen Ein <C>A</C>tlas <M>3</M>-modularer <C>C</C>haraktertafeln RWTH Aachen 1995 Dissertation
ChristophJansen The minimal degrees of faithful representations of the sporadic simple groups and their covering groups LMS J. Comput. Math. 2005 8 122–144 (electronic) 1461-1570 2153793 (2006e:20026) 20C34 Robert A. Wilson LMS Journal of Computation and Mathematics
ChristophJansen JürgenMüller The <C><M>3</M></C>-modular decomposition numbers of the sporadic simple <C>S</C>uzuki group Comm. Algebra 1997 25 8 2437–2458 0092-7872 1459570 (98e:20019) 20C34 (20D08) Koichiro Harada COALDM Communications in Algebra
C.Jansen R. A.Wilson The minimal faithful <C><M>3</M></C>-modular representation for the <C>L</C>yons group Comm. Algebra 1996 24 3 873–879 0092-7872 1374641 (97a:20021) 20C34 (20C40 20D08) Herbert Pahlings COALDM Communications in Algebra
C.Jansen R. A.Wilson The <C><M>2</M></C>-modular and <C><M>3</M></C>-modular decomposition numbers for the sporadic simple <C>O</C>'<C>N</C>an group and its triple cover J. London Math. Soc. (2) 1998 57 1 71–90 0024-6107 1624797 (99g:20025) 20C34 (20C20 20C40) Gerhard Hiss JLMSAK Journal of the London Mathematical Society. Second Series
C.Jansen K.Lux R.Parker R.Wilson An atlas of <C>B</C>rauer characters The Clarendon Press Oxford University Press 1995 11 London Mathematical Society Monographs. New Series
New York
Appendix 2 by T. Breuer and S. Norton, Oxford Science Publications 0-19-851481-6 1367961 (96k:20016) 20C20 (20-00 20D06 20D08) J. L. Alperin xviii+327 JLPW95
WernerMeyer WolframNeutsch RichardParker The minimal <C><M>5</M></C>-representation of <C>L</C>yons' sporadic group Math. Ann. 1985 272 1 29–39 0025-5831 794089 (86i:20025) 20D08 R. W. Carter MAANA Mathematische Annalen
JürgenMüller The <M>5</M>-modular decomposition matrix of the sporadic simple <C>C</C>onway group <C><M>Co_3</M></C>. Gloor, Oliver (ed.), Proceedings of the 1998 international symposium on symbolic and algebraic computation, ISSAC '98, Rostock, Germany, August 13–15, 1998. New York, NY: ACM Press. 179–185 (1998). 1998 Glo98 Summary: The 5-modular decomposition matrix of the principal block of the sporadic simple Conway group $Co_3$ is determined. The results are obtained by a combination of character theoretic methods and explicit module constructions and analyses, especially condensation techniques, with the assistance of the computer algebra systems GAP, MOC, and MeatAxe. $5$-modular decomposition matrices; principal blocks; sporadic simple Conway group $Co_3$ English *20C34 (Representations of sporadic groups) 20C20 (Modular representations and characters of groups) 0921.20012 JürgenMüller JensRosenboom Condensation of induced representations and an application: the <C><M>2</M></C>-modular decomposition numbers of <C><M>{\rm Co}_2</M></C> Computational methods for representations of groups and algebras (Essen, 1997) Birkhäuser 1999 173 Progr. Math. 309–321
Basel
DMR99 1714619 (2000g:20024) 20C15 (20C40 20D08)
HirosiNagao YukioTsushima Representations of finite groups Academic Press Inc. 1989
Boston, MA
Translated from the Japanese 0-12-513660-9 998775 (90h:20008) 20Cxx (20-01 20C20) Roderick Gow xviii+424
Simon P.Norton On the group <C><M>{\rm Fi}_{24}</M></C> Geom. Dedicata 1988 25 1-3 483–501 Geometries and groups (Noordwijkerhout, 1986) 0046-5755 925848 (89k:20024) 20D08 GEMDAT Geometriae Dedicata
A. J. E.Ryba Calculation of the <C><M>7</M></C>-modular characters of the <C>H</C>eld group J. Algebra 1988 117 1 240–255 0021-8693 955602 (89g:20026) 20C20 (20D08) David Benson JALGA4 Journal of Algebra
Ibrahim A. I.Suleiman Robert A.Wilson The <C><M>2</M></C>-modular characters of <C>C</C>onway's group <C><M>{\rm Co}_2</M></C> Math. Proc. Cambridge Philos. Soc. 1994 116 2 275–283 0305-0041 1281546 (95e:20024) 20C40 (20C34) Herbert Pahlings MPCPCO Mathematical Proceedings of the Cambridge Philosophical Society
Ibrahim A. I.Suleiman Robert A.Wilson The <C><M>2</M></C>-modular characters of <C>C</C>onway's third group <C><M>{\rm Co}_3</M></C> J. Symbolic Comput. 1997 24 3-4 493–506 Computational algebra and number theory (London, 1993) 0747-7171 1484495 (98k:20018) 20C34 (20C20 20C40 20D08) Herbert Pahlings Journal of Symbolic Computation
Robert A.Wilson A new construction of the <C>B</C>aby <C>M</C>onster and its applications Bull. London Math. Soc. 1993 25 5 431–437 0024-6093 1233405 (94k:20027) 20D08 (20C34 20C40) Richard Lyons LMSBBT The Bulletin of the London Mathematical Society
Robert A.Wilson <Wrap Name="Package">ATLAS</Wrap> <C>of Finite Group Representations</C> http://brauer.maths.qmul.ac.uk/Atlas/ ATLAS O.Gloor Proceedings of the 1998 <C>I</C>nternational <C>S</C>ymposium on <C>S</C>ymbolic and <C>A</C>lgebraic <C>C</C>omputation 1998
New York
The Association for Computing Machinery Association for Computing Machinery (ACM) Held in Rostock, August 13–15, 1998 ACM 1805195 (2001m:68004) 68-06 (00B25 68W30) front matter+321 pp. (electronic)
P.Dräxler G. O.Michler C. M.Ringel Computational methods for representations of groups and algebras Birkhäuser Verlag 1999 173 Progress in Mathematics
Basel
Papers from the 1st Euroconference held at the University of Essen, Essen, April 1–5, 1997 3-7643-6063-1 1714600 (2000d:16001) 16-06 (00B25 20-06) xiv+357
atlasrep/doc/chooser.html0000644000175000017500000000745612701177223014126 0ustar samsam GAPDoc Style Chooser

Setting preferences for GAPDoc manuals

Unfold subsections in menus only by mouse clicks: no (default)     yes

Show GAP examples as in sessions with ColorPrompt(true): yes (default)     no

Display side of table of contents within chapters: right (default)     left

Main document font: Helvetica/sans serif (default)     Times/serif

Paragraph formatting: left-right justified (default)     ragged right

Apply settings to last page.

atlasrep/doc/lefttoc.css0000644000175000017500000000047412701177223013741 0ustar samsam/* leftmenu.css Frank Lübeck */ /* Change default CSS to show section menu on left side */ body { padding-left: 28%; } body.chap0 { padding-left: 2%; } div.ChapSects div.ContSect:hover div.ContSSBlock { left: 15%; } div.ChapSects { left: 1%; width: 25%; } atlasrep/doc/makedocrel.g0000644000175000017500000001503512677004437014054 0ustar samsam## this creates the documentation, needs: GAPDoc package, latex, pdflatex, ## mkindex, dvips ## SetInfoLevel( InfoGAPDoc, 2 ); SetGapDocLaTeXOptions( "nocolor", "utf8", rec( Maintitlesize := "\\fontsize{50}{55}\\selectfont" ) ); #T change the numbers! pathtodoc:= "."; main:= "main.xml"; pkgname:= "AtlasRep"; bookname:= "AtlasRep"; pathtoroot:= "../../.."; files:= [ "../gap/access.gd", "../gap/access.gi", "../gap/bbox.gd", "../gap/brmindeg.g", "../gap/brspor.g", "../gap/interfac.gd", "../gap/mindeg.gd", "../gap/scanmtx.gd", "../gap/test.g", "../tst/testinst.g", "../gap/types.g", "../gap/types.gd", "../gap/userpref.g", "../gap/utils.gd", ]; AddHandlerBuildRecBibXMLEntry( "Wrap:Package", "BibTeX", function( entry, r, restype, strings, options ) return Concatenation( "\\textsf{", ContentBuildRecBibXMLEntry( entry, r, restype, strings, options ), "}" ); end ); AddHandlerBuildRecBibXMLEntry( "Wrap:Package", "HTML", function( entry, r, restype, strings, options ) return Concatenation( "", ContentBuildRecBibXMLEntry( entry, r, restype, strings, options ), "" ); end ); MakeGAPDocDoc( pathtodoc, main, files, bookname, pathtoroot );; CopyHTMLStyleFiles( pathtodoc ); GAPDocManualLabFromSixFile( bookname, Concatenation( pathtodoc, "/manual.six" ) ); ############################################################################# # Check the consistency of version numbers in 'PackageInfo.g' and the manual. CheckVersionNumber:= function( pkgname, pathtodoc, main ) local str, pos, pos2, version1, version2; # definition in the manual str:= StringFile( Concatenation( pathtodoc, "/", main ) ); pos:= PositionSublist( str, " version2 then Error( "version numbers (from ", main, ") and (from PackageInfo.g) differ" ); fi; end; CheckVersionNumber( pkgname, pathtodoc, main ); ############################################################################# pathtotst:= "../tst"; tstfilename:= "docxpl.tst"; authors:= [ "Thomas Breuer" ]; tstheadertext:= Concatenation( "\ This file contains the GAP code of the examples in the package\n\ documentation files.\n\ \n\ In order to run the tests, one starts GAP from the `tst' subdirectory\n\ of the `pkg/", LowercaseString( pkgname ), "' directory, and calls \ `Test( \"", tstfilename, "\" );'.\n" ); ExampleFileHeader:= function( filename, pkgname, authors, text, linelen, pathtodoc, main ) local str, pos, pos2, releaseyear, free1, free2, i; # definition in the manual str:= StringFile( Concatenation( pathtodoc, "/", main ) ); pos:= PositionSublist( str, " LoadPackage( \"" ); Append( str, pkgname ); Append( str, "\", false );\ntrue" ); Append( str, "\ngap> save:= SizeScreen();;" ); Append( str, "\ngap> SizeScreen( [ 72 ] );;" ); Append( str, "\ngap> START_TEST( \"Input file: " ); Append( str, filename ); Append( str, "\" );\n" ); return str; end; ExampleFileFooter:= function( filename, linelen ) local str; str:= "\n##\ngap> STOP_TEST( \""; Append( str, filename ); Append( str, "\", 10000000 );\n" ); Append( str, "gap> SizeScreen( save );;\n\n" ); Append( str, RepeatedString( "#", linelen ) ); Append( str, "\n##\n#E\n" ); return str; end; # create the test file with manual examples # (for a package: combined for all chapters) CreateManualExamplesFile:= function( pkgname, authors, text, path, main, files, tstpath, tstfilename ) local linelen, str, r, l, tstfilenameold; linelen:= 77; str:= "# This file was created automatically, do not edit!\n"; Append( str, ExampleFileHeader( tstfilename, pkgname, authors, text, linelen, path, main ) ); Append( str, "\n##\ngap> if IsBound( BrowseData ) then\n> oldinterval:= BrowseData.defaults.dynamic.replayDefaults.replayInterval;\n> BrowseData.defaults.dynamic.replayDefaults.replayInterval:= 1;\n> fi;\n" ); for r in ExtractExamples( path, main, files, "Chapter" ) do for l in r do Append( str, Concatenation( "\n## ", l[2][1], " (", String( l[2][2] ), "-", String( l[2][3] ), ")" ) ); Append( str, l[1] ); od; od; Append( str, "\n##\ngap> if IsBound( BrowseData ) then\n> BrowseData.defaults.dynamic.replayDefaults.replayInterval:= oldinterval;\n> fi;\n" ); Append( str, ExampleFileFooter( tstfilename, linelen ) ); tstfilename:= Concatenation( tstpath, "/", tstfilename ); tstfilenameold:= Concatenation( tstfilename, "~" ); if IsExistingFile( tstfilename ) then Exec( Concatenation( "rm -f ", tstfilenameold ) ); Exec( Concatenation( "mv ", tstfilename, " ", tstfilenameold ) ); fi; FileString( tstfilename, str ); if IsExistingFile( tstfilenameold ) then Print( "#I differences in `", tstfilename, "':\n" ); Exec( Concatenation( "diff ", tstfilenameold, " ", tstfilename ) ); fi; Exec( Concatenation( "chmod 444 ", tstfilename ) ); end; CreateManualExamplesFile( pkgname, authors, tstheadertext, pathtodoc, main, files, pathtotst, tstfilename ); atlasrep/doc/manual.css0000644000175000017500000001575412701177223013565 0ustar samsam/* manual.css Frank Lübeck */ /* This is the default CSS style sheet for GAPDoc HTML manuals. */ /* basic settings, fonts, sizes, colors, ... */ body { position: relative; background: #ffffff; color: #000000; width: 70%; margin: 0pt; padding: 15pt; font-family: Helvetica,Verdana,Arial,sans-serif; text-align: justify; } /* no side toc on title page, bib and index */ body.chap0 { width: 95%; } body.chapBib { width: 95%; } body.chapInd { width: 95%; } h1 { font-size: 200%; } h2 { font-size: 160%; } h3 { font-size: 160%; } h4 { font-size: 130%; } h5 { font-size: 100%; } p.foot { font-size: 60%; font-style: normal; } a:link { color: #00008e; text-decoration: none; } a:visited { color: #00008e; text-decoration: none; } a:active { color: #000000; text-decoration: none; } a:hover { background: #eeeeee; } pre { font-family: "Courier New",Courier,monospace; font-size: 100%; color:#111111; } tt,code { font-family: "Courier New",Courier,monospace; font-size: 110%; color: #000000; } var { } /* general alignment classes */ .pcenter { text-align: center; } .pleft { text-align: left; } .pright { text-align: right; } /* layout for the definitions of functions, variables, ... */ div.func { background: #e0e0e0; margin: 0pt 0pt; } /* general and special table settings */ table { border-collapse: collapse; margin-left: auto; margin-right: auto; } td, th { border-style: none; } table.func { padding: 0pt 1ex; margin-left: 1ex; margin-right: 1ex; background: transparent; /* line-height: 1.1; */ width: 100%; } table.func td.tdright { padding-right: 2ex; } /* Example elements (for old converted manuals, now in div+pre */ table.example { background: #efefef; border-style: none; border-width: 0pt; padding: 0px; width: 100% } table.example td { border-style: none; border-width: 0pt; padding: 0ex 1ex; } /* becomes ... */ div.example { background: #efefef; padding: 0ex 1ex; /* overflow-x: auto; */ overflow: auto; } /* Links to chapters in all files at top and bottom. */ /* If there are too many chapters then use 'display: none' here. */ div.chlinktop { background: #dddddd; border-style: solid; border-width: thin; margin: 2px; text-align: center; } div.chlinktop a { margin: 3px; } div.chlinktop a:hover { background: #ffffff; } div.chlinkbot { background: #dddddd; border-style: solid; border-width: thin; margin: 2px; text-align: center; /* width: 100%; */ } div.chlinkbot a { margin: 3px; } span.chlink1 { } /* and this is for the "Top", "Prev", "Next" links */ div.chlinkprevnexttop { background: #dddddd; border-style: solid; border-width: thin; text-align: center; margin: 2px; } div.chlinkprevnexttop a:hover { background: #ffffff; } div.chlinkprevnextbot { background: #dddddd; border-style: solid; border-width: thin; text-align: center; margin: 2px; } div.chlinkprevnextbot a:hover { background: #ffffff; } /* table of contents, initially don't display subsections */ div.ContSSBlock { display: none; } div.ContSSBlock br { display: none; } /* format in separate lines */ span.tocline { display: block; width: 100%; } div.ContSSBlock a { display: block; } /* this is for the main table of contents */ div.ContChap { } div.ContChap div.ContSect:hover div.ContSSBlock { display: block; position: absolute; background: #eeeeee; border-style: solid; border-width: 1px 4px 4px 1px; border-color: #666666; padding-left: 0.5ex; color: #000000; left: 20%; width: 40%; z-index: 10000; } div.ContSSBlock a:hover { background: #ffffff; } /* and here for the side menu of contents in the chapter files */ div.ChapSects { } div.ChapSects a:hover { background: #eeeeee; } div.ChapSects a:hover { display: block; width: 100%; background: #eeeeee; color: #000000; } div.ChapSects div.ContSect:hover div.ContSSBlock { display: block; position: fixed; background: #eeeeee; border-style: solid; border-width: 1px 2px 2px 1px; border-color: #666666; padding-left: 0ex; padding-right: 0.5ex; color: #000000; left: 54%; width: 25%; z-index: 10000; } div.ChapSects div.ContSect:hover div.ContSSBlock a { display: block; margin-left: 3px; } div.ChapSects div.ContSect:hover div.ContSSBlock a:hover { display: block; background: #ffffff; } div.ContSect { text-align: left; margin-left: 1em; } div.ChapSects { position: fixed; left: 75%; font-size: 90%; overflow: auto; top: 10px; bottom: 0px; } /* Table elements */ table.GAPDocTable { border-collapse: collapse; border-style: none; border-color: black; } table.GAPDocTable td, table.GAPDocTable th { padding: 3pt; border-width: thin; border-style: solid; border-color: #555555; } caption.GAPDocTable { caption-side: bottom; width: 70%; margin-top: 1em; margin-left: auto; margin-right: auto; } td.tdleft { text-align: left; } table.GAPDocTablenoborder { border-collapse: collapse; border-style: none; border-color: black; } table.GAPDocTablenoborder td, table.GAPDocTable th { padding: 3pt; border-width: 0pt; border-style: solid; border-color: #555555; } caption.GAPDocTablenoborder { caption-side: bottom; width: 70%; margin-top: 1em; margin-left: auto; margin-right: auto; } td.tdleft { text-align: left; } td.tdright { text-align: right; } td.tdcenter { text-align: center; } /* Colors and fonts can be overwritten for some types of elements. */ /* Verb elements */ pre.normal { color: #000000; } /* Func-like elements and Ref to Func-like */ code.func { color: #000000; } /* K elements */ code.keyw { color: #770000; } /* F elements */ code.file { color: #8e4510; } /* C elements */ code.code { } /* Item elements */ code.i { } /* Button elements */ strong.button { } /* Headings */ span.Heading { } /* Arg elements */ var.Arg { color: #006600; } /* Example elements, is in tables, see above */ div.Example { } /* Package elements */ strong.pkg { } /* URL-like elements */ span.URL { } /* Mark elements */ strong.Mark { } /* Ref elements */ b.Ref { } span.Ref { } /* this contains the contents page */ div.contents { } /* this contains the index page */ div.index { } /* ignore some text for non-css layout */ span.nocss { display: none; } /* colors for ColorPrompt like examples */ span.GAPprompt { color: #000097; font-weight: normal; } span.GAPbrkprompt { color: #970000; font-weight: normal; } span.GAPinput { color: #970000; } /* Bib entries */ p.BibEntry { } span.BibKey { color: #005522; } span.BibKeyLink { } b.BibAuthor { } i.BibTitle { } i.BibBookTitle { } span.BibEditor { } span.BibJournal { } span.BibType { } span.BibPublisher { } span.BibSchool { } span.BibEdition { } span.BibVolume { } span.BibSeries { } span.BibNumber { } span.BibPages { } span.BibOrganization { } span.BibAddress { } span.BibYear { } span.BibPublisher { } span.BibNote { } span.BibHowpublished { } atlasrep/doc/manual.js0000644000175000017500000001003412701177223013373 0ustar samsam/* manual.js Frank Lübeck */ /* This file contains a few javascript functions which allow to switch between display styles for GAPDoc HTML manuals. If javascript is switched off in a browser or this file in not available in a manual directory, this is no problem. Users just cannot switch between several styles and don't see the corresponding button. A style with name mystyle can be added by providing two files (or only one of them). mystyle.js: Additional javascript code for the style, it is read in the HTML pages after this current file. The additional code may adjust the preprocessing function jscontent() with is called onload of a file. This is done by appending functions to jscontentfuncs (jscontentfuncs.push(newfunc);). Make sure, that your style is still usable without javascript. mystyle.css: CSS configuration, read after manual.css (so it can just reconfigure a few details, or overwrite everything). Then adjust chooser.html such that users can switch on and off mystyle. A user can change the preferred style permanently by using the [Style] link and choosing one. Or one can append '?GAPDocStyle=mystyle' to the URL when loading any file of the manual (so the style can be configured in the GAP user preferences). */ /* generic helper function */ function deleteCookie(nam) { document.cookie = nam+"=;Path=/;expires=Thu, 01 Jan 1970 00:00:00 GMT"; } /* read a value from a "nam1=val1;nam2=val2;..." string (e.g., the search part of an URL or a cookie */ function valueString(str,nam) { var cs = str.split(";"); for (var i=0; i < cs.length; i++) { var pos = cs[i].search(nam+"="); if (pos > -1) { pos = cs[i].indexOf("="); return cs[i].slice(pos+1); } } return 0; } /* when a non-default style is chosen via URL or a cookie, then the cookie is reset and the styles .js and .css files are read */ function overwriteStyle() { /* style in URL? */ var style = valueString(window.location.search, "GAPDocStyle"); /* otherwise check cookie */ if (style == 0) style = valueString(document.cookie, "GAPDocStyle"); if (style == 0) return; if (style == "default") deleteCookie("GAPDocStyle"); else { /* ok, we set the cookie for path "/" */ var path = "/"; /* or better like this ??? var here = window.location.pathname.split("/"); for (var i=0; i+3 < here.length; i++) path = path+"/"+here[i]; */ document.cookie = "GAPDocStyle="+style+";Path="+path; /* split into names of style files */ var stlist = style.split(","); /* read style's css and js files */ for (var i=0; i < stlist.length; i++) { document.writeln(''); document.writeln(''); } } } /* this adds a "[Style]" link next to the MathJax switcher */ function addStyleLink() { var line = document.getElementById("mathjaxlink"); var el = document.createElement("a"); var oncl = document.createAttribute("href"); var back = window.location.protocol+"//" if (window.location.protocol == "http:") { back = back+window.location.host; if (window.location.port != "") { back = back+":"+window.location.port; } } back = back+window.location.pathname; oncl.nodeValue = "chooser.html?BACK="+back; el.setAttributeNode(oncl); var cont = document.createTextNode(" [Style]"); el.appendChild(cont); line.appendChild(el); } var jscontentfuncs = new Array(); jscontentfuncs.push(addStyleLink); /* the default jscontent() only adds the [Style] link to the page */ function jscontent () { for (var i=0; i < jscontentfuncs.length; i++) jscontentfuncs[i](); } atlasrep/doc/manual.lab0000644000175000017500000003527712701177223013535 0ustar samsam\GAPDocLabFile{atlasrep} \makelabel{atlasrep:Title page}{}{X7D2C85EC87DD46E5} \makelabel{atlasrep:Copyright}{}{X81488B807F2A1CF1} \makelabel{atlasrep:Table of Contents}{}{X8537FEB07AF2BEC8} \makelabel{atlasrep:Introduction to the AtlasRep Package}{1}{X8590688C7EF8F033} \makelabel{atlasrep:The ATLAS of Group Representations}{1.1}{X7B23A1EA7E3711B8} \makelabel{atlasrep:The GAP Interface to the ATLAS of Group Representations}{1.2}{X869477FF842395E5} \makelabel{atlasrep:What's New in AtlasRep, Compared to Older Versions?}{1.3}{X7B545103804AD69A} \makelabel{atlasrep:What's New in Version 1.5.1? (March 2016)}{1.3.1}{X7EACAC887E257302} \makelabel{atlasrep:What's New in Version 1.5? (July 2011)}{1.3.2}{X86002B747AE0741B} \makelabel{atlasrep:What's New in Version 1.4? (June 2008)}{1.3.3}{X878EBA108716DDF0} \makelabel{atlasrep:What's New in Version 1.3.1? (October 2007)}{1.3.4}{X87A53CE182C9E086} \makelabel{atlasrep:What's New in Version 1.3? (June 2007)}{1.3.5}{X79CCC5517897924C} \makelabel{atlasrep:What's New in Version 1.2? (November 2003)}{1.3.6}{X7BDCA94D83DCFFB8} \makelabel{atlasrep:What's New in Version 1.1? (October 2002)}{1.3.7}{X831628B47F669B29} \makelabel{atlasrep:Acknowledgements}{1.4}{X82A988D47DFAFCFA} \makelabel{atlasrep:Tutorial for the AtlasRep Package}{2}{X8502B3798180E78D} \makelabel{atlasrep:Accessing a Specific Group in AtlasRep}{2.1}{X7B1C6A2C85E3D9CB} \makelabel{atlasrep:Accessing a Group in AtlasRep via its Name}{2.1.1}{X7E8FF5D57B436B27} \makelabel{atlasrep:Accessing a Maximal Subgroup of a Group in AtlasRep}{2.1.2}{X7B76BAC57A0B2103} \makelabel{atlasrep:Accessing Specific Generators in AtlasRep}{2.2}{X84AF851185013AE7} \makelabel{atlasrep:Basic Concepts used in AtlasRep}{2.3}{X871D68B67FF32BC4} \makelabel{atlasrep:Groups, Generators, and Representations}{2.3.1}{X7E2FB5E5852AD970} \makelabel{atlasrep:Straight Line Programs}{2.3.2}{X7DC99E4284093FBB} \makelabel{atlasrep:Examples of Using the AtlasRep Package}{2.4}{X7A9523F486EB2A04} \makelabel{atlasrep:Example: Class Representatives}{2.4.1}{X8563D96878AC685C} \makelabel{atlasrep:Example: Permutation and Matrix Representations}{2.4.2}{X81C9233778A3A817} \makelabel{atlasrep:Example: Outer Automorphisms}{2.4.3}{X8284D7E87D38889C} \makelabel{atlasrep:Example: Using Semi-presentations and Black Box Programs}{2.4.4}{X794D669E7A507310} \makelabel{atlasrep:Example: Using the GAP Library of Tables of Marks}{2.4.5}{X861E691782DAE655} \makelabel{atlasrep:Example: Index 770 Subgroups in M22}{2.4.6}{X79E261637D309687} \makelabel{atlasrep:Example: Index 462 Subgroups in M22}{2.4.7}{X7C77816A878B37C4} \makelabel{atlasrep:The User Interface of the AtlasRep Package}{3}{X79CC2FC07C77EB2C} \makelabel{atlasrep:Accessing vs. Constructing Representations}{3.1}{X87D26B13819A8209} \makelabel{atlasrep:Group Names Used in the AtlasRep Package}{3.2}{X87E64E2B7B8A8152} \makelabel{atlasrep:Standard Generators Used in the AtlasRep Package}{3.3}{X7F53EDAB7992C192} \makelabel{atlasrep:Class Names Used in the AtlasRep Package}{3.4}{X7E3DFE9E803D1E6E} \makelabel{atlasrep:Definition of ATLAS Class Names}{3.4.1}{X796BB396862ABDCF} \makelabel{atlasrep:Accessing Data of the AtlasRep Package}{3.5}{X86B07B4387A02B06} \makelabel{atlasrep:AtlasGroup}{3.5.7}{X80AABEE783363B70} \makelabel{atlasrep:AtlasSubgroup}{3.5.8}{X7A3E460C82B3D9A3} \makelabel{atlasrep:Browse Applications Provided by AtlasRep}{3.6}{X7A27E82E8480B92B} \makelabel{atlasrep:Customizations of the AtlasRep Package}{4}{X7DBC1D157F0EE283} \makelabel{atlasrep:Installing the AtlasRep Package}{4.1}{X8104B09D80CAA41A} \makelabel{atlasrep:Maintaining the Local Data of the AtlasRep Package}{4.2}{X7A40921B84F27E68} \makelabel{atlasrep:User Parameters for the AtlasRep Package}{4.3}{X81358A377CC2C463} \makelabel{atlasrep:Local or Remote Access}{4.3.1}{X7E1934D2780D108F} \makelabel{atlasrep:Adding and Removing Servers}{4.3.2}{X826B8F128277032E} \makelabel{atlasrep:Accessing Data Files with the GAP Package IO or with wget}{4.3.3}{X7D58635A79A666DB} \makelabel{atlasrep:Compressed or Uncompressed Data Files}{4.3.4}{X7E0AC1127B4363E7} \makelabel{atlasrep:Customizing DisplayAtlasInfo}{4.3.5}{X7DAC8E1E7A419360} \makelabel{atlasrep:Customizing the Access to Data Files}{4.3.6}{X7FA485E479F6C3A0} \makelabel{atlasrep:Reading Large Matrices over Finite Fields}{4.3.7}{X866E1476853E42C2} \makelabel{atlasrep:User preference AtlasRepDataDirectory}{4.3.9}{X7F6F45758688CBC7} \makelabel{atlasrep:User preference WriteMeatAxeFilesOfMode2}{4.3.10}{X83BCD08D7CA64406} \makelabel{atlasrep:User preference BaseOfMeatAxePermutation}{4.3.11}{X7FFD07D784899045} \makelabel{atlasrep:Web Services for the AtlasRep Package}{4.4}{X876E8147820EABAF} \makelabel{atlasrep:Extending the ATLAS Database}{4.5}{X80C7729A8404F682} \makelabel{atlasrep:Private Extensions of the AtlasRep Package}{5}{X7B33345C7B304697} \makelabel{atlasrep:Adding a Private Data Directory}{5.1}{X8072E5C9825D6CCE} \makelabel{atlasrep:The Effect of Private Extensions on the User Interface}{5.2}{X7E186BFA7E59BD47} \makelabel{atlasrep:An Example of Extending the AtlasRep Package}{5.3}{X7AB60BFC87EAB4C5} \makelabel{atlasrep:New GAP Objects and Utility Functions Provided by the AtlasRep Package}{6}{X7EFB2E2A7857AC06} \makelabel{atlasrep:Straight Line Decisions}{6.1}{X8121E9567A7137C9} \makelabel{atlasrep:Semi-Presentations and Presentations}{6.1.7}{X7C94ECAC8583CEAE} \makelabel{atlasrep:Black Box Programs}{6.2}{X7BE856BC785A9E8F} \makelabel{atlasrep:Representations of Minimal Degree}{6.3}{X87E1F08D80C9E069} \makelabel{atlasrep:Criteria Used to Compute Minimality Information}{6.3.4}{X7FC33DFF8481F8D1} \makelabel{atlasrep:Technicalities of the AtlasRep Package}{7}{X812769A8852CF93E} \makelabel{atlasrep:Global Variables Used by the AtlasRep Package}{7.1}{X84F6276387622F46} \makelabel{atlasrep:How to Customize the Access to Data files}{7.2}{X81C5B5E78215169D} \makelabel{atlasrep:Reading and Writing MeatAxe Format Files}{7.3}{X7D76D4437A9646E7} \makelabel{atlasrep:Reading and Writing ATLAS Straight Line Programs}{7.4}{X8211B26D841B874C} \makelabel{atlasrep:Data Types Used in the ATLAS of Group Representations}{7.5}{X7C164C4D7ECE62D0} \makelabel{atlasrep:Filenames Used in the ATLAS of Group Representations}{7.6}{X7C2562A978319179} \makelabel{atlasrep:The Tables of Contents of the ATLAS of Group Representations}{7.7}{X7AD2556F87F1D40D} \makelabel{atlasrep:Sanity Checks for the ATLAS of Group Representations}{7.8}{X7D42612882656B32} \makelabel{atlasrep:Sanity Checks for a Table of Contents}{7.8.1}{X86FDCF0B85496AE5} \makelabel{atlasrep:Other Sanity Checks}{7.8.2}{X7FBFA8D287B807D2} \makelabel{atlasrep:Bibliography}{Bib}{X7A6F98FD85F02BFE} \makelabel{atlasrep:References}{Bib}{X7A6F98FD85F02BFE} \makelabel{atlasrep:Index}{Ind}{X83A0356F839C696F} \makelabel{atlasrep:AtlasRep}{}{X7D2C85EC87DD46E5} \makelabel{atlasrep:black box program}{1.1}{X7B23A1EA7E3711B8} \makelabel{atlasrep:straight line program}{1.1}{X7B23A1EA7E3711B8} \makelabel{atlasrep:MeatAxe}{1.1}{X7B23A1EA7E3711B8} \makelabel{atlasrep:Magma}{1.1}{X7B23A1EA7E3711B8} \makelabel{atlasrep:C-MeatAxe}{1.2}{X869477FF842395E5} \makelabel{atlasrep:wget}{1.3.5}{X79CCC5517897924C} \makelabel{atlasrep:ftp}{1.3.5}{X79CCC5517897924C} \makelabel{atlasrep:perl}{1.3.5}{X79CCC5517897924C} \makelabel{atlasrep:wget}{1.3.7}{X831628B47F669B29} \makelabel{atlasrep:gzip}{1.3.7}{X831628B47F669B29} \makelabel{atlasrep:perl}{1.4}{X82A988D47DFAFCFA} \makelabel{atlasrep:AtlasClassNames}{3.4.2}{X78166D1D7D18EFBF} \makelabel{atlasrep:AtlasCharacterNames}{3.4.3}{X7B14A254870BA5A1} \makelabel{atlasrep:DisplayAtlasInfo}{3.5.1}{X79DACFFA7E2D1A99} \makelabel{atlasrep:DisplayAtlasInfo (for a group name, and optionally further restrictions)}{3.5.1}{X79DACFFA7E2D1A99} \makelabel{atlasrep:straight line program}{3.5.1}{X79DACFFA7E2D1A99} \makelabel{atlasrep:AtlasGenerators}{3.5.2}{X7D1CCCF8852DFF39} \makelabel{atlasrep:AtlasGenerators (for an identifier)}{3.5.2}{X7D1CCCF8852DFF39} \makelabel{atlasrep:AtlasProgram}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:AtlasProgram (for an identifier)}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:straight line program for maximal subgroups}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:maximal subgroups}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:straight line program for class representatives}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:class representatives}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:straight line program for representatives of cyclic subgroups}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:cyclic subgroups}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:maximally cyclic subgroups}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:straight line program for outer automorphisms}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:automorphisms}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:straight line decision for checking standard generators}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:straight line decision encoding a presentation}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:black box program for finding standard generators}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:straight line program for restandardizing}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:straight line program free format}{3.5.3}{X801F2E657C8A79ED} \makelabel{atlasrep:AtlasProgramInfo}{3.5.4}{X83DFD8967E6BC831} \makelabel{atlasrep:OneAtlasGeneratingSetInfo}{3.5.5}{X841478AB7CD06D44} \makelabel{atlasrep:AllAtlasGeneratingSetInfos}{3.5.6}{X84C2D76482E60E42} \makelabel{atlasrep:AtlasGroup (for various arguments)}{3.5.7}{X80AABEE783363B70} \makelabel{atlasrep:AtlasGroup (for an identifier record)}{3.5.7}{X80AABEE783363B70} \makelabel{atlasrep:AtlasSubgroup (for a group name (and various arguments) and a number)}{3.5.8}{X7A3E460C82B3D9A3} \makelabel{atlasrep:AtlasSubgroup (for an identifier record and a number)}{3.5.8}{X7A3E460C82B3D9A3} \makelabel{atlasrep:AtlasSubgroup (for a group and a number)}{3.5.8}{X7A3E460C82B3D9A3} \makelabel{atlasrep:AtlasRepInfoRecord}{3.5.9}{X87AFEC90873BCDD1} \makelabel{atlasrep:BrowseMinimalDegrees}{3.6.1}{X7F31A7CB841FE63F} \makelabel{atlasrep:BrowseBibliographySporadicSimple}{3.6.2}{X84ED4FC182C28198} \makelabel{atlasrep:IO package}{4.1}{X8104B09D80CAA41A} \makelabel{atlasrep:ATLASREPTOCFILE}{4.2}{X7A40921B84F27E68} \makelabel{atlasrep:ReloadAtlasTableOfContents}{4.2.1}{X7AC3EA317EDBDA0E} \makelabel{atlasrep:StoreAtlasTableOfContents}{4.2.2}{X7E3E52D380C20363} \makelabel{atlasrep:ReplaceAtlasTableOfContents}{4.2.3}{X847A5AFD7B5D8570} \makelabel{atlasrep:AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates}{4.2.4}{X7E04B1C57C38DCB2} \makelabel{atlasrep:IO package}{4.2.4}{X7E04B1C57C38DCB2} \makelabel{atlasrep:touch}{4.2.4}{X7E04B1C57C38DCB2} \makelabel{atlasrep:local access}{4.3.1}{X7E1934D2780D108F} \makelabel{atlasrep:remote access}{4.3.1}{X7E1934D2780D108F} \makelabel{atlasrep:servers}{4.3.1}{X7E1934D2780D108F} \makelabel{atlasrep:IO package}{4.3.3}{X7D58635A79A666DB} \makelabel{atlasrep:wget}{4.3.3}{X7D58635A79A666DB} \makelabel{atlasrep:IO package}{4.3.3}{X7D58635A79A666DB} \makelabel{atlasrep:wget}{4.3.3}{X7D58635A79A666DB} \makelabel{atlasrep:compress}{4.3.4}{X7E0AC1127B4363E7} \makelabel{atlasrep:gzip}{4.3.4}{X7E0AC1127B4363E7} \makelabel{atlasrep:AtlasOfGroupRepresentationsUserParameters}{4.3.8}{X828B39E6853F357A} \makelabel{atlasrep:AtlasOfGroupRepresentationsNotifyPrivateDirectory}{5.1.1}{X825AF58885A48520} \makelabel{atlasrep:AtlasOfGroupRepresentationsForgetPrivateDirectory}{5.1.2}{X8748A8BB7C7089EE} \makelabel{atlasrep:IsStraightLineDecision}{6.1.1}{X8787E2EC7DB85A89} \makelabel{atlasrep:LinesOfStraightLineDecision}{6.1.2}{X82AFAD9F7FA5CE8A} \makelabel{atlasrep:NrInputsOfStraightLineDecision}{6.1.3}{X7B1A43427BD97FDF} \makelabel{atlasrep:ScanStraightLineDecision}{6.1.4}{X82A3632782E45F35} \makelabel{atlasrep:StraightLineDecision}{6.1.5}{X825C4E4180F3D989} \makelabel{atlasrep:StraightLineDecisionNC}{6.1.5}{X825C4E4180F3D989} \makelabel{atlasrep:ResultOfStraightLineDecision}{6.1.6}{X7E7B328A84685480} \makelabel{atlasrep:semi-presentation}{6.1.7}{X7C94ECAC8583CEAE} \makelabel{atlasrep:presentation}{6.1.7}{X7C94ECAC8583CEAE} \makelabel{atlasrep:AsStraightLineDecision}{6.1.8}{X7C13D08C7D55E20A} \makelabel{atlasrep:StraightLineProgramFromStraightLineDecision}{6.1.9}{X7EA613C57DDC67D5} \makelabel{atlasrep:IsBBoxProgram}{6.2.1}{X87CAF2DE870D0E3B} \makelabel{atlasrep:ScanBBoxProgram}{6.2.2}{X7EA20532868F9863} \makelabel{atlasrep:RunBBoxProgram}{6.2.3}{X7D211A5D8602B330} \makelabel{atlasrep:ResultOfBBoxProgram}{6.2.4}{X869BACFB80A3CC87} \makelabel{atlasrep:AsBBoxProgram}{6.2.5}{X826ACFE887E0B6B8} \makelabel{atlasrep:AsStraightLineProgram}{6.2.6}{X7D36DFA87C8B2C48} \makelabel{atlasrep:MinimalRepresentationInfo}{6.3.1}{X7DC66D8282B2BB7F} \makelabel{atlasrep:MinimalRepresentationInfoData}{6.3.2}{X7E1B76DC86A8C405} \makelabel{atlasrep:SetMinimalRepresentationInfo}{6.3.3}{X79C4C9F683E919C9} \makelabel{atlasrep:InfoAtlasRep}{7.1.1}{X8006BE167EB81E16} \makelabel{atlasrep:InfoCMeatAxe}{7.1.2}{X78601C3A87921E08} \makelabel{atlasrep:InfoBBox}{7.1.3}{X80D5EF9A7FEF124B} \makelabel{atlasrep:CMeatAxe.FastRead}{7.1.4}{X85B6010C85A06CB6} \makelabel{atlasrep:AGR}{7.1.5}{X84A157BF7D0CB270} \makelabel{atlasrep:AtlasOfGroupRepresentationsInfo}{7.1.6}{X7BEC94A6781E126E} \makelabel{atlasrep:IO package}{7.1.6}{X7BEC94A6781E126E} \makelabel{atlasrep:wget}{7.1.6}{X7BEC94A6781E126E} \makelabel{atlasrep:gzip}{7.1.6}{X7BEC94A6781E126E} \makelabel{atlasrep:matrix MeatAxe format}{7.3}{X7D76D4437A9646E7} \makelabel{atlasrep:permutation MeatAxe format}{7.3}{X7D76D4437A9646E7} \makelabel{atlasrep:ScanMeatAxeFile}{7.3.1}{X83D5103780E1238F} \makelabel{atlasrep:zcv}{7.3.1}{X83D5103780E1238F} \makelabel{atlasrep:MeatAxeString}{7.3.2}{X7DDD09BE87063052} \makelabel{atlasrep:MeatAxeString (for permutations and a degree)}{7.3.2}{X7DDD09BE87063052} \makelabel{atlasrep:MeatAxeString (for a permutation, q, and dims)}{7.3.2}{X7DDD09BE87063052} \makelabel{atlasrep:FFList}{7.3.3}{X79D9AE4878E9DFA6} \makelabel{atlasrep:FFLists}{7.3.3}{X79D9AE4878E9DFA6} \makelabel{atlasrep:CMtxBinaryFFMatOrPerm}{7.3.4}{X8477AA668733255C} \makelabel{atlasrep:FFMatOrPermCMtxBinary}{7.3.5}{X872FA00C7F791FBB} \makelabel{atlasrep:ScanStraightLineProgram}{7.4.1}{X7D6617E47B013A37} \makelabel{atlasrep:AtlasStringOfProgram}{7.4.2}{X82842D807A7B7DF7} \makelabel{atlasrep:AtlasStringOfProgram (for MeatAxe format output)}{7.4.2}{X82842D807A7B7DF7} \makelabel{atlasrep:AGR.DeclareDataType}{7.5.1}{X836AA4EA8346BE5B} \makelabel{atlasrep:class representatives}{7.6}{X7C2562A978319179} \makelabel{atlasrep:maximal subgroups}{7.6}{X7C2562A978319179} \makelabel{atlasrep:automorphisms}{7.6}{X7C2562A978319179} \makelabel{atlasrep:semi-presentation}{7.6}{X7C2562A978319179} \makelabel{atlasrep:presentation}{7.6}{X7C2562A978319179} \makelabel{atlasrep:black box program for finding standard generators}{7.6}{X7C2562A978319179} \makelabel{atlasrep:AGR.ParseFilenameFormat}{7.6.1}{X8486CCB181FC99A3} \makelabel{atlasrep:AGR.FileContents}{7.6.2}{X78AB92DB7C2CAB6E} atlasrep/doc/manual.six0000644000175000017500000010207412701177220013565 0ustar samsam#SIXFORMAT GapDocGAP HELPBOOKINFOSIXTMP := rec( encoding := "UTF-8", bookname := "AtlasRep", entries := [ [ "Title page", ".", [ 0, 0, 0 ], 1, 1, "title page", "X7D2C85EC87DD46E5" ], [ "Copyright", ".-1", [ 0, 0, 1 ], 36, 2, "copyright", "X81488B807F2A1CF1" ] , [ "Table of Contents", ".-2", [ 0, 0, 2 ], 44, 3, "table of contents", "X8537FEB07AF2BEC8" ], [ "\033[1X\033[33X\033[0;-2YIntroduction to the \033[5XAtlasRep\033[105X\033[\ 101X\027\033[1X\027 Package\033[133X\033[101X", "1", [ 1, 0, 0 ], 1, 5, "introduction to the atlasrep\027\027 package", "X8590688C7EF8F033" ], [ "\033[1X\033[33X\033[0;-2YThe \033[5XATLAS\033[105X\033[101X\027\033[1X\ \027 of Group Representations\033[133X\033[101X", "1.1", [ 1, 1, 0 ], 36, 5, "the atlas\027\027 of group representations", "X7B23A1EA7E3711B8" ], [ "\033[1X\033[33X\033[0;-2YThe GAP Interface to the \033[5XATLAS\033[105X\\ 033[101X\027\033[1X\027 of Group Representations\033[133X\033[101X", "1.2", [ 1, 2, 0 ], 86, 6, "the gap interface to the atlas\027\027 of group representations", "X869477FF842395E5" ], [ "\033[1X\033[33X\033[0;-2YWhat's New in \033[5XAtlasRep\033[105X\033[101X\\ 027\033[1X\027, Compared to Older Versions?\033[133X\033[101X", "1.3", [ 1, 3, 0 ], 114, 7, "whats new in atlasrep\027\027 compared to older versions?", "X7B545103804AD69A" ], [ "\033[1X\033[33X\033[0;-2YWhat's New in Version 1.5.1? (March 2016)\033[133\ X\033[101X", "1.3-1", [ 1, 3, 1 ], 117, 7, "whats new in version 1.5.1? march 2016", "X7EACAC887E257302" ], [ "\033[1X\033[33X\033[0;-2YWhat's New in Version 1.5? (July 2011)\033[133X\\ 033[101X", "1.3-2", [ 1, 3, 2 ], 166, 7, "whats new in version 1.5? july 2011" , "X86002B747AE0741B" ], [ "\033[1X\033[33X\033[0;-2YWhat's New in Version 1.4? (June 2008)\033[133X\\ 033[101X", "1.3-3", [ 1, 3, 3 ], 238, 9, "whats new in version 1.4? june 2008" , "X878EBA108716DDF0" ], [ "\033[1X\033[33X\033[0;-2YWhat's New in Version 1.3.1? (October 2007)\033[1\ 33X\033[101X", "1.3-4", [ 1, 3, 4 ], 287, 9, "whats new in version 1.3.1? october 2007", "X87A53CE182C9E086" ], [ "\033[1X\033[33X\033[0;-2YWhat's New in Version 1.3? (June 2007)\033[133X\\ 033[101X", "1.3-5", [ 1, 3, 5 ], 304, 10, "whats new in version 1.3? june 2007", "X79CCC5517897924C" ], [ "\033[1X\033[33X\033[0;-2YWhat's New in Version 1.2? (November 2003)\033[13\ 3X\033[101X", "1.3-6", [ 1, 3, 6 ], 366, 11, "whats new in version 1.2? november 2003", "X7BDCA94D83DCFFB8" ], [ "\033[1X\033[33X\033[0;-2YWhat's New in Version 1.1? (October 2002)\033[133\ X\033[101X", "1.3-7", [ 1, 3, 7 ], 403, 11, "whats new in version 1.1? october 2002", "X831628B47F669B29" ], [ "\033[1X\033[33X\033[0;-2YAcknowledgements\033[133X\033[101X", "1.4", [ 1, 4, 0 ], 447, 12, "acknowledgements", "X82A988D47DFAFCFA" ], [ "\033[1X\033[33X\033[0;-2YTutorial for the \033[5XAtlasRep\033[105X\033[101\ X\027\033[1X\027 Package\033[133X\033[101X", "2", [ 2, 0, 0 ], 1, 13, "tutorial for the atlasrep\027\027 package", "X8502B3798180E78D" ], [ "\033[1X\033[33X\033[0;-2YAccessing a Specific Group in \033[5XAtlasRep\\ 033[105X\033[101X\027\033[1X\027\033[133X\033[101X", "2.1", [ 2, 1, 0 ], 8, 13, "accessing a specific group in atlasrep\027\027", "X7B1C6A2C85E3D9CB" ], [ "\033[1X\033[33X\033[0;-2YAccessing a Group in \033[5XAtlasRep\033[105X\\ 033[101X\027\033[1X\027 via its Name\033[133X\033[101X", "2.1-1", [ 2, 1, 1 ], 31, 13, "accessing a group in atlasrep\027\027 via its name", "X7E8FF5D57B436B27" ], [ "\033[1X\033[33X\033[0;-2YAccessing a Maximal Subgroup of a Group in \033[5\ XAtlasRep\033[105X\033[101X\027\033[1X\027\033[133X\033[101X", "2.1-2", [ 2, 1, 2 ], 88, 14, "accessing a maximal subgroup of a group in atlasrep\027\027", "X7B76BAC57A0B2103" ], [ "\033[1X\033[33X\033[0;-2YAccessing Specific Generators in \033[5XAtlasRep\\ 033[105X\033[101X\027\033[1X\027\033[133X\033[101X", "2.2", [ 2, 2, 0 ], 160, 15, "accessing specific generators in atlasrep\027\027", "X84AF851185013AE7" ], [ "\033[1X\033[33X\033[0;-2YBasic Concepts used in \033[5XAtlasRep\033[105X\\ 033[101X\027\033[1X\027\033[133X\033[101X", "2.3", [ 2, 3, 0 ], 239, 17, "basic concepts used in atlasrep\027\027", "X871D68B67FF32BC4" ], [ "\033[1X\033[33X\033[0;-2YGroups, Generators, and Representations\033[133X\\ 033[101X", "2.3-1", [ 2, 3, 1 ], 242, 17, "groups generators and representations", "X7E2FB5E5852AD970" ], [ "\033[1X\033[33X\033[0;-2YStraight Line Programs\033[133X\033[101X", "2.3-2", [ 2, 3, 2 ], 283, 17, "straight line programs", "X7DC99E4284093FBB" ], [ "\033[1X\033[33X\033[0;-2YExamples of Using the \033[5XAtlasRep\033[105X\\ 033[101X\027\033[1X\027 Package\033[133X\033[101X", "2.4", [ 2, 4, 0 ], 322, 18, "examples of using the atlasrep\027\027 package", "X7A9523F486EB2A04" ], [ "\033[1X\033[33X\033[0;-2YExample: Class Representatives\033[133X\033[101X" , "2.4-1", [ 2, 4, 1 ], 325, 18, "example: class representatives", "X8563D96878AC685C" ], [ "\033[1X\033[33X\033[0;-2YExample: Permutation and Matrix Representations\\ 033[133X\033[101X", "2.4-2", [ 2, 4, 2 ], 418, 20, "example: permutation and matrix representations", "X81C9233778A3A817" ] , [ "\033[1X\033[33X\033[0;-2YExample: Outer Automorphisms\033[133X\033[101X", "2.4-3", [ 2, 4, 3 ], 482, 21, "example: outer automorphisms", "X8284D7E87D38889C" ], [ "\033[1X\033[33X\033[0;-2YExample: Using Semi-presentations and Black Box P\ rograms\033[133X\033[101X", "2.4-4", [ 2, 4, 4 ], 574, 22, "example: using semi-presentations and black box programs", "X794D669E7A507310" ], [ "\033[1X\033[33X\033[0;-2YExample: Using the \033[5XGAP\033[105X\033[101X\\ 027\033[1X\027 Library of Tables of Marks\033[133X\033[101X", "2.4-5", [ 2, 4, 5 ], 656, 23, "example: using the gap\027\027 library of tables of marks", "X861E691782DAE655" ], [ "\033[1X\033[33X\033[0;-2YExample: Index \033[22X770\033[122X\033[101X\027\\ 033[1X\027 Subgroups in \033[22XM_22\033[122X\033[101X\027\033[1X\027\033[133X\ \033[101X", "2.4-6", [ 2, 4, 6 ], 712, 24, "example: index 770\027\027 subgroups in m_22\027\027", "X79E261637D309687" ], [ "\033[1X\033[33X\033[0;-2YExample: Index \033[22X462\033[122X\033[101X\027\\ 033[1X\027 Subgroups in \033[22XM_22\033[122X\033[101X\027\033[1X\027\033[133X\ \033[101X", "2.4-7", [ 2, 4, 7 ], 781, 25, "example: index 462\027\027 subgroups in m_22\027\027", "X7C77816A878B37C4" ], [ "\033[1X\033[33X\033[0;-2YThe User Interface of the \033[5XAtlasRep\033[105\ X\033[101X\027\033[1X\027 Package\033[133X\033[101X", "3", [ 3, 0, 0 ], 1, 29, "the user interface of the atlasrep\027\027 package", "X79CC2FC07C77EB2C" ], [ "\033[1X\033[33X\033[0;-2YAccessing vs. Constructing Representations\033[13\ 3X\033[101X", "3.1", [ 3, 1, 0 ], 24, 29, "accessing vs. constructing representations", "X87D26B13819A8209" ], [ "\033[1X\033[33X\033[0;-2YGroup Names Used in the \033[5XAtlasRep\033[105X\\ 033[101X\027\033[1X\027 Package\033[133X\033[101X", "3.2", [ 3, 2, 0 ], 37, 29, "group names used in the atlasrep\027\027 package", "X87E64E2B7B8A8152" ], [ "\033[1X\033[33X\033[0;-2YStandard Generators Used in the \033[5XAtlasRep\\ 033[105X\033[101X\027\033[1X\027 Package\033[133X\033[101X", "3.3", [ 3, 3, 0 ], 66, 30, "standard generators used in the atlasrep\027\027 package", "X7F53EDAB7992C192" ], [ "\033[1X\033[33X\033[0;-2YClass Names Used in the \033[5XAtlasRep\033[105X\\ 033[101X\027\033[1X\027 Package\033[133X\033[101X", "3.4", [ 3, 4, 0 ], 89, 30, "class names used in the atlasrep\027\027 package", "X7E3DFE9E803D1E6E" ], [ "\033[1X\033[33X\033[0;-2YDefinition of \033[5XATLAS\033[105X\033[101X\027\\ 033[1X\027 Class Names\033[133X\033[101X", "3.4-1", [ 3, 4, 1 ], 103, 30, "definition of atlas\027\027 class names", "X796BB396862ABDCF" ], [ "\033[1X\033[33X\033[0;-2YAccessing Data of the \033[5XAtlasRep\033[105X\\ 033[101X\027\033[1X\027 Package\033[133X\033[101X", "3.5", [ 3, 5, 0 ], 248, 33, "accessing data of the atlasrep\027\027 package", "X86B07B4387A02B06" ], [ "\033[1X\033[33X\033[0;-2YAtlasGroup\033[133X\033[101X", "3.5-7", [ 3, 5, 7 ], 1047, 46, "atlasgroup", "X80AABEE783363B70" ], [ "\033[1X\033[33X\033[0;-2YAtlasSubgroup\033[133X\033[101X", "3.5-8", [ 3, 5, 8 ], 1088, 46, "atlassubgroup", "X7A3E460C82B3D9A3" ], [ "\033[1X\033[33X\033[0;-2Y\033[5XBrowse\033[105X\033[101X\027\033[1X\027 Ap\ plications Provided by \033[5XAtlasRep\033[105X\033[101X\027\033[1X\027\033[13\ 3X\033[101X", "3.6", [ 3, 6, 0 ], 1161, 48, "browse\027\027 applications provided by atlasrep\027\027", "X7A27E82E8480B92B" ], [ "\033[1X\033[33X\033[0;-2YCustomizations of the \033[5XAtlasRep\033[105X\\ 033[101X\027\033[1X\027 Package\033[133X\033[101X", "4", [ 4, 0, 0 ], 1, 50, "customizations of the atlasrep\027\027 package", "X7DBC1D157F0EE283" ], [ "\033[1X\033[33X\033[0;-2YInstalling the \033[5XAtlasRep\033[105X\033[101X\ \027\033[1X\027 Package\033[133X\033[101X", "4.1", [ 4, 1, 0 ], 4, 50, "installing the atlasrep\027\027 package", "X8104B09D80CAA41A" ], [ "\033[1X\033[33X\033[0;-2YMaintaining the Local Data of the \033[5XAtlasRep\ \033[105X\033[101X\027\033[1X\027 Package\033[133X\033[101X", "4.2", [ 4, 2, 0 ], 58, 51, "maintaining the local data of the atlasrep\027\027 package", "X7A40921B84F27E68" ], [ "\033[1X\033[33X\033[0;-2YUser Parameters for the \033[5XAtlasRep\033[105X\\ 033[101X\027\033[1X\027 Package\033[133X\033[101X", "4.3", [ 4, 3, 0 ], 143, 52, "user parameters for the atlasrep\027\027 package", "X81358A377CC2C463" ], [ "\033[1X\033[33X\033[0;-2YLocal or Remote Access\033[133X\033[101X", "4.3-1", [ 4, 3, 1 ], 152, 52, "local or remote access", "X7E1934D2780D108F" ], [ "\033[1X\033[33X\033[0;-2YAdding and Removing Servers\033[133X\033[101X", "4.3-2", [ 4, 3, 2 ], 194, 53, "adding and removing servers", "X826B8F128277032E" ], [ "\033[1X\033[33X\033[0;-2YAccessing Data Files with the \033[5XGAP\033[105X\ \033[101X\027\033[1X\027 Package \033[5XIO\033[105X\033[101X\027\033[1X\027 or\ with \033[11Xwget\033[111X\033[101X\027\033[1X\027\033[133X\033[101X", "4.3-3", [ 4, 3, 3 ], 212, 53, "accessing data files with the gap\027\027 package io\027\027 or with wg\ et\027\027", "X7D58635A79A666DB" ], [ "\033[1X\033[33X\033[0;-2YCompressed or Uncompressed Data Files\033[133X\\ 033[101X", "4.3-4", [ 4, 3, 4 ], 232, 53, "compressed or uncompressed data files", "X7E0AC1127B4363E7" ], [ "\033[1X\033[33X\033[0;-2YCustomizing \033[10XDisplayAtlasInfo\033[110X\\ 033[101X\027\033[1X\027\033[133X\033[101X", "4.3-5", [ 4, 3, 5 ], 246, 53, "customizing displayatlasinfo\027\027", "X7DAC8E1E7A419360" ], [ "\033[1X\033[33X\033[0;-2YCustomizing the Access to Data Files\033[133X\\ 033[101X", "4.3-6", [ 4, 3, 6 ], 257, 54, "customizing the access to data files", "X7FA485E479F6C3A0" ], [ "\033[1X\033[33X\033[0;-2YReading Large Matrices over Finite Fields\033[133\ X\033[101X", "4.3-7", [ 4, 3, 7 ], 290, 54, "reading large matrices over finite fields", "X866E1476853E42C2" ], [ "\033[1X\033[33X\033[0;-2YUser preference \033[10XAtlasRepDataDirectory\\ 033[110X\033[101X\027\033[1X\027\033[133X\033[101X", "4.3-9", [ 4, 3, 9 ], 317, 54, "user preference atlasrepdatadirectory\027\027", "X7F6F45758688CBC7" ], [ "\033[1X\033[33X\033[0;-2YUser preference \033[10XWriteMeatAxeFilesOfMode2\\ 033[110X\033[101X\027\033[1X\027\033[133X\033[101X", "4.3-10", [ 4, 3, 10 ], 326, 55, "user preference writemeataxefilesofmode2\027\027", "X83BCD08D7CA64406" ], [ "\033[1X\033[33X\033[0;-2YUser preference \033[10XBaseOfMeatAxePermutation\\ 033[110X\033[101X\027\033[1X\027\033[133X\033[101X", "4.3-11", [ 4, 3, 11 ], 336, 55, "user preference baseofmeataxepermutation\027\027", "X7FFD07D784899045" ], [ "\033[1X\033[33X\033[0;-2YWeb Services for the \033[5XAtlasRep\033[105X\\ 033[101X\027\033[1X\027 Package\033[133X\033[101X", "4.4", [ 4, 4, 0 ], 349, 55, "web services for the atlasrep\027\027 package", "X876E8147820EABAF" ], [ "\033[1X\033[33X\033[0;-2YExtending the \033[5XATLAS\033[105X\033[101X\027\\ 033[1X\027 Database\033[133X\033[101X", "4.5", [ 4, 5, 0 ], 379, 55, "extending the atlas\027\027 database", "X80C7729A8404F682" ], [ "\033[1X\033[33X\033[0;-2YPrivate Extensions of the \033[5XAtlasRep\033[105\ X\033[101X\027\033[1X\027 Package\033[133X\033[101X", "5", [ 5, 0, 0 ], 1, 57, "private extensions of the atlasrep\027\027 package", "X7B33345C7B304697" ], [ "\033[1X\033[33X\033[0;-2YAdding a Private Data Directory\033[133X\033[101X\ ", "5.1", [ 5, 1, 0 ], 29, 57, "adding a private data directory", "X8072E5C9825D6CCE" ], [ "\033[1X\033[33X\033[0;-2YThe Effect of Private Extensions on the User Inte\ rface\033[133X\033[101X", "5.2", [ 5, 2, 0 ], 106, 58, "the effect of private extensions on the user interface", "X7E186BFA7E59BD47" ], [ "\033[1X\033[33X\033[0;-2YAn Example of Extending the \033[5XAtlasRep\033[1\ 05X\033[101X\027\033[1X\027 Package\033[133X\033[101X", "5.3", [ 5, 3, 0 ], 130, 59, "an example of extending the atlasrep\027\027 package", "X7AB60BFC87EAB4C5" ], [ "\033[1X\033[33X\033[0;-2YNew \033[5XGAP\033[105X\033[101X\027\033[1X\027 O\ bjects and Utility Functions Provided by the \033[5XAtlasRep\033[105X\033[101X\ \027\033[1X\027 Package\033[133X\033[101X", "6", [ 6, 0, 0 ], 1, 63, "new gap\027\027 objects and utility functions provided by the atlasrep\ \027\027 package", "X7EFB2E2A7857AC06" ], [ "\033[1X\033[33X\033[0;-2YStraight Line Decisions\033[133X\033[101X", "6.1", [ 6, 1, 0 ], 13, 63, "straight line decisions", "X8121E9567A7137C9" ], [ "\033[1X\033[33X\033[0;-2YSemi-Presentations and Presentations\033[133X\\ 033[101X", "6.1-7", [ 6, 1, 7 ], 215, 66, "semi-presentations and presentations", "X7C94ECAC8583CEAE" ], [ "\033[1X\033[33X\033[0;-2YBlack Box Programs\033[133X\033[101X", "6.2", [ 6, 2, 0 ], 374, 69, "black box programs", "X7BE856BC785A9E8F" ], [ "\033[1X\033[33X\033[0;-2YRepresentations of Minimal Degree\033[133X\033[10\ 1X", "6.3", [ 6, 3, 0 ], 683, 74, "representations of minimal degree", "X87E1F08D80C9E069" ], [ "\033[1X\033[33X\033[0;-2YCriteria Used to Compute Minimality Information\\ 033[133X\033[101X", "6.3-4", [ 6, 3, 4 ], 869, 77, "criteria used to compute minimality information", "X7FC33DFF8481F8D1" ] , [ "\033[1X\033[33X\033[0;-2YTechnicalities of the \033[5XAtlasRep\033[105X\\ 033[101X\027\033[1X\027 Package\033[133X\033[101X", "7", [ 7, 0, 0 ], 1, 79, "technicalities of the atlasrep\027\027 package", "X812769A8852CF93E" ], [ "\033[1X\033[33X\033[0;-2YGlobal Variables Used by the \033[5XAtlasRep\033\ [105X\033[101X\027\033[1X\027 Package\033[133X\033[101X", "7.1", [ 7, 1, 0 ], 21, 79, "global variables used by the atlasrep\027\027 package", "X84F6276387622F46" ], [ "\033[1X\033[33X\033[0;-2YHow to Customize the Access to Data files\033[133\ X\033[101X", "7.2", [ 7, 2, 0 ], 164, 82, "how to customize the access to data files", "X81C5B5E78215169D" ], [ "\033[1X\033[33X\033[0;-2YReading and Writing MeatAxe Format Files\033[133X\ \033[101X", "7.3", [ 7, 3, 0 ], 248, 83, "reading and writing meataxe format files", "X7D76D4437A9646E7" ], [ "\033[1X\033[33X\033[0;-2YReading and Writing \033[5XATLAS\033[105X\033[101\ X\027\033[1X\027 Straight Line Programs\033[133X\033[101X", "7.4", [ 7, 4, 0 ], 443, 86, "reading and writing atlas\027\027 straight line programs", "X8211B26D841B874C" ], [ "\033[1X\033[33X\033[0;-2YData Types Used in the \033[5XATLAS\033[105X\033[\ 101X\027\033[1X\027 of Group Representations\033[133X\033[101X", "7.5", [ 7, 5, 0 ], 624, 89, "data types used in the atlas\027\027 of group representations", "X7C164C4D7ECE62D0" ], [ "\033[1X\033[33X\033[0;-2YFilenames Used in the \033[5XATLAS\033[105X\033[1\ 01X\027\033[1X\027 of Group Representations\033[133X\033[101X", "7.6", [ 7, 6, 0 ], 809, 92, "filenames used in the atlas\027\027 of group representations", "X7C2562A978319179" ], [ "\033[1X\033[33X\033[0;-2YThe Tables of Contents of the \033[5XATLAS\033[10\ 5X\033[101X\027\033[1X\027 of Group Representations\033[133X\033[101X", "7.7", [ 7, 7, 0 ], 1012, 95, "the tables of contents of the atlas\027\027 of group representations", "X7AD2556F87F1D40D" ], [ "\033[1X\033[33X\033[0;-2YSanity Checks for the \033[5XATLAS\033[105X\033[1\ 01X\027\033[1X\027 of Group Representations\033[133X\033[101X", "7.8", [ 7, 8, 0 ], 1202, 98, "sanity checks for the atlas\027\027 of group representations", "X7D42612882656B32" ], [ "\033[1X\033[33X\033[0;-2YSanity Checks for a Table of Contents\033[133X\\ 033[101X", "7.8-1", [ 7, 8, 1 ], 1239, 98, "sanity checks for a table of contents", "X86FDCF0B85496AE5" ], [ "\033[1X\033[33X\033[0;-2YOther Sanity Checks\033[133X\033[101X", "7.8-2", [ 7, 8, 2 ], 1285, 99, "other sanity checks", "X7FBFA8D287B807D2" ], [ "Bibliography", "bib", [ "Bib", 0, 0 ], 1, 102, "bibliography", "X7A6F98FD85F02BFE" ], [ "References", "bib", [ "Bib", 0, 0 ], 1, 102, "references", "X7A6F98FD85F02BFE" ], [ "Index", "ind", [ "Ind", 0, 0 ], 1, 104, "index", "X83A0356F839C696F" ], [ "AtlasRep", ".", [ 0, 0, 0 ], 1, 1, "atlasrep", "X7D2C85EC87DD46E5" ], [ "black box program", "1.1", [ 1, 1, 0 ], 36, 5, "black box program", "X7B23A1EA7E3711B8" ], [ "straight line program", "1.1", [ 1, 1, 0 ], 36, 5, "straight line program", "X7B23A1EA7E3711B8" ], [ "\033[5XMeatAxe\033[105X", "1.1", [ 1, 1, 0 ], 36, 5, "meataxe", "X7B23A1EA7E3711B8" ], [ "\033[5XMagma\033[105X", "1.1", [ 1, 1, 0 ], 36, 5, "magma", "X7B23A1EA7E3711B8" ], [ "\033[10XC\033[110X-\033[5XMeatAxe\033[105X", "1.2", [ 1, 2, 0 ], 86, 6, "c-meataxe", "X869477FF842395E5" ], [ "\033[11Xwget\033[111X", "1.3-5", [ 1, 3, 5 ], 304, 10, "wget", "X79CCC5517897924C" ], [ "\033[11Xftp\033[111X", "1.3-5", [ 1, 3, 5 ], 304, 10, "ftp", "X79CCC5517897924C" ], [ "\033[11Xperl\033[111X", "1.3-5", [ 1, 3, 5 ], 304, 10, "perl", "X79CCC5517897924C" ], [ "\033[11Xwget\033[111X", "1.3-7", [ 1, 3, 7 ], 403, 11, "wget", "X831628B47F669B29" ], [ "\033[11Xgzip\033[111X", "1.3-7", [ 1, 3, 7 ], 403, 11, "gzip", "X831628B47F669B29" ], [ "\033[11Xperl\033[111X", "1.4", [ 1, 4, 0 ], 447, 12, "perl", "X82A988D47DFAFCFA" ], [ "\033[2XAtlasClassNames\033[102X", "3.4-2", [ 3, 4, 2 ], 194, 32, "atlasclassnames", "X78166D1D7D18EFBF" ], [ "\033[2XAtlasCharacterNames\033[102X", "3.4-3", [ 3, 4, 3 ], 233, 32, "atlascharacternames", "X7B14A254870BA5A1" ], [ "\033[2XDisplayAtlasInfo\033[102X", "3.5-1", [ 3, 5, 1 ], 255, 33, "displayatlasinfo", "X79DACFFA7E2D1A99" ], [ "\033[2XDisplayAtlasInfo\033[102X (for a group name, and optionally further\ restrictions)", "3.5-1", [ 3, 5, 1 ], 255, 33, "displayatlasinfo for a group name and optionally further restrictions", "X79DACFFA7E2D1A99" ], [ "straight line program", "3.5-1", [ 3, 5, 1 ], 255, 33, "straight line program", "X79DACFFA7E2D1A99" ], [ "\033[2XAtlasGenerators\033[102X", "3.5-2", [ 3, 5, 2 ], 614, 39, "atlasgenerators", "X7D1CCCF8852DFF39" ], [ "\033[2XAtlasGenerators\033[102X (for an identifier)", "3.5-2", [ 3, 5, 2 ], 614, 39, "atlasgenerators for an identifier", "X7D1CCCF8852DFF39" ], [ "\033[2XAtlasProgram\033[102X", "3.5-3", [ 3, 5, 3 ], 717, 40, "atlasprogram", "X801F2E657C8A79ED" ], [ "\033[2XAtlasProgram\033[102X (for an identifier)", "3.5-3", [ 3, 5, 3 ], 717, 40, "atlasprogram for an identifier", "X801F2E657C8A79ED" ], [ "straight line program for maximal subgroups", "3.5-3", [ 3, 5, 3 ], 717, 40, "straight line program for maximal subgroups", "X801F2E657C8A79ED" ] , [ "maximal subgroups", "3.5-3", [ 3, 5, 3 ], 717, 40, "maximal subgroups", "X801F2E657C8A79ED" ], [ "straight line program for class representatives", "3.5-3", [ 3, 5, 3 ], 717, 40, "straight line program for class representatives", "X801F2E657C8A79ED" ], [ "class representatives", "3.5-3", [ 3, 5, 3 ], 717, 40, "class representatives", "X801F2E657C8A79ED" ], [ "straight line program for representatives of cyclic subgroups", "3.5-3", [ 3, 5, 3 ], 717, 40, "straight line program for representatives of cyclic subgroups", "X801F2E657C8A79ED" ], [ "cyclic subgroups", "3.5-3", [ 3, 5, 3 ], 717, 40, "cyclic subgroups", "X801F2E657C8A79ED" ], [ "maximally cyclic subgroups", "3.5-3", [ 3, 5, 3 ], 717, 40, "maximally cyclic subgroups", "X801F2E657C8A79ED" ], [ "straight line program for outer automorphisms", "3.5-3", [ 3, 5, 3 ], 717, 40, "straight line program for outer automorphisms", "X801F2E657C8A79ED" ], [ "automorphisms", "3.5-3", [ 3, 5, 3 ], 717, 40, "automorphisms", "X801F2E657C8A79ED" ], [ "straight line decision for checking standard generators", "3.5-3", [ 3, 5, 3 ], 717, 40, "straight line decision for checking standard generators", "X801F2E657C8A79ED" ], [ "straight line decision encoding a presentation", "3.5-3", [ 3, 5, 3 ], 717, 40, "straight line decision encoding a presentation", "X801F2E657C8A79ED" ], [ "black box program for finding standard generators", "3.5-3", [ 3, 5, 3 ], 717, 40, "black box program for finding standard generators", "X801F2E657C8A79ED" ], [ "straight line program for restandardizing", "3.5-3", [ 3, 5, 3 ], 717, 40, "straight line program for restandardizing", "X801F2E657C8A79ED" ], [ "straight line program free format", "3.5-3", [ 3, 5, 3 ], 717, 40, "straight line program free format", "X801F2E657C8A79ED" ], [ "\033[2XAtlasProgramInfo\033[102X", "3.5-4", [ 3, 5, 4 ], 852, 42, "atlasprograminfo", "X83DFD8967E6BC831" ], [ "\033[2XOneAtlasGeneratingSetInfo\033[102X", "3.5-5", [ 3, 5, 5 ], 871, 43, "oneatlasgeneratingsetinfo", "X841478AB7CD06D44" ], [ "\033[2XAllAtlasGeneratingSetInfos\033[102X", "3.5-6", [ 3, 5, 6 ], 1008, 45, "allatlasgeneratingsetinfos", "X84C2D76482E60E42" ], [ "\033[2XAtlasGroup\033[102X (for various arguments)", "3.5-7", [ 3, 5, 7 ], 1047, 46, "atlasgroup for various arguments", "X80AABEE783363B70" ], [ "\033[2XAtlasGroup\033[102X (for an identifier record)", "3.5-7", [ 3, 5, 7 ], 1047, 46, "atlasgroup for an identifier record", "X80AABEE783363B70" ], [ "\033[2XAtlasSubgroup\033[102X (for a group name (and various arguments) an\ d a number)", "3.5-8", [ 3, 5, 8 ], 1088, 46, "atlassubgroup for a group name and various arguments and a number", "X7A3E460C82B3D9A3" ], [ "\033[2XAtlasSubgroup\033[102X (for an identifier record and a number)", "3.5-8", [ 3, 5, 8 ], 1088, 46, "atlassubgroup for an identifier record and a number", "X7A3E460C82B3D9A3" ], [ "\033[2XAtlasSubgroup\033[102X (for a group and a number)", "3.5-8", [ 3, 5, 8 ], 1088, 46, "atlassubgroup for a group and a number", "X7A3E460C82B3D9A3" ], [ "\033[2XAtlasRepInfoRecord\033[102X", "3.5-9", [ 3, 5, 9 ], 1140, 47, "atlasrepinforecord", "X87AFEC90873BCDD1" ], [ "\033[2XBrowseMinimalDegrees\033[102X", "3.6-1", [ 3, 6, 1 ], 1169, 48, "browseminimaldegrees", "X7F31A7CB841FE63F" ], [ "\033[2XBrowseBibliographySporadicSimple\033[102X", "3.6-2", [ 3, 6, 2 ], 1228, 49, "browsebibliographysporadicsimple", "X84ED4FC182C28198" ], [ "IO package", "4.1", [ 4, 1, 0 ], 4, 50, "io package", "X8104B09D80CAA41A" ], [ "\033[10XATLASREP_TOCFILE\033[110X", "4.2", [ 4, 2, 0 ], 58, 51, "atlasrep_tocfile", "X7A40921B84F27E68" ], [ "\033[2XReloadAtlasTableOfContents\033[102X", "4.2-1", [ 4, 2, 1 ], 85, 51, "reloadatlastableofcontents", "X7AC3EA317EDBDA0E" ], [ "\033[2XStoreAtlasTableOfContents\033[102X", "4.2-2", [ 4, 2, 2 ], 102, 51, "storeatlastableofcontents", "X7E3E52D380C20363" ], [ "\033[2XReplaceAtlasTableOfContents\033[102X", "4.2-3", [ 4, 2, 3 ], 109, 51, "replaceatlastableofcontents", "X847A5AFD7B5D8570" ], [ "\033[2XAtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates\033[102\ X", "4.2-4", [ 4, 2, 4 ], 121, 52, "atlasofgrouprepresentationstesttableofcontentsremoteupdates", "X7E04B1C57C38DCB2" ], [ "IO package", "4.2-4", [ 4, 2, 4 ], 121, 52, "io package", "X7E04B1C57C38DCB2" ], [ "\033[10Xtouch\033[110X", "4.2-4", [ 4, 2, 4 ], 121, 52, "touch", "X7E04B1C57C38DCB2" ], [ "local access", "4.3-1", [ 4, 3, 1 ], 152, 52, "local access", "X7E1934D2780D108F" ], [ "remote access", "4.3-1", [ 4, 3, 1 ], 152, 52, "remote access", "X7E1934D2780D108F" ], [ "servers", "4.3-1", [ 4, 3, 1 ], 152, 52, "servers", "X7E1934D2780D108F" ] , [ "IO package", "4.3-3", [ 4, 3, 3 ], 212, 53, "io package", "X7D58635A79A666DB" ], [ "\033[11Xwget\033[111X", "4.3-3", [ 4, 3, 3 ], 212, 53, "wget", "X7D58635A79A666DB" ], [ "IO package", "4.3-3", [ 4, 3, 3 ], 212, 53, "io package", "X7D58635A79A666DB" ], [ "\033[11Xwget\033[111X", "4.3-3", [ 4, 3, 3 ], 212, 53, "wget", "X7D58635A79A666DB" ], [ "\033[10Xcompress\033[110X", "4.3-4", [ 4, 3, 4 ], 232, 53, "compress", "X7E0AC1127B4363E7" ], [ "\033[11Xgzip\033[111X", "4.3-4", [ 4, 3, 4 ], 232, 53, "gzip", "X7E0AC1127B4363E7" ], [ "\033[2XAtlasOfGroupRepresentationsUserParameters\033[102X", "4.3-8", [ 4, 3, 8 ], 309, 54, "atlasofgrouprepresentationsuserparameters", "X828B39E6853F357A" ], [ "\033[2XAtlasOfGroupRepresentationsNotifyPrivateDirectory\033[102X", "5.1-1", [ 5, 1, 1 ], 41, 57, "atlasofgrouprepresentationsnotifyprivatedirectory", "X825AF58885A48520" ], [ "\033[2XAtlasOfGroupRepresentationsForgetPrivateDirectory\033[102X", "5.1-2", [ 5, 1, 2 ], 96, 58, "atlasofgrouprepresentationsforgetprivatedirectory", "X8748A8BB7C7089EE" ], [ "\033[2XIsStraightLineDecision\033[102X", "6.1-1", [ 6, 1, 1 ], 59, 64, "isstraightlinedecision", "X8787E2EC7DB85A89" ], [ "\033[2XLinesOfStraightLineDecision\033[102X", "6.1-2", [ 6, 1, 2 ], 66, 64, "linesofstraightlinedecision", "X82AFAD9F7FA5CE8A" ], [ "\033[2XNrInputsOfStraightLineDecision\033[102X", "6.1-3", [ 6, 1, 3 ], 84, 64, "nrinputsofstraightlinedecision", "X7B1A43427BD97FDF" ], [ "\033[2XScanStraightLineDecision\033[102X", "6.1-4", [ 6, 1, 4 ], 97, 64, "scanstraightlinedecision", "X82A3632782E45F35" ], [ "\033[2XStraightLineDecision\033[102X", "6.1-5", [ 6, 1, 5 ], 135, 65, "straightlinedecision", "X825C4E4180F3D989" ], [ "\033[2XStraightLineDecisionNC\033[102X", "6.1-5", [ 6, 1, 5 ], 135, 65, "straightlinedecisionnc", "X825C4E4180F3D989" ], [ "\033[2XResultOfStraightLineDecision\033[102X", "6.1-6", [ 6, 1, 6 ], 152, 65, "resultofstraightlinedecision", "X7E7B328A84685480" ], [ "semi-presentation", "6.1-7", [ 6, 1, 7 ], 215, 66, "semi-presentation", "X7C94ECAC8583CEAE" ], [ "presentation", "6.1-7", [ 6, 1, 7 ], 215, 66, "presentation", "X7C94ECAC8583CEAE" ], [ "\033[2XAsStraightLineDecision\033[102X", "6.1-8", [ 6, 1, 8 ], 300, 68, "asstraightlinedecision", "X7C13D08C7D55E20A" ], [ "\033[2XStraightLineProgramFromStraightLineDecision\033[102X", "6.1-9", [ 6, 1, 9 ], 326, 68, "straightlineprogramfromstraightlinedecision", "X7EA613C57DDC67D5" ], [ "\033[2XIsBBoxProgram\033[102X", "6.2-1", [ 6, 2, 1 ], 447, 70, "isbboxprogram", "X87CAF2DE870D0E3B" ], [ "\033[2XScanBBoxProgram\033[102X", "6.2-2", [ 6, 2, 2 ], 453, 70, "scanbboxprogram", "X7EA20532868F9863" ], [ "\033[2XRunBBoxProgram\033[102X", "6.2-3", [ 6, 2, 3 ], 516, 71, "runbboxprogram", "X7D211A5D8602B330" ], [ "\033[2XResultOfBBoxProgram\033[102X", "6.2-4", [ 6, 2, 4 ], 588, 72, "resultofbboxprogram", "X869BACFB80A3CC87" ], [ "\033[2XAsBBoxProgram\033[102X", "6.2-5", [ 6, 2, 5 ], 617, 73, "asbboxprogram", "X826ACFE887E0B6B8" ], [ "\033[2XAsStraightLineProgram\033[102X", "6.2-6", [ 6, 2, 6 ], 657, 73, "asstraightlineprogram", "X7D36DFA87C8B2C48" ], [ "\033[2XMinimalRepresentationInfo\033[102X", "6.3-1", [ 6, 3, 1 ], 698, 74, "minimalrepresentationinfo", "X7DC66D8282B2BB7F" ], [ "\033[2XMinimalRepresentationInfoData\033[102X", "6.3-2", [ 6, 3, 2 ], 773, 75, "minimalrepresentationinfodata", "X7E1B76DC86A8C405" ], [ "\033[2XSetMinimalRepresentationInfo\033[102X", "6.3-3", [ 6, 3, 3 ], 807, 76, "setminimalrepresentationinfo", "X79C4C9F683E919C9" ], [ "\033[2XInfoAtlasRep\033[102X", "7.1-1", [ 7, 1, 1 ], 37, 79, "infoatlasrep", "X8006BE167EB81E16" ], [ "\033[2XInfoCMeatAxe\033[102X", "7.1-2", [ 7, 1, 2 ], 46, 80, "infocmeataxe", "X78601C3A87921E08" ], [ "\033[2XInfoBBox\033[102X", "7.1-3", [ 7, 1, 3 ], 54, 80, "infobbox", "X80D5EF9A7FEF124B" ], [ "\033[2XCMeatAxe.FastRead\033[102X", "7.1-4", [ 7, 1, 4 ], 62, 80, "cmeataxe.fastread", "X85B6010C85A06CB6" ], [ "\033[2XAGR\033[102X", "7.1-5", [ 7, 1, 5 ], 77, 80, "agr", "X84A157BF7D0CB270" ], [ "\033[2XAtlasOfGroupRepresentationsInfo\033[102X", "7.1-6", [ 7, 1, 6 ], 84, 80, "atlasofgrouprepresentationsinfo", "X7BEC94A6781E126E" ], [ "IO package", "7.1-6", [ 7, 1, 6 ], 84, 80, "io package", "X7BEC94A6781E126E" ], [ "\033[11Xwget\033[111X", "7.1-6", [ 7, 1, 6 ], 84, 80, "wget", "X7BEC94A6781E126E" ], [ "\033[11Xgzip\033[111X", "7.1-6", [ 7, 1, 6 ], 84, 80, "gzip", "X7BEC94A6781E126E" ], [ "matrix MeatAxe format", "7.3", [ 7, 3, 0 ], 248, 83, "matrix meataxe format", "X7D76D4437A9646E7" ], [ "permutation MeatAxe format", "7.3", [ 7, 3, 0 ], 248, 83, "permutation meataxe format", "X7D76D4437A9646E7" ], [ "\033[2XScanMeatAxeFile\033[102X", "7.3-1", [ 7, 3, 1 ], 251, 83, "scanmeataxefile", "X83D5103780E1238F" ], [ "\033[11Xzcv\033[111X", "7.3-1", [ 7, 3, 1 ], 251, 83, "zcv", "X83D5103780E1238F" ], [ "\033[2XMeatAxeString\033[102X", "7.3-2", [ 7, 3, 2 ], 279, 83, "meataxestring", "X7DDD09BE87063052" ], [ "\033[2XMeatAxeString\033[102X (for permutations and a degree)", "7.3-2", [ 7, 3, 2 ], 279, 83, "meataxestring for permutations and a degree", "X7DDD09BE87063052" ], [ "\033[2XMeatAxeString\033[102X (for a permutation, q, and dims)", "7.3-2", [ 7, 3, 2 ], 279, 83, "meataxestring for a permutation q and dims", "X7DDD09BE87063052" ], [ "\033[2XFFList\033[102X", "7.3-3", [ 7, 3, 3 ], 356, 84, "fflist", "X79D9AE4878E9DFA6" ], [ "\033[2XFFLists\033[102X", "7.3-3", [ 7, 3, 3 ], 356, 84, "fflists", "X79D9AE4878E9DFA6" ], [ "\033[2XCMtxBinaryFFMatOrPerm\033[102X", "7.3-4", [ 7, 3, 4 ], 383, 85, "cmtxbinaryffmatorperm", "X8477AA668733255C" ], [ "\033[2XFFMatOrPermCMtxBinary\033[102X", "7.3-5", [ 7, 3, 5 ], 419, 85, "ffmatorpermcmtxbinary", "X872FA00C7F791FBB" ], [ "\033[2XScanStraightLineProgram\033[102X", "7.4-1", [ 7, 4, 1 ], 446, 86, "scanstraightlineprogram", "X7D6617E47B013A37" ], [ "\033[2XAtlasStringOfProgram\033[102X", "7.4-2", [ 7, 4, 2 ], 545, 88, "atlasstringofprogram", "X82842D807A7B7DF7" ], [ "\033[2XAtlasStringOfProgram\033[102X (for MeatAxe format output)", "7.4-2", [ 7, 4, 2 ], 545, 88, "atlasstringofprogram for meataxe format output", "X82842D807A7B7DF7" ], [ "\033[2XAGR.DeclareDataType\033[102X", "7.5-1", [ 7, 5, 1 ], 651, 89, "agr.declaredatatype", "X836AA4EA8346BE5B" ], [ "class representatives", "7.6", [ 7, 6, 0 ], 809, 92, "class representatives", "X7C2562A978319179" ], [ "maximal subgroups", "7.6", [ 7, 6, 0 ], 809, 92, "maximal subgroups", "X7C2562A978319179" ], [ "automorphisms", "7.6", [ 7, 6, 0 ], 809, 92, "automorphisms", "X7C2562A978319179" ], [ "semi-presentation", "7.6", [ 7, 6, 0 ], 809, 92, "semi-presentation", "X7C2562A978319179" ], [ "presentation", "7.6", [ 7, 6, 0 ], 809, 92, "presentation", "X7C2562A978319179" ], [ "black box program for finding standard generators", "7.6", [ 7, 6, 0 ], 809, 92, "black box program for finding standard generators", "X7C2562A978319179" ], [ "\033[2XAGR.ParseFilenameFormat\033[102X", "7.6-1", [ 7, 6, 1 ], 957, 94, "agr.parsefilenameformat", "X8486CCB181FC99A3" ], [ "\033[2XAGR.FileContents\033[102X", "7.6-2", [ 7, 6, 2 ], 990, 95, "agr.filecontents", "X78AB92DB7C2CAB6E" ] ] ); atlasrep/doc/nocolorprompt.css0000644000175000017500000000031312701177223015206 0ustar samsam /* colors for ColorPrompt like examples */ span.GAPprompt { color: #000000; font-weight: normal; } span.GAPbrkprompt { color: #000000; font-weight: normal; } span.GAPinput { color: #000000; } atlasrep/doc/ragged.css0000644000175000017500000000023112701177223013521 0ustar samsam/* times.css Frank Lübeck */ /* Change default CSS to use Times font. */ body { text-align: left; } atlasrep/doc/rainbow.js0000644000175000017500000000533612701177223013570 0ustar samsam function randchar(str) { var i = Math.floor(Math.random() * str.length); while (i == str.length) i = Math.floor(Math.random() * str.length); return str[i]; } hexdigits = "0123456789abcdef"; function randlight() { return randchar("cdef")+randchar(hexdigits)+ randchar("cdef")+randchar(hexdigits)+ randchar("cdef")+randchar(hexdigits) } function randdark() { return randchar("012345789")+randchar(hexdigits)+ randchar("012345789")+randchar(hexdigits)+ randchar("102345789")+randchar(hexdigits) } document.write('\n'); atlasrep/doc/times.css0000644000175000017500000000026112701177223013414 0ustar samsam/* times.css Frank Lübeck */ /* Change default CSS to use Times font. */ body { font-family: Times,Times New Roman,serif; } atlasrep/doc/toggless.css0000644000175000017500000000167212701177223014131 0ustar samsam/* toggless.css Frank Lübeck */ /* Using javascript we change all div.ContSect to div.ContSectOpen or div.ContSectClosed. This way the config for div.ContSect in manual.css is no longer relevant. Here we add the CSS for the new elements. */ /* This layout is based on an idea by Burkhard Höfling. */ div.ContSectClosed { text-align: left; margin-left: 1em; } div.ContSectOpen { text-align: left; margin-left: 1em; } div.ContSectOpen div.ContSSBlock { display: block; text-align: left; margin-left: 1em; } div.ContSectOpen div.ContSSBlock a { display: block; width: 100%; margin-left: 1em; } span.tocline a:hover { display: inline; background: #eeeeee; } span.ContSS a:hover { display: inline; background: #eeeeee; } span.toctoggle { font-size: 80%; display: inline-block; width: 1.2em; } span.toctoggle:hover { background-color: #aaaaaa; } atlasrep/doc/toggless.js0000644000175000017500000000420512701177223013750 0ustar samsam/* toggless.js Frank Lübeck */ /* this file contains two functions: mergeSideTOCHooks: this changes div.ContSect elements to the class ContSectClosed and includes a hook to toggle between ContSectClosed and ContSectOpen. openclosetoc: this function does the toggling, the rest is done by CSS */ closedTOCMarker = "▶ "; openTOCMarker = "▼ "; noTOCMarker = " "; /* merge hooks into side toc for opening/closing subsections with openclosetoc */ function mergeSideTOCHooks() { var hlist = document.getElementsByTagName("div"); for (var i = 0; i < hlist.length; i++) { if (hlist[i].className == "ContSect") { var chlds = hlist[i].childNodes; var el = document.createElement("span"); var oncl = document.createAttribute("class"); oncl.nodeValue = "toctoggle"; el.setAttributeNode(oncl); var cont; if (chlds.length > 2) { var oncl = document.createAttribute("onclick"); oncl.nodeValue = "openclosetoc(event)"; el.setAttributeNode(oncl); cont = document.createTextNode(closedTOCMarker); } else { cont = document.createTextNode(noTOCMarker); } el.appendChild(cont); hlist[i].firstChild.insertBefore(el, hlist[i].firstChild.firstChild); hlist[i].className = "ContSectClosed"; } } } function openclosetoc (event) { /* first two steps to make it work in most browsers */ var evt=window.event || event; if (!evt.target) evt.target=evt.srcElement; var markClosed = document.createTextNode(closedTOCMarker); var markOpen = document.createTextNode(openTOCMarker); var par = evt.target.parentNode.parentNode; if (par.className == "ContSectOpen") { par.className = "ContSectClosed"; evt.target.replaceChild(markClosed, evt.target.firstChild); } else if (par.className == "ContSectClosed") { par.className = "ContSectOpen"; evt.target.replaceChild(markOpen, evt.target.firstChild); } } /* adjust jscontent which is called onload */ jscontentfuncs.push(mergeSideTOCHooks); atlasrep/doc/chap3.txt0000644000175000017500000024304412701177205013330 0ustar samsam 3 The User Interface of the AtlasRep Package The user interface is the part of the GAP interface that allows one to display information about the current contents of the database and to access individual data (perhaps from a remote server, see Section 4.3-1). The corresponding functions are described in this chapter. See Section 2.4 for some small examples how to use the functions of the interface. Extensions of the AtlasRep package are regarded as another part of the GAP interface, they are described in Chapter 5. Finally, the low level part of the interface are described in Chapter 7. For some of the examples in this chapter, the GAP packages CTblLib and TomLib are needed, so we load them.  Example  gap> LoadPackage( "ctbllib" ); true gap> LoadPackage( "tomlib" ); true  3.1 Accessing vs. Constructing Representations Note that accessing the data means in particular that it is not the aim of this package to construct representations from known ones. For example, if at least one permutation representation for a group G is stored but no matrix representation in a positive characteristic p, say, then OneAtlasGeneratingSetInfo (3.5-5) returns fail when it is asked for a description of an available set of matrix generators for G in characteristic p, although such a representation can be obtained by reduction modulo p of an integral matrix representation, which in turn can be constructed from any permutation representation. 3.2 Group Names Used in the AtlasRep Package When you access data via the AtlasRep package, you specify the group in question by an admissible name. Thus it is essential to know these names, which are called the GAP names of the group in the following. For a group G, say, whose character table is available in GAP's Character Table Library, the admissible names of G are the admissible names of this character table. If G is almost simple, one such name is the Identifier (Reference: Identifier (for character tables)) value of the character table, see Accessing a Character Table from the Library (CTblLib: Accessing a Character Table from the Library). This name is usually very similar to the name used in the ATLAS of Finite Groups [CCNPW85]. For example, "M22" is a GAP name of the Mathieu group M_22, "12_1.U4(3).2_1" is a GAP name of 12_1.U_4(3).2_1, the two names "S5" and "A5.2" are GAP names of the symmetric group S_5, and the two names "F3+" and "Fi24'" are GAP names of the simple Fischer group Fi_24^'. When a GAP name is required as an input of a package function, this input is case insensitive. For example, both "A5" and "a5" are valid arguments of DisplayAtlasInfo (3.5-1). Internally, for example as part of filenames (see Section 7.6), the package uses names that may differ from the GAP names; these names are called ATLAS-file names. For example, "A5", "TE62", and "F24" are ATLAS-file names. Of these, only "A5" is also a GAP name, but the other two are not; corresponding GAP names are "2E6(2)" and "Fi24'", respectively. 3.3 Standard Generators Used in the AtlasRep Package For the general definition of standard generators of a group, see [Wil96]. Several different standard generators may be defined for a group, the definitions can be found at http://brauer.maths.qmul.ac.uk/Atlas When one specifies the standardization, the i-th set of standard generators is denoted by the number i. Note that when more than one set of standard generators is defined for a group, one must be careful to use compatible standardization. For example, the straight line programs, straight line decisions and black box programs in the database refer to a specific standardization of their inputs. That is, a straight line program for computing generators of a certain subgroup of a group G is defined only for a specific set of standard generators of G, and applying the program to matrix or permutation generators of G but w.r.t. a different standardization may yield unpredictable results. Therefore the results returned by the functions described in this chapter contain information about the standardizations they refer to. 3.4 Class Names Used in the AtlasRep Package For each straight line program (see AtlasProgram (3.5-3)) that is used to compute lists of class representatives, it is essential to describe the classes in which these elements lie. Therefore, in these cases the records returned by the function AtlasProgram (3.5-3) contain a component outputs with value a list of class names. Currently we define these class names only for simple groups and certain extensions of simple groups, see Section 3.4-1. The function AtlasClassNames (3.4-2) can be used to compute the list of class names from the character table in the GAP Library. 3.4-1 Definition of ATLAS Class Names For the definition of class names of an almost simple group, we assume that the ordinary character tables of all nontrivial normal subgroups are shown in the ATLAS of Finite Groups [CCNPW85]. Each class name is a string consisting of the element order of the class in question followed by a combination of capital letters, digits, and the characters ' and - (starting with a capital letter). For example, 1A, 12A1, and 3B' denote the class that contains the identity element, a class of element order 12, and a class of element order 3, respectively. 1 For the table of a simple group, the class names are the same as returned by the two argument version of the GAP function ClassNames (Reference: ClassNames), cf. [CCNPW85, Chapter 7, Section 5]: The classes are arranged w.r.t. increasing element order and for each element order w.r.t. decreasing centralizer order, the conjugacy classes that contain elements of order n are named nA, nB, nC, ...; the alphabet used here is potentially infinite, and reads A, B, C, ..., Z, A1, B1, ..., A2, B2, .... For example, the classes of the alternating group A_5 have the names 1A, 2A, 3A, 5A, and 5B. 2 Next we consider the case of an upward extension G.A of a simple group G by a cyclic group of order A. The ATLAS defines class names for each element g of G.A only w.r.t. the group G.a, say, that is generated by G and g; namely, there is a power of g (with the exponent coprime to the order of g) for which the class has a name of the same form as the class names for simple groups, and the name of the class of g w.r.t. G.a is then obtained from this name by appending a suitable number of dashes '. So dashed class names refer exactly to those classes that are not printed in the ATLAS. For example, those classes of the symmetric group S_5 that do not lie in A_5 have the names 2B, 4A, and 6A. The outer classes of the group L_2(8).3 have the names 3B, 6A, 9D, and 3B', 6A', 9D'. The outer elements of order 5 in the group Sz(32).5 lie in the classes with names 5B, 5B', 5B'', and 5B'''. In the group G.A, the class of g may fuse with other classes. The name of the class of g in G.A is obtained from the names of the involved classes of G.a by concatenating their names after removing the element order part from all of them except the first one. For example, the elements of order 9 in the group L_2(27).6 are contained in the subgroup L_2(27).3 but not in L_2(27). In L_2(27).3, they lie in the classes 9A, 9A', 9B, and 9B'; in L_2(27).6, these classes fuse to 9AB and 9A'B'. 3 Now we define class names for general upward extensions G.A of a simple group G. Each element g of such a group lies in an upward extension G.a by a cyclic group, and the class names w.r.t. G.a are already defined. The name of the class of g in G.A is obtained by concatenating the names of the classes in the orbit of G.A on the classes of cyclic upward extensions of G, after ordering the names lexicographically and removing the element order part from all of them except the first one. An exception is the situation where dashed and non-dashed class names appear in an orbit; in this case, the dashed names are omitted. For example, the classes 21A and 21B of the group U_3(5).3 fuse in U_3(5).S_3 to the class 21AB, and the class 2B of U_3(5).2 fuses with the involution classes 2B', 2B'' in the groups U_3(5).2^' and U_3(5).2^{''} to the class 2B of U_3(5).S_3. It may happen that some names in the outputs component of a record returned by AtlasProgram (3.5-3) do not uniquely determine the classes of the corresponding elements. For example, the (algebraically conjugate) classes 39A and 39B of the group Co_1 have not been distinguished yet. In such cases, the names used contain a minus sign -, and mean one of the classes in the range described by the name before and the name after the minus sign; the element order part of the name does not appear after the minus sign. So the name 39A-B for the group Co_1 means 39A or 39B, and the name 20A-B''' for the group Sz(32).5 means one of the classes of element order 20 in this group (these classes lie outside the simple group Sz). 4 For a downward extension m.G.A of an almost simple group G.A by a cyclic group of order m, let π denote the natural epimorphism from m.G.A onto G.A. Each class name of m.G.A has the form nX_0, nX_1 etc., where nX is the class name of the image under π, and the indices 0, 1 etc. are chosen according to the position of the class in the lifting order rows for G, see [CCNPW85, Chapter 7, Section 7, and the example in Section 8]). For example, if m = 6 then 1A_1 and 1A_5 denote the classes containing the generators of the kernel of π, that is, central elements of order 6. 3.4-2 AtlasClassNames AtlasClassNames( tbl )  function Returns: a list of class names. Let tbl be the ordinary or modular character table of a group G, say, that is almost simple or a downward extension of an almost simple group and such that tbl is an ATLAS table from the GAP Character Table Library, according to its InfoText (Reference: InfoText) value. Then AtlasClassNames returns the list of class names for G, as defined in Section 3.4-1. The ordering of class names is the same as the ordering of the columns of tbl. (The function may work also for character tables that are not ATLAS tables, but then clearly the class names returned are somewhat arbitrary.)  Example  gap> AtlasClassNames( CharacterTable( "L3(4).3" ) ); [ "1A", "2A", "3A", "4ABC", "5A", "5B", "7A", "7B", "3B", "3B'",   "3C", "3C'", "6B", "6B'", "15A", "15A'", "15B", "15B'", "21A",   "21A'", "21B", "21B'" ] gap> AtlasClassNames( CharacterTable( "U3(5).2" ) ); [ "1A", "2A", "3A", "4A", "5A", "5B", "5CD", "6A", "7AB", "8AB",   "10A", "2B", "4B", "6D", "8C", "10B", "12B", "20A", "20B" ] gap> AtlasClassNames( CharacterTable( "L2(27).6" ) ); [ "1A", "2A", "3AB", "7ABC", "13ABC", "13DEF", "14ABC", "2B", "4A",   "26ABC", "26DEF", "28ABC", "28DEF", "3C", "3C'", "6A", "6A'",   "9AB", "9A'B'", "6B", "6B'", "12A", "12A'" ] gap> AtlasClassNames( CharacterTable( "L3(4).3.2_2" ) ); [ "1A", "2A", "3A", "4ABC", "5AB", "7A", "7B", "3B", "3C", "6B",   "15A", "15B", "21A", "21B", "2C", "4E", "6E", "8D", "14A", "14B" ] gap> AtlasClassNames( CharacterTable( "3.A6" ) ); [ "1A_0", "1A_1", "1A_2", "2A_0", "2A_1", "2A_2", "3A_0", "3B_0",   "4A_0", "4A_1", "4A_2", "5A_0", "5A_1", "5A_2", "5B_0", "5B_1",   "5B_2" ] gap> AtlasClassNames( CharacterTable( "2.A5.2" ) ); [ "1A_0", "1A_1", "2A_0", "3A_0", "3A_1", "5AB_0", "5AB_1", "2B_0",   "4A_0", "4A_1", "6A_0", "6A_1" ]  3.4-3 AtlasCharacterNames AtlasCharacterNames( tbl )  function Returns: a list of character names. Let tbl be the ordinary or modular character table of a simple group. AtlasCharacterNames returns a list of strings, the i-th entry being the name of the i-th irreducible character of tbl; this name consists of the degree of this character followed by distinguishing lowercase letters.  Example  gap> AtlasCharacterNames( CharacterTable( "A5" ) );  [ "1a", "3a", "3b", "4a", "5a" ]  3.5 Accessing Data of the AtlasRep Package Note that the output of the examples in this section refers to a perhaps outdated table of contents; the current version of the database may contain more information than is shown here. 3.5-1 DisplayAtlasInfo DisplayAtlasInfo( [listofnames, ][std, ]["contents", sources, ][...] )  function DisplayAtlasInfo( gapname[, std][, ...] )  function This function lists the information available via the AtlasRep package, for the given input. Depending on whether remote access to data is enabled (see Section 4.3-1), all the data provided by the ATLAS of Group Representations or only those in the local installation are considered. An interactive alternative to DisplayAtlasInfo is the function BrowseAtlasInfo (Browse: BrowseAtlasInfo), see [BL14]. Called without arguments, DisplayAtlasInfo prints an overview what information the ATLAS of Group Representations provides. One line is printed for each group G, with the following columns. group the GAP name of G (see Section 3.2), # the number of faithful representations stored for G that satisfy the additional conditions given (see below), maxes the number of available straight line programs for computing generators of maximal subgroups of G, cl a + sign if at least one program for computing representatives of conjugacy classes of elements of G is stored, cyc a + sign if at least one program for computing representatives of classes of maximally cyclic subgroups of G is stored, out descriptions of outer automorphisms of G for which at least one program is stored, fnd a + sign if at least one program is available for finding standard generators, chk a + sign if at least one program is available for checking whether a set of generators is a set of standard generators, and prs a + sign if at least one program is available that encodes a presentation. (The list can be printed to the screen or can be fed into a pager, see Section 4.3-5.) Called with a list listofnames of strings that are GAP names for a group from the ATLAS of Group Representations, DisplayAtlasInfo prints the overview described above but restricted to the groups in this list. In addition to or instead of listofnames, the string "contents" and a description sources of the data may be given about which the overview is formed. See below for admissible values of sources. Called with a string gapname that is a GAP name for a group from the ATLAS of Group Representations, DisplayAtlasInfo prints an overview of the information that is available for this group. One line is printed for each faithful representation, showing the number of this representation (which can be used in calls of AtlasGenerators (3.5-2)), and a string of one of the following forms; in both cases, id is a (possibly empty) string. G <= Sym(nid) denotes a permutation representation of degree n, for example G <= Sym(40a) and G <= Sym(40b) denote two (nonequivalent) representations of degree 40. G <= GL(nid,descr) denotes a matrix representation of dimension n over a coefficient ring described by descr, which can be a prime power, ℤ (denoting the ring of integers), a description of an algebraic extension field, ℂ (denoting an unspecified algebraic extension field), or ℤ/mℤ for an integer m (denoting the ring of residues mod m); for example, G <= GL(2a,4) and G <= GL(2b,4) denote two (nonequivalent) representations of dimension 2 over the field with four elements. After the representations, the programs available for gapname are listed. The following optional arguments can be used to restrict the overviews. std must be a positive integer or a list of positive integers; if it is given then only those representations are considered that refer to the std-th set of standard generators or the i-th set of standard generators, for i in std (see Section 3.3), "contents" and sources for a string or a list of strings sources, restrict the data about which the overview is formed; if sources is the string "public" then only non-private data (see Chapter 5) are considered, if sources is a string that denotes a private extension in the sense of a dirid argument of AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1) then only the data that belong to this private extension are considered; also a list of such strings may be given, then the union of these data is considered, Identifier and id restrict to representations with identifier component in the list id (note that this component is itself a list, entering this list is not admissible), or satisfying the function id, IsPermGroup and true restrict to permutation representations, NrMovedPoints and n for a positive integer, a list of positive integers, or a property n, restrict to permutation representations of degree equal to n, or in the list n, or satisfying the function n, NrMovedPoints and the string "minimal" restrict to faithful permutation representations of minimal degree (if this information is available), IsTransitive and true or false restrict to transitive or intransitive permutation representations (if this information is available), IsPrimitive and true or false restrict to primitive or imprimitive permutation representations (if this information is available), Transitivity and n for a nonnegative integer, a list of nonnegative integers, or a property n, restrict to permutation representations of transitivity equal to n, or in the list n, or satisfying the function n (if this information is available), RankAction and n for a nonnegative integer, a list of nonnegative integers, or a property n, restrict to permutation representations of rank equal to n, or in the list n, or satisfying the function n (if this information is available), IsMatrixGroup and true restrict to matrix representations, Characteristic and p for a prime integer, a list of prime integers, or a property p, restrict to matrix representations over fields of characteristic equal to p, or in the list p, or satisfying the function p (representations over residue class rings that are not fields can be addressed by entering fail as the value of p), Dimension and n for a positive integer, a list of positive integers, or a property n, restrict to matrix representations of dimension equal to n, or in the list n, or satisfying the function n, Characteristic, p, Dimension, and the string "minimal" for a prime integer p, restrict to faithful matrix representations over fields of characteristic p that have minimal dimension (if this information is available), Ring and R for a ring or a property R, restrict to matrix representations over this ring or satisfying this function (note that the representation might be defined over a proper subring of R), Ring, R, Dimension, and the string "minimal" for a ring R, restrict to faithful matrix representations over this ring that have minimal dimension (if this information is available), Character and chi for a class function or a list of class functions chi, restrict to matrix representations with these characters (note that the underlying characteristic of the class function, see Section 'Reference: UnderlyingCharacteristic', determines the characteristic of the matrices), and IsStraightLineProgram and true restrict to straight line programs, straight line decisions (see Section 6.1), and black box programs (see Section 6.2). Note that the above conditions refer only to the information that is available without accessing the representations. For example, if it is not stored in the table of contents whether a permutation representation is primitive then this representation does not match an IsPrimitive condition in DisplayAtlasInfo. If minimality information is requested and no available representation matches this condition then either no minimal representation is available or the information about the minimality is missing. See MinimalRepresentationInfo (6.3-1) for checking whether the minimality information is available for the group in question. Note that in the cases where the string "minimal" occurs as an argument, MinimalRepresentationInfo (6.3-1) is called with third argument "lookup"; this is because the stored information was precomputed just for the groups in the ATLAS of Group Representations, so trying to compute non-stored minimality information (using other available databases) will hardly be successful. The representations are ordered as follows. Permutation representations come first (ordered according to their degrees), followed by matrix representations over finite fields (ordered first according to the field size and second according to the dimension), matrix representations over the integers, and then matrix representations over algebraic extension fields (both kinds ordered according to the dimension), the last representations are matrix representations over residue class rings (ordered first according to the modulus and second according to the dimension). The maximal subgroups are ordered according to decreasing group order. For an extension G.p of a simple group G by an outer automorphism of prime order p, this means that G is the first maximal subgroup and then come the extensions of the maximal subgroups of G and the novelties; so the n-th maximal subgroup of G and the n-th maximal subgroup of G.p are in general not related. (This coincides with the numbering used for the Maxes (CTblLib: Maxes) attribute for character tables.)  Example  gap> DisplayAtlasInfo( [ "M11", "A5" ] ); group | # | maxes | cl | cyc | out | fnd | chk | prs ------+----+-------+----+-----+-----+-----+-----+---- M11 | 42 | 5 | + | + | | + | + | +  A5 | 18 | 3 | | | | | + | +   The above output means that the ATLAS of Group Representations contains 42 representations of the Mathieu group M_11, straight line programs for computing generators of representatives of all five classes of maximal subgroups, for computing representatives of the conjugacy classes of elements and of generators of maximally cyclic subgroups, contains no straight line program for applying outer automorphisms (well, in fact M_11 admits no nontrivial outer automorphism), and contains straight line decisions that check a set of generators or a set of group elements for being a set of standard generators. Analogously, 18 representations of the alternating group A_5 are available, straight line programs for computing generators of representatives of all three classes of maximal subgroups, and no straight line programs for computing representatives of the conjugacy classes of elements, of generators of maximally cyclic subgroups, and no for computing images under outer automorphisms; straight line decisions for checking the standardization of generators or group elements are available.  Example  gap> DisplayAtlasInfo( "A5", IsPermGroup, true ); Representations for G = A5: (all refer to std. generators 1) --------------------------- 1: G <= Sym(5) 3-trans., on cosets of A4 (1st max.) 2: G <= Sym(6) 2-trans., on cosets of D10 (2nd max.) 3: G <= Sym(10) rank 3, on cosets of S3 (3rd max.) gap> DisplayAtlasInfo( "A5", NrMovedPoints, [ 4 .. 9 ] ); Representations for G = A5: (all refer to std. generators 1) --------------------------- 1: G <= Sym(5) 3-trans., on cosets of A4 (1st max.) 2: G <= Sym(6) 2-trans., on cosets of D10 (2nd max.)  The first three representations stored for A_5 are (in fact primitive) permutation representations.  Example  gap> DisplayAtlasInfo( "A5", Dimension, [ 1 .. 3 ] ); Representations for G = A5: (all refer to std. generators 1) ---------------------------  8: G <= GL(2a,4)   9: G <= GL(2b,4)  10: G <= GL(3,5)  12: G <= GL(3a,9)  13: G <= GL(3b,9)  17: G <= GL(3a,Field([Sqrt(5)]))  18: G <= GL(3b,Field([Sqrt(5)]))  gap> DisplayAtlasInfo( "A5", Characteristic, 0 ); Representations for G = A5: (all refer to std. generators 1) --------------------------- 14: G <= GL(4,Z)  15: G <= GL(5,Z)  16: G <= GL(6,Z)  17: G <= GL(3a,Field([Sqrt(5)]))  18: G <= GL(3b,Field([Sqrt(5)]))   The representations with number between 4 and 13 are (in fact irreducible) matrix representations over various finite fields, those with numbers 14 to 16 are integral matrix representations, and the last two are matrix representations over the field generated by sqrt{5} over the rational number field.  Example  gap> DisplayAtlasInfo( "A5", Identifier, "a" ); Representations for G = A5: (all refer to std. generators 1) ---------------------------  4: G <= GL(4a,2)   8: G <= GL(2a,4)  12: G <= GL(3a,9)  17: G <= GL(3a,Field([Sqrt(5)]))   Each of the representations with the numbers 4, 8, 12, and 17 is labeled with the distinguishing letter a.  Example  gap> DisplayAtlasInfo( "A5", NrMovedPoints, IsPrimeInt ); Representations for G = A5: (all refer to std. generators 1) --------------------------- 1: G <= Sym(5) 3-trans., on cosets of A4 (1st max.) gap> DisplayAtlasInfo( "A5", Characteristic, IsOddInt ); Representations for G = A5: (all refer to std. generators 1) ---------------------------  6: G <= GL(4,3)   7: G <= GL(6,3)  10: G <= GL(3,5)  11: G <= GL(5,5)  12: G <= GL(3a,9)  13: G <= GL(3b,9)  gap> DisplayAtlasInfo( "A5", Dimension, IsPrimeInt ); Representations for G = A5: (all refer to std. generators 1) ---------------------------  8: G <= GL(2a,4)   9: G <= GL(2b,4)  10: G <= GL(3,5)  11: G <= GL(5,5)  12: G <= GL(3a,9)  13: G <= GL(3b,9)  15: G <= GL(5,Z)  17: G <= GL(3a,Field([Sqrt(5)]))  18: G <= GL(3b,Field([Sqrt(5)]))  gap> DisplayAtlasInfo( "A5", Ring, IsFinite and IsPrimeField ); Representations for G = A5: (all refer to std. generators 1) ---------------------------  4: G <= GL(4a,2)   5: G <= GL(4b,2)   6: G <= GL(4,3)   7: G <= GL(6,3)  10: G <= GL(3,5)  11: G <= GL(5,5)   The above examples show how the output can be restricted using a property (a unary function that returns either true or false) that follows NrMovedPoints (Reference: NrMovedPoints (for a permutation)), Characteristic (Reference: Characteristic), Dimension (Reference: Dimension), or Ring (Reference: Ring) in the argument list of DisplayAtlasInfo.  Example  gap> DisplayAtlasInfo( "A5", IsStraightLineProgram, true ); Programs for G = A5: (all refer to std. generators 1) -------------------- presentation std. gen. checker maxes (all 3):  1: A4  2: D10  3: S3  Straight line programs are available for computing generators of representatives of the three classes of maximal subgroups of A_5, and a straight line decision for checking whether given generators are in fact standard generators is available as well as a presentation in terms of standard generators, see AtlasProgram (3.5-3). 3.5-2 AtlasGenerators AtlasGenerators( gapname, repnr[, maxnr] )  function AtlasGenerators( identifier )  function Returns: a record containing generators for a representation, or fail. In the first form, gapname must be a string denoting a GAP name (see Section 3.2) of a group, and repnr a positive integer. If the ATLAS of Group Representations contains at least repnr representations for the group with GAP name gapname then AtlasGenerators, when called with gapname and repnr, returns an immutable record describing the repnr-th representation; otherwise fail is returned. If a third argument maxnr, a positive integer, is given then an immutable record describing the restriction of the repnr-th representation to the maxnr-th maximal subgroup is returned. The result record has at least the following components. generators a list of generators for the group, groupname the GAP name of the group (see Section 3.2), identifier a GAP object (a list of filenames plus additional information) that uniquely determines the representation; the value can be used as identifier argument of AtlasGenerators. repnr the number of the representation in the current session, equal to the argument repnr if this is given. standardization the positive integer denoting the underlying standard generators, Additionally, the group order may be stored in the component size, and describing components may be available that depend on the data type of the representation: For permutation representations, these are p for the number of moved points, id for the distinguishing string as described for DisplayAtlasInfo (3.5-1), and information about primitivity, point stabilizers etc. if available; for matrix representations, these are dim for the dimension of the matrices, ring (if known) for the ring generated by the matrix entries, id for the distinguishing string, and information about the character if available. It should be noted that the number repnr refers to the number shown by DisplayAtlasInfo (3.5-1) in the current session; it may be that after the addition of new representations, repnr refers to another representation. The alternative form of AtlasGenerators, with only argument identifier, can be used to fetch the result record with identifier value equal to identifier. The purpose of this variant is to access the same representation also in different GAP sessions.  Example  gap> gens1:= AtlasGenerators( "A5", 1 ); rec( generators := [ (1,2)(3,4), (1,3,5) ], groupname := "A5",   id := "",   identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ],   isPrimitive := true, maxnr := 1, p := 5, rankAction := 2,   repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4",   standardization := 1, transitivity := 3, type := "perm" ) gap> gens8:= AtlasGenerators( "A5", 8 ); rec( dim := 2,   generators := [ [ [ Z(2)^0, 0*Z(2) ], [ Z(2^2), Z(2)^0 ] ],   [ [ 0*Z(2), Z(2)^0 ], [ Z(2)^0, Z(2)^0 ] ] ], groupname := "A5",  id := "a",   identifier := [ "A5", [ "A5G1-f4r2aB0.m1", "A5G1-f4r2aB0.m2" ], 1,   4 ], repname := "A5G1-f4r2aB0", repnr := 8, ring := GF(2^2),   size := 60, standardization := 1, type := "matff" ) gap> gens17:= AtlasGenerators( "A5", 17 ); rec( dim := 3,   generators :=   [ [ [ -1, 0, 0 ], [ 0, -1, 0 ], [ -E(5)-E(5)^4, -E(5)-E(5)^4, 1 ]   ], [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ],   groupname := "A5", id := "a",   identifier := [ "A5", "A5G1-Ar3aB0.g", 1, 3 ],   repname := "A5G1-Ar3aB0", repnr := 17, ring := NF(5,[ 1, 4 ]),   size := 60, standardization := 1, type := "matalg" )  Each of the above pairs of elements generates a group isomorphic to A_5.  Example  gap> gens1max2:= AtlasGenerators( "A5", 1, 2 ); rec( generators := [ (1,2)(3,4), (2,3)(4,5) ], groupname := "D10",   identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5, 2 ],  repnr := 1, size := 10, standardization := 1 ) gap> id:= gens1max2.identifier;; gap> gens1max2 = AtlasGenerators( id ); true gap> max2:= Group( gens1max2.generators );; gap> Size( max2 ); 10 gap> IdGroup( max2 ) = IdGroup( DihedralGroup( 10 ) ); true  The elements stored in gens1max2.generators describe the restriction of the first representation of A_5 to a group in the second class of maximal subgroups of A_5 according to the list in the ATLAS of Finite Groups [CCNPW85]; this subgroup is isomorphic to the dihedral group D_10. 3.5-3 AtlasProgram AtlasProgram( gapname[, std], ... )  function AtlasProgram( identifier )  function Returns: a record containing a program, or fail. In the first form, gapname must be a string denoting a GAP name (see Section  3.2) of a group G, say. If the ATLAS of Group Representations contains a straight line program (see Section 'Reference: Straight Line Programs') or straight line decision (see Section 6.1) or black box program (see Section 6.2) as described by the remaining arguments (see below) then AtlasProgram returns an immutable record containing this program. Otherwise fail is returned. If the optional argument std is given, only those straight line programs/decisions are considered that take generators from the std-th set of standard generators of G as input, see Section 3.3. The result record has the following components. program the required straight line program/decision, or black box program, standardization the positive integer denoting the underlying standard generators of G, identifier a GAP object (a list of filenames plus additional information) that uniquely determines the program; the value can be used as identifier argument of AtlasProgram (see below). In the first form, the last arguments must be as follows. (the string "maxes" and) a positive integer maxnr  the required program computes generators of the maxnr-th maximal subgroup of the group with GAP name gapname. In this case, the result record of AtlasProgram also may contain a component size, whose value is the order of the maximal subgroup in question. one of the strings "classes" or "cyclic" the required program computes representatives of conjugacy classes of elements or representatives of generators of maximally cyclic subgroups of G, respectively. See [BSWW01] and [SWW00] for the background concerning these straight line programs. In these cases, the result record of AtlasProgram also contains a component outputs, whose value is a list of class names of the outputs, as described in Section 3.4. the strings "automorphism" and autname the required program computes images of standard generators under the outer automorphism of G that is given by this string. Note that a value "2" of autname means that the square of the automorphism is an inner automorphism of G (not necessarily the identity mapping) but the automorphism itself is not. the string "check" the required result is a straight line decision that takes a list of generators for G and returns true if these generators are standard generators of G w.r.t. the standardization std, and false otherwise. the string "presentation" the required result is a straight line decision that takes a list of group elements and returns true if these elements are standard generators of G w.r.t. the standardization std, and false otherwise. See StraightLineProgramFromStraightLineDecision (6.1-9) for an example how to derive defining relators for G in terms of the standard generators from such a straight line decision. the string "find" the required result is a black box program that takes G and returns a list of standard generators of G, w.r.t. the standardization std. the string "restandardize" and an integer std2 the required result is a straight line program that computes standard generators of G w.r.t. the std2-th set of standard generators of G; in this case, the argument std must be given. the strings "other" and descr the required program is described by descr. The second form of AtlasProgram, with only argument the list identifier, can be used to fetch the result record with identifier value equal to identifier.  Example  gap> prog:= AtlasProgram( "A5", 2 ); rec( groupname := "A5", identifier := [ "A5", "A5G1-max2W1", 1 ],   program := , size := 10,   standardization := 1, subgroupname := "D10" ) gap> StringOfResultOfStraightLineProgram( prog.program, [ "a", "b" ] ); "[ a, bbab ]" gap> gens1:= AtlasGenerators( "A5", 1 ); rec( generators := [ (1,2)(3,4), (1,3,5) ], groupname := "A5",   id := "",   identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ],   isPrimitive := true, maxnr := 1, p := 5, rankAction := 2,   repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4",   standardization := 1, transitivity := 3, type := "perm" ) gap> maxgens:= ResultOfStraightLineProgram( prog.program, gens1.generators ); [ (1,2)(3,4), (2,3)(4,5) ] gap> maxgens = gens1max2.generators; true  The above example shows that for restricting representations given by standard generators to a maximal subgroup of A_5, we can also fetch and apply the appropriate straight line program. Such a program (see 'Reference: Straight Line Programs') takes standard generators of a group --in this example A_5-- as its input, and returns a list of elements in this group --in this example generators of the D_10 subgroup we had met above-- which are computed essentially by evaluating structured words in terms of the standard generators.  Example  gap> prog:= AtlasProgram( "J1", "cyclic" ); rec( groupname := "J1", identifier := [ "J1", "J1G1-cycW1", 1 ],   outputs := [ "6A", "7A", "10B", "11A", "15B", "19A" ],   program := , standardization := 1 ) gap> gens:= GeneratorsOfGroup( FreeGroup( "x", "y" ) );; gap> ResultOfStraightLineProgram( prog.program, gens ); [ (x*y)^2*((y*x)^2*y^2*x)^2*y^2, x*y, (x*(y*x*y)^2)^2*y,   (x*y*x*(y*x*y)^3*x*y^2)^2*x*y*x*(y*x*y)^2*y, x*y*x*(y*x*y)^2*y,   (x*y)^2*y ]  The above example shows how to fetch and use straight line programs for computing generators of representatives of maximally cyclic subgroups of a given group. 3.5-4 AtlasProgramInfo AtlasProgramInfo( gapname[, std][, "contents", sources][, ...] )  function Returns: a record describing a program, or fail. AtlasProgramInfo takes the same arguments as AtlasProgram (3.5-3), and returns a similar result. The only difference is that the records returned by AtlasProgramInfo have no components program and outputs. The idea is that one can use AtlasProgramInfo for testing whether the program in question is available at all, but without transferring it from a remote server. The identifier component of the result of AtlasProgramInfo can then be used to fetch the program with AtlasProgram (3.5-3).  Example  gap> AtlasProgramInfo( "J1", "cyclic" ); rec( groupname := "J1", identifier := [ "J1", "J1G1-cycW1", 1 ],   standardization := 1 )  3.5-5 OneAtlasGeneratingSetInfo OneAtlasGeneratingSetInfo( [gapname, ][std, ][...] )  function Returns: a record describing a representation that satisfies the conditions, or fail. Let gapname be a string denoting a GAP name (see Section  3.2) of a group G, say. If the ATLAS of Group Representations contains at least one representation for G with the required properties then OneAtlasGeneratingSetInfo returns a record r whose components are the same as those of the records returned by AtlasGenerators (3.5-2), except that the component generators is not contained; the component identifier of r can be used as input for AtlasGenerators (3.5-2) in order to fetch the generators. If no representation satisfying the given conditions is available then fail is returned. If the argument std is given then it must be a positive integer or a list of positive integers, denoting the sets of standard generators w.r.t. which the representation shall be given (see Section 3.3). The argument gapname can be missing (then all available groups are considered), or a list of group names can be given instead. Further restrictions can be entered as arguments, with the same meaning as described for DisplayAtlasInfo (3.5-1). The result of OneAtlasGeneratingSetInfo describes the first generating set for G that matches the restrictions, in the ordering shown by DisplayAtlasInfo (3.5-1). Note that even in the case that the user parameter remote has the value true (see Section 4.3-1), OneAtlasGeneratingSetInfo does not attempt to transfer remote data files, just the table of contents is evaluated. So this function (as well as AllAtlasGeneratingSetInfos (3.5-6)) can be used to check for the availability of certain representations, and afterwards one can call AtlasGenerators (3.5-2) for those representations one wants to work with. In the following example, we try to access information about permutation representations for the alternating group A_5.  Example  gap> info:= OneAtlasGeneratingSetInfo( "A5" ); rec( groupname := "A5", id := "",   identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ],   isPrimitive := true, maxnr := 1, p := 5, rankAction := 2,   repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4",   standardization := 1, transitivity := 3, type := "perm" ) gap> gens:= AtlasGenerators( info.identifier ); rec( generators := [ (1,2)(3,4), (1,3,5) ], groupname := "A5",   id := "",   identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ],   isPrimitive := true, maxnr := 1, p := 5, rankAction := 2,   repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4",   standardization := 1, transitivity := 3, type := "perm" ) gap> info = OneAtlasGeneratingSetInfo( "A5", IsPermGroup, true ); true gap> info = OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, "minimal" ); true gap> info = OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, [ 1 .. 10 ] ); true gap> OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, 20 ); fail  Note that a permutation representation of degree 20 could be obtained by taking twice the primitive representation on 10 points; however, the ATLAS of Group Representations does not store this imprimitive representation (cf. Section 3.1). We continue this example a little. Next we access matrix representations of A_5.  Example  gap> info:= OneAtlasGeneratingSetInfo( "A5", IsMatrixGroup, true ); rec( dim := 4, groupname := "A5", id := "a",   identifier := [ "A5", [ "A5G1-f2r4aB0.m1", "A5G1-f2r4aB0.m2" ], 1,   2 ], repname := "A5G1-f2r4aB0", repnr := 4, ring := GF(2),   size := 60, standardization := 1, type := "matff" ) gap> gens:= AtlasGenerators( info.identifier ); rec( dim := 4,   generators := [ ,   ], groupname := "A5",   id := "a",   identifier := [ "A5", [ "A5G1-f2r4aB0.m1", "A5G1-f2r4aB0.m2" ], 1,   2 ], repname := "A5G1-f2r4aB0", repnr := 4, ring := GF(2),   size := 60, standardization := 1, type := "matff" ) gap> info = OneAtlasGeneratingSetInfo( "A5", Dimension, 4 ); true gap> info = OneAtlasGeneratingSetInfo( "A5", Characteristic, 2 ); true gap> info = OneAtlasGeneratingSetInfo( "A5", Ring, GF(2) ); true gap> OneAtlasGeneratingSetInfo( "A5", Characteristic, [2,5], Dimension, 2 ); rec( dim := 2, groupname := "A5", id := "a",   identifier := [ "A5", [ "A5G1-f4r2aB0.m1", "A5G1-f4r2aB0.m2" ], 1,   4 ], repname := "A5G1-f4r2aB0", repnr := 8, ring := GF(2^2),   size := 60, standardization := 1, type := "matff" ) gap> OneAtlasGeneratingSetInfo( "A5", Characteristic, [2,5], Dimension, 1 ); fail gap> info:= OneAtlasGeneratingSetInfo( "A5", Characteristic, 0, Dimension, 4 ); rec( dim := 4, groupname := "A5", id := "",   identifier := [ "A5", "A5G1-Zr4B0.g", 1, 4 ],   repname := "A5G1-Zr4B0", repnr := 14, ring := Integers, size := 60,   standardization := 1, type := "matint" ) gap> gens:= AtlasGenerators( info.identifier ); rec( dim := 4,   generators :=   [   [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ],   [ -1, -1, -1, -1 ] ],   [ [ 0, 1, 0, 0 ], [ 0, 0, 0, 1 ], [ 0, 0, 1, 0 ],   [ 1, 0, 0, 0 ] ] ], groupname := "A5", id := "",   identifier := [ "A5", "A5G1-Zr4B0.g", 1, 4 ],   repname := "A5G1-Zr4B0", repnr := 14, ring := Integers, size := 60,   standardization := 1, type := "matint" ) gap> info = OneAtlasGeneratingSetInfo( "A5", Ring, Integers ); true gap> info = OneAtlasGeneratingSetInfo( "A5", Ring, CF(37) ); true gap> OneAtlasGeneratingSetInfo( "A5", Ring, Integers mod 77 ); fail gap> info:= OneAtlasGeneratingSetInfo( "A5", Ring, CF(5), Dimension, 3 ); rec( dim := 3, groupname := "A5", id := "a",   identifier := [ "A5", "A5G1-Ar3aB0.g", 1, 3 ],   repname := "A5G1-Ar3aB0", repnr := 17, ring := NF(5,[ 1, 4 ]),   size := 60, standardization := 1, type := "matalg" ) gap> gens:= AtlasGenerators( info.identifier ); rec( dim := 3,   generators :=   [ [ [ -1, 0, 0 ], [ 0, -1, 0 ], [ -E(5)-E(5)^4, -E(5)-E(5)^4, 1 ]   ], [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ],   groupname := "A5", id := "a",   identifier := [ "A5", "A5G1-Ar3aB0.g", 1, 3 ],   repname := "A5G1-Ar3aB0", repnr := 17, ring := NF(5,[ 1, 4 ]),   size := 60, standardization := 1, type := "matalg" ) gap> OneAtlasGeneratingSetInfo( "A5", Ring, GF(17) ); fail  3.5-6 AllAtlasGeneratingSetInfos AllAtlasGeneratingSetInfos( [gapname, ][std, ][...] )  function Returns: the list of all records describing representations that satisfy the conditions. AllAtlasGeneratingSetInfos is similar to OneAtlasGeneratingSetInfo (3.5-5). The difference is that the list of all records describing the available representations with the given properties is returned instead of just one such component. In particular an empty list is returned if no such representation is available.  Example  gap> AllAtlasGeneratingSetInfos( "A5", IsPermGroup, true ); [ rec( groupname := "A5", id := "",   identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ]  , isPrimitive := true, maxnr := 1, p := 5, rankAction := 2,   repname := "A5G1-p5B0", repnr := 1, size := 60,   stabilizer := "A4", standardization := 1, transitivity := 3,   type := "perm" ),   rec( groupname := "A5", id := "",   identifier := [ "A5", [ "A5G1-p6B0.m1", "A5G1-p6B0.m2" ], 1, 6 ]  , isPrimitive := true, maxnr := 2, p := 6, rankAction := 2,   repname := "A5G1-p6B0", repnr := 2, size := 60,   stabilizer := "D10", standardization := 1, transitivity := 2,   type := "perm" ),   rec( groupname := "A5", id := "",   identifier := [ "A5", [ "A5G1-p10B0.m1", "A5G1-p10B0.m2" ], 1,   10 ], isPrimitive := true, maxnr := 3, p := 10,   rankAction := 3, repname := "A5G1-p10B0", repnr := 3,   size := 60, stabilizer := "S3", standardization := 1,   transitivity := 1, type := "perm" ) ]  Note that a matrix representation in any characteristic can be obtained by reducing a permutation representation or an integral matrix representation; however, the ATLAS of Group Representations does not store such a representation (cf. Section 3.1). 3.5-7 AtlasGroup AtlasGroup( [gapname[, std, ]][...] )  function AtlasGroup( identifier )  function Returns: a group that satisfies the conditions, or fail. AtlasGroup takes the same arguments as OneAtlasGeneratingSetInfo (3.5-5), and returns the group generated by the generators component of the record that is returned by OneAtlasGeneratingSetInfo (3.5-5) with these arguments; if OneAtlasGeneratingSetInfo (3.5-5) returns fail then also AtlasGroup returns fail.  Example  gap> g:= AtlasGroup( "A5" ); Group([ (1,2)(3,4), (1,3,5) ])  Alternatively, it is possible to enter exactly one argument, a record identifier as returned by OneAtlasGeneratingSetInfo (3.5-5) or AllAtlasGeneratingSetInfos (3.5-6), or the identifier component of such a record.  Example  gap> info:= OneAtlasGeneratingSetInfo( "A5" ); rec( groupname := "A5", id := "",   identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ],   isPrimitive := true, maxnr := 1, p := 5, rankAction := 2,   repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4",   standardization := 1, transitivity := 3, type := "perm" ) gap> AtlasGroup( info ); Group([ (1,2)(3,4), (1,3,5) ]) gap> AtlasGroup( info.identifier ); Group([ (1,2)(3,4), (1,3,5) ])  In the groups returned by AtlasGroup, the value of the attribute AtlasRepInfoRecord (3.5-9) is set. This information is used for example by AtlasSubgroup (3.5-8) when this function is called with second argument a group created by AtlasGroup. 3.5-8 AtlasSubgroup AtlasSubgroup( gapname[, std][, ...], maxnr )  function AtlasSubgroup( identifier, maxnr )  function AtlasSubgroup( G, maxnr )  function Returns: a group that satisfies the conditions, or fail. The arguments of AtlasSubgroup, except the last argument maxn, are the same as for AtlasGroup (3.5-7). If the ATLAS of Group Representations provides a straight line program for restricting representations of the group with name gapname (given w.r.t. the std-th standard generators) to the maxnr-th maximal subgroup and if a representation with the required properties is available, in the sense that calling AtlasGroup (3.5-7) with the same arguments except maxnr yields a group, then AtlasSubgroup returns the restriction of this representation to the maxnr-th maximal subgroup. In all other cases, fail is returned. Note that the conditions refer to the group and not to the subgroup. It may happen that in the restriction of a permutation representation to a subgroup, fewer points are moved, or that the restriction of a matrix representation turns out to be defined over a smaller ring. Here is an example.  Example  gap> g:= AtlasSubgroup( "A5", NrMovedPoints, 5, 1 ); Group([ (1,5)(2,3), (1,3,5) ]) gap> NrMovedPoints( g ); 4  Alternatively, it is possible to enter exactly two arguments, the first being a record identifier as returned by OneAtlasGeneratingSetInfo (3.5-5) or AllAtlasGeneratingSetInfos (3.5-6), or the identifier component of such a record, or a group G constructed with AtlasGroup (3.5-7).  Example  gap> info:= OneAtlasGeneratingSetInfo( "A5" ); rec( groupname := "A5", id := "",   identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ],   isPrimitive := true, maxnr := 1, p := 5, rankAction := 2,   repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4",   standardization := 1, transitivity := 3, type := "perm" ) gap> AtlasSubgroup( info, 1 ); Group([ (1,5)(2,3), (1,3,5) ]) gap> AtlasSubgroup( info.identifier, 1 ); Group([ (1,5)(2,3), (1,3,5) ]) gap> AtlasSubgroup( AtlasGroup( "A5" ), 1 ); Group([ (1,5)(2,3), (1,3,5) ])  3.5-9 AtlasRepInfoRecord AtlasRepInfoRecord( G )  attribute Returns: the record stored in the group G when this was constructed with AtlasGroup (3.5-7). For a group G that has been constructed with AtlasGroup (3.5-7), the value of this attribute is the info record that describes G, in the sense that this record was the first argument of the call to AtlasGroup (3.5-7), or it is the result of the call to OneAtlasGeneratingSetInfo (3.5-5) with the conditions that were listed in the call to AtlasGroup (3.5-7).  Example  gap> AtlasRepInfoRecord( AtlasGroup( "A5" ) ); rec( groupname := "A5", id := "",   identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ],   isPrimitive := true, maxnr := 1, p := 5, rankAction := 2,   repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4",   standardization := 1, transitivity := 3, type := "perm" )  3.6 Browse Applications Provided by AtlasRep The functions BrowseMinimalDegrees (3.6-1), BrowseBibliographySporadicSimple (3.6-2), and BrowseAtlasInfo (Browse: BrowseAtlasInfo) (an alternative to DisplayAtlasInfo (3.5-1)) are available only if the GAP package Browse (see [BL14]) is loaded. 3.6-1 BrowseMinimalDegrees BrowseMinimalDegrees( [groupnames] )  function Returns: the list of info records for the clicked representations. If the GAP package Browse (see [BL14]) is loaded then this function is available. It opens a browse table whose rows correspond to the groups for which the ATLAS of Group Representations contains some information about minimal degrees, whose columns correspond to the characteristics that occur, and whose entries are the known minimal degrees.  Example  gap> if IsBound( BrowseMinimalDegrees ) then >  down:= NCurses.keys.DOWN;; DOWN:= NCurses.keys.NPAGE;; >  right:= NCurses.keys.RIGHT;; END:= NCurses.keys.END;; >  enter:= NCurses.keys.ENTER;; nop:= [ 14, 14, 14 ];; >  # just scroll in the table >  BrowseData.SetReplay( Concatenation( [ DOWN, DOWN, DOWN, >  right, right, right ], "sedddrrrddd", nop, nop, "Q" ) ); >  BrowseMinimalDegrees();; >  # restrict the table to the groups with minimal ordinary degree 6 >  BrowseData.SetReplay( Concatenation( "scf6", >  [ down, down, right, enter, enter ] , nop, nop, "Q" ) ); >  BrowseMinimalDegrees();; >  BrowseData.SetReplay( false ); > fi;  If an argument groupnames is given then it must be a list of group names of the ATLAS of Group Representations; the browse table is then restricted to the rows corresponding to these group names and to the columns that are relevant for these groups. A perhaps interesting example is the subtable with the data concerning sporadic simple groups and their covering groups, which has been published in [Jan05]. This table can be shown as follows.  Example  gap> if IsBound( BrowseMinimalDegrees ) then >  # just scroll in the table >  BrowseData.SetReplay( Concatenation( [ DOWN, DOWN, DOWN, END ], >  "rrrrrrrrrrrrrr", nop, nop, "Q" ) ); >  BrowseMinimalDegrees( BibliographySporadicSimple.groupNamesJan05 );; > fi;  The browse table does not contain rows for the groups 6.M_22, 12.M_22, 6.Fi_22. Note that in spite of the title of [Jan05], the entries in Table 1 of this paper are in fact the minimal degrees of faithful irreducible representations, and in the above three cases, these degrees are larger than the minimal degrees of faithful representations. The underlying data of the browse table is about the minimal faithful (but not necessarily irreducible) degrees. The return value of BrowseMinimalDegrees is the list of OneAtlasGeneratingSetInfo (3.5-5) values for those representations that have been clicked in visual mode. The variant without arguments of this function is also available in the menu shown by BrowseGapData (Browse: BrowseGapData). 3.6-2 BrowseBibliographySporadicSimple BrowseBibliographySporadicSimple( )  function Returns: a record as returned by ParseBibXMLExtString (GAPDoc: ParseBibXMLextString). If the GAP package Browse (see [BL14]) is loaded then this function is available. It opens a browse table whose rows correspond to the entries of the bibliographies in the ATLAS of Finite Groups [CCNPW85] and in the ATLAS of Brauer Characters [JLPW95]. The function is based on BrowseBibliography (Browse: BrowseBibliography), see the documentation of this function for details, e.g., about the return value. The returned record encodes the bibliography entries corresponding to those rows of the table that are clicked in visual mode, in the same format as the return value of ParseBibXMLExtString (GAPDoc: ParseBibXMLextString), see the manual of the GAP package GAPDoc [LN12] for details. BrowseBibliographySporadicSimple can be called also via the menu shown by BrowseGapData (Browse: BrowseGapData).  Example  gap> if IsBound( BrowseBibliographySporadicSimple ) then >  enter:= NCurses.keys.ENTER;; nop:= [ 14, 14, 14 ];; >  BrowseData.SetReplay( Concatenation( >  # choose the application >  "/Bibliography of Sporadic Simple Groups", [ enter, enter ], >  # search in the title column for the Atlas of Finite Groups >  "scr/Atlas of finite groups", [ enter, >  # and quit >  nop, nop, nop, nop ], "Q" ) ); >  BrowseGapData();; >  BrowseData.SetReplay( false ); > fi;  The bibliographies contained in the ATLAS of Finite Groups [CCNPW85] and in the ATLAS of Brauer Characters [JLPW95] are available online in HTML format, see http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep/bibl/index.html. The source data in BibXMLext format, which are used by BrowseBibliographySporadicSimple, is part of the AtlasRep package, in four files with suffix xml in the package's bibl directory. Note that each of the two books contains two bibliographies. Details about the BibXMLext format, including information how to transform the data into other formats such as BibTeX, can be found in the GAP package GAPDoc (see [LN12]). atlasrep/doc/chap2.txt0000644000175000017500000015557112701177205013336 0ustar samsam 2 Tutorial for the AtlasRep Package This chapter gives an overview of the basic functionality provided by the AtlasRep package. The main concepts and interface functions are presented in the first sections, and Section 2.4 shows a few small examples. 2.1 Accessing a Specific Group in AtlasRep The AtlasRep package gives access to a database, the ATLAS of Group Representations [ATLAS], that contains generators and related data for several groups, mainly for extensions of simple groups (see Section 2.1-1) and for their maximal subgroups (see Section 2.1-2). Note that the data are not part of the package. They are fetched from a web server as soon as they are needed for the first time, see Section 4.3-1. First of all, we load the AtlasRep package. Some of the examples require also the GAP packages CTblLib and TomLib, so we load also these packages.  Example  gap> LoadPackage( "AtlasRep" ); true gap> LoadPackage( "CTblLib" ); true gap> LoadPackage( "TomLib" ); true  2.1-1 Accessing a Group in AtlasRep via its Name Each group that occurs in this database is specified by a name, which is a string similar to the name used in the ATLAS of Finite Groups [CCNPW85]. For those groups whose character tables are contained in the GAP Character Table Library [Bre13], the names are equal to the Identifier (Reference: Identifier (for character tables)) values of these character tables. Examples of such names are "M24" for the Mathieu group M_24, "2.A6" for the double cover of the alternating group A_6, and "2.A6.2_1" for the double cover of the symmetric group S_6. The names that actually occur are listed in the first column of the overview table that is printed by the function DisplayAtlasInfo (3.5-1), called without arguments, see below. The other columns of the table describe the data that are available in the database. For example, DisplayAtlasInfo (3.5-1) may print the following lines. Omissions are indicated with ....  Example  gap> DisplayAtlasInfo(); group | # | maxes | cl | cyc | out | fnd | chk | prs -------------------------+----+-------+----+-----+-----+-----+-----+---- ... 2.A5 | 26 | 3 | | | | | + | +  2.A5.2 | 11 | 4 | | | | | + | +  2.A6 | 18 | 5 | | | | | |  2.A6.2_1 | 3 | 6 | | | | | |  2.A7 | 24 | | | | | | |  2.A7.2 | 7 | | | | | | |  ... M22 | 58 | 8 | + | + | | + | + | +  M22.2 | 46 | 7 | + | + | | + | + | +  M23 | 66 | 7 | + | + | | + | + | +  M24 | 62 | 9 | + | + | | + | + | +  McL | 46 | 12 | + | + | | + | + | +  McL.2 | 27 | 10 | | + | | + | + | +  O7(3) | 28 | | | | | | |  O7(3).2 | 3 | | | | | | |  ...  Called with a group name as the only argument, the function AtlasGroup (3.5-7) returns a group isomorphic to the group with the given name. If permutation generators are available in the database then a permutation group (of smallest available degree) is returned, otherwise a matrix group.  Example  gap> g:= AtlasGroup( "M24" ); Group([ (1,4)(2,7)(3,17)(5,13)(6,9)(8,15)(10,19)(11,18)(12,21)(14,16) (20,24)(22,23), (1,4,6)(2,21,14)(3,9,15)(5,18,10)(13,17,16) (19,24,23) ]) gap> IsPermGroup( g ); NrMovedPoints( g ); Size( g ); true 24 244823040  2.1-2 Accessing a Maximal Subgroup of a Group in AtlasRep Many maximal subgroups of extensions of simple groups can be constructed using the function AtlasSubgroup (3.5-8). Given the name of the extension of the simple group and the number of the conjugacy class of maximal subgroups, this function returns a representative from this class.  Example  gap> g:= AtlasSubgroup( "M24", 1 ); Group([ (2,10)(3,12)(4,14)(6,9)(8,16)(15,18)(20,22)(21,24), (1,7,2,9) (3,22,10,23)(4,19,8,12)(5,14)(6,18)(13,16,17,24) ]) gap> IsPermGroup( g ); NrMovedPoints( g ); Size( g ); true 23 10200960  The classes of maximal subgroups are ordered w. r. t. decreasing subgroup order. So the first class contains the largest maximal subgroups. Note that groups obtained by AtlasSubgroup (3.5-8) may be not very suitable for computations in the sense that much nicer representations exist. For example, the sporadic simple O'Nan group O'N contains a maximal subgroup S isomorphic with the Janko group J_1; the smallest permutation representation of O'N has degree 122760, so restricting this representation to S yields a representation of J_1 of that degree. However, J_1 has a faithful permutation representation of degree 266, which admits much more efficient computations. If you are just interested in J_1 and not in its embedding into O'N then one possibility to get a nicer faithful representation is to call SmallerDegreePermutationRepresentation (Reference: SmallerDegreePermutationRepresentation). In the abovementioned example, this works quite well; note that in general, we cannot expect that we get a representation of smallest degree in this way.  Example  gap> s:= AtlasSubgroup( "ON", 3 );  gap> NrMovedPoints( s ); Size( s ); 122760 175560 gap> hom:= SmallerDegreePermutationRepresentation( s );; gap> NrMovedPoints( Image( hom ) ); 1540  In this particular case, one could of course also ask directly for the group J_1.  Example  gap> j1:= AtlasGroup( "J1" );  gap> NrMovedPoints( j1 ); 266  If you have a group G, say, and you are really interested in the embedding of a maximal subgroup of G into G then an easy way to get compatible generators is to create G with AtlasGroup (3.5-7) and then to call AtlasSubgroup (3.5-8) with first argument the group G.  Example  gap> g:= AtlasGroup( "ON" );  gap> s:= AtlasSubgroup( g, 3 );  gap> IsSubset( g, s ); true gap> IsSubset( g, j1 ); false  2.2 Accessing Specific Generators in AtlasRep The function DisplayAtlasInfo (3.5-1), called with an admissible name of a group as the only argument, lists the ATLAS data available for this group.  Example  gap> DisplayAtlasInfo( "A5" ); Representations for G = A5: (all refer to std. generators 1) ---------------------------  1: G <= Sym(5) 3-trans., on cosets of A4 (1st max.)  2: G <= Sym(6) 2-trans., on cosets of D10 (2nd max.)  3: G <= Sym(10) rank 3, on cosets of S3 (3rd max.)  4: G <= GL(4a,2)   5: G <= GL(4b,2)   6: G <= GL(4,3)   7: G <= GL(6,3)   8: G <= GL(2a,4)   9: G <= GL(2b,4)  10: G <= GL(3,5)  11: G <= GL(5,5)  12: G <= GL(3a,9)  13: G <= GL(3b,9)  14: G <= GL(4,Z)  15: G <= GL(5,Z)  16: G <= GL(6,Z)  17: G <= GL(3a,Field([Sqrt(5)]))  18: G <= GL(3b,Field([Sqrt(5)]))   Programs for G = A5: (all refer to std. generators 1) -------------------- presentation std. gen. checker maxes (all 3):  1: A4  2: D10  3: S3  In order to fetch one of the listed permutation groups or matrix groups, you can call AtlasGroup (3.5-7) with second argument the function Position (Reference: Position) and third argument the position in the list.  Example  gap> AtlasGroup( "A5", Position, 1 ); Group([ (1,2)(3,4), (1,3,5) ])  Note that this approach may yield a different group after an update of the database, if new data for the group become available. Alternatively, you can describe the desired group by conditions, such as the degree in the case of a permutation group, and the dimension and the base ring in the case of a matrix group.  Example  gap> AtlasGroup( "A5", NrMovedPoints, 10 ); Group([ (2,4)(3,5)(6,8)(7,10), (1,2,3)(4,6,7)(5,8,9) ]) gap> AtlasGroup( "A5", Dimension, 4, Ring, GF(2) );   The same holds for the restriction to maximal subgroups: Use AtlasSubgroup (3.5-8) with the same arguments as AtlasGroup (3.5-7), except that additionally the number of the class of maximal subgroups is entered as the last argument. Note that the conditions refer to the group, not to the subgroup; it may happen that the subgroup moves fewer points than the big group.  Example  gap> AtlasSubgroup( "A5", Dimension, 4, Ring, GF(2), 1 );  gap> g:= AtlasSubgroup( "A5", NrMovedPoints, 10, 3 ); Group([ (2,4)(3,5)(6,8)(7,10), (1,4)(3,8)(5,7)(6,10) ]) gap> Size( g ); NrMovedPoints( g ); 6 9  2.3 Basic Concepts used in AtlasRep 2.3-1 Groups, Generators, and Representations Up to now, we have talked only about groups and subgroups. The AtlasRep package provides access to group generators, and in fact these generators have the property that mapping one set of generators to another set of generators for the same group defines an isomorphism. These generators are called standard generators, see Section 3.3. So instead of thinking about several generating sets of a group G, say, we can think about one abstract group G, with one fixed set of generators, and mapping these generators to any set of generators provided by AtlasRep defines a representation of G. This viewpoint motivates the name ATLAS of Group Representations for the database. If you are interested in the generators provided by the database rather than in the groups they generate, you can use the function OneAtlasGeneratingSetInfo (3.5-5) instead of AtlasGroup (3.5-7), with the same arguments. This will yield a record that describes the representation in question. Calling the function AtlasGenerators (3.5-2) with this record will then yield a record with the additional component generators, which holds the list of generators.  Example  gap> info:= OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, 10 ); rec( groupname := "A5", id := "",   identifier := [ "A5", [ "A5G1-p10B0.m1", "A5G1-p10B0.m2" ], 1, 10 ],  isPrimitive := true, maxnr := 3, p := 10, rankAction := 3,   repname := "A5G1-p10B0", repnr := 3, size := 60, stabilizer := "S3",  standardization := 1, transitivity := 1, type := "perm" ) gap> info2:= AtlasGenerators( info ); rec( generators := [ (2,4)(3,5)(6,8)(7,10), (1,2,3)(4,6,7)(5,8,9) ],   groupname := "A5", id := "",   identifier := [ "A5", [ "A5G1-p10B0.m1", "A5G1-p10B0.m2" ], 1, 10 ],  isPrimitive := true, maxnr := 3, p := 10, rankAction := 3,   repname := "A5G1-p10B0", repnr := 3, size := 60, stabilizer := "S3",  standardization := 1, transitivity := 1, type := "perm" ) gap> info2.generators; [ (2,4)(3,5)(6,8)(7,10), (1,2,3)(4,6,7)(5,8,9) ]  2.3-2 Straight Line Programs For computing certain group elements from standard generators, such as generators of a subgroup or class representatives, AtlasRep uses straight line programs, see 'Reference: Straight Line Programs'. Essentially this means to evaluate words in the generators, similar to MappedWord (Reference: MappedWord) but more efficiently. It can be useful to deal with these straight line programs, see AtlasProgram (3.5-3). For example, an automorphism α, say, of the group G, if available in AtlasRep, is given by a straight line program that defines the images of standard generators of G. This way, one can for example compute the image of a subgroup U of G under α by first applying the straight line program for α to standard generators of G, and then applying the straight line program for the restriction from G to U.  Example  gap> prginfo:= AtlasProgramInfo( "A5", "maxes", 1 ); rec( groupname := "A5", identifier := [ "A5", "A5G1-max1W1", 1 ],   size := 12, standardization := 1, subgroupname := "A4" ) gap> prg:= AtlasProgram( prginfo.identifier ); rec( groupname := "A5", identifier := [ "A5", "A5G1-max1W1", 1 ],   program := , size := 12,   standardization := 1, subgroupname := "A4" ) gap> Display( prg.program ); # input: r:= [ g1, g2 ]; # program: r[3]:= r[1]*r[2]; r[4]:= r[2]*r[1]; r[5]:= r[3]*r[3]; r[1]:= r[5]*r[4]; # return values: [ r[1], r[2] ] gap> ResultOfStraightLineProgram( prg.program, info2.generators ); [ (1,10)(2,3)(4,9)(7,8), (1,2,3)(4,6,7)(5,8,9) ]  2.4 Examples of Using the AtlasRep Package 2.4-1 Example: Class Representatives First we show the computation of class representatives of the Mathieu group M_11, in a 2-modular matrix representation. We start with the ordinary and Brauer character tables of this group.  Example  gap> tbl:= CharacterTable( "M11" );; gap> modtbl:= tbl mod 2;; gap> CharacterDegrees( modtbl ); [ [ 1, 1 ], [ 10, 1 ], [ 16, 2 ], [ 44, 1 ] ]  The output of CharacterDegrees (Reference: CharacterDegrees) means that the 2-modular irreducibles of M_11 have degrees 1, 10, 16, 16, and 44. Using DisplayAtlasInfo (3.5-1), we find out that matrix generators for the irreducible 10-dimensional representation are available in the database.  Example  gap> DisplayAtlasInfo( "M11", Characteristic, 2 ); Representations for G = M11: (all refer to std. generators 1) ----------------------------  6: G <= GL(10,2) character 10a  7: G <= GL(32,2) character 16ab  8: G <= GL(44,2) character 44a 16: G <= GL(16a,4) character 16a 17: G <= GL(16b,4) character 16b  So we decide to work with this representation. We fetch the generators and compute the list of class representatives of M_11 in the representation. The ordering of class representatives is the same as that in the character table of the ATLAS of Finite Groups ([CCNPW85]), which coincides with the ordering of columns in the GAP table we have fetched above.  Example  gap> info:= OneAtlasGeneratingSetInfo( "M11", Characteristic, 2, >  Dimension, 10 );; gap> gens:= AtlasGenerators( info.identifier );; gap> ccls:= AtlasProgram( "M11", gens.standardization, "classes" ); rec( groupname := "M11", identifier := [ "M11", "M11G1-cclsW1", 1 ],   outputs := [ "1A", "2A", "3A", "4A", "5A", "6A", "8A", "8B", "11A",   "11B" ], program := ,   standardization := 1 ) gap> reps:= ResultOfStraightLineProgram( ccls.program, gens.generators );;  If we would need only a few class representatives, we could use the GAP library function RestrictOutputsOfSLP (Reference: RestrictOutputsOfSLP) to create a straight line program that computes only specified outputs. Here is an example where only the class representatives of order eight are computed.  Example  gap> ord8prg:= RestrictOutputsOfSLP( ccls.program, >  Filtered( [ 1 .. 10 ], i -> ccls.outputs[i][1] = '8' ) );  gap> ord8reps:= ResultOfStraightLineProgram( ord8prg, gens.generators );; gap> List( ord8reps, m -> Position( reps, m ) ); [ 7, 8 ]  Let us check that the class representatives have the right orders.  Example  gap> List( reps, Order ) = OrdersClassRepresentatives( tbl ); true  From the class representatives, we can compute the Brauer character we had started with. This Brauer character is defined on all classes of the 2-modular table. So we first pick only those representatives, using the GAP function GetFusionMap (Reference: GetFusionMap); in this situation, it returns the class fusion from the Brauer table into the ordinary table.  Example  gap> fus:= GetFusionMap( modtbl, tbl ); [ 1, 3, 5, 9, 10 ] gap> modreps:= reps{ fus };;  Then we call the GAP function BrauerCharacterValue (Reference: BrauerCharacterValue), which computes the Brauer character value from the matrix given.  Example  gap> char:= List( modreps, BrauerCharacterValue ); [ 10, 1, 0, -1, -1 ] gap> Position( Irr( modtbl ), char ); 2  2.4-2 Example: Permutation and Matrix Representations The second example shows the computation of a permutation representation from a matrix representation. We work with the 10-dimensional representation used above, and consider the action on the 2^10 vectors of the underlying row space.  Example  gap> grp:= Group( gens.generators );; gap> v:= GF(2)^10;; gap> orbs:= Orbits( grp, AsList( v ) );; gap> List( orbs, Length ); [ 1, 396, 55, 330, 66, 165, 11 ]  We see that there are six nontrivial orbits, and we can compute the permutation actions on these orbits directly using Action (Reference: Action homomorphisms). However, for larger examples, one cannot write down all orbits on the row space, so one has to use another strategy if one is interested in a particular orbit. Let us assume that we are interested in the orbit of length 11. The point stabilizer is the first maximal subgroup of M_11, thus the restriction of the representation to this subgroup has a nontrivial fixed point space. This restriction can be computed using the AtlasRep package.  Example  gap> gens:= AtlasGenerators( "M11", 6, 1 );;  Now computing the fixed point space is standard linear algebra.  Example  gap> id:= IdentityMat( 10, GF(2) );; gap> sub1:= Subspace( v, NullspaceMat( gens.generators[1] - id ) );; gap> sub2:= Subspace( v, NullspaceMat( gens.generators[2] - id ) );; gap> fix:= Intersection( sub1, sub2 );   The final step is of course the computation of the permutation action on the orbit.  Example  gap> orb:= Orbit( grp, Basis( fix )[1] );; gap> act:= Action( grp, orb );; Print( act, "\n" ); Group( [ ( 1, 2)( 4, 6)( 5, 8)( 7,10), ( 1, 3, 5, 9)( 2, 4, 7,11) ] )  Note that this group is not equal to the group obtained by fetching the permutation representation from the database. This is due to a different numbering of the points, so the groups are permutation isomorphic.  Example  gap> permgrp:= Group( AtlasGenerators( "M11", 1 ).generators );; gap> Print( permgrp, "\n" ); Group( [ ( 2,10)( 4,11)( 5, 7)( 8, 9), ( 1, 4, 3, 8)( 2, 5, 6, 9) ] ) gap> permgrp = act; false gap> IsConjugate( SymmetricGroup(11), permgrp, act ); true  2.4-3 Example: Outer Automorphisms The straight line programs for applying outer automorphisms to standard generators can of course be used to define the automorphisms themselves as GAP mappings.  Example  gap> DisplayAtlasInfo( "G2(3)", IsStraightLineProgram ); Programs for G = G2(3): (all refer to std. generators 1) ----------------------- class repres. presentation repr. cyc. subg. std. gen. checker automorphisms:  2 maxes (all 10):  1: U3(3).2  2: U3(3).2  3: (3^(1+2)+x3^2):2S4  4: (3^(1+2)+x3^2):2S4  5: L3(3).2  6: L3(3).2  7: L2(8).3  8: 2^3.L3(2)  9: L2(13)  10: 2^(1+4)+:3^2.2 gap> prog:= AtlasProgram( "G2(3)", "automorphism", "2" ).program;; gap> info:= OneAtlasGeneratingSetInfo( "G2(3)", Dimension, 7 );; gap> gens:= AtlasGenerators( info ).generators;; gap> imgs:= ResultOfStraightLineProgram( prog, gens );;  If we are not suspicious whether the script really describes an automorphism then we should tell this to GAP, in order to avoid the expensive checks of the properties of being a homomorphism and bijective (see Section 'Reference: Creating Group Homomorphisms'). This looks as follows.  Example  gap> g:= Group( gens );; gap> aut:= GroupHomomorphismByImagesNC( g, g, gens, imgs );; gap> SetIsBijective( aut, true );  If we are suspicious whether the script describes an automorphism then we might have the idea to check it with GAP, as follows.  Example  gap> aut:= GroupHomomorphismByImages( g, g, gens, imgs );; gap> IsBijective( aut ); true  (Note that even for a comparatively small group such as G_2(3), this was a difficult task for GAP before version 4.3.) Often one can form images under an automorphism α, say, without creating the homomorphism object. This is obvious for the standard generators of the group G themselves, but also for generators of a maximal subgroup M computed from standard generators of G, provided that the straight line programs in question refer to the same standard generators. Note that the generators of M are given by evaluating words in terms of standard generators of G, and their images under α can be obtained by evaluating the same words at the images under α of the standard generators of G.  Example  gap> max1:= AtlasProgram( "G2(3)", 1 ).program;; gap> mgens:= ResultOfStraightLineProgram( max1, gens );; gap> comp:= CompositionOfStraightLinePrograms( max1, prog );; gap> mimgs:= ResultOfStraightLineProgram( comp, gens );;  The list mgens is the list of generators of the first maximal subgroup of G_2(3), mimgs is the list of images under the automorphism given by the straight line program prog. Note that applying the program returned by CompositionOfStraightLinePrograms (Reference: CompositionOfStraightLinePrograms) means to apply first prog and then max1. Since we have already constructed the GAP object representing the automorphism, we can check whether the results are equal.  Example  gap> mimgs = List( mgens, x -> x^aut ); true  However, it should be emphasized that using aut requires a huge machinery of computations behind the scenes, whereas applying the straight line programs prog and max1 involves only elementary operations with the generators. The latter is feasible also for larger groups, for which constructing the GAP automorphism might be too hard. 2.4-4 Example: Using Semi-presentations and Black Box Programs Let us suppose that we want to restrict a representation of the Mathieu group M_12 to a non-maximal subgroup of the type L_2(11). The idea is that this subgroup can be found as a maximal subgroup of a maximal subgroup of the type M_11, which is itself maximal in M_12. For that, we fetch a representation of M_12 and use a straight line program for restricting it to the first maximal subgroup, which has the type M_11.  Example  gap> info:= OneAtlasGeneratingSetInfo( "M12", NrMovedPoints, 12 ); rec( charactername := "1a+11a", groupname := "M12", id := "a",   identifier := [ "M12", [ "M12G1-p12aB0.m1", "M12G1-p12aB0.m2" ], 1,   12 ], isPrimitive := true, maxnr := 1, p := 12, rankAction := 2,  repname := "M12G1-p12aB0", repnr := 1, size := 95040,   stabilizer := "M11", standardization := 1, transitivity := 5,   type := "perm" ) gap> gensM12:= AtlasGenerators( info.identifier );; gap> restM11:= AtlasProgram( "M12", "maxes", 1 );; gap> gensM11:= ResultOfStraightLineProgram( restM11.program, >  gensM12.generators ); [ (3,9)(4,12)(5,10)(6,8), (1,4,11,5)(2,10,8,3) ]  Now we cannot simply apply a straight line program for a group to some generators, since they are not necessarily standard generators of the group. We check this property using a semi-presentation for M_11, see 6.1-7.  Example  gap> checkM11:= AtlasProgram( "M11", "check" ); rec( groupname := "M11", identifier := [ "M11", "M11G1-check1", 1, 1 ]  , program := , standardization := 1 ) gap> ResultOfStraightLineDecision( checkM11.program, gensM11 ); true  So we are lucky that applying the appropriate program for M_11 will give us the required generators for L_2(11).  Example  gap> restL211:= AtlasProgram( "M11", "maxes", 2 );; gap> gensL211:= ResultOfStraightLineProgram( restL211.program, gensM11 ); [ (3,9)(4,12)(5,10)(6,8), (1,11,9)(2,12,8)(3,6,10) ] gap> G:= Group( gensL211 );; Size( G ); IsSimple( G ); 660 true  Usually representations are not given in terms of standard generators. For example, let us take the M_11 type group returned by the GAP function MathieuGroup (Reference: MathieuGroup).  Example  gap> G:= MathieuGroup( 11 );; gap> gens:= GeneratorsOfGroup( G ); [ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6) ] gap> ResultOfStraightLineDecision( checkM11.program, gens ); false  If we want to compute an L_2(11) type subgroup of this group, we can use a black box program for computing standard generators, and then apply the straight line program for computing the restriction.  Example  gap> find:= AtlasProgram( "M11", "find" ); rec( groupname := "M11", identifier := [ "M11", "M11G1-find1", 1, 1 ],  program := , standardization := 1 ) gap> stdgens:= ResultOfBBoxProgram( find.program, Group( gens ) );; gap> List( stdgens, Order ); [ 2, 4 ] gap> ResultOfStraightLineDecision( checkM11.program, stdgens ); true gap> gensL211:= ResultOfStraightLineProgram( restL211.program, stdgens );; gap> List( gensL211, Order ); [ 2, 3 ] gap> G:= Group( gensL211 );; Size( G ); IsSimple( G ); 660 true  2.4-5 Example: Using the GAP Library of Tables of Marks The GAP Library of Tables of Marks (the GAP package TomLib, [NMP13]) provides, for many almost simple groups, information for constructing representatives of all conjugacy classes of subgroups. If this information is compatible with the standard generators of the ATLAS of Group Representations then we can use it to restrict any representation from the ATLAS to prescribed subgroups. This is useful in particular for those subgroups for which the ATLAS of Group Representations itself does not contain a straight line program.  Example  gap> tom:= TableOfMarks( "A5" ); TableOfMarks( "A5" ) gap> info:= StandardGeneratorsInfo( tom ); [ rec( ATLAS := true, description := "|a|=2, |b|=3, |ab|=5",   generators := "a, b",   script := [ [ 1, 2 ], [ 2, 3 ], [ 1, 1, 2, 1, 5 ] ],   standardization := 1 ) ]  The true value of the component ATLAS indicates that the information stored on tom refers to the standard generators of type 1 in the ATLAS of Group Representations. We want to restrict a 4-dimensional integral representation of A_5 to a Sylow 2 subgroup of A_5, and use RepresentativeTomByGeneratorsNC (Reference: RepresentativeTomByGeneratorsNC) for that.  Example  gap> info:= OneAtlasGeneratingSetInfo( "A5", Ring, Integers, Dimension, 4 );; gap> stdgens:= AtlasGenerators( info.identifier ); rec( dim := 4,   generators :=   [   [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ],   [ -1, -1, -1, -1 ] ],   [ [ 0, 1, 0, 0 ], [ 0, 0, 0, 1 ], [ 0, 0, 1, 0 ],   [ 1, 0, 0, 0 ] ] ], groupname := "A5", id := "",   identifier := [ "A5", "A5G1-Zr4B0.g", 1, 4 ],   repname := "A5G1-Zr4B0", repnr := 14, ring := Integers, size := 60,   standardization := 1, type := "matint" ) gap> orders:= OrdersTom( tom ); [ 1, 2, 3, 4, 5, 6, 10, 12, 60 ] gap> pos:= Position( orders, 4 ); 4 gap> sub:= RepresentativeTomByGeneratorsNC( tom, pos, stdgens.generators );  gap> GeneratorsOfGroup( sub ); [ [ [ 1, 0, 0, 0 ], [ -1, -1, -1, -1 ], [ 0, 0, 0, 1 ],   [ 0, 0, 1, 0 ] ],   [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ],   [ -1, -1, -1, -1 ] ] ]  2.4-6 Example: Index 770 Subgroups in M_22 The sporadic simple Mathieu group M_22 contains a unique class of subgroups of index 770 (and order 576). This can be seen for example using GAP's Library of Tables of Marks.  Example  gap> tom:= TableOfMarks( "M22" ); TableOfMarks( "M22" ) gap> subord:= Size( UnderlyingGroup( tom ) ) / 770; 576 gap> ord:= OrdersTom( tom );; gap> tomstabs:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = subord ); [ 144 ]  The permutation representation of M_22 on the right cosets of such a subgroup S is contained in the ATLAS of Group Representations.  Example  gap> DisplayAtlasInfo( "M22", NrMovedPoints, 770 ); Representations for G = M22: (all refer to std. generators 1) ---------------------------- 12: G <= Sym(770) rank 9, on cosets of (A4xA4):4 < 2^4:A6  We now verify the information shown about the point stabilizer and about the maximal overgroups of S in M_22.  Example  gap> maxtom:= MaximalSubgroupsTom( tom ); [ [ 155, 154, 153, 152, 151, 150, 146, 145 ],   [ 22, 77, 176, 176, 231, 330, 616, 672 ] ] gap> List( tomstabs, i -> List( maxtom[1], j -> ContainedTom( tom, i, j ) ) ); [ [ 0, 10, 0, 0, 0, 0, 0, 0 ] ]  We see that the only maximal subgroups of M_22 that contain S have index 77 in M_22. According to the ATLAS of Finite Groups, these maximal subgroups have the structure 2^4:A_6. From that and from the structure of A_6, we conclude that S has the structure 2^4:(3^2:4). Alternatively, we look at the permutation representation of degree 770. We fetch it from the ATLAS of Group Representations. There is exactly one nontrivial block system for this representation, with 77 blocks of length 10.  Example  gap> g:= AtlasGroup( "M22", NrMovedPoints, 770 );  gap> allbl:= AllBlocks( g );; gap> List( allbl, Length ); [ 10 ]  Furthermore, GAP computes that the point stabilizer S has the structure (A_4 × A_4):4.  Example  gap> stab:= Stabilizer( g, 1 );; gap> StructureDescription( stab ); "(A4 x A4) : C4" gap> blocks:= Orbit( g, allbl[1], OnSets );; gap> act:= Action( g, blocks, OnSets );; gap> StructureDescription( Stabilizer( act, 1 ) ); "(C2 x C2 x C2 x C2) : A6"  2.4-7 Example: Index 462 Subgroups in M_22 The ATLAS of Group Representations contains three degree 462 permutation representations of the group M_22.  Example  gap> DisplayAtlasInfo( "M22", NrMovedPoints, 462 ); Representations for G = M22: (all refer to std. generators 1) ---------------------------- 7: G <= Sym(462a) rank 5, on cosets of 2^4:A5 < 2^4:A6 8: G <= Sym(462b) rank 8, on cosets of 2^4:A5 < L3(4), 2^4:S5 9: G <= Sym(462c) rank 8, on cosets of 2^4:A5 < L3(4), 2^4:A6  The point stabilizers in these three representations have the structure 2^4:A_5. Using GAP's Library of Tables of Marks, we can show that these stabilizers are exactly the three classes of subgroups of order 960 in M_22. For that, we first verify that the group generators stored in GAP's table of marks coincide with the standard generators used by the ATLAS of Group Representations.  Example  gap> tom:= TableOfMarks( "M22" ); TableOfMarks( "M22" ) gap> genstom:= GeneratorsOfGroup( UnderlyingGroup( tom ) );; gap> checkM22:= AtlasProgram( "M22", "check" ); rec( groupname := "M22", identifier := [ "M22", "M22G1-check1", 1, 1 ]  , program := , standardization := 1 ) gap> ResultOfStraightLineDecision( checkM22.program, genstom ); true  There are indeed three classes of subgroups of order 960 in M_22.  Example  gap> ord:= OrdersTom( tom );; gap> tomstabs:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = 960 ); [ 147, 148, 149 ]  Now we compute representatives of these three classes in the three representations 462a, 462b, and 462c. We see that each of the three classes occurs as a point stabilizer in exactly one of the three representations.  Example  gap> atlasreps:= AllAtlasGeneratingSetInfos( "M22", NrMovedPoints, 462 ); [ rec( charactername := "1a+21a+55a+154a+231a", groupname := "M22",   id := "a",   identifier :=   [ "M22", [ "M22G1-p462aB0.m1", "M22G1-p462aB0.m2" ], 1, 462 ],  isPrimitive := false, p := 462, rankAction := 5,   repname := "M22G1-p462aB0", repnr := 7, size := 443520,   stabilizer := "2^4:A5 < 2^4:A6", standardization := 1,   transitivity := 1, type := "perm" ),   rec( charactername := "1a+21a^2+55a+154a+210a", groupname := "M22",   id := "b",   identifier :=   [ "M22", [ "M22G1-p462bB0.m1", "M22G1-p462bB0.m2" ], 1, 462 ],  isPrimitive := false, p := 462, rankAction := 8,   repname := "M22G1-p462bB0", repnr := 8, size := 443520,   stabilizer := "2^4:A5 < L3(4), 2^4:S5", standardization := 1,   transitivity := 1, type := "perm" ),   rec( charactername := "1a+21a^2+55a+154a+210a", groupname := "M22",   id := "c",   identifier :=   [ "M22", [ "M22G1-p462cB0.m1", "M22G1-p462cB0.m2" ], 1, 462 ],  isPrimitive := false, p := 462, rankAction := 8,   repname := "M22G1-p462cB0", repnr := 9, size := 443520,   stabilizer := "2^4:A5 < L3(4), 2^4:A6", standardization := 1,   transitivity := 1, type := "perm" ) ] gap> atlasreps:= List( atlasreps, AtlasGroup );; gap> tomstabreps:= List( atlasreps, G -> List( tomstabs, > i -> RepresentativeTomByGenerators( tom, i, GeneratorsOfGroup( G ) ) ) );; gap> List( tomstabreps, x -> List( x, NrMovedPoints ) ); [ [ 462, 462, 461 ], [ 460, 462, 462 ], [ 462, 461, 462 ] ]  More precisely, we see that the point stabilizers in the three representations 462a, 462b, 462c lie in the subgroup classes 149, 147, 148, respectively, of the table of marks. The point stabilizers in the representations 462b and 462c are isomorphic, but not isomorphic with the point stabilizer in 462a.  Example  gap> stabs:= List( atlasreps, G -> Stabilizer( G, 1 ) );; gap> List( stabs, IdGroup ); [ [ 960, 11358 ], [ 960, 11357 ], [ 960, 11357 ] ] gap> List( stabs, PerfectIdentification ); [ [ 960, 2 ], [ 960, 1 ], [ 960, 1 ] ]  The three representations are imprimitive. The containment of the point stabilizers in maximal subgroups of M_22 can be computed using the table of marks of M_22.  Example  gap> maxtom:= MaximalSubgroupsTom( tom ); [ [ 155, 154, 153, 152, 151, 150, 146, 145 ],   [ 22, 77, 176, 176, 231, 330, 616, 672 ] ] gap> List( tomstabs, i -> List( maxtom[1], j -> ContainedTom( tom, i, j ) ) ); [ [ 21, 0, 0, 0, 1, 0, 0, 0 ], [ 21, 6, 0, 0, 0, 0, 0, 0 ],   [ 0, 6, 0, 0, 0, 0, 0, 0 ] ]  We see:  The point stabilizers in 462a (subgroups in the class 149 of the table of marks) are contained only in maximal subgroups in class 154; these groups have the structure 2^4:A_6.  The point stabilizers in 462b (subgroups in the class 147) are contained in maximal subgroups in the classes 155 and 151; these groups have the structures L_3(4) and 2^4:S_5, respectively.  The point stabilizers in 462c (subgroups in the class 148) are contained in maximal subgroups in the classes 155 and 154. We identify the supergroups of the point stabilizers by computing the block systems.  Example  gap> bl:= List( atlasreps, AllBlocks );; gap> List( bl, Length ); [ 1, 3, 2 ] gap> List( bl, l -> List( l, Length ) ); [ [ 6 ], [ 21, 21, 2 ], [ 21, 6 ] ]  Note that the two block systems with blocks of length 21 for 462b belong to the same supergroups (of the type L_3(4)); each of these subgroups fixes two different subsets of 21 points. The representation 462a is multiplicity-free, that is, it splits into a sum of pairwise nonisomorphic irreducible representations. This can be seen from the fact that the rank of this permutation representation (that is, the number of orbits of the point stabilizer) is five; each permutation representation with this property is multiplicity-free. The other two representations have rank eight. We have seen the ranks in the overview that was shown by DisplayAtlasInfo (3.5-1) in the beginning. Now we compute the ranks from the permutation groups.  Example  gap> List( atlasreps, RankAction ); [ 5, 8, 8 ]  In fact the two representations 462b and 462c have the same permutation character. We check this by computing the possible permutation characters of degree 462 for M_22, and decomposing them into irreducible characters, using the character table from GAP's Character Table Library.  Example  gap> t:= CharacterTable( "M22" );; gap> perms:= PermChars( t, 462 ); [ Character( CharacterTable( "M22" ),  [ 462, 30, 3, 2, 2, 2, 3, 0, 0, 0, 0, 0 ] ),   Character( CharacterTable( "M22" ),  [ 462, 30, 12, 2, 2, 2, 0, 0, 0, 0, 0, 0 ] ) ] gap> MatScalarProducts( t, Irr( t ), perms ); [ [ 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 ],   [ 1, 2, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 ] ]  In particular, we see that the rank eight characters are not multiplicity-free. atlasrep/doc/chap1.txt0000644000175000017500000007325612701177205013334 0ustar samsam 1 Introduction to the AtlasRep Package The aim of the GAP 4 package AtlasRep is to provide a link between GAP and the ATLAS of Group Representations [ATLAS], a database that comprises generating permutations and matrices for many almost simple groups, and information about their maximal subgroups. This database is available independent of GAP at http://brauer.maths.qmul.ac.uk/Atlas The AtlasRep package consists of this database (see Section 1.1) and a GAP interface (see Section 1.2); the latter is extended by further information available via the internet (see Section 4.4). This package manual has the following parts. A tutorial gives an overview how the functions of the package can be used, see Chapter 2. User interface functions are described in Chapter 3. Customizations of the package are described in Chapter 4. Information how to extend the database can be found in Chapter 5. More technical information can be found in the chapters 6 (concerning GAP objects that are introduced by the package) and 7 (concerning global variables and sanity checks). 1.1 The ATLAS of Group Representations The ATLAS of Group Representations consists of matrices over various rings, permutations, and shell scripts encoding so-called black box programs (see [Nic06] and Section 6.2). Many of these scripts are straight line programs (see [BSWW01], [SWW00], and 'Reference: Straight Line Programs') and straight line decisions (see Section 6.1). These programs can be used to compute certain elements in a group G from its standard generators (see [Wil96] and Section 3.3) for example generators of maximal subgroups of G or representatives of conjugacy classes of G. The ATLAS of Group Representations has been prepared by Robert Wilson, Peter Walsh, Jonathan Tripp, Ibrahim Suleiman, Richard Parker, Simon Norton, Simon Nickerson, Steve Linton, John Bray, and Rachel Abbott (in reverse alphabetical order). The information was computed and composed using computer algebra systems such as MeatAxe (see [Rin]), Magma (see [CP96]), and GAP (in reverse alphabetical order). Part of the constructions have been documented in the literature on almost simple groups, or the results have been used in such publications, see for example the references in [CCNPW85] and [BN95]. If you use the ATLAS of Group Representations to solve a problem then please send a short email to mailto:R.A.Wilson@qmul.ac.uk about it. The ATLAS of Group Representations database should be referenced with the entry [ATLAS] in the bibliography of this manual. If your work made use of functions of the GAP interface (see Section 1.2) then you should also reference this interface, as follows.  @misc{ AtlasRep1.5.1,  author = {Wilson, R. A. and Parker, R. A. and Nickerson, S. and  Bray, J. N. and Breuer, T.},  title = {{AtlasRep}, A \textsf{GAP} Interface to the Atlas of  Group Representations,  {V}ersion 1.5.1},  month = {March},  year = {2016},  note = {\textsf{GAP} package},  howpublished = {http://www.math.rwth-aachen.de/\~{}Thomas.Breuer/atlasrep} }  For referencing the GAP system in general, use the entry [GAP] in the bibliography of this manual, see also http://www.gap-system.org. 1.2 The GAP Interface to the ATLAS of Group Representations The GAP interface to the ATLAS of Group Representations consists of essentially two parts.  First, there is the user interface which allows the user to get an overview of the contents of the database, and to access the data in GAP format; this is described in Chapter 3. Advanced users may add their own data to the database, this is described in Chapter 5.  Second, there is administrational information, which covers also the declaration of GAP objects such as straight line decisions and black box programs. This is important mainly for users interested in the actual implementation (e. g., for modifying the package) or in using it together with the C-MeatAxe standalone (see [Rin]); this is described in Chapter 7. Information concerning the C-MeatAxe, including the manual [Rin], can be found at http://www.math.rwth-aachen.de/LDFM/homes/MTX The interface and this manual have been provided by Thomas Breuer, except for the interpreter for black box programs (see Section 6.2), which is due to Simon Nickerson. Comments, bug reports, and hints for improving the interface can be sent to mailto:sam@math.rwth-aachen.de. 1.3 What's New in AtlasRep, Compared to Older Versions? 1.3-1 What's New in Version 1.5.1? (March 2016)  The paths of the directories where downloaded data files get stored are now customizable, see Section 4.3-9. Up to now, the data were stored in subdirectories of the package directory, which might cause problems with write permissions, depending on the installation of the package. (Note that choosing other data directories can be useful also in order to keep existing local data files when a new version of GAP or of the AtlasRep package gets installed.) Thanks to Bill Allombert for pointing out this problem.  The information about data files from the ATLAS of Group Representations has been extended by CrcFile (Reference: CrcFile) values. These values are checked whenever data from such a file are read, and an error is signalled if the checksum does not fit to the expected one. Note that several users may access the same data files, and a user should not suffer from perhaps corrupted files that have been downloaded by other users. Thanks to Frank Lübeck for the idea to introduce this consistency test.  Whenever StringFile (GAPDoc: StringFile) is called by functions of the package, this happens in the wrapper function AGR.StringFile, in order to replace occasional line breaks of the form "\r\n" by "\n". Apparently it may happen that the "\r" is silently smuggled in when data files get copied to the local computer. Thanks to Marek Mitros for help with detecting and fixing this problem.  The function FFMatOrPermCMtxBinary (7.3-5) can now read also permutations stored in binary files that have been created with version 2.4 of the C-MeatAxe; note that this format is different from the one that is written by version 2.3. Conversely, CMtxBinaryFFMatOrPerm (7.3-4) has been generalized such that both formats can be written. The reference to the C-MeatAxe documentation now points to that of version 2.4. Thanks to Jürgen Müller for pointing out this problem.  The function MeatAxeString (7.3-2) can now encode permutation matrices in different ways. The mode (the first header entry) can be either 2 (then the positions of the nonzero entries are listed) or 1 or 6 (then all entries of the matrix are listed). In previous versions, the function produced a matrix of mode 2 whenever this was possible, but this behaviour is not useful if the result is not processed by the C-MeatAxe. Thanks to Klaus Lux for pointing out this problem.  Depending on the terminal capabilities and the value of AtlasOfGroupRepresentationsInfo.displayFunction, some non-ASCII characters may appear in the output shown by DisplayAtlasInfo (3.5-1). 1.3-2 What's New in Version 1.5? (July 2011)  The function AtlasSubgroup (3.5-8) now admits also the return value of OneAtlasGeneratingSetInfo (3.5-5) or the return value of AtlasGroup (3.5-7) as its first argument. The latter is implemented via the new attribute AtlasRepInfoRecord (3.5-9), which is set in the groups constructed by AtlasGroup (3.5-7).  Information about transitivity, rank, primitivity, and point stabilizers of many permutation representations is now available. If applicable then this information appears in the records returned by OneAtlasGeneratingSetInfo (3.5-5), it is part of the overview shown by DisplayAtlasInfo (3.5-1), and it is shown also in the data overview in the web, see Section 4.4. Two new manual sections about point stabilizers have been added, see the sections 2.4-6 and 2.4-7.  Information about the characters afforded by many matrix and permutation representations is now available. If applicable then this information appears in the records returned by OneAtlasGeneratingSetInfo (3.5-5), for matrix representations it is part of the overview shown by DisplayAtlasInfo (3.5-1), and it is shown also in the data overview in the web, see Section 4.4.  The functions Character (Reference: Character (for a character table and a list)), Identifier (Reference: Identifier (for character tables)), IsPrimitive (Reference: IsPrimitive), IsTransitive (Reference: IsTransitive), Transitivity (Reference: Transitivity), and RankAction (Reference: RankAction) are now supported as input conditions in DisplayAtlasInfo (3.5-1), OneAtlasGeneratingSetInfo (3.5-5), etc..  It is now possible to restrict the data shown by DisplayAtlasInfo (3.5-1) to private or non-private data. Also the data returned by OneAtlasGeneratingSetInfo (3.5-5) can be restricted to private or non-private data.  A tutorial for beginners was added to the manual, see Chapter 2, and the manual was restructured.  In the overview shown by DisplayAtlasInfo (3.5-1) and in the data overview in the web (see Section 4.4), the ordering of groups was improved such that, e.g., "A9" precedes "A10".  The function AtlasClassNames (3.4-2) now admits also a Brauer table as its argument, and works also for character tables of bicyclic extensions of simple groups.  The group names that are entered in DisplayAtlasInfo (3.5-1), OneAtlasGeneratingSetInfo (3.5-5), etc., are now case insensitive, and if the package CTblLib is available then the admissible group names for the GAP character table of the group in question can be used in these functions.  In order to reduce the number of global variables, several functions have been turned into components of the new global variable AGR (7.1-5). A few of these functions had been documented in the previous version, the old values are still available if the package file gap/obsolete.g has been read. This file is read automatically when the package gets loaded if GAPInfo.UserPreferences.ReadObsolete is true, see 'Reference: The gap.ini file'.  A few nicer characters are used by DisplayAtlasInfo (3.5-1) if GAPInfo.TermEncoding has the value "UTF-8" and if AtlasOfGroupRepresentationsInfo.displayFunction is different from Print (Reference: Print), see Section 4.3-5.  A bug in the function ReloadAtlasTableOfContents (4.2-1) was fixed. Thanks to Jack Schmidt for reporting this bug. 1.3-3 What's New in Version 1.4? (June 2008)  In addition to the group orders that were added in version 1.3 (see Section 1.3-5), also many orders of maximal subgroups are now available. These values occur in the records returned by AtlasProgram (3.5-3) (for the case of "maxes" type programs) and of the three argument version of AtlasGenerators (3.5-2); now a size component may be bound. In these cases, the groups returned by AtlasSubgroup (3.5-8) have the Size (Reference: Size) attribute set.  The information about the number of maximal subgroups, if available, is now used in DisplayAtlasInfo (3.5-1).  In many cases, straight line programs for computing generators of maximal subgroups of a group G, say, can in fact be used to compute also generators of maximal subgroups of downward extensions of G; if not then it may suffice to extend the given straight line programs by additional generators. Currently this yields more than 200 new possibilities to compute maximal subgroups, this means a growth by about 25 percent. For example, all maximal subgroups of 12.M_22 and 2.Fi_22 can now be accessed via AtlasGenerators (3.5-2). (Of course this extension means only that one can access the straight line programs in question automatically via the GAP interface. In principle one could have used them already before, by explicitly applying a straight line program for a factor group to generators of a group, and perhaps adding some element in the kernel of the natural epimorphism.) For this feature, information about the compatibility of standard generators of groups and their factor groups was added.  The bibliographies contained in the ATLAS of Finite Groups [CCNPW85] and in the ATLAS of Brauer Characters [JLPW95] are now available, see BrowseBibliographySporadicSimple (3.6-2).  If the GAP package Browse (see [BL14]) is loaded then the new functions BrowseMinimalDegrees (3.6-1) and BrowseBibliographySporadicSimple (3.6-2) are available; these functions can be called also by choosing the corresponding menu entries of the Browse application BrowseGapData (Browse: BrowseGapData).  The function AtlasGroup (3.5-7) now admits also the return value of OneAtlasGeneratingSetInfo (3.5-5) as its argument. 1.3-4 What's New in Version 1.3.1? (October 2007) This version was mainly released in order to fix a few problems. Now one does not get warnings about unbound variables when the package is loaded and the GAP package IO [Neu14] is not available, and pathological situations in FFMatOrPermCMtxBinary (7.3-5) (concerning extremely short corrupted data files and different byte orderings in binary files) are handled more carefully. Besides this, the two functions AtlasGroup (3.5-7) and AtlasSubgroup (3.5-8) were introduced, and the extended function QuaternionAlgebra (Reference: QuaternionAlgebra) of GAP 4.4.10 can now be used for describing base rings in OneAtlasGeneratingSetInfo (3.5-5) and AllAtlasGeneratingSetInfos (3.5-6). (This is the reason why this version of the package requires at least version 4.4.10 of GAP.) 1.3-5 What's New in Version 1.3? (June 2007)  The database was extended, see Section 4.3-4 for the number and size of files.  New data types and corresponding GAP objects have been introduced, for representing semi-presentations, presentations, and programs for finding standard generators. For details, see AtlasProgram (3.5-3), Chapter 6, and Section 7.6.  The records returned by the functions AtlasGenerators (3.5-2), OneAtlasGeneratingSetInfo (3.5-5), and AllAtlasGeneratingSetInfos (3.5-6) now contain the name and (if known) the order of the group in question, and also components describing the degree in the case of permutation representations or the dimension and the base ring of the natural module in the case of matrix representations.  For many of the groups, information about the minimal degree of faithful permutation representations and the minimal dimensions of faithful matrix representations in various characteristics is available for DisplayAtlasInfo (3.5-1), OneAtlasGeneratingSetInfo (3.5-5), and AllAtlasGeneratingSetInfos (3.5-6), see also Section 6.3. For these functions, also properties such as IsPrimeInt (Reference: IsPrimeInt) can be used to describe the intended restriction of the output.  One can now use Pager (Reference: Pager) functionality in DisplayAtlasInfo (3.5-1), see Section 4.3-5. An interactive alternative to DisplayAtlasInfo (3.5-1) is provided by the function BrowseAtlasInfo (Browse: BrowseAtlasInfo) from the new (recommended) GAP package Browse [BL14].  The functions OneAtlasGeneratingSetInfo (3.5-5) and AllAtlasGeneratingSetInfos (3.5-6) now admit also a list of group names as the first argument.  The functions for actually accessing the data are more flexible now, see Section 4.3-6.  For transferring remote data, the GAP package IO [Neu14] can now be used (and is recommended) as an alternative to wget, see Section 4.3-3.  The address of the data server has changed. Since the access to the server is no longer possible via ftp, the mechanim used up to version 1.2, which was based on ftp, had to be rewritten. The main consequence of this change is that information about updates of the table of contents is now provided at the package's homepage. This means that on the one hand, now package users cannot compute the table of contents directly from the server data, but on the other hand the update information can be downloaded without the necessity to install perl. Another consequence is that the system program ls is no longer needed, see Section 1.3-7.  The package manual has been restructured, extended and improved. It is now based on the package GAPDoc [LN12]. 1.3-6 What's New in Version 1.2? (November 2003) Not much. The release of Version 1.2 became necessary first of all in order to provide a package version that is compatible with GAP 4.4, since some cross-references into the GAP Reference Manual were broken due to changes of section names. Additionally, several web addresses concerning the package itself were changed and thus had to be adjusted. This opportunity was used  to upgrade the administrational part for loading the package to the mechanism that is recommended for GAP 4.4,  to extend the test suite, which now covers more consistency checks using the GAP Character Table Library [Bre13],  to make the function ScanMeatAxeFile (7.3-1) more robust, due to the fact that the GAP function PermList (Reference: PermList) now returns fail instead of raising an error,  to change the way how representations with prescribed properties are accessed (the new function OneAtlasGeneratingSetInfo (3.5-5) is now preferred to the former OneAtlasGeneratingSet, and AllAtlasGeneratingSetInfos (3.5-6) has been added in order to provide programmatic access in parallel to the human readable descriptions printed by DisplayAtlasInfo (3.5-1)),  and last but not least to include the current table of contents of the underlying database. For AtlasRep users, the new feature of GAP 4.4 is particularly interesting that due to better kernel support, reading large matrices over finite fields is now faster than it was in GAP 4.3. 1.3-7 What's New in Version 1.1? (October 2002) The biggest change w.r.t. Version 1.1 is the addition of private extensions (see Chapter 5). It includes a new free format for straight line programs (see Section 5.2). Unfortunately, this feature requires the system program ls, so it may be not available for example under MS Windows operating systems. [But see Section 1.3-5.] In order to admit the addition of other types of data, the implementation of several functions has been changed. Data types are described in Section 7.5. An example of a new data type are quaternionic representations (see Section 7.6). The user interface itself (see Chapter 3) remained the same. As an alternative to perl, one can use wget now for transferring data files (see 4.3). Data files can be read much more efficiently in GAP 4.3 than in GAP 4.2. In Version 1.1 of the AtlasRep package, this feature is used for reading matrices and permutations in MeatAxe text format with ScanMeatAxeFile (7.3-1). As a consequence, (at least) GAP 4.3 is required for AtlasRep Version 1.1. The new compress component of the global variable AtlasOfGroupRepresentationsInfo (7.1-6) allows one to store data files automatically in gzipped form. For matrix representations in characteristic zero, invariant forms and generators for the centralizer algebra are now accessible in GAP if they are contained in the source files --this information had been ignored in Version 1.0 (see AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates (4.2-4) for necessary updates). Additional information is now available via the internet (see 4.4). The update facilities have been extended (see 4.2). The manual is now distributed also in pdf and HTML format; on the other hand, the PostScript format manual is no longer contained in the archives. Apart from these changes, a few minor bugs in the handling of MeatAxe files have been fixed, typos in the documentation have been corrected, and the syntax checks for ATLAS straight line programs (see 7.4) have been improved. 1.4 Acknowledgements  Frank Lübeck and Max Neunhöffer kindly provided the perl script that had been used for fetching remote data until version 1.2. Thanks also to Greg Gamble and Alexander Hulpke for technical hints concerning standard perl.  Ulrich Kaiser helped with preparing the package for MS Windows.  Klaus Lux had the idea to support private extensions of the package, see Chapter 5 and helped to fix several bugs.  Frank Lübeck contributed the functions CMtxBinaryFFMatOrPerm (7.3-4) and FFMatOrPermCMtxBinary (7.3-5).  Frank Lübeck and Max Neunhöffer wrote the GAPDoc package [LN12], which is used for processing the documentation of the AtlasRep package and for processing the bibliographies included in this package (see BrowseBibliographySporadicSimple (3.6-2)),  Max Neunhöffer wrote the GAP package IO [Neu14], which is recommended for transferring data.  Max has also suggested the generalization of the data access described in Section 7.2, and the admissibility of the function Character (Reference: Character (for a character table and a list)) as a filter in DisplayAtlasInfo (3.5-1), OneAtlasGeneratingSetInfo (3.5-5), and AllAtlasGeneratingSetInfos (3.5-6).  Gunter Malle suggested to make the information about representations of minimal degree accessible, see Section 6.3.  Andries Brouwer suggested to add a tutorial (see Chapter 2), Klaus Lux suggested several improvements of this chapter. atlasrep/doc/chap0.txt0000644000175000017500000002067012701177205013323 0ustar samsam AtlasRep --- A GAP 4 Package (Version 1.5.1) Robert A. Wilson Richard A. Parker Simon Nickerson John N. Bray Thomas Breuer Robert A. Wilson Email: mailto:R.A.Wilson@qmul.ac.uk Homepage: http://www.maths.qmw.ac.uk/~raw Richard A. Parker Email: mailto:richpark@gmx.co.uk Simon Nickerson Homepage: http://nickerson.org.uk/groups John N. Bray Email: mailto:J.N.Bray@qmul.ac.uk Homepage: http://www.maths.qmw.ac.uk/~jnb Thomas Breuer Email: mailto:sam@Math.RWTH-Aachen.De Homepage: http://www.math.rwth-aachen.de/~Thomas.Breuer ------------------------------------------------------- Copyright © 2002–2016 This package may be distributed under the terms and conditions of the GNU Public License Version 3 or later, see http://www.gnu.org/licenses. ------------------------------------------------------- Contents (AtlasRep) 1 Introduction to the AtlasRep Package 1.1 The ATLAS of Group Representations 1.2 The GAP Interface to the ATLAS of Group Representations 1.3 What's New in AtlasRep, Compared to Older Versions? 1.3-1 What's New in Version 1.5.1? (March 2016) 1.3-2 What's New in Version 1.5? (July 2011) 1.3-3 What's New in Version 1.4? (June 2008) 1.3-4 What's New in Version 1.3.1? (October 2007) 1.3-5 What's New in Version 1.3? (June 2007) 1.3-6 What's New in Version 1.2? (November 2003) 1.3-7 What's New in Version 1.1? (October 2002) 1.4 Acknowledgements 2 Tutorial for the AtlasRep Package 2.1 Accessing a Specific Group in AtlasRep 2.1-1 Accessing a Group in AtlasRep via its Name 2.1-2 Accessing a Maximal Subgroup of a Group in AtlasRep 2.2 Accessing Specific Generators in AtlasRep 2.3 Basic Concepts used in AtlasRep 2.3-1 Groups, Generators, and Representations 2.3-2 Straight Line Programs 2.4 Examples of Using the AtlasRep Package 2.4-1 Example: Class Representatives 2.4-2 Example: Permutation and Matrix Representations 2.4-3 Example: Outer Automorphisms 2.4-4 Example: Using Semi-presentations and Black Box Programs 2.4-5 Example: Using the GAP Library of Tables of Marks 2.4-6 Example: Index 770 Subgroups in M_22 2.4-7 Example: Index 462 Subgroups in M_22 3 The User Interface of the AtlasRep Package 3.1 Accessing vs. Constructing Representations 3.2 Group Names Used in the AtlasRep Package 3.3 Standard Generators Used in the AtlasRep Package 3.4 Class Names Used in the AtlasRep Package 3.4-1 Definition of ATLAS Class Names 3.4-2 AtlasClassNames 3.4-3 AtlasCharacterNames 3.5 Accessing Data of the AtlasRep Package 3.5-1 DisplayAtlasInfo 3.5-2 AtlasGenerators 3.5-3 AtlasProgram 3.5-4 AtlasProgramInfo 3.5-5 OneAtlasGeneratingSetInfo 3.5-6 AllAtlasGeneratingSetInfos 3.5-7 AtlasGroup 3.5-8 AtlasSubgroup 3.5-9 AtlasRepInfoRecord 3.6 Browse Applications Provided by AtlasRep 3.6-1 BrowseMinimalDegrees 3.6-2 BrowseBibliographySporadicSimple 4 Customizations of the AtlasRep Package 4.1 Installing the AtlasRep Package 4.2 Maintaining the Local Data of the AtlasRep Package 4.2-1 ReloadAtlasTableOfContents 4.2-2 StoreAtlasTableOfContents 4.2-3 ReplaceAtlasTableOfContents 4.2-4 AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates 4.3 User Parameters for the AtlasRep Package 4.3-1 Local or Remote Access 4.3-2 Adding and Removing Servers 4.3-3 Accessing Data Files with the GAP Package IO or with wget 4.3-4 Compressed or Uncompressed Data Files 4.3-5 Customizing DisplayAtlasInfo 4.3-6 Customizing the Access to Data Files 4.3-7 Reading Large Matrices over Finite Fields 4.3-8 AtlasOfGroupRepresentationsUserParameters 4.3-9 User preference AtlasRepDataDirectory 4.3-10 User preference WriteMeatAxeFilesOfMode2 4.3-11 User preference BaseOfMeatAxePermutation 4.4 Web Services for the AtlasRep Package 4.5 Extending the ATLAS Database 5 Private Extensions of the AtlasRep Package 5.1 Adding a Private Data Directory 5.1-1 AtlasOfGroupRepresentationsNotifyPrivateDirectory 5.1-2 AtlasOfGroupRepresentationsForgetPrivateDirectory 5.2 The Effect of Private Extensions on the User Interface 5.3 An Example of Extending the AtlasRep Package 6 New GAP Objects and Utility Functions Provided by the AtlasRep Package 6.1 Straight Line Decisions 6.1-1 IsStraightLineDecision 6.1-2 LinesOfStraightLineDecision 6.1-3 NrInputsOfStraightLineDecision 6.1-4 ScanStraightLineDecision 6.1-5 StraightLineDecision 6.1-6 ResultOfStraightLineDecision 6.1-7 Semi-Presentations and Presentations 6.1-8 AsStraightLineDecision 6.1-9 StraightLineProgramFromStraightLineDecision 6.2 Black Box Programs 6.2-1 IsBBoxProgram 6.2-2 ScanBBoxProgram 6.2-3 RunBBoxProgram 6.2-4 ResultOfBBoxProgram 6.2-5 AsBBoxProgram 6.2-6 AsStraightLineProgram 6.3 Representations of Minimal Degree 6.3-1 MinimalRepresentationInfo 6.3-2 MinimalRepresentationInfoData 6.3-3 SetMinimalRepresentationInfo 6.3-4 Criteria Used to Compute Minimality Information 7 Technicalities of the AtlasRep Package 7.1 Global Variables Used by the AtlasRep Package 7.1-1 InfoAtlasRep 7.1-2 InfoCMeatAxe 7.1-3 InfoBBox 7.1-4 CMeatAxe.FastRead 7.1-5 AGR 7.1-6 AtlasOfGroupRepresentationsInfo 7.2 How to Customize the Access to Data files 7.3 Reading and Writing MeatAxe Format Files 7.3-1 ScanMeatAxeFile 7.3-2 MeatAxeString 7.3-3 FFList 7.3-4 CMtxBinaryFFMatOrPerm 7.3-5 FFMatOrPermCMtxBinary 7.4 Reading and Writing ATLAS Straight Line Programs 7.4-1 ScanStraightLineProgram 7.4-2 AtlasStringOfProgram 7.5 Data Types Used in the ATLAS of Group Representations 7.5-1 AGR.DeclareDataType 7.6 Filenames Used in the ATLAS of Group Representations 7.6-1 AGR.ParseFilenameFormat 7.6-2 AGR.FileContents 7.7 The Tables of Contents of the ATLAS of Group Representations 7.8 Sanity Checks for the ATLAS of Group Representations 7.8-1 Sanity Checks for a Table of Contents 7.8-2 Other Sanity Checks  atlasrep/doc/chap5.txt0000644000175000017500000005174112701177205013333 0ustar samsam 5 Private Extensions of the AtlasRep Package It may be interesting to use the functions of the GAP interface also for representations or programs that are not part of the ATLAS of Group Representations. This chapter describes how to achieve this. The main idea is that users can notify directories containing the private data files, which may consist of 1 new faithful representations and programs for groups that are declared already in the official ATLAS of Group Representations, 2 the declaration of groups that are not declared in the official ATLAS of Group Representations, and representations and programs for them, and 3 the definition of new kinds of representations and programs. The first two issues are dealt with in Section 5.1 and Section 5.2. The last is described in Section 7.5. Finally, an example of using private extensions is given in Section 5.3. Several of the sanity checks for the official part of the AtlasRep package make sense also for private extensions, see Section 7.8 for more information. 5.1 Adding a Private Data Directory After the AtlasRep package has been loaded into the GAP session, one can add private data. However, one should not add private files to the local data directories of the package, or modify files in these directories. Instead, additional data should be put into separate directories. It should be noted that a data file is fetched from a server only if the local data directories do not contain a file with this name, independent of the contents of the files. (As a consequence, corrupted files in the local data directories are not automatically replaced by a correct server file.) 5.1-1 AtlasOfGroupRepresentationsNotifyPrivateDirectory AtlasOfGroupRepresentationsNotifyPrivateDirectory( dir[, dirid][, test] )  function Returns: true if none of the filenames with admissible format in the directory dir is contained in other data directories and if the data belongs to groups whose names have been declared, otherwise false. Let dir be a directory (see 'Reference: Directories') or a string denoting the name of a directory (such that the GAP object describing this directory can be obtained by calling Directory (Reference: Directory) with the argument dir). In the following, let dirname be the name of the directory. So dirname can be an absolute path or a path relative to the home directory of the user (starting with a tilde character ~) or a path relative to the directory where GAP was started. If the optional argument dirid is given, it must be a string. This value will be used in the identifier components of the records that are returned by interface functions (see Section 3.5) for data contained in the directory dir. Note that the directory name may be different in different GAP sessions or for different users who want to access the same data, whereas the identifier components shall be independent of such differences. The default for dirid is dirname. If the optional argument test is given, it must be true or false. In the true case, consistency checks are switched on while the file toc.g is read. This costs some extra time, but it is recommended after each extension of the file toc.g. The default for test is false. AtlasOfGroupRepresentationsNotifyPrivateDirectory notifies the data in the directory dir to the AtlasRep package. First the pair [ dirname, dirid ] is added to the private component of AtlasOfGroupRepresentationsInfo (7.1-6). If the directory contains a file with the name toc.g then this file is read; this file is useful for adding new group names using AGR.GNAN and for adding describing data about the representations, see Section 7.7. Next the table of contents of the private directory is built from the list of files contained in the private directory or in its subdirectories (one layer deep). Only those files are considered whose names match an admissible format (see Section 7.6). Filenames that are already contained in another data directory of the AtlasRep package are ignored, and messages about these filenames are printed if the info level of InfoAtlasRep (7.1-1) is at least 1. Note that this implies that the files of the official (i.e. non-private) data directories have priority over files in private directories. If the directory contains files for groups whose names have not been declared before and if the info level of InfoAtlasRep (7.1-1) is at least 1 then a message about these names is printed. For convenience, the user may collect the notifications of private data directories in the file gaprc (see Section 'Reference: The gap.ini and gaprc files'). 5.1-2 AtlasOfGroupRepresentationsForgetPrivateDirectory AtlasOfGroupRepresentationsForgetPrivateDirectory( dirid )  function If dirid is the identifier of a private data directory that has been notified with AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1) then AtlasOfGroupRepresentationsForgetPrivateDirectory removes the directory from the list of notified private directories; this means that from then on, the data in this directory cannot be accessed anymore in the current session. 5.2 The Effect of Private Extensions on the User Interface First suppose that only new groups or new data for known groups are added. In this case, DisplayAtlasInfo (3.5-1) lists the private representations and programs in the same way as the official data, except that private parts are marked with the string stored in the component markprivate of AtlasOfGroupRepresentationsInfo (7.1-6); by default, this is a star *. The ordering of representations listed by DisplayAtlasInfo (3.5-1) (and referred to by AtlasGenerators (3.5-2)) will in general change when private directories are notified. If several private directories are used then the ordering of data may depend on the ordering of notifications. For the other interface functions described in Chapter 3, the only difference is that also the private data can be accessed. In particular the free format groupnameGi-XdescrWn for straight line programs (see Section 7.6) may be used in private directories; the data can be accessed with AtlasProgram (3.5-3), where the last two arguments are the strings "other" and descr. If also private data types are introduced (see Section 7.5) then additional columns or rows can appear in the output of DisplayAtlasInfo (3.5-1), and new inputs can become meaningful for all interface functions. Examples for these changes can be found in Section 5.3. 5.3 An Example of Extending the AtlasRep Package In the beginning we set the info level of InfoAtlasRep (7.1-1) to 1.  Example  gap> level:= InfoLevel( InfoAtlasRep );; gap> SetInfoLevel( InfoAtlasRep, 1 );  Let us assume that the directory privdir contains data for the cyclic group C_4 of order 4 and for the alternating group A_5 on 5 points, respectively. Note that it is obvious what the term standard generators means for the group C_4. Further let us assume that privdir contains the following files. C4G1-p4B0.m1 a faithful permutation representation of C_4 on 4 points, C4G1-max1W1 the straight line program that returns the square of its unique input, C4G1-a2W1 the straight line program that raises its unique input to the third power, C4G1-XtestW1 the straight line program that returns the square of its unique input, A5G1-p60B0.m1 and A5G1-p60B0.m2 the regular permutation representation of A_5. The directory and the files can be created as follows.  Example  gap> prv:= DirectoryTemporary( "privdir" );; gap> FileString( Filename( prv, "C4G1-p4B0.m1" ), >  MeatAxeString( [ (1,2,3,4) ], 4 ) );; gap> FileString( Filename( prv, "C4G1-max1W1" ), >  "inp 1\npwr 2 1 2\noup 1 2\n" );; gap> FileString( Filename( prv, "C4G1-XtestW1" ), >  "inp 1\npwr 2 1 2\noup 1 2\n" );; gap> FileString( Filename( prv, "C4G1-a2W1" ), >  "inp 1\npwr 3 1 2\noup 1 2\n" );; gap> FileString( Filename( prv, "C4G1-Ar1aB0.g" ), >  "return rec( generators:= [ [[E(4)]] ] );\n" );; gap> points:= Elements( AlternatingGroup( 5 ) );; gap> FileString( Filename( prv, "A5G1-p60B0.m1" ), >  MeatAxeString( [ Permutation( (1,2)(3,4), points, OnRight ) ], 60 ) );; gap> FileString( Filename( prv, "A5G1-p60B0.m2" ), >  MeatAxeString( [ Permutation( (1,3,5), points, OnRight ) ], 60 ) );;  (We could also introduce intermediate directories C4 and A5, say, each with the data for one group only. Here we do not show this because creating directories programmatically seems to be possible only with the GAP package IO.) The official part of the AtlasRep package does not contain information about C_4, so we first notify this group, in the file privdir/toc.g. Besides the name of the group, we store the following information: the group order, the number of (classes of) maximal subgroups, their orders, their structures, and describing data about the two permutation representations. (The group A_5 is known with name A5 in the official part of the AtlasRep package, so it cannot be notified again.)  Example  gap> FileString( Filename( prv, "toc.g" ), Concatenation( [ >  "AGR.GNAN(\"C4\",\"C4\");\n", >  "AGR.GRS(\"C4\",4);\n", >  "AGR.MXN(\"C4\",1);\n", >  "AGR.MXO(\"C4\",[2]);\n", >  "AGR.MXS(\"C4\",[\"C2\"]);\n", >  "AGR.API(\"C4G1-p4B0\",[1,4,\"imprim\",\"1 < C2\"]);\n", >  "AGR.API(\"A5G1-p60B0\",[1,60,\"imprim\",\"1 < A4\"]);\n", >  ] ) );;  Then we notify the private directory.  Example  gap> AtlasOfGroupRepresentationsNotifyPrivateDirectory( prv, "priv", true ); true  Now we can use the interface functions for accessing the data in the private directory.  Example  gap> DisplayAtlasInfo( [ "C4" ] ); group | # | maxes | cl | cyc | out | fnd | chk | prs ------+---+-------+----+-----+-----+-----+-----+---- C4* | 2 | 1 | | | 2 | | |  gap> DisplayAtlasInfo( "C4" ); Representations for G = C4: (all refer to std. generators 1) --------------------------- 1: G <= Sym(4)* rank 4, on cosets of 1 < C2 2: G <= GL(1a,C)*   Programs for G = C4: (all refer to std. generators 1) -------------------- automorphisms:  2* maxes (all 1):  1*: C2 other scripts:  "test"* gap> DisplayAtlasInfo( "C4", IsPermGroup, true ); Representations for G = C4: (all refer to std. generators 1) --------------------------- 1: G <= Sym(4)* rank 4, on cosets of 1 < C2 gap> DisplayAtlasInfo( "C4", IsMatrixGroup ); Representations for G = C4: (all refer to std. generators 1) --------------------------- 2: G <= GL(1a,C)*  gap> DisplayAtlasInfo( "C4", Dimension, 2 ); gap> DisplayAtlasInfo( "A5", NrMovedPoints, 60 ); Representations for G = A5: (all refer to std. generators 1) --------------------------- 4: G <= Sym(60)* rank 60, on cosets of 1 < A4 gap> info:= OneAtlasGeneratingSetInfo( "C4" ); rec( groupname := "C4", id := "",   identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ],   isPrimitive := false, p := 4, rankAction := 4,   repname := "C4G1-p4B0", repnr := 1, size := 4,   stabilizer := "1 < C2", standardization := 1, transitivity := 1,   type := "perm" ) gap> AtlasGenerators( info.identifier ); rec( generators := [ (1,2,3,4) ], groupname := "C4", id := "",   identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ],   isPrimitive := false, p := 4, rankAction := 4,   repname := "C4G1-p4B0", repnr := 1, size := 4,   stabilizer := "1 < C2", standardization := 1, transitivity := 1,   type := "perm" ) gap> AtlasProgram( "C4", 1 ); rec( groupname := "C4",   identifier := [ [ "priv", "C4" ], "C4G1-max1W1", 1 ],   program := , size := 2, standardization := 1,  subgroupname := "C2" ) gap> AtlasProgram( "C4", "maxes", 1 ); rec( groupname := "C4",   identifier := [ [ "priv", "C4" ], "C4G1-max1W1", 1 ],   program := , size := 2, standardization := 1,  subgroupname := "C2" ) gap> AtlasProgram( "C4", "maxes", 2 ); fail gap> AtlasGenerators( "C4", 1 ); rec( generators := [ (1,2,3,4) ], groupname := "C4", id := "",   identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ],   isPrimitive := false, p := 4, rankAction := 4,   repname := "C4G1-p4B0", repnr := 1, size := 4,   stabilizer := "1 < C2", standardization := 1, transitivity := 1,   type := "perm" ) gap> AtlasGenerators( "C4", 2 ); rec( dim := 1, generators := [ [ [ E(4) ] ] ], groupname := "C4",   id := "a", identifier := [ [ "priv", "C4" ], "C4G1-Ar1aB0.g", 1, 1 ]  , repname := "C4G1-Ar1aB0", repnr := 2, size := 4,   standardization := 1, type := "matalg" ) gap> AtlasGenerators( "C4", 3 ); fail gap> AtlasProgram( "C4", "other", "test" ); rec( groupname := "C4",   identifier := [ [ "priv", "C4" ], "C4G1-XtestW1", 1 ],   program := , standardization := 1 )  We can restrict the data shown by DisplayAtlasInfo (3.5-1) to the private directory, as follows.  Example  gap> DisplayAtlasInfo( "contents", "priv" ); group | # | maxes | cl | cyc | out | fnd | chk | p* -------------------------+---+-------+----+-----+-----+-----+-----+--* A5* | 1 | | | | | | | * C4* | 2 | 1 | | | 2 | | | *  For checking the data in the private directory, we apply the relevant sanity checks (see Section 7.8).  Example  gap> if not IsBound( AGR.Test ) then >  ReadPackage( "atlasrep", "gap/test.g" ); >  fi; gap> AGR.Test.Words( "priv" ); true gap> AGR.Test.FileHeaders( "priv" ); true gap> AGR.Test.Files( "priv" ); true gap> AGR.Test.BinaryFormat( "priv" ); true gap> AGR.Test.Primitivity( "priv" ); true gap> AGR.Test.Characters( "priv" ); true  Finally, we uninstall the private directory, and reset the info level that had been set to 1 in the beginning. (Also the group name C4 is removed this way, which is an advantage of using a toc.g file over calling AGRGNAN directly.), Note that we need not remove the data in the temporary directory, GAP will do this automatically.  Example  gap> AtlasOfGroupRepresentationsForgetPrivateDirectory( "priv" ); gap> SetInfoLevel( InfoAtlasRep, level );  atlasrep/doc/chapInd.txt0000644000175000017500000001120312701177205013666 0ustar samsam Index AGR 7.1-5 AGR.DeclareDataType 7.5-1 AGR.FileContents 7.6-2 AGR.ParseFilenameFormat 7.6-1 AllAtlasGeneratingSetInfos 3.5-6 AsBBoxProgram 6.2-5 AsStraightLineDecision 6.1-8 AsStraightLineProgram 6.2-6 AtlasCharacterNames 3.4-3 AtlasClassNames 3.4-2 AtlasGenerators 3.5-2 AtlasGenerators (for an identifier) 3.5-2 AtlasGroup (for an identifier record) 3.5-7 AtlasGroup (for various arguments) 3.5-7 AtlasOfGroupRepresentationsForgetPrivateDirectory 5.1-2 AtlasOfGroupRepresentationsInfo 7.1-6 AtlasOfGroupRepresentationsNotifyPrivateDirectory 5.1-1 AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates 4.2-4 AtlasOfGroupRepresentationsUserParameters 4.3-8 AtlasProgram 3.5-3 AtlasProgram (for an identifier) 3.5-3 AtlasProgramInfo 3.5-4 AtlasRep . ATLASREP_TOCFILE 4.2 AtlasRepInfoRecord 3.5-9 AtlasStringOfProgram 7.4-2 AtlasStringOfProgram (for MeatAxe format output) 7.4-2 AtlasSubgroup (for a group and a number) 3.5-8 AtlasSubgroup (for a group name (and various arguments) and a number) 3.5-8 AtlasSubgroup (for an identifier record and a number) 3.5-8 automorphisms 3.5-3 automorphisms 7.6 black box program 1.1 black box program, for finding standard generators 3.5-3 black box program, for finding standard generators 7.6 BrowseBibliographySporadicSimple 3.6-2 BrowseMinimalDegrees 3.6-1 C-MeatAxe 1.2 class representatives 3.5-3 class representatives 7.6 CMeatAxe.FastRead 7.1-4 CMtxBinaryFFMatOrPerm 7.3-4 compress 4.3-4 cyclic subgroups 3.5-3 DisplayAtlasInfo 3.5-1 DisplayAtlasInfo (for a group name, and optionally further restrictions) 3.5-1 FFList 7.3-3 FFLists 7.3-3 FFMatOrPermCMtxBinary 7.3-5 ftp 1.3-5 gzip 1.3-7 gzip 4.3-4 gzip 7.1-6 InfoAtlasRep 7.1-1 InfoBBox 7.1-3 InfoCMeatAxe 7.1-2 IO package 4.1 IO package 4.2-4 IO package 4.3-3 IO package 4.3-3 IO package 7.1-6 IsBBoxProgram 6.2-1 IsStraightLineDecision 6.1-1 LinesOfStraightLineDecision 6.1-2 local access 4.3-1 Magma 1.1 matrix, MeatAxe format 7.3 maximal subgroups 3.5-3 maximal subgroups 7.6 maximally cyclic subgroups 3.5-3 MeatAxe 1.1 MeatAxeString 7.3-2 MeatAxeString (for a permutation, q, and dims) 7.3-2 MeatAxeString (for permutations and a degree) 7.3-2 MinimalRepresentationInfo 6.3-1 MinimalRepresentationInfoData 6.3-2 NrInputsOfStraightLineDecision 6.1-3 OneAtlasGeneratingSetInfo 3.5-5 perl 1.3-5 perl 1.4 permutation, MeatAxe format 7.3 presentation 6.1-7 presentation 7.6 ReloadAtlasTableOfContents 4.2-1 remote access 4.3-1 ReplaceAtlasTableOfContents 4.2-3 ResultOfBBoxProgram 6.2-4 ResultOfStraightLineDecision 6.1-6 RunBBoxProgram 6.2-3 ScanBBoxProgram 6.2-2 ScanMeatAxeFile 7.3-1 ScanStraightLineDecision 6.1-4 ScanStraightLineProgram 7.4-1 semi-presentation 6.1-7 semi-presentation 7.6 servers 4.3-1 SetMinimalRepresentationInfo 6.3-3 StoreAtlasTableOfContents 4.2-2 straight line decision, encoding a presentation 3.5-3 straight line decision, for checking standard generators 3.5-3 straight line program 1.1 straight line program 3.5-1 straight line program, for class representatives 3.5-3 straight line program, for maximal subgroups 3.5-3 straight line program, for outer automorphisms 3.5-3 straight line program, for representatives of cyclic subgroups 3.5-3 straight line program, for restandardizing 3.5-3 straight line program, free format 3.5-3 StraightLineDecision 6.1-5 StraightLineDecisionNC 6.1-5 StraightLineProgramFromStraightLineDecision 6.1-9 touch 4.2-4 wget 1.3-5 wget 1.3-7 wget 4.3-3 wget 4.3-3 wget 7.1-6 zcv 7.3-1 ------------------------------------------------------- atlasrep/doc/chap4.txt0000644000175000017500000005641712701177205013337 0ustar samsam 4 Customizations of the AtlasRep Package 4.1 Installing the AtlasRep Package To install the package, unpack the archive file in a directory in the pkg directory of your local copy of GAP 4. This might be the pkg directory of the GAP 4 root directory, see 'Reference: Installing a GAP Package' for details. It is however also possible to keep an additional pkg directory in your private directories, see Section 'Reference: GAP Root Directories'. The latter possibility must be chosen if you do not have write access to the GAP root directory. Data files that are available from an earlier version of the package are in principle kept; see AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates (4.2-4) for necessary updates. If it is likely that one will work offline, it makes sense to install the starter archive that can be downloaded from the package's homepage. The package consists entirely of GAP code, no external binaries need to be compiled for the package itself. However, if the GAP package IO [Neu14] is used to access remote data files (see Section 4.3-3) then its external binary must be available. After unpacking the package archive, the write permissions for those directories should be checked into which users will download files. Every user can customize these paths via a user preference, see Section 4.3-9, the defaults are the subdirectories datagens and dataword of the package directory. The recommended permissions under UNIX for the default directories are set as follows.  Example  you@unix> chmod 1777 atlasrep/data* you@unix> ls -ld atlasrep/data* drwxrwxrwt 3 you you 1024 Oct 31 12:34 datagens drwxrwxrwt 3 you you 1024 Oct 31 12:34 dataword  For checking the installation of the package, you should start GAP and call  Example  gap> ReadPackage( "atlasrep", "tst/testinst.g" );  If the installation is o.k. then the GAP prompt appears without anything else being printed; otherwise the output lines tell you what should be changed. More test files are available in the tst directory of the package, see Section  7.8 for details. PDF, HTML, and text versions of the package manual are available in the doc directory of the package. 4.2 Maintaining the Local Data of the AtlasRep Package The current table of contents of the database is contained in the file gap/atlasprm.g of the AtlasRep package. This file is read by default when the package is loaded. It may happen that new data files have been added to the servers since the last release of the AtlasRep package, thus it is useful to update the table of contents of the package from time to time. For that, one can fetch the most recent version of the file gap/atlasprm.g from the home page of the package (see Section 4.4), either by calling ReloadAtlasTableOfContents (4.2-1) in a GAP session or by hand. In the latter case, the new file can then be read into the GAP session via ReplaceAtlasTableOfContents (4.2-3). Alternatively, one can add a line to the user's gaprc file (see 'Reference: The gap.ini and gaprc files'), which assigns the filename of the current gap/atlasprm.g file (as an absolute path or relative to the user's home directory, cf. Directory (Reference: Directory)) to the global variable ATLASREP_TOCFILE; in this case, this file is read instead of the one from the package distribution when the package is loaded. Users who have write access to the directory where the AtlasRep package is installed can alternatively use the maketoc script in the etc directory of the package for regularly updating the file gap/atlasprm.g. Users without this write access can store the new file in a different place, and read it with ReplaceAtlasTableOfContents (4.2-3). 4.2-1 ReloadAtlasTableOfContents ReloadAtlasTableOfContents( dirname )  function Returns: fail if the required table of contents could not be reloaded, otherwise true. Let dirname be a string, which must be one of "remote", "local", or the name of a private data directory (see Chapter 5). In the case of "remote", the file atlasprm.g is fetched from the package's home page, and then read into GAP. In the case of "local", the subset of the data listed in the "remote" table of contents is considered that are actually available in the local data directories. In the case of a private directory, its contents is inspected, and the table of contents for dirname is replaced by the one obtained from inspecting the actual contents of the data directories (see Section 7.7). 4.2-2 StoreAtlasTableOfContents StoreAtlasTableOfContents( filename )  function Let filename be a string. This function prints the loaded table of contents of the servers to the file with name filename. 4.2-3 ReplaceAtlasTableOfContents ReplaceAtlasTableOfContents( filename )  function Let filename be the name of a file that has been created with StoreAtlasTableOfContents (4.2-2). ReplaceAtlasTableOfContents first removes the information that GAP has stored about the table of contents of the servers, and then reads the file with name filename, thus replacing the previous information by the stored one. 4.2-4 AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates( )  function Returns: the list of names of all locally available data files that should be removed. This function fetches the file changes.html from the package's home page, extracts the times of changes for the data files in question, and compares them with the times of the last changes of the local data files. For that, the GAP package IO [Neu14] is needed; if it is not available then an error message is printed, and fail is returned. If the time of the last modification of a server file is later than that of the local copy then the local file must be updated. (This means that touching files in the local directories will cheat this function.) It is useful that a system administrator (i. e., someone who has the permission to remove files from the data directories) runs this function from time to time, and afterwards removes the files in the list that is returned. This way, new versions of these files will be fetched automatically from the servers when a user asks for their data. 4.3 User Parameters for the AtlasRep Package This section lists global parameters for which it might make sense to change their defaults by assignments to global variables (see AtlasOfGroupRepresentationsUserParameters (4.3-8) for an overview of these parameters) or using GAP's user preferences (see 'Reference: Configuring User preferences'). 4.3-1 Local or Remote Access There are two possibilities to use the AtlasRep package. Local access only (offline) You can restrict the access to the data that are actually stored in the local installation of GAP. Remote access (online) If your computer is connected to a network that provides access to the ATLAS data (for example the internet) then the functions of the package may fetch the requested data automatically from remote servers when they are required for the first time; these data are then by default stored in the local copy, so later access to them needs no network transfer. The latter possibility is presently not used by other GAP packages, so it may be regarded as an important feature of the AtlasRep package. Anyhow it requires a few words of explanation. The possibility of online access reflects in particular the fact that the ATLAS of Group Representations is designed as an open database, it is expected to grow. As soon as the developers of the ATLAS of Group Representations add new information to the servers, these data become available in GAP when remote access is enabled, after one has updated the corresponding table of contents (see Section 4.2). Remote access is enabled if and only if the value of the remote component of the global variable AtlasOfGroupRepresentationsInfo (7.1-6) is true. If one wants to work offline, i.e., if one does not want GAP to attempt accessing remote data then this value must be set to false. Conversely, if the default value of the remote component in your GAP installation is false then changing this value to true may be not successful. First, it might be the case that no server is reachable. And second, if one can in principle download files from a server then it might be impossible to actually store these files in the data directories of the installed package; in this case, it is advisable to install the whole package or just its data directories in a private directory, see 'Reference: GAP Root Directories' for details. 4.3-2 Adding and Removing Servers When access to remote data is enabled (see Section 4.3-1) then the available servers are given by the servers component of the global variable AtlasOfGroupRepresentationsInfo (7.1-6). Removing entries from this list means to disable access to the corresponding servers, adding entries makes the corresponding servers available. Of course the latter makes sense only if the new servers really exist, for example in a local network. Currently there is just one remote server. As soon as other servers become available, or a server name is changed which makes it necessary to adjust the servers component, this will be announced in the GAP Forum, cf. 'Tutorial: Further Information about GAP'. The same holds when upgrades of the package become available. 4.3-3 Accessing Data Files with the GAP Package IO or with wget When access to remote data is enabled (see Section 4.3-1) then one needs either the GAP package IO [Neu14] or the external program wget for accessing data files. The chosen alternative is given by the value of the wget component of the global variable AtlasOfGroupRepresentationsInfo (7.1-6). If this component has the value true then only wget is tried, if the value is false then only the IO package is used. If this component is not bound or bound to another value than true or false (this is also the default) then the IO package is preferred to wget if this package is available, and otherwise wget is tried. Note that the system program wget may be not available, and that it may require some work to install it; hints for that can be found on the home page of the AtlasRep package (see Section 4.4). 4.3-4 Compressed or Uncompressed Data Files When used with UNIX, GAP can read gzipped files, see 'Reference: Saving and Loading a Workspace'. If the component compress of AtlasOfGroupRepresentationsInfo (7.1-6) has the value true then each MeatAxe format file that is fetched from a remote server is afterwards compressed with gzip. This saves a lot of space if many MeatAxe format files are accessed. (Note that data files in other formats are very small.) For example, at the time of the release of version 1.5.1 there were about 8400 data files in MeatAxe format, which needed about 1400 MB in uncompressed text format and about 275 MB in compressed text format. The default value for the component compress is false. 4.3-5 Customizing DisplayAtlasInfo The way how DisplayAtlasInfo (3.5-1) shows the requested overview is controlled by the component displayFunction of AtlasOfGroupRepresentationsInfo (7.1-6). The default value is Print (Reference: Print), other useful values are PrintFormattedString (GAPDoc: PrintFormattedString) and AGR.Pager; the latter calls Pager (Reference: Pager) with the formatted option, which is necessary for switching off GAP's automatic line breaking. 4.3-6 Customizing the Access to Data Files By default, local data files are stored in the subdirectories datagens and dataword of the directory given by the user preference AtlasRepDataDirectory (see Section 4.3-9), and the files are exactly the text files provided on the servers. However, a more flexible approach may be useful. First, one may want to use different file formats, for example the MeatAxe binary files that are provided by the servers parallel to the MeatAxe text files. Second, one may want to use a different directory structure, for example the same structure as used on the servers –this makes sense for example if a local mirror of a server is available, because then one can read the server files directly, without transferring/copying them to another directory. As a consequence, one would like to customize the meaning of the following three access steps. Are the required files locally available? The required files may have a different name or a different path, and the data can be available in one file or can be distributed to several files. How can a file be made locally available? A different server file may be fetched or some postprocessing may be required. How is the data of a file accessed by GAP? A different function may be needed to read the file. Details how to achieve these customizations can be found in Section 7.2. 4.3-7 Reading Large Matrices over Finite Fields Matrices over finite fields in GAP can be represented in a compressed format that needs less space than the corresponding text file. Such a MeatAxe format text file can be read by ScanMeatAxeFile (7.3-1) either line by line (which is the default) or as a whole; the latter is faster but needs more space than the former. For example, a 4370 by 4370 matrix over the field with two elements (as occurs for an irreducible representation of the Baby Monster) requires less than 3 MB space in GAP but the corresponding MeatAxe format text file is more than 19 MB large, which means that when one reads the file with the fast variant, GAP will temporarily grow by more than this value. One can change the mode by setting the global variable CMeatAxe.FastRead (7.1-4) to true or false, respectively. Note that this parameter is meaningful only when ScanMeatAxeFile (7.3-1) is used. It has no effect for example if MeatAxe binary files are read, cf. FFMatOrPermCMtxBinary (7.3-5). 4.3-8 AtlasOfGroupRepresentationsUserParameters AtlasOfGroupRepresentationsUserParameters( )  function This function returns a string that describes an overview of the current values of the user parameters introduced in this section. One can use Print (Reference: Print) or Pager (Reference: Pager) for showing the overview. 4.3-9 User preference AtlasRepDataDirectory The value must be a string that is the filename of a directory (in the sense of IsDirectoryPath (Reference: IsDirectoryPath)) that contains the directories datagens and dataword in which downloaded data will be stored. The default is the installation path of the AtlasRep package (including a trailing slash symbol). 4.3-10 User preference WriteMeatAxeFilesOfMode2 The value true means that the function MeatAxeString (7.3-2) will encode permutation matrices via mode 2 descriptions, that is, the first entry in the header line is 2, and the following lines contain the positions of the nonzero entries. If the value is false (the default) then MeatAxeString (7.3-2) encodes permutation matrices via mode 1 or mode 6 descriptions, that is, the lines contain the matrix entries. 4.3-11 User preference BaseOfMeatAxePermutation The value 0 means that the function CMtxBinaryFFMatOrPerm (7.3-4) writes zero-based permutations, that is, permutations acting on the points from 0 to the degree minus one; this is achieved by shifting down all images of the GAP permutation by one. The value 1 (the default) means that the permutation stored in the binary file acts on the points from 1 to the degree. Up to version 2.3 of the C-MeatAxe, permutations in binary files were always one-based. Zero-based permutations were introduced in version 2.4, which still is able to read files containing one-based permutations. 4.4 Web Services for the AtlasRep Package The home page of the AtlasRep package is http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep. Besides package archives and introductory package information, it provides  the current file with the table of contents (the file gap/atlasprm.g of the package, see http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep/atlasprm.g), cf. ReloadAtlasTableOfContents (4.2-1),  a starter archive containing many small representations and programs (see http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep/atlasrepdata.tar.gz),  the list of changes of server files in HTML format (see http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep/htm/data/changes.htm), cf. AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates (4.2-4), and  an overview of the data available via the GAP interface to the ATLAS of Group Representations, in HTML format (see http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep/htm/data/overview.htm); this is similar to the information shown by DisplayAtlasInfo (3.5-1), further information can be found on the home page of the ATLAS, see http://brauer.maths.qmul.ac.uk/Atlas. 4.5 Extending the ATLAS Database Users who have computed new representations that might be interesting for inclusion into the ATLAS of Group representations can send the data in question to mailto:R.A.Wilson@qmul.ac.uk. It is also possible to store private representations and programs in local directories, and to use them in the same way as the official data. See Chapter 5 for details. atlasrep/doc/chap6.txt0000644000175000017500000015627412701177205013343 0ustar samsam 6 New GAP Objects and Utility Functions Provided by the AtlasRep Package This chapter describes GAP objects and functions that are provided by the AtlasRep package but that might be of general interest. The new objects are straight line decisions (see Section 6.1) and black box programs (see Section 6.2). The new functions are concerned with representations of minimal degree, see Section 6.3. 6.1 Straight Line Decisions Straight line decisions are similar to straight line programs (see Section 'Reference: Straight Line Programs') but return true or false. A straight line decisions checks a property for its inputs. An important example is to check whether a given list of group generators is in fact a list of standard generators (cf. Section3.3) for this group. A straight line decision in GAP is represented by an object in the filter IsStraightLineDecision (6.1-1) that stores a list of lines each of which has one of the following three forms. 1 a nonempty dense list l of integers, 2 a pair [ l, i ] where l is a list of form 1. and i is a positive integer, 3 a list ["Order", i, n ] where i and n are positive integers. The first two forms have the same meaning as for straight line programs (see Section 'Reference: Straight Line Programs'), the last form means a check whether the element stored at the label i-th has the order n. For the meaning of the list of lines, see ResultOfStraightLineDecision (6.1-6). Straight line decisions can be constructed using StraightLineDecision (6.1-5), defining attributes for straight line decisions are NrInputsOfStraightLineDecision (6.1-3) and LinesOfStraightLineDecision (6.1-2), an operation for straight line decisions is ResultOfStraightLineDecision (6.1-6). Special methods applicable to straight line decisions are installed for the operations Display (Reference: Display), IsInternallyConsistent (Reference: IsInternallyConsistent), PrintObj (Reference: PrintObj), and ViewObj (Reference: ViewObj). For a straight line decision prog, the default Display (Reference: Display) method prints the interpretation of prog as a sequence of assignments of associative words and of order checks; a record with components gensnames (with value a list of strings) and listname (a string) may be entered as second argument of Display (Reference: Display), in this case these names are used, the default for gensnames is [ g1, g2, ... ], the default for listname is r. 6.1-1 IsStraightLineDecision IsStraightLineDecision( obj )  Category Each straight line decision in GAP lies in the filter IsStraightLineDecision. 6.1-2 LinesOfStraightLineDecision LinesOfStraightLineDecision( prog )  operation Returns: the list of lines that define the straight line decision. This defining attribute for the straight line decision prog (see IsStraightLineDecision (6.1-1)) corresponds to LinesOfStraightLineProgram (Reference: LinesOfStraightLineProgram) for straight line programs.  Example  gap> dec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ], > [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] );  gap> LinesOfStraightLineDecision( dec ); [ [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 1, 2 ], [ "Order", 2, 3 ],   [ "Order", 3, 5 ] ]  6.1-3 NrInputsOfStraightLineDecision NrInputsOfStraightLineDecision( prog )  operation Returns: the number of inputs required for the straight line decision. This defining attribute corresponds to NrInputsOfStraightLineProgram (Reference: NrInputsOfStraightLineProgram).  Example  gap> NrInputsOfStraightLineDecision( dec ); 2  6.1-4 ScanStraightLineDecision ScanStraightLineDecision( string )  function Returns: a record containing the straight line decision, or fail. Let string be a string that encodes a straight line decision in the sense that it consists of the lines listed for ScanStraightLineProgram (7.4-1), except that oup lines are not allowed, and instead lines of the following form may occur. chor a b means that it is checked whether the order of the element at label a is b. ScanStraightLineDecision returns a record containing as the value of its component program the corresponding GAP straight line decision (see IsStraightLineDecision (6.1-1)) if the input string satisfies the syntax rules stated above, and returns fail otherwise. In the latter case, information about the first corrupted line of the program is printed if the info level of InfoCMeatAxe (7.1-2) is at least 1.  Example  gap> str:= "inp 2\nchor 1 2\nchor 2 3\nmu 1 2 3\nchor 3 5";; gap> prg:= ScanStraightLineDecision( str ); rec( program := ) gap> prg:= prg.program;; gap> Display( prg ); # input: r:= [ g1, g2 ]; # program: if Order( r[1] ) <> 2 then return false; fi; if Order( r[2] ) <> 3 then return false; fi; r[3]:= r[1]*r[2]; if Order( r[3] ) <> 5 then return false; fi; # return value: true  6.1-5 StraightLineDecision StraightLineDecision( lines[, nrgens] )  function StraightLineDecisionNC( lines[, nrgens] )  function Returns: the straight line decision given by the list of lines. Let lines be a list of lists that defines a unique straight line decision (see IsStraightLineDecision (6.1-1)); in this case StraightLineDecision returns this program, otherwise an error is signalled. The optional argument nrgens specifies the number of input generators of the program; if a list of integers (a line of form 1. in the definition above) occurs in lines then this number is not determined by lines and therefore must be specified by the argument nrgens; if not then StraightLineDecision returns fail. StraightLineDecisionNC does the same as StraightLineDecision, except that the internal consistency of the program is not checked. 6.1-6 ResultOfStraightLineDecision ResultOfStraightLineDecision( prog, gens[, orderfunc] )  operation Returns: true if all checks succeed, otherwise false. ResultOfStraightLineDecision evaluates the straight line decision (see IsStraightLineDecision (6.1-1)) prog at the group elements in the list gens. The function for computing the order of a group element can be given as the optional argument orderfunc. For example, this may be a function that gives up at a certain limit if one has to be aware of extremely huge orders in failure cases. The result of a straight line decision with lines p_1, p_2, ..., p_k when applied to gens is defined as follows. (a) First a list r of intermediate values is initialized with a shallow copy of gens. (b) For i ≤ k, before the i-th step, let r be of length n. If p_i is the external representation of an associative word in the first n generators then the image of this word under the homomorphism that is given by mapping r to these first n generators is added to r. If p_i is a pair [ l, j ], for a list l, then the same element is computed, but instead of being added to r, it replaces the j-th entry of r. If p_i is a triple ["Order", i, n ] then it is checked whether the order of r[i] is n; if not then false is returned immediately. (c) If all k lines have been processed and no order check has failed then true is returned. Here are some examples.  Example  gap> dec:= StraightLineDecision( [ ], 1 );  gap> ResultOfStraightLineDecision( dec, [ () ] ); true  The above straight line decision dec returns true –for any input of the right length.  Example  gap> dec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ], >  [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] );  gap> LinesOfStraightLineDecision( dec ); [ [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 1, 2 ], [ "Order", 2, 3 ],   [ "Order", 3, 5 ] ] gap> ResultOfStraightLineDecision( dec, [ (), () ] ); false gap> ResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,4,5) ] ); true  The above straight line decision admits two inputs; it tests whether the orders of the inputs are 2 and 3, and the order of their product is 5. 6.1-7 Semi-Presentations and Presentations We can associate a finitely presented group F / R to each straight line decision dec, say, as follows. The free generators of the free group F are in bijection with the inputs, and the defining relators generating R as a normal subgroup of F are given by those words w^k for which dec contains a check whether the order of w equals k. So if dec returns true for the input list [ g_1, g_2, ..., g_n ] then mapping the free generators of F to the inputs defines an epimorphism Φ from F to the group G, say, that is generated by these inputs, such that R is contained in the kernel of Φ. (Note that satisfying dec is a stronger property than satisfying a presentation. For example, ⟨ x ∣ x^2 = x^3 = 1 ⟩ is a presentation for the trivial group, but the straight line decision that checks whether the order of x is both 2 and 3 clearly always returns false.) The ATLAS of Group Representations contains the following two kinds of straight line decisions.  A presentation is a straight line decision dec that is defined for a set of standard generators of a group G and that returns true if and only if the list of inputs is in fact a sequence of such standard generators for G. In other words, the relators derived from the order checks in the way described above are defining relators for G, and moreover these relators are words in terms of standard generators. (In particular the kernel of the map Φ equals R whenever dec returns true.)  A semi-presentation is a straight line decision dec that is defined for a set of standard generators of a group G and that returns true for a list of inputs that is known to generate a group isomorphic with G if and only if these inputs form in fact a sequence of standard generators for G. In other words, the relators derived from the order checks in the way described above are not necessarily defining relators for G, but if we assume that the g_i generate G then they are standard generators. (In particular, F / R may be a larger group than G but in this case Φ maps the free generators of F to standard generators of G.) More about semi-presentations can be found in [NW05]. Available presentations and semi-presentations are listed by DisplayAtlasInfo (3.5-1), they can be accessed via AtlasProgram (3.5-3). (Clearly each presentation is also a semi-presentation. So a semi-presentation for some standard generators of a group is regarded as available whenever a presentation for these standard generators and this group is available.) Note that different groups can have the same semi-presentation. We illustrate this with an example that is mentioned in [NW05]. The groups L_2(7) ≅ L_3(2) and L_2(8) are generated by elements of the orders 2 and 3 such that their product has order 7, and no further conditions are necessary to define standard generators.  Example  gap> check:= AtlasProgram( "L2(8)", "check" ); rec( groupname := "L2(8)",   identifier := [ "L2(8)", "L28G1-check1", 1, 1 ],   program := , standardization := 1 ) gap> gens:= AtlasGenerators( "L2(8)", 1 ); rec( charactername := "1a+8a",   generators := [ (1,2)(3,4)(6,7)(8,9), (1,3,2)(4,5,6)(7,8,9) ],   groupname := "L2(8)", id := "",   identifier := [ "L2(8)", [ "L28G1-p9B0.m1", "L28G1-p9B0.m2" ], 1, 9   ], isPrimitive := true, maxnr := 1, p := 9, rankAction := 2,   repname := "L28G1-p9B0", repnr := 1, size := 504,   stabilizer := "2^3:7", standardization := 1, transitivity := 3,   type := "perm" ) gap> ResultOfStraightLineDecision( check.program, gens.generators ); true gap> gens:= AtlasGenerators( "L3(2)", 1 ); rec( generators := [ (2,4)(3,5), (1,2,3)(5,6,7) ],   groupname := "L3(2)", id := "a",   identifier := [ "L3(2)", [ "L27G1-p7aB0.m1", "L27G1-p7aB0.m2" ], 1,   7 ], isPrimitive := true, maxnr := 1, p := 7, rankAction := 2,   repname := "L27G1-p7aB0", repnr := 1, size := 168,   stabilizer := "S4", standardization := 1, transitivity := 2,   type := "perm" ) gap> ResultOfStraightLineDecision( check.program, gens.generators ); true  6.1-8 AsStraightLineDecision AsStraightLineDecision( bbox )  attribute Returns: an equivalent straight line decision for the given black box program, or fail. For a black box program (see IsBBoxProgram (6.2-1)) bbox, AsStraightLineDecision returns a straight line decision (see IsStraightLineDecision (6.1-1)) with the same output as bbox, in the sense of AsBBoxProgram (6.2-5), if such a straight line decision exists, and fail otherwise.  Example  gap> lines:= [ [ "Order", 1, 2 ], [ "Order", 2, 3 ], >  [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 3, 5 ] ];; gap> dec:= StraightLineDecision( lines, 2 );  gap> bboxdec:= AsBBoxProgram( dec );  gap> asdec:= AsStraightLineDecision( bboxdec );  gap> LinesOfStraightLineDecision( asdec ); [ [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ [ 1, 1, 2, 1 ], 3 ],   [ "Order", 3, 5 ] ]  6.1-9 StraightLineProgramFromStraightLineDecision StraightLineProgramFromStraightLineDecision( dec )  operation Returns: the straight line program associated to the given straight line decision. For a straight line decision dec (see IsStraightLineDecision (6.1-1), StraightLineProgramFromStraightLineDecision returns the straight line program (see IsStraightLineProgram (Reference: IsStraightLineProgram) obtained by replacing each line of type 3. (i.e, each order check) by an assignment of the power in question to a new slot, and by declaring the list of these elements as the return value. This means that the return value describes exactly the defining relators of the presentation that is associated to the straight line decision, see 6.1-7. For example, one can use the return value for printing the relators with StringOfResultOfStraightLineProgram (Reference: StringOfResultOfStraightLineProgram), or for explicitly constructing the relators as words in terms of free generators, by applying ResultOfStraightLineProgram (Reference: ResultOfStraightLineProgram) to the program and to these generators.  Example  gap> dec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ], > [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] );  gap> prog:= StraightLineProgramFromStraightLineDecision( dec );  gap> Display( prog ); # input: r:= [ g1, g2 ]; # program: r[3]:= r[1]*r[2]; r[4]:= r[1]^2; r[5]:= r[2]^3; r[6]:= r[3]^5; # return values: [ r[4], r[5], r[6] ] gap> StringOfResultOfStraightLineProgram( prog, [ "a", "b" ] ); "[ a^2, b^3, (ab)^5 ]" gap> gens:= GeneratorsOfGroup( FreeGroup( "a", "b" ) ); [ a, b ] gap> ResultOfStraightLineProgram( prog, gens ); [ a^2, b^3, (a*b)^5 ]  6.2 Black Box Programs Black box programs formalize the idea that one takes some group elements, forms arithmetic expressions in terms of them, tests properties of these expressions, executes conditional statements (including jumps inside the program) depending on the results of these tests, and eventually returns some result. A specification of the language can be found in [Nic06], see also http://brauer.maths.qmul.ac.uk/Atlas/info/blackbox.html. The inputs of a black box program may be explicit group elements, and the program may also ask for random elements from a given group. The program steps form products, inverses, conjugates, commutators, etc. of known elements, tests concern essentially the orders of elements, and the result is a list of group elements or true or false or fail. Examples that can be modeled by black box programs are straight line programs, which require a fixed number of input elements and form arithmetic expressions of elements but do not use random elements, tests, conditional statements and jumps; the return value is always a list of elements; these programs are described in Section 'Reference: Straight Line Programs'. straight line decisions, which differ from straight line programs only in the sense that also order tests are admissible, and that the return value is true if all these tests are satisfied, and false as soon as the first such test fails; they are described in Section 6.1. scripts for finding standard generators, which take a group and a function to generate a random element in this group but no explicit input elements, admit all control structures, and return either a list of standard generators or fail; see ResultOfBBoxProgram (6.2-4) for examples. In the case of general black box programs, currently GAP provides only the possibility to read an existing program via ScanBBoxProgram (6.2-2), and to run the program using RunBBoxProgram (6.2-3). It is not our aim to write such programs in GAP. The special case of the find scripts mentioned above is also admissible as an argument of ResultOfBBoxProgram (6.2-4), which returns either the set of generators or fail. Contrary to the general situation, more support is provided for straight line programs and straight line decisions in GAP, see Section 'Reference: Straight Line Programs' for functions that manipulate them (compose, restrict etc.). The functions AsStraightLineProgram (6.2-6) and AsStraightLineDecision (6.1-8) can be used to transform a general black box program object into a straight line program or a straight line decision if this is possible. Conversely, one can create an equivalent general black box program from a straight line program or from a straight line decision with AsBBoxProgram (6.2-5). (Computing a straight line program related to a given straight line decision is supported in the sense of StraightLineProgramFromStraightLineDecision (6.1-9).) Note that none of these three kinds of objects is a special case of another: Running a black box program with RunBBoxProgram (6.2-3) yields a record, running a straight line program with ResultOfStraightLineProgram (Reference: ResultOfStraightLineProgram) yields a list of elements, and running a straight line decision with ResultOfStraightLineDecision (6.1-6) yields true or false. 6.2-1 IsBBoxProgram IsBBoxProgram( obj )  Category Each black box program in GAP lies in the filter IsBBoxProgram. 6.2-2 ScanBBoxProgram ScanBBoxProgram( string )  function Returns: a record containing the black box program encoded by the input string, or fail. For a string string that describes a black box program, e.g., the return value of StringFile (GAPDoc: StringFile), ScanBBoxProgram computes this black box program. If this is successful then the return value is a record containing as the value of its component program the corresponding GAP object that represents the program, otherwise fail is returned. As the first example, we construct a black box program that tries to find standard generators for the alternating group A_5; these standard generators are any pair of elements of the orders 2 and 3, respectively, such that their product has order 5.  Example  gap> findstr:= "\ >  set V 0\n\ > lbl START1\n\ >  rand 1\n\ >  ord 1 A\n\ >  incr V\n\ >  if V gt 100 then timeout\n\ >  if A notin 1 2 3 5 then fail\n\ >  if A noteq 2 then jmp START1\n\ > lbl START2\n\ >  rand 2\n\ >  ord 2 B\n\ >  incr V\n\ >  if V gt 100 then timeout\n\ >  if B notin 1 2 3 5 then fail\n\ >  if B noteq 3 then jmp START2\n\ >  # The elements 1 and 2 have the orders 2 and 3, respectively.\n\ >  set X 0\n\ > lbl CONJ\n\ >  incr X\n\ >  if X gt 100 then timeout\n\ >  rand 3\n\ >  cjr 2 3\n\ >  mu 1 2 4 # ab\n\ >  ord 4 C\n\ >  if C notin 2 3 5 then fail\n\ >  if C noteq 5 then jmp CONJ\n\ >  oup 2 1 2";; gap> find:= ScanBBoxProgram( findstr ); rec( program := )  The second example is a black box program that checks whether its two inputs are standard generators for A_5.  Example  gap> checkstr:= "\ > chor 1 2\n\ > chor 2 3\n\ > mu 1 2 3\n\ > chor 3 5";; gap> check:= ScanBBoxProgram( checkstr ); rec( program := )  6.2-3 RunBBoxProgram RunBBoxProgram( prog, G, input, options )  function Returns: a record describing the result and the statistics of running the black box program prog, or fail, or the string "timeout". For a black box program prog, a group G, a list input of group elements, and a record options, RunBBoxProgram applies prog to input, where G is used only to compute random elements. The return value is fail if a syntax error or an explicit fail statement is reached at runtime, and the string "timeout" if a timeout statement is reached. (The latter might mean that the random choices were unlucky.) Otherwise a record with the following components is returned. gens a list of group elements, bound if an oup statement was reached, result true if a true statement was reached, false if either a false statement or a failed order check was reached, The other components serve as statistical information about the numbers of the various operations (multiply, invert, power, order, random, conjugate, conjugateinplace, commutator), and the runtime in milliseconds (timetaken). The following components of options are supported. randomfunction the function called with argument G in order to compute a random element of G (default PseudoRandom (Reference: PseudoRandom)) orderfunction the function for computing element orders (the default is Order (Reference: Order)), quiet if true then ignore echo statements (default false), verbose if true then print information about the line that is currently processed, and about order checks (default false), allowbreaks if true then call Error (Reference: Error) when a break statement is reached, otherwise ignore break statements (default true). As an example, we run the black box programs constructed in the example for ScanBBoxProgram (6.2-2).  Example  gap> g:= AlternatingGroup( 5 );; gap> res:= RunBBoxProgram( find.program, g, [], rec() );; gap> IsBound( res.gens ); IsBound( res.result ); true false gap> List( res.gens, Order ); [ 2, 3 ] gap> Order( Product( res.gens ) ); 5 gap> res:= RunBBoxProgram( check.program, "dummy", res.gens, rec() );; gap> IsBound( res.gens ); IsBound( res.result ); false true gap> res.result; true gap> othergens:= GeneratorsOfGroup( g );; gap> res:= RunBBoxProgram( check.program, "dummy", othergens, rec() );; gap> res.result; false  6.2-4 ResultOfBBoxProgram ResultOfBBoxProgram( prog, G )  function Returns: a list of group elements or true, false, fail, or the string "timeout". This function calls RunBBoxProgram (6.2-3) with the black box program prog and second argument either a group or a list of group elements; the default options are assumed. The return value is fail if this call yields fail, otherwise the gens component of the result, if bound, or the result component if not. As an example, we run the black box programs constructed in the example for ScanBBoxProgram (6.2-2).  Example  gap> g:= AlternatingGroup( 5 );; gap> res:= ResultOfBBoxProgram( find.program, g );; gap> List( res, Order ); [ 2, 3 ] gap> Order( Product( res ) ); 5 gap> res:= ResultOfBBoxProgram( check.program, res ); true gap> othergens:= GeneratorsOfGroup( g );; gap> res:= ResultOfBBoxProgram( check.program, othergens ); false  6.2-5 AsBBoxProgram AsBBoxProgram( slp )  attribute Returns: an equivalent black box program for the given straight line program or straight line decision. Let slp be a straight line program (see IsStraightLineProgram (Reference: IsStraightLineProgram)) or a straight line decision (see IsStraightLineDecision (6.1-1)). Then AsBBoxProgram returns a black box program bbox (see IsBBoxProgram (6.2-1)) with the same output as slp, in the sense that ResultOfBBoxProgram (6.2-4) yields the same result for bbox as ResultOfStraightLineProgram (Reference: ResultOfStraightLineProgram) or ResultOfStraightLineDecision (6.1-6), respectively, for slp.  Example  gap> f:= FreeGroup( "x", "y" );; gens:= GeneratorsOfGroup( f );; gap> slp:= StraightLineProgram( [ [1,2,2,3], [3,-1] ], 2 );  gap> ResultOfStraightLineProgram( slp, gens ); y^-3*x^-2 gap> bboxslp:= AsBBoxProgram( slp );  gap> ResultOfBBoxProgram( bboxslp, gens ); [ y^-3*x^-2 ] gap> lines:= [ [ "Order", 1, 2 ], [ "Order", 2, 3 ], >  [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 3, 5 ] ];; gap> dec:= StraightLineDecision( lines, 2 );  gap> ResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,3,5) ] ); true gap> ResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,3,4) ] ); false gap> bboxdec:= AsBBoxProgram( dec );  gap> ResultOfBBoxProgram( bboxdec, [ (1,2)(3,4), (1,3,5) ] ); true gap> ResultOfBBoxProgram( bboxdec, [ (1,2)(3,4), (1,3,4) ] ); false  6.2-6 AsStraightLineProgram AsStraightLineProgram( bbox )  attribute Returns: an equivalent straight line program for the given black box program, or fail. For a black box program (see AsBBoxProgram (6.2-5)) bbox, AsStraightLineProgram returns a straight line program (see IsStraightLineProgram (Reference: IsStraightLineProgram)) with the same output as bbox if such a straight line program exists, and fail otherwise.  Example  gap> Display( AsStraightLineProgram( bboxslp ) ); # input: r:= [ g1, g2 ]; # program: r[3]:= r[1]^2; r[4]:= r[2]^3; r[5]:= r[3]*r[4]; r[3]:= r[5]^-1; # return values: [ r[3] ] gap> AsStraightLineProgram( bboxdec ); fail  6.3 Representations of Minimal Degree This section deals with minimal degrees of permutation and matrix representations. We do not provide an algorithm that computes these degrees for an arbitrary group, we only provide some tools for evaluating known databases, mainly concerning bicyclic extensions (see [CCNPW85, Section 6.5]) of simple groups, in order to derive the minimal degrees, see Section 6.3-4. In the AtlasRep package, this information can be used for prescribing minimality conditions in DisplayAtlasInfo (3.5-1), OneAtlasGeneratingSetInfo (3.5-5), and AllAtlasGeneratingSetInfos (3.5-6). An overview of the stored minimal degrees can be shown with BrowseMinimalDegrees (3.6-1). 6.3-1 MinimalRepresentationInfo MinimalRepresentationInfo( grpname, conditions )  function Returns: a record with the components value and source, or fail Let grpname be the GAP name of a group G, say. If the information described by conditions about minimal representations of this group can be computed or is stored then MinimalRepresentationInfo returns a record with the components value and source, otherwise fail is returned. The following values for conditions are supported.  If conditions is NrMovedPoints (Reference: NrMovedPoints (for a permutation)) then value, if known, is the degree of a minimal faithful (not necessarily transitive) permutation representation for G.  If conditions consists of Characteristic (Reference: Characteristic) and a prime integer p then value, if known, is the dimension of a minimal faithful (not necessarily irreducible) matrix representation in characteristic p for G.  If conditions consists of Size (Reference: Size) and a prime power q then value, if known, is the dimension of a minimal faithful (not necessarily irreducible) matrix representation over the field of size q for G. In all cases, the value of the component source is a list of strings that describe sources of the information, which can be the ordinary or modular character table of G (see [CCNPW85], [JLPW95], [HL89]), the table of marks of G, or [Jan05]. For an overview of minimal degrees of faithful matrix representations for sporadic simple groups and their covering groups, see also http://www.math.rwth-aachen.de/~MOC/mindeg/. Note that MinimalRepresentationInfo cannot provide any information about minimal representations over prescribed fields in characteristic zero. Information about groups that occur in the AtlasRep package is precomputed in MinimalRepresentationInfoData (6.3-2), so the packages CTblLib and TomLib are not needed when MinimalRepresentationInfo is called for these groups. (The only case that is not covered by this list is that one asks for the minimal degree of matrix representations over a prescribed field in characteristic coprime to the group order.) One of the following strings can be given as an additional last argument. "cache" means that the function tries to compute (and then store) values that are not stored in MinimalRepresentationInfoData (6.3-2), but stored values are preferred; this is also the default. "lookup" means that stored values are returned but the function does not attempt to compute values that are not stored in MinimalRepresentationInfoData (6.3-2). "recompute" means that the function always tries to compute the desired value, and checks the result against stored values.  Example  gap> MinimalRepresentationInfo( "A5", NrMovedPoints ); rec(   source := [ "computed (alternating group)",   "computed (char. table)", "computed (subgroup tables)",   "computed (subgroup tables, known repres.)",   "computed (table of marks)" ], value := 5 ) gap> MinimalRepresentationInfo( "A5", Characteristic, 2 ); rec( source := [ "computed (char. table)" ], value := 2 ) gap> MinimalRepresentationInfo( "A5", Size, 2 ); rec( source := [ "computed (char. table)" ], value := 4 )  6.3-2 MinimalRepresentationInfoData MinimalRepresentationInfoData global variable This is a record whose components are GAP names of groups for which information about minimal permutation and matrix representations were known in advance or have been computed in the current GAP session. The value for the group G, say, is a record with the following components. NrMovedPoints a record with the components value (the degree of a smallest faithful permutation representation of G) and source (a string describing the source of this information). Characteristic a record whose components are at most 0 and strings corresponding to prime integers, each bound to a record with the components value (the degree of a smallest faithful matrix representation of G in this characteristic) and source (a string describing the source of this information). CharacteristicAndSize a record whose components are strings corresponding to prime integers p, each bound to a record with the components sizes (a list of powers q of p), dimensions (the corresponding list of minimal dimensions of faithful matrix representations of G over a field of size q), sources (the corresponding list of strings describing the source of this information), and complete (a record with the components val (true if the minimal dimension over any finite field in characteristic p can be derived from the values in the record, and false otherwise) and source (a string describing the source of this information)). The values are set by SetMinimalRepresentationInfo (6.3-3). 6.3-3 SetMinimalRepresentationInfo SetMinimalRepresentationInfo( grpname, op, value, source )  function Returns: true if the values were successfully set, false if stored values contradict the given ones. This function sets an entry in MinimalRepresentationInfoData (6.3-2) for the group G, say, with GAP name grpname. Supported values for op are  "NrMovedPoints" (see NrMovedPoints (Reference: NrMovedPoints (for a permutation))), which means that value is the degree of minimal faithful (not necessarily transitive) permutation representations of G,  a list of length two with first entry "Characteristic" (see Characteristic (Reference: Characteristic)) and second entry char either zero or a prime integer, which means that value is the dimension of minimal faithful (not necessarily irreducible) matrix representations of G in characteristic char,  a list of length two with first entry "Size" (see Size (Reference: Size)) and second entry a prime power q, which means that value is the dimension of minimal faithful (not necessarily irreducible) matrix representations of G over the field with q elements, and  a list of length three with first entry "Characteristic" (see Characteristic (Reference: Characteristic)), second entry a prime integer p, and third entry the string "complete", which means that the information stored for characteristic p is complete in the sense that for any given power q of p, the minimal faithful degree over the field with q elements equals that for the largest stored field size of which q is a power. In each case, source is a string describing the source of the data; computed values are detected from the prefix "comp" of source. If the intended value is already stored and differs from value then an error message is printed.  Example  gap> SetMinimalRepresentationInfo( "A5", "NrMovedPoints", 5, >  "computed (alternating group)" ); true gap> SetMinimalRepresentationInfo( "A5", [ "Characteristic", 0 ], 3, >  "computed (char. table)" ); true gap> SetMinimalRepresentationInfo( "A5", [ "Characteristic", 2 ], 2, >  "computed (char. table)" ); true gap> SetMinimalRepresentationInfo( "A5", [ "Size", 2 ], 4, >  "computed (char. table)" ); true gap> SetMinimalRepresentationInfo( "A5", [ "Size", 4 ], 2, >  "computed (char. table)" ); true gap> SetMinimalRepresentationInfo( "A5", [ "Characteristic", 3 ], 3, >  "computed (char. table)" ); true  6.3-4 Criteria Used to Compute Minimality Information The information about the minimal degree of a faithful matrix representation of G in a given characteristic or over a given field in positive characteristic is derived from the relevant (ordinary or modular) character table of G, except in a few cases where this table itself is not known but enough information about the degrees is available in [HL89] and [Jan05]. The following criteria are used for deriving the minimal degree of a faithful permutation representation of G from the information in the GAP libraries of character tables and of tables of marks.  If the name of G has the form "An" or "An.2" (denoting alternating and symmetric groups, respectively) then the minimal degree is n, except if n is smaller than 3 or 2, respectively.  If the name of G has the form "L2(q)" (denoting projective special linear groups in dimension two) then the minimal degree is q + 1, except if q ∈ { 2, 3, 5, 7, 9, 11 }, see [Hup67, Satz II.8.28].  If the largest maximal subgroup of G is core-free then the index of this subgroup is the minimal degree. (This is used when the two character tables in question and the class fusion are available in GAP's Character Table Library ([Bre13]); this happens for many character tables of simple groups.)  If G has a unique minimal normal subgroup then each minimal faithful permutation representation is transitive. In this case, the minimal degree can be computed directly from the information in the table of marks of G if this is available in GAP's Library of Tables of Marks ([NMP13]). Suppose that the largest maximal subgroup of G is not core-free but simple and normal in G, and that the other maximal subgroups of G are core-free. In this case, we take the minimum of the indices of the core-free maximal subgroups and of the product of index and minimal degree of the normal maximal subgroup. (This suffices since no core-free subgroup of the whole group can contain a nontrivial normal subgroup of a normal maximal subgroup.) Let N be the unique minimal normal subgroup of G, and assume that G/N is simple and has minimal degree n, say. If there is a subgroup U of index n ⋅ |N| in G that intersects N trivially then the minimal degree of G is n ⋅ |N|. (This is used for the case that N is central in G and N × U occurs as a subgroup of G.)  If we know a subgroup of G whose minimal degree is n, say, and if we know either (a class fusion from) a core-free subgroup of index n in G or a faithful permutation representation of degree n for G then n is the minimal degree for G. (This happens often for tables of almost simple groups.) atlasrep/doc/chap7.txt0000644000175000017500000026620712701177205013342 0ustar samsam 7 Technicalities of the AtlasRep Package This chapter describes those parts of the GAP interface to the ATLAS of Group Representations that do not belong to the user interface (cf. Chapter 3). Besides global variables used for administrational purposes (see Section 7.1) and several sanity checks (see Section 7.8), they can be regarded as the interface between the data actually contained in the files and the corresponding GAP objects (see Section 7.2, 7.3, 7.4, and 7.5), and the interface between the remote and the local version of the database (see Section 7.6 and 7.7). The former interface contains functions to read and write files in MeatAxe format, which may be interesting for users familiar with MeatAxe standalones (see for example [Rin]). Other low level functions may be undocumented in the sense that they are not described in this manual. Users interested in them may look at the actual implementation in the gap directory of the package, but it may happen that this will be changed in future versions of the package. 7.1 Global Variables Used by the AtlasRep Package For debugging purposes, the functions from the GAP interface to the ATLAS of Group Representations print information depending on the info level of the info classes InfoAtlasRep (7.1-1), InfoCMeatAxe (7.1-2), and InfoBBox (7.1-3) (cf. 'Reference: Info Functions'). The info level of an info class can be changed using SetInfoLevel (Reference: SetInfoLevel). For example, the info level of InfoAtlasRep (7.1-1) can be set to the nonnegative integer n using SetInfoLevel( InfoAtlasRep, n ). Information about files being read can be obtained by setting the value of the global variable InfoRead1 to Print (Reference: Print). 7.1-1 InfoAtlasRep InfoAtlasRep info class If the info level of InfoAtlasRep is at least 1 then information about fail results of functions in the AtlasRep package is printed. If the info level is at least 2 then information about calls to external programs is printed. The default level is 0, no information is printed on this level. 7.1-2 InfoCMeatAxe InfoCMeatAxe info class If the info level of InfoCMeatAxe is at least 1 then information about fail results of C-MeatAxe functions is printed. The default level is zero, no information is printed on this level. 7.1-3 InfoBBox InfoBBox info class If the info level of InfoBBox is at least 1 then information about fail results of functions dealing with black box programs (see Section 6.2) is printed. The default level is 0, no information is printed on this level. 7.1-4 CMeatAxe.FastRead CMeatAxe.FastRead global variable If this component is bound and has the value true then ScanMeatAxeFile (7.3-1) reads text files via StringFile (GAPDoc: StringFile). Otherwise each file containing a matrix over a finite field is read line by line via ReadLine (Reference: ReadLine), and the GAP matrix is constructed line by line, in a compressed representation (see 'Reference: Row Vectors over Finite Fields' and 'Reference: Matrices over Finite Fields'), which makes it possible to read large matrices in a reasonable amount of space. The StringFile (GAPDoc: StringFile) approach is faster but needs more intermediate space when text files containing matrices over finite fields are read. 7.1-5 AGR AGR global variable is a record whose components are functions and data that are used by the higher level interface functions. 7.1-6 AtlasOfGroupRepresentationsInfo AtlasOfGroupRepresentationsInfo global variable This is a record that is defined in the file gap/types.g of the package, with the following components. Components corresponding to user parameters (see Section 4.3) are remote a boolean that controls what files are available; if the value is true then GAP is allowed to try remotely accessing any ATLAS file from the servers (see below) and thus all files listed in the global table of contents are available, if the value is false then GAP may access only those files that are stored in the database directories of the local GAP installation (see Section 4.3-1), servers a list of pairs [ server, path ], where server is a string denoting the http address of a server where files can be fetched that are not stored in the local database, and path is a string describing the path where the data directories on the server reside, wget controls whether the GAP package IO [Neu14] or the external program wget is used to fetch data files, see 4.3-3, compress a boolean that controls whether MeatAxe format text files are stored in compressed form; if the value is true then these files are compressed with gzip after they have been fetched from a server, see Section 4.3-4, displayFunction the function that is used by DisplayAtlasInfo (3.5-1) for printing the formatted data, see Section 4.3-5, accessFunctions a list of records, each describing how to access the data files, see Sections 4.3-6 and 7.2, and markprivate a string used in DisplayAtlasInfo (3.5-1) to mark private data, see Section  5.2. System components (which are computed automatically) are GAPnames a list of pairs, each containing the GAP name and the ATLAS-file name of a group, see Section 3.2, groupnames a list of triples, each containing at the first position the name of the directory on each server that contains data about the group G in question, at the second position the name of the (usually simple) group for which a subdirectory exists that contains the data about G, and at the third position the ATLAS-file name used for G, see Section 7.6, private a list of pairs of strings used for administrating private data (see Chapter 5); the value is changed by AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1) and AtlasOfGroupRepresentationsForgetPrivateDirectory (5.1-2), characterinfo, permrepinfo, ringinfo additional information about representations, concerning the characters afforded, the point stabilizers of permutation representations, and the ring of definition of matrix representations; this information is used by DisplayAtlasInfo (3.5-1), TableOfContents a record with at most the components local, remote, types, and the names of private data directories. The values of the components local and remote can be computed automatically by ReloadAtlasTableOfContents (4.2-1), the value of the component types is set in AGR.DeclareDataType (7.5-1), and the values of the components for local data directories are created by AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1). 7.2 How to Customize the Access to Data files We discuss the three steps listed in Section 4.3-6. For creating an overview of the locally available data, the first of these steps must be available independent of actually accessing the file in question. For updating the local copy of the server data, the second of the above steps must be available independent of the third one. Therefore, the package provides the possibility to extend the default behaviour by adding new records to the accessFunctions component of AtlasOfGroupRepresentationsInfo (7.1-6). Its components are as follows.  location( filename, groupname, dirname, type )  Let filename be the default filename (without path) of the required file, or a list of such filenames. Let groupname be the ATLAS name of the group to which the data in these files belong, dirname be the default directory name (one of "datagens", "dataword", or the dirid value of a private directory, see AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1)), and type be the data type (see AGR.DeclareDataType (7.5-1)). This function must return either the absolute path(s) where the mechanism implemented by the current record expects the local version of the given file(s), or fail if this function does not feel responsible for these file(s). In the latter case, the location function in another record will know a path. The file(s) is/are regarded as not locally available if all installed location functions return either fail or paths of nonexisting files, in the sense of IsExistingFile (Reference: IsExistingFile).  fetch( filepath, filename, groupname, dirname, type )  This function is called when a file is not locally available and if the location function in the current record has returned a path or a list of paths. The arguments dirname and type must be the same as for the location function, and filepath and filename must be strings (not lists of strings). The return value must be true if the function succeeded with making the file locally available (including postprocessing if applicable), and false otherwise. contents( filepath, type ) This function is called when the location function in the current record has returned the path(s) filepath, and if either these are paths of existing files or the fetch function in the current record has been called for these paths, and the return value was true. The argument type must be the same as for the location and the fetch functions. The return value must be the contents of the file(s), in the sense that the GAP matrix, matrix list, permutation, permutation list, or program described by the file(s) is returned. This means that besides reading the file(s) via the appropriate function, interpreting the contents may be necessary. description This must be a short string that describes for which kinds of files the functions in the current record are intended, which file formats are supported etc. The value is used by AtlasOfGroupRepresentationsUserParameters (4.3-8). active The current accessFunctions record is ignored by AGR.FileContents (7.6-2) if the value is not true. In AGR.FileContents (7.6-2), the records in the accessFunctions component of AtlasOfGroupRepresentationsInfo (7.1-6) are considered in reversed order. By default, the accessFunctions list contains three records. Only for one of them, the active component has the value true. One of the other two records can be used to change the access to permutation representations and to matrix representations over finite fields such that MeatAxe binary files are transferred and read instead of MeatAxe text files. The fourth record makes sense only if a local server is accessible, i. e., if the server files can be read directly, without being transferred into the data directories of the package. 7.3 Reading and Writing MeatAxe Format Files 7.3-1 ScanMeatAxeFile ScanMeatAxeFile( filename[, q][, "string"] )  function Returns: the matrix or list of permutations stored in the file or encoded by the string. Let filename be the name of a GAP readable file (see 'Reference: Filename') that contains a matrix or a permutation or a list of permutations in MeatAxe text format (see the section about the program zcv in the C-MeatAxe documentation [Rin]), and let q be a prime power. ScanMeatAxeFile returns the corresponding GAP matrix or list of permutations, respectively. If the file contains a matrix then the way how it is read by ScanMeatAxeFile depends on the value of the global variable CMeatAxe.FastRead (7.1-4). If the parameter q is given then the result matrix is represented over the field with q elements, the default for q is the field size stored in the file. If the file contains a list of permutations then it is read with StringFile (GAPDoc: StringFile); the parameter q, if given, is ignored in this case. If the string "string" is entered as the third argument then the first argument must be a string as obtained by reading a file in MeatAxe text format as a text stream (see InputTextFile (Reference: InputTextFile)). Also in this case, ScanMeatAxeFile returns the corresponding GAP matrix or list of permutations, respectively. 7.3-2 MeatAxeString MeatAxeString( mat, q )  operation MeatAxeString( perms, degree )  operation MeatAxeString( perm, q, dims )  operation Returns: a string encoding the GAP objects given as input in MeatAxe format. In the first form, for a matrix mat whose entries lie in the finite field with q elements, MeatAxeString returns a string that encodes mat as a matrix over GF(q), in MeatAxe text format. In the second form, for a nonempty list perms of permutations that move only points up to the positive integer degree, MeatAxeString returns a string that encodes perms as permutations of degree degree, in C-MeatAxe text format (see [Rin]). In the third form, for a permutation perm with largest moved point n, say, a prime power q, and a list dims of length two containing two positive integers larger than or equal to n, MeatAxeString returns a string that encodes perm as a matrix over GF(q), of dimensions dims, whose first n rows and columns describe the permutation matrix corresponding to perm, and the remaining rows and columns are zero. When strings are printed to files using PrintTo (Reference: PrintTo) or AppendTo (Reference: AppendTo) then line breaks are inserted whenever lines exceed the number of characters given by the second entry of the list returned by SizeScreen (Reference: SizeScreen), see 'Reference: Operations for Output Streams'. This behaviour is not desirable for creating data files. So the recommended functions for printing the result of MeatAxeString to a file are FileString (GAPDoc: FileString) and WriteAll (Reference: WriteAll).  Example  gap> mat:= [ [ 1, -1 ], [ 0, 1 ] ] * Z(3)^0;; gap> str:= MeatAxeString( mat, 3 ); "1 3 2 2\n12\n01\n" gap> mat = ScanMeatAxeFile( str, "string" ); true gap> str:= MeatAxeString( mat, 9 ); "1 9 2 2\n12\n01\n" gap> mat = ScanMeatAxeFile( str, "string" ); true gap> perms:= [ (1,2,3)(5,6) ];; gap> str:= MeatAxeString( perms, 6 ); "12 1 6 1\n2\n3\n1\n4\n6\n5\n" gap> perms = ScanMeatAxeFile( str, "string" ); true gap> str:= MeatAxeString( perms, 8 ); "12 1 8 1\n2\n3\n1\n4\n6\n5\n7\n8\n" gap> perms = ScanMeatAxeFile( str, "string" ); true  Note that the output of MeatAxeString in the case of permutation matrices depends on the user preference WriteMeatAxeFilesOfMode2.  Example  gap> perm:= (1,2,4);; gap> str:= MeatAxeString( perm, 3, [ 5, 6 ] ); "2 3 5 6\n2\n4\n3\n1\n5\n" gap> mat:= ScanMeatAxeFile( str, "string" );; Print( mat, "\n" ); [ [ 0*Z(3), Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ],   [ 0*Z(3), 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3), 0*Z(3) ],   [ 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3) ],   [ Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ],   [ 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3) ] ] gap> pref:= UserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2" );; gap> SetUserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2", true ); gap> MeatAxeString( mat, 3 ) = str; true gap> SetUserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2", false ); gap> MeatAxeString( mat, 3 ); "1 3 5 6\n010000\n000100\n001000\n100000\n000010\n" gap> SetUserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2", pref );  7.3-3 FFList FFList( F )  function Returns: a list of elements in the given finite field. FFLists global variable FFList is a utility program for the conversion of vectors and matrices from MeatAxe format to GAP format and vice versa. It is used by ScanMeatAxeFile (7.3-1) and MeatAxeString (7.3-2). For a finite field F, FFList returns a list l giving the correspondence between the MeatAxe numbering and the GAP numbering of the elements in F. The element of F corresponding to MeatAxe number n is l[ n+1 ], and the MeatAxe number of the field element z is Position( l, z ) - 1. The global variable FFLists is used to store the information about F once it has been computed.  Example  gap> FFList( GF(4) ); [ 0*Z(2), Z(2)^0, Z(2^2), Z(2^2)^2 ] gap> IsBound( FFLists[4] ); true  7.3-4 CMtxBinaryFFMatOrPerm CMtxBinaryFFMatOrPerm( elm, def, outfile[, base] )  function Let the pair (elm, def) be either of the form (M, q) where M is a matrix over a finite field F, say, with q ≤ 256 elements, or of the form (π, n) where π is a permutation with largest moved point at most n. Let outfile be a string. CMtxBinaryFFMatOrPerm writes the C-MeatAxe binary format of M, viewed as a matrix over F, or of π, viewed as a permutation on the points up to n, to the file with name outfile. In the case of a permutation π, the optional argument base prescribes whether the binary file contains the points from 0 to deg- 1 (base= 0, supported by version 2.4 of the C-MeatAxe) or the points from 1 to deg (base= 1, supported by older versions of the C-MeatAxe). The default for base is given by the value of the user preference BaseOfMeatAxePermutation, see Section 4.3-11. (The binary format is described in the C-MeatAxe manual [Rin].)  Example  gap> tmpdir:= DirectoryTemporary();; gap> mat:= Filename( tmpdir, "mat" );; gap> q:= 4;; gap> mats:= GeneratorsOfGroup( GL(10,q) );; gap> CMtxBinaryFFMatOrPerm( mats[1], q, Concatenation( mat, "1" ) ); gap> CMtxBinaryFFMatOrPerm( mats[2], q, Concatenation( mat, "2" ) ); gap> prm:= Filename( tmpdir, "prm" );; gap> n:= 200;; gap> perms:= GeneratorsOfGroup( SymmetricGroup( n ) );; gap> CMtxBinaryFFMatOrPerm( perms[1], n, Concatenation( prm, "1" ) ); gap> CMtxBinaryFFMatOrPerm( perms[2], n, Concatenation( prm, "2" ) ); gap> CMtxBinaryFFMatOrPerm( perms[1], n, Concatenation( prm, "1a" ), 0 ); gap> CMtxBinaryFFMatOrPerm( perms[2], n, Concatenation( prm, "2b" ), 1 );  7.3-5 FFMatOrPermCMtxBinary FFMatOrPermCMtxBinary( fname )  function Returns: the matrix or permutation stored in the file. Let fname be the name of a file that contains the C-MeatAxe binary format of a matrix over a finite field or of a permutation, as is described in [Rin]. FFMatOrPermCMtxBinary returns the corresponding GAP matrix or permutation.  Example  gap> FFMatOrPermCMtxBinary( Concatenation( mat, "1" ) ) = mats[1]; true gap> FFMatOrPermCMtxBinary( Concatenation( mat, "2" ) ) = mats[2]; true gap> FFMatOrPermCMtxBinary( Concatenation( prm, "1" ) ) = perms[1]; true gap> FFMatOrPermCMtxBinary( Concatenation( prm, "2" ) ) = perms[2]; true gap> FFMatOrPermCMtxBinary( Concatenation( prm, "1a" ) ) = perms[1]; true gap> FFMatOrPermCMtxBinary( Concatenation( prm, "2b" ) ) = perms[2]; true  7.4 Reading and Writing ATLAS Straight Line Programs 7.4-1 ScanStraightLineProgram ScanStraightLineProgram( filename[, "string"] )  function Returns: a record containing the straight line program. Let filename be the name of a file that contains a straight line program in the sense that it consists only of lines in the following form. #anything lines starting with a hash sign # are ignored, echo anything lines starting with echo are ignored for the program component of the result record (see below), they are used to set up the bijection between the labels used in the program and conjugacy class names in the case that the program computes dedicated class representatives, inp n means that there are n inputs, referred to via the labels 1, 2, ..., n, inp k a1 a2 ... ak means that the next k inputs are referred to via the labels a1, a2, ..., ak, cjr a b means that a is replaced by b^(-1) * a * b, cj a b c means that c is defined as b^(-1) * a * b, com a b c means that c is defined as a^(-1) * b^(-1) * a * b, iv a b means that b is defined as a^(-1), mu a b c means that c is defined as a * b, pwr a b c means that c is defined as b^a, cp a b means that b is defined as a copy of a, oup l means that there are l outputs, stored in the labels 1, 2, ..., l, and oup l b1 b2 ... bl means that the next l outputs are stored in the labels b1, b2, ... bl. Each of the labels a, b, c can be any nonempty sequence of digits and alphabet characters, except that the first argument of pwr must denote an integer. If the inp or oup statements are missing then the input or output, respectively, is assumed to be given by the labels 1 and 2. There can be multiple inp lines at the beginning of the program and multiple oup lines at the end of the program. Only the first inp or oup line may omit the names of the elements. For example, an empty file filename or an empty string string represent a straight line program with two inputs that are returned as outputs. No command except cjr may overwrite its own input. For example, the line mu a b a is not legal. (This is not checked.) ScanStraightLineProgram returns a record containing as the value of its component program the corresponding GAP straight line program (see IsStraightLineProgram (Reference: IsStraightLineProgram)) if the input string satisfies the syntax rules stated above, and returns fail otherwise. In the latter case, information about the first corrupted line of the program is printed if the info level of InfoCMeatAxe (7.1-2) is at least 1. If the string "string" is entered as the second argument then the first argument must be a string as obtained by reading a file in MeatAxe text format as a text stream (see InputTextFile (Reference: InputTextFile)). Also in this case, ScanStraightLineProgram returns either a record with the corresponding GAP straight line program or fail. If the input describes a straight line program that computes certain class representatives of the group in question then the result record also contains the component outputs. Its value is a list of strings, the entry at position i denoting the name of the class in which the i output of the straight line program lies; see Section 3.4 for the definition of the class names that occur. Such straight line programs must end with a sequence of output specifications of the following form.  Example  echo "Classes 1A 2A 3A 5A 5B" oup 5 3 1 2 4 5  This example means that the list of outputs of the program contains elements of the classes 1A, 2A, 3A, 5A, and 5B (in this order), and that inside the program, these elements are referred to by the five names 3, 1, 2, 4, and 5. 7.4-2 AtlasStringOfProgram AtlasStringOfProgram( prog[, outputnames] )  function AtlasStringOfProgram( prog[, "mtx"] )  function Returns: a string encoding the straight line program/decision in the format used in ATLAS files. For a straight line program or straight line decision prog (see IsStraightLineProgram (Reference: IsStraightLineProgram) and IsStraightLineDecision (6.1-1)), this function returns a string describing the input format of an equivalent straight line program or straight line decision as used in the ATLAS of Group Representations, that is, the lines are of the form described in ScanStraightLineProgram (7.4-1). A list of strings that is given as the optional second argument outputnames is interpreted as the class names corresponding to the outputs; this argument has the effect that appropriate echo statements appear in the result string. If the string "mtx" is given as the second argument then the result has the format used in the C-MeatAxe (see [Rin]) rather than the format described in Section 7.4. (Note that the C-MeatAxe format does not make sense if the argument outputnames is given, and that this format does not support inp and oup statements.) The argument prog must not be a black box program (see IsBBoxProgram (6.2-1)).  Example  gap> str:= "inp 2\nmu 1 2 3\nmu 3 1 2\niv 2 1\noup 2 1 2";; gap> prg:= ScanStraightLineProgram( str, "string" ); rec( program := ) gap> prg:= prg.program;; gap> Display( prg ); # input: r:= [ g1, g2 ]; # program: r[3]:= r[1]*r[2]; r[2]:= r[3]*r[1]; r[1]:= r[2]^-1; # return values: [ r[1], r[2] ] gap> StringOfResultOfStraightLineProgram( prg, [ "a", "b" ] ); "[ (aba)^-1, aba ]" gap> AtlasStringOfProgram( prg ); "inp 2\nmu 1 2 3\nmu 3 1 2\niv 2 1\noup 2\n" gap> prg:= StraightLineProgram( "(a^2b^3)^-1", [ "a", "b" ] );  gap> Print( AtlasStringOfProgram( prg ) ); inp 2 pwr 2 1 4 pwr 3 2 5 mu 4 5 3 iv 3 4 oup 1 4 gap> prg:= StraightLineProgram( [ [2,3], [ [3,1,1,4], [1,2,3,1] ] ], 2 );  gap> Print( AtlasStringOfProgram( prg ) ); inp 2 pwr 3 2 3 pwr 4 1 5 mu 3 5 4 pwr 2 1 6 mu 6 3 5 oup 2 4 5 gap> Print( AtlasStringOfProgram( prg, "mtx" ) ); # inputs are expected in 1 2 zsm pwr3 2 3 zsm pwr4 1 5 zmu 3 5 4 zsm pwr2 1 6 zmu 6 3 5 echo "outputs are in 4 5" gap> str:= "inp 2\nchor 1 2\nchor 2 3\nmu 1 2 3\nchor 3 5";; gap> prg:= ScanStraightLineDecision( str );; gap> AtlasStringOfProgram( prg.program ); "inp 2\nchor 1 2\nchor 2 3\nmu 1 2 3\nchor 3 5\n"  7.5 Data Types Used in the ATLAS of Group Representations Each representation or program that is administrated by the AtlasRep package belongs to a unique data type. Informally, examples of data types are permutation representation, matrix representation over the integers, or straight line program for computing class representatives. The idea is that for each data type, there can be  a column of its own in the output produced by DisplayAtlasInfo (3.5-1) when called without arguments or with only argument a list of group names,  a line format of its own for the output produced by DisplayAtlasInfo (3.5-1) when called with first argument a group name,  an input format of its own for AtlasProgram (3.5-3),  an input format of its own for OneAtlasGeneratingSetInfo (3.5-5), and  specific tests for the data of this data type; these functions are used by the global tests described in Section 7.8. Formally, a data type is defined by a record whose components are used by the interface functions. The details are described in the following. 7.5-1 AGR.DeclareDataType AGR.DeclareDataType( kind, name, record )  function Let kind be one of the strings "rep" or "prg", and record be a record. AGR.DeclareDataType declares a new data type of representations (if kind is "rep") or of programs (if kind is "prg"). For each group used in the AtlasRep package, the record that contains the information about the data will have a component name whose value is a list containing the data about the new type. Examples of name are "perm", "matff", and "classes". Mandatory components of record are FilenameFormat This defines the format of the filenames containing data of the type in question. The value must be a list that can be used as the second argument of AGR.ParseFilenameFormat (7.6-1), such that only filenames of the type in question match. (It is not checked whether this detection function matches exactly one type, so declaring a new type needs care.) AddFileInfo This defines the information stored in the table of contents for the data of the type. The value must be a function that takes three arguments (the current list of data for the type and the given group, a list returned by AGR.ParseFilenameFormat (7.6-1) for the given type, and a filename). This function adds the necessary parts of the data entry to the list, and returns true if the data belongs to the type, otherwise false is returned; note that the latter case occurs if the filename matches the format description but additional conditions on the parts of the name are not satisfied (for example integer parts may be required to be positive or prime powers). ReadAndInterpretDefault This is the function that does the work for the default contents value of the accessFunctions component of AtlasOfGroupRepresentationsInfo (7.1-6), see Section 7.2. This function must take a path and return the GAP object given by this file. AddDescribingComponents (for rep only) This function takes two arguments, a record (that will be returned by AtlasGenerators (3.5-2), OneAtlasGeneratingSetInfo (3.5-5), or AllAtlasGeneratingSetInfos (3.5-6)) and the type record record. It sets the components p, dim, id, and ring that are promised for return values of the abovementioned three functions. DisplayGroup (for rep only) This defines the format of the lines printed by DisplayAtlasInfo (3.5-1) for a given group. The value must be a function that takes a list as returned by the function given in the component AddFileInfo, and returns the string to be printed for the representation in question. Optional components of record are DisplayOverviewInfo This is used to introduce a new column in the output of DisplayAtlasInfo (3.5-1) when this is called without arguments or with a list of group names as its only argument. The value must be a list of length three, containing at its first position a string used as the header of the column, at its second position one of the strings "r" or "l", denoting right or left aligned column entries, and at its third position a function that takes two arguments (a list of tables of contents of the AtlasRep package and a group name), and returns a list of length two, containing the string to be printed as the column value and true or false, depending on whether private data is involved or not. (The default is fail, indicating that no new column shall be printed.) DisplayPRG (for prg only) This is used in DisplayAtlasInfo (3.5-1) for ATLAS programs. The value must be a function that takes four arguments (a list of tables of contents to examine, the name of the given group, a list of integers or true for the required standardization, and a list of all available standardizations), and returns the list of lines (strings) to be printed as the information about the available programs of the current type and for the given group. (The default is to return an empty list.) AccessGroupCondition (for rep only) This is used in DisplayAtlasInfo (3.5-1) and OneAtlasGeneratingSetInfo (3.5-5). The value must be a function that takes two arguments (a list as returned by OneAtlasGeneratingSetInfo (3.5-5), and a list of conditions), and returns true or false, depending on whether the first argument satisfies the conditions. (The default value is ReturnFalse (Reference: ReturnFalse).) The function must support conditions such as [ IsPermGroup, true ] and [ NrMovedPoints, [ 5, 6 ] ], in general a list of functions followed by a prescribed value, a list of prescribed values, another (unary) function, or the string "minimal". For an overview of the interesting functions, see DisplayAtlasInfo (3.5-1). AccessPRG (for prg only) This is used in AtlasProgram (3.5-3). The value must be a function that takes three arguments (the record with the information about the given group in the current table of contents, an integer or a list of integers or true for the required standardization, and a list of conditions given by the optional arguments of AtlasProgram (3.5-3)), and returns either fail or a list that together with the group name forms the identifier of a program that matches the conditions. (The default value is ReturnFail (Reference: ReturnFail).) AtlasProgram (for prg only) This is used in AtlasProgram (3.5-3) to create the result value from the identifier. (The default value is AtlasProgramDefault, which works whenever the second entry of the identifier is the filename; this is not the case for example if the program is the composition of several programs.) AtlasProgramInfo (for prg only) This is used in AtlasProgramInfo (3.5-4) to create the result value from the identifier. (The default value is AtlasProgramDefault.) TOCEntryString This is used in StoreAtlasTableOfContents (4.2-2). The value must be a function that takes two arguments (the name name of the type and a list as returned by AGR.ParseFilenameFormat (7.6-1) and returns a string that describes the appropriate function call. (The default value is TOCEntryStringDefault.) PostprocessFileInfo This is used in the construction of a table of contents via ReloadAtlasTableOfContents (4.2-1), for testing or rearranging the data of the current table of contents. The value must be a function that takes two arguments, the table of contents record and the record in it that belongs to one fixed group. (The default function does nothing.) SortTOCEntries This is used in the construction of a table of contents (see ReloadAtlasTableOfContents (4.2-1)), for sorting the entries after they have been added and after the value of the component PostprocessFileInfo has been called. The value must be a function that takes a list as returned by AGR.ParseFilenameFormat (7.6-1), and returns the sorting key. (There is no default value, which means that no sorting is needed.) TestFileHeaders (for rep only) This is used in the function AGR.Test.FileHeaders. The value must be a function that takes the same four arguments as AGR.FileContents (7.6-2), except that the first argument "datagens" can be replaced by "local" and that the third argument is a list as returned by AGR.ParseFilenameFormat (7.6-1). (The default value is ReturnTrue (Reference: ReturnTrue).) TestFiles (for rep only) This is used in the function AGR.Test.Files. The format of the value and the default are the same as for the value of the component TestFileHeaders. TestWords (for prg only) This is used in the function AGR.Test.Words. The value must be a function that takes five arguments where the first four are the same arguments as for AGR.FileContents (7.6-2), except that the first argument "dataword" can be replaced by "local", and the fifth argument is true or false, indicating verbose mode or not. 7.6 Filenames Used in the ATLAS of Group Representations The data of each local GAP version of the ATLAS of Group Representations are either private (see Chapter 5) or are stored in the two directories datagens and dataword. In the following, we describe the format of filenames in the latter two directories, as a reference of the official part of the ATLAS. In the directory datagens, the generators for the representations available are stored, the directory dataword contains the programs to compute conjugacy class representatives, generators of maximal subgroups, images of generators under automorphisms of a given group G from standard generators of G, and to check and compute standard generators (see Section 3.3). The name of each data file in the ATLAS of Group Representations describes the contents of the file. This section lists the definitions of the filenames used. Each filename consists of two parts, separated by a minus sign -. The first part is always of the form groupnameGi, where the integer i denotes the i-th set of standard generators for the group G, say, with ATLAS-file name groupname (see 3.2). The translations of the name groupname to the name(s) used within GAP is given by the component GAPnames of AtlasOfGroupRepresentationsInfo (7.1-6). The filenames in the directory dataword have one of the following forms. In each of these cases, the suffix Wn means that n is the version number of the program. groupnameGi-cycWn In this case, the file contains a straight line program that returns a list of representatives of generators of maximally cyclic subgroups of G. An example is Co1G1-cycW1. groupnameGi-cclsWn In this case, the file contains a straight line program that returns a list of conjugacy class representatives of G. An example is RuG1-cclsW1. groupnameGicycWn-cclsWm In this case, the file contains a straight line program that takes the return value of the program in the file groupnameGi-cycWn (see above), and returns a list of conjugacy class representatives of G. An example is M11G1cycW1-cclsW1. groupnameGi-maxkWn In this case, the file contains a straight line program that takes generators of G w.r.t. the i-th set of standard generators, and returns a list of generators (in general not standard generators) for a subgroup U in the k-th class of maximal subgroups of G. An example is J1G1-max7W1. groupnameGimaxkWn-subgroupnameGjWm In this case, the file contains a straight line program that takes the return value of the program in the file groupnameGi-maxkWn (see above), which are generators for a group U, say; subgroupname is a name for U, and the return value is a list of standard generators for U, w.r.t. the j-th set of standard generators. (Of course this implies that the groups in the k-th class of maximal subgroups of G are isomorphic to the group with name subgroupname.) An example is J1G1max1W1-L211G1W1; the first class of maximal subgroups of the Janko group J_1 consists of groups isomorphic to the linear group L_2(11), for which standard generators are defined. groupnameGi-aoutnameWn In this case, the file contains a straight line program that takes generators of G w.r.t. the i-th set of standard generators, and returns the list of their images under the outer automorphism α of G given by the name outname; if this name is empty then α is the unique nontrivial outer automorphism of G; if it is a positive integer k then α is a generator of the unique cyclic order k subgroup of the outer automorphism group of G; if it is of the form 2_1 or 2a, 4_2 or 4b, 3_3 or 3c ... then α generates the cyclic group of automorphisms induced on G by G.2_1, G.4_2, G.3_3 ...; finally, if it is of the form kpd, with k one of the above forms and d an integer then d denotes the number of dashes appended to the automorphism described by k; if d = 1 then d can be omitted. Examples are A5G1-aW1, L34G1-a2_1W1, U43G1-a2_3pW1, and O8p3G1-a2_2p5W1; these file names describe the outer order 2 automorphism of A_5 (induced by the action of S_5) and the order 2 automorphisms of L_3(4), U_4(3), and O_8^+(3) induced by the actions of L_3(4).2_1, U_4(3).2_2^', and O_8^+(3).2_2^{'''''}, respectively. groupnameGi-GjWn In this case, the file contains a straight line program that takes generators of G w.r.t. the i-th set of standard generators, and returns standard generators of G w.r.t. the j-th set of standard generators. An example is L35G1-G2W1. groupnameGi-checkn In this case, the file contains a straight line decision that takes generators of G, and returns true if these generators are standard generators w.r.t. the i-th standardization, and false otherwise. groupnameGi-Pn In this case, the file contains a straight line decision that takes some group elements, and returns true if these elements are standard generators for G, w.r.t. the i-th standardization, and false otherwise. groupnameGi-findn In this case, the file contains a black box program that takes a group, and returns (if it is successful) a set of standard generators for G, w.r.t. the i-th standardization. groupnameGi-XdescrWn In this case, the file contains a straight line program that takes generators of G w.r.t. the i-th set of standard generators, and whose return value corresponds to descr. This format is used only in private extensions (see Chapter 5), such a script can be accessed with descr as the third argument of AtlasProgram (3.5-3). The filenames in the directory datagens have one of the following forms. In each of these cases, id is a (possibly empty) string that starts with a lowercase alphabet letter (see IsLowerAlphaChar (Reference: IsLowerAlphaChar)), and m is a nonnegative integer, meaning that the generators are written w.r.t. the m-th basis (the meaning is defined by the ATLAS developers). groupnameGi-fqrdimidBm.mnr a file in MeatAxe text file format containing the nr-th generator of a matrix representation over the field with q elements, of dimension dim. An example is S5G1-f2r4aB0.m1. groupnameGi-pnidBm.mnr a file in MeatAxe text file format containing the nr-th generator of a permutation representation on n points. An example is M11G1-p11B0.m1. groupnameGi-ArdimidBm.g a GAP readable file containing all generators of a matrix representation of dimension dim over an algebraic number field not specified further. An example is A5G1-Ar3aB0.g. groupnameGi-ZrdimidBm.g a GAP readable file containing all generators of a matrix representation over the integers, of dimension dim. An example is A5G1-Zr4B0.g. groupnameGi-HrdimidBm.g a GAP readable file containing all generators of a matrix representation over a quaternion algebra over an algebraic number field, of dimension dim. An example is 2A6G1-Hr2aB0.g. groupnameGi-ZnrdimidBm.g a GAP readable file containing all generators of a matrix representation of dimension dim over the ring of integers mod n. An example is 2A8G1-Z4r4aB0.g. 7.6-1 AGR.ParseFilenameFormat AGR.ParseFilenameFormat( string, format )  function Returns: a list of strings and integers if string matches format, and fail otherwise. Let string be a filename, and format be a list [ [ c_1, c_2, ..., c_n ], [ f_1, f_2, ..., f_n ] ] such that each entry c_i is a list of strings and of functions that take a character as their argument and return true or false, and such that each entry f_i is a function for parsing a filename, such as the currently undocumented functions ParseForwards and ParseBackwards. AGR.ParseFilenameFormat returns a list of strings and integers such that the concatenation of their String (Reference: String) values yields string if string matches format, and fail otherwise. Matching is defined as follows. Splitting string at each minus character (-) yields m parts s_1, s_2, ..., s_m. The string string matches format if s_i matches the conditions in c_i, for 1 ≤ i ≤ n, in the sense that applying f_i to s_i and c_i yields a non-fail result.  Example  gap> format:= [ [ [ IsChar, "G", IsDigitChar ], >  [ "p", IsDigitChar, AGR.IsLowerAlphaOrDigitChar, >  "B", IsDigitChar, ".m", IsDigitChar ] ], >  [ ParseBackwards, ParseForwards ] ];; gap> AGR.ParseFilenameFormat( "A6G1-p10B0.m1", format ); [ "A6", "G", 1, "p", 10, "", "B", 0, ".m", 1 ] gap> AGR.ParseFilenameFormat( "A6G1-p15aB0.m1", format ); [ "A6", "G", 1, "p", 15, "a", "B", 0, ".m", 1 ] gap> AGR.ParseFilenameFormat( "A6G1-f2r16B0.m1", format ); fail  7.6-2 AGR.FileContents AGR.FileContents( dirname, groupname, filename, type )  function Returns: the GAP object obtained from reading and interpreting the file(s) with name(s) filename. Let dirname and groupname be strings, filename be a string or a list of strings, and type be a data type (see AGR.DeclareDataType (7.5-1)). dirname must be one of "datagens", "dataword", or the dirid value of a private directory, see AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1). If groupname is the ATLAS-file name of a group G (see Section 3.2), and if filename is either the name of an accessible file in the dirname directory of the ATLAS, or a list of such filenames, with data concerning G and for the data type type, then AGR.FileContents returns the contents of the corresponding file(s), in the sense that the file(s) (or equivalent ones, see Section 4.3-6) is/are read, and the result is interpreted if necessary; otherwise fail is returned. Note that if filename refers to file(s) already stored in the dirname directory then AGR.FileContents does not check whether the table of contents of the ATLAS of Group Representations actually contains filename. 7.7 The Tables of Contents of the ATLAS of Group Representations The list of data currently available is stored in several tables of contents, one for the local GAP data, one for the data on remote servers, and one for each private data directory. These tables of contents are created by ReloadAtlasTableOfContents (4.2-1). It is assumed that the local data directories contain only files that are also available on servers. Private extensions to the database (cf. Section 4.5 and Chapter 5) cannot be handled by putting the data files into the local directories. Each table of contents is represented by a record whose components are the ATLAS-file names of the groups (see Section 3.2) and lastupdated, a string describing the date of the last update of this table of contents. The value for each group name is a record whose components are the names of those data types (see Section 7.5) for which data are available. Here are the administrational functions that are used to build the tables of contents. Some of them may be useful also for private extensions of the package (see Chapter 5). The following functions define group names, available representations, and straight line programs. AGR.GNAN( gapname, atlasname ) Called with two strings gapname (the GAP name of the group) and atlasname (the ATLAS name of the group), AGR.GNAN stores the information in the list AtlasOfGroupRepresentationsInfo.GAPnames, which defines the name mapping between the ATLAS names and GAP names of the groups. This function may be used also for private extensions of the database. An example of a valid call is AGR.GNAN("A5.2","S5"). AGR.GRP( dirname, simpname, groupname) Called with three strings, AGR.GRP stores in the groupname component of AtlasOfGroupRepresentationsInfo (7.1-6) in which path on the servers the data about the group with ATLAS name groupname can be found. This function is not intended for private extensions of the database. An example of a valid call is AGR.GRP("alt","A5","S5"). AGR.TOC( typename, filename, crcfile ) Called with two strings typename and filename, and a list crc of integers, AGR.TOC notifies an entry to the TableOfContents.remote component of AtlasOfGroupRepresentationsInfo (7.1-6), where typename must be the name of the data type to which the entry belongs, filename must be the prefix of the data file(s), and crc must be the list of CrcFile (Reference: CrcFile) values of the file(s). This function is not intended for private extensions of the database. An example of a valid call is AGR.TOC("perm","S5G1-p5B0.m",[-3581724,115937465]). The following functions add data about the groups and their standard generators. The function calls must be executed after the corresponding AGR.GNAN calls. AGR.GRS( gapname, size ) Called with the string gapname (the GAP name of the group) and the integer size (the order of the group), AGR.GRS stores this information in AtlasOfGroupRepresentationsInfo.GAPnames. An example of a valid call is AGR.GRS("A5.2",120). AGR.MXN( gapname, nrMaxes ) Called with the string gapname (the GAP name of the group) and the integer nrMaxes (the number of classes of maximal subgroups of the group), AGR.MXN stores the information in AtlasOfGroupRepresentationsInfo.GAPnames. An example of a valid call is AGR.MXN("A5.2",4). AGR.MXO( gapname, sizesMaxes ) Called with the string gapname (the GAP name of the group) and the list sizesMaxes (of subgroup orders of the classes of maximal subgroups of the group, not necessarily dense, in non-increasing order), AGR.MXO stores the information in AtlasOfGroupRepresentationsInfo.GAPnames. An example of a valid call is AGR.MXO("A5.2",[60,24,20,12]). AGR.MXS( gapname, structureMaxes ) Called with the string gapname (the GAP name of the group) and the list structureMaxes (of strings describing the structures of the maximal subgroups of the group, not necessarily dense), AGR.MXS stores the information in AtlasOfGroupRepresentationsInfo.GAPnames. An example of a valid call is AGR.MXS("A5.2",["A5","S4","5:4","S3x2"]). AGR.KERPRG( gapname, kernelProgram ) Called with the string gapname (the GAP name of the group) and the list kernelProgram (with entries the standardization of the group, the GAP name of a factor group, and the list of lines of a straight line program that computes generators of the kernel of the epimorphism from the group to the factor group), AGR.KERPRG stores the information in AtlasOfGroupRepresentationsInfo.GAPnames. An example of a valid call is AGR.KERPRG("2.J2",[1,"J2",[[[1,2]]]]). AGR.STDCOMP Called with the string gapname (the GAP name of the group) and the list factorCompatibility (with entries the standardization of the group, the GAP name of a factor group, the standardization of this factor group, and true or false, indicating whether mapping the standard generators for gapname to those of factgapname defines an epimorphism), AGR.STDCOMP stores the information in AtlasOfGroupRepresentationsInfo.GAPnames. An example of a valid call is AGR.STDCOMP("2.A5.2",[1,"A5.2",1,true]). The following functions add data about representations or straight line programs that are already known. The function calls must be executed after the corresponding AGR.TOC calls. AGR.RNG( repname, descr ) Called with two strings repname (denoting the name of a file containing the generators of a matrix representation over a ring that is not determined by the filename) and descr (describing this ring R, say), AGR.RNG adds the triple [ repname, descr, R ] to the list stored in the ringinfo component of AtlasOfGroupRepresentationsInfo (7.1-6). An example of a valid call is AGR.RNG("A5G1-Ar3aB0","Field([Sqrt(5)])"). AGR.TOCEXT( atlasname, std, maxnr, files ) Called with the string atlasname (the ATLAS name of the group), the positive integers std (the standardization) and maxnr (the number of the class of maximal subgroups), and the list files (of filenames of straight line programs for computing generators of the maxnr-th maximal subgroup, using a straight line program for a factor group plus perhaps some straight line program for computing kernel generators), AGR.TOCEXT stores the information in the maxext component of the atlasname component of the "remote" table of contents. An example of a valid call is AGR.TOCEXT("2A5",1,3,["A5G1-max3W1"]). AGR.API( repname, info ) Called with the string repname (denoting the name of a permutation representation) and the list info (describing the point stabilizer of this representation), AGR.API binds the component repname of the record AtlasOfGroupRepresentationsInfo.permrepinfo to info. info has the following entries.  At position 1, the transitivity is stored.  If the transitivity is zero then the second entry is the list of orbit lengths.  If the transitivity is positive then the second entry is the rank of the action.  If the transitivity is positive then the third entry is one of the strings "prim", "imprim", denoting primitivity or not.  If the transitivity is positive then the fourth entry is a string describing the structure of the point stabilizer. If the third entry is "imprim" then this description consists of a subgroup part and a maximal subgroup part, separated by " < ".  If the third entry is "prim" then the fifth entry is either "???" or it denotes the number of the class of maximal subgroups that are the point stabilizers. An example of a valid call is AGR.API("A5G1-p5B0",[3,2,"prim","A4",1]). AGR.CHAR( groupname, repname, char, pos[, charname] ) Called with the strings groupname (the GAP name of the group) and repname (denoting the name of the representation), the integer char (the characteristic of the representation), and pos (the position or list of positions of the irreducible constituent(s)), AGR.CHAR stores the information in AtlasOfGroupRepresentationsInfo.characterinfo. A string describing the character can be entered as charname. An example of a valid call is AGR.CHAR("M11","M11G1-p11B0",0,[1,2],"1a+10a"). These functions are used to create the initial table of contents for the server data of the AtlasRep package when the file gap/atlasprm.g of the package is read. 7.8 Sanity Checks for the ATLAS of Group Representations The fact that the ATLAS of Group Representations is designed as an open database (see Section 4.3-1) makes it especially desirable to have consistency checks available which can be run automatically whenever new data are added by the developers of the ATLAS. The tests described in Section 7.8-1 can be used also for data from private extensions of the package (see Chapter 5), Section 7.8-2 lists tests which do not have this property. All these tests apply only to the local table of contents (see Section 7.7) or to private extensions. So only those data files are checked that are actually available in the local GAP installation. No files are fetched from servers during these tests. The required space and time for running these tests depend on the amount of locally available data. The file tst/testall.g of the package contains Test (Reference: Test) statements for executing a collection of such sanity checks; one can run them by calling ReadPackage( "AtlasRep", "tst/testall.g" ). If no problem occurs then GAP prints only lines starting with one of the following.  Example  + Input file: + GAP4stones:  Some of the checks compute and verify additional data, such as information about point stabilizers of permutation representations. In these cases, output lines starting with #E are error messages that point to inconsistencies, whereas output lines starting with #I inform about data that have been computed and were not yet stored, or about stored data that were not verified. The examples in the package manual form a part of the tests, they are collected in the file tst/docxpl.tst of the package. 7.8-1 Sanity Checks for a Table of Contents The following tests can be used to check the data that belong to a given table of contents. Each of these tests is given by a function with optional argument tocid, the identifying string that had been entered as the second argument of AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1). The contents of the local dataword directory can be checked by entering "local", which is also the default for tocid. The function returns false if an error occurs, otherwise true. Currently the following tests of this kind are available. AGR.Test.Words( [tocid] ) processes all straight line programs that are stored in the directory with identifier tocid, using the function stored in the TestWords component of the data type in question. AGR.Test.FileHeaders( [tocid] ) checks whether all MeatAxe text format data files in the directory with identifier tocid have a header line that is consistent with the filename, and whether the contents of all GAP format data files in this directory is consistent with the contents of the file. AGR.Test.Files( [tocid] ) checks whether the MeatAxe text files that are stored in the directory with identifier tocid can be read with ScanMeatAxeFile (7.3-1) such that the result is not fail. The function does not check whether the first line of a MeatAxe text file is consistent with the filename, since this can be tested with AGR.Test.FileHeaders. AGR.Test.BinaryFormat( [tocid] ) checks whether all MeatAxe text format data files in the directory with identifier tocid satisfy that applying first CMtxBinaryFFMatOrPerm (7.3-4) and then FFMatOrPermCMtxBinary (7.3-5) yields the same object. AGR.Test.Primitivity( [tocid] ) checks the stored primitivity information for the permutation representations that are stored in the directory with identifier tocid. AGR.Test.Characters( [tocid] ) checks the stored character information for the matrix and permutation representations that are stored in the directory with identifier tocid. 7.8-2 Other Sanity Checks The tests described in this section are not intended for checking data from private extensions of the AtlasRep package. Each of the tests is given by a function without arguments that returns false if a contradiction was found during the test, and true otherwise. Additionally, certain messages are printed when contradictions between stored and computed data are found, when stored data cannot be verified computationally, or when the computations yield improvements of the stored data. Currently the following tests of this kind are available. AGR.Test.GroupOrders() checks whether the group orders stored in the GAPnames component of AtlasOfGroupRepresentationsInfo (7.1-6) coincide with the group orders computed from an ATLAS permutation representation of degree up to AGR.Test.MaxTestDegree, from the character table or the table of marks with the given name, or from the structure of the name. Supported is a splitting of the name at the first dot (.), where the two parts of the name are examined with the same criteria in order to derive the group order. AGR.Test.MaxesOrders() checks whether the orders of maximal subgroups stored in the component GAPnames of AtlasOfGroupRepresentationsInfo (7.1-6) coincide with the orders computed from the restriction of an ATLAS permutation representation of degree up to AGR.Test.MaxTestDegree, from the character table, or the table of marks with the given name, or from the information about maximal subgroups of a factor group modulo a normal subgroup that is contained in the Frattini subgroup. AGR.Test.MaxesStructure() checks whether the names of maximal subgroups stored in the component GAPnames of AtlasOfGroupRepresentationsInfo (7.1-6) coincide with the names computed from the GAP character table with the given name. AGR.Test.StdCompatibility() checks whether the information about the compatibility of standard generators of a group and its factor groups that is stored in the GAPnames component of AtlasOfGroupRepresentationsInfo (7.1-6) coincides with computed values. The following criterion is used for computing the value for a group G. Use the GAP Character Table Library to determine factor groups F of G for which standard generators are defined and moreover a presentation in terms of these standard generators is known. Evaluate the relators of the presentation in the standard generators of G, and let N be the normal closure of these elements in G. Then mapping the standard generators of F to the N-cosets of the standard generators of G is an epimorphism. If |G/N| = |F| holds then G/N and F are isomorphic, and the standard generators of G and F are compatible in the sense that mapping the standard generators of G to their N-cosets yields standard generators of F. AGR.Test.CompatibleMaxes() checks whether the information about deriving straight line programs for restricting to subgroups from straight line programs that belong to a factor group coincide with computed values. The following criterion is used for computing the value for a group G. If F is a factor group of G such that the standard generators of G and F are compatible (see the test function AGR.Test.StdCompatibility) and if there are a presentation for F and a permutation representation of G then it is checked whether the "maxes" type straight line programs for F can be used to compute generators for the maximal subgroups of G; if not then generators of the kernel of the natural epimorphism from G to F, must be added. AGR.Test.ClassScripts() checks whether the straight line programs that compute representatives of certain conjugacy classes are consistent with information stored on the GAP character table of the group in question, in the sense that the given class names really occur in the character table and that the element orders and centralizer orders for the classes are correct. AGR.Test.CycToCcls() checks whether some straight line program that computes representatives of conjugacy classes of a group can be computed from the ordinary GAP character table of that group and a straight line program that computes representatives of cyclic subgroups. In this case the missing scripts are printed if the level of InfoAtlasRep (7.1-1) is at least 1. AGR.Test.Standardization() checks whether all generating sets corresponding to the same set of standard generators have the same element orders; for the case that straight line programs for computing certain class representatives are available, also the orders of these representatives are checked w. r. t. all generating sets. AGR.Test.StdTomLib() checks whether the standard generators are compatible with those that occur in the TomLib package. AGR.Test.KernelGenerators() checks whether the information stored in the GAPnames component of AtlasOfGroupRepresentationsInfo (7.1-6) about straight line programs for computing generators of the kernels of natural epimorphisms between ATLAS groups coincides with computed values. The following criterion is used for computing the value for a group G. Use the GAP Character Table Library to determine factor groups F of G for which standard generators are defined such that mapping standard generators of G to those of F defines a homomorphism, and such that a presentation of F in terms of its standard generators is known. Evaluating the relators of the presentation in the standard generators of G yields normal subgroup generators for the kernel. A message is printed for each group name for which some straight line program for computing kernel generators was not stored but now was computed, or for which the stored info cannot be verified, AGR.Test.MinimalDegrees() checks that the (permutation and matrix) representations available in the ATLAS of Group Representations do not have smaller degree than the claimed minimum. atlasrep/doc/chapBib.txt0000644000175000017500000001130512701177205013653 0ustar samsam References [GAP] GAP – Groups, Algorithms, and Programming, Version 4.5.0, The GAP Group (2012), http://www.gap-system.org. [BSWW01] Bray, J. N., Suleiman, I. A. I., Walsh, P. G. and Wilson, R. A., Generating maximal subgroups of sporadic simple groups, Comm. Algebra, 29, 3 (2001), 1325–1337. [Bre13] Breuer, T., The GAP Character Table Library, Version 1.2.2 (2013), ((GAP package)), http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib. [BL14] Breuer, T. and Lübeck, F., Browse, ncurses interface and browsing applications, Version 1.8.6 (2014), ((GAP package)), http://www.math.rwth-aachen.de/~Browse. [BN95] Breuer, T. and Norton, S. P., Improvements to the Atlas, The Clarendon Press Oxford University Press, London Mathematical Society Monographs. New Series, 11, New York (1995), 297–327, ((Appendix 2 by T. Breuer and S. Norton, Oxford Science Publications)). [CP96] Cannon, J. J. and Playoust, C., An introduction to algebraic programming in Magma, School of Mathematics and Statistics, University of Sydney, Sydney, Australia (1996), http://www.math.usyd.edu.au:8000/u/magma. [CCNPW85] Conway, J. H., Curtis, R. T., Norton, S. P., Parker, R. A. and Wilson, R. A., Atlas of finite groups, Oxford University Press, Eynsham (1985), xxxiv+252 pages, ((Maximal subgroups and ordinary characters for simple groups, With computational assistance from J. G. Thackray)). [HL89] Hiss, G. and Lux, K., Brauer trees of sporadic groups, The Clarendon Press, Oxford University Press, Oxford Science Publications, New York (1989), x+526 pages. [Hup67] Huppert, B., Endliche Gruppen. I, Springer-Verlag, Die Grundlehren der Mathematischen Wissenschaften, Band 134, Berlin (1967), xii+793 pages. [Jan05] Jansen, C., The minimal degrees of faithful representations of the sporadic simple groups and their covering groups, LMS J. Comput. Math., 8 (2005), 122–144 (electronic). [JLPW95] Jansen, C., Lux, K., Parker, R. and Wilson, R., An atlas of Brauer characters, The Clarendon Press Oxford University Press, London Mathematical Society Monographs. New Series, 11, New York (1995), xviii+327 pages, ((Appendix 2 by T. Breuer and S. Norton, Oxford Science Publications)). [LN12] Lübeck, F. and Neunhöffer, M., GAPDoc, A Meta Package for GAP Documentation, Version 1.5.1 (2012), ((GAP package)), http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc. [NMP13] Naughton, L., Merkwitz, T. and Pfeiffer, G., TomLib, The GAP Library of Tables of Marks, Version 1.2.4 (2013), ((GAP package)), http://schmidt.nuigalway.ie/tomlib/tomlib. [Neu14] Neunhöffer, M., IO, Bindings for low level C library IO, Version 4.3.1 (2014), ((GAP package)), http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/io.html. [Nic06] Nickerson, S. J., An Atlas of Characteristic Zero Representations, Phd thesis, School of Mathematics, University of Birmingham (2006). [NW05] Nickerson, S. J. and Wilson, R. A., Semi-presentations for the sporadic simple groups, Experiment. Math., 14, 3 (2005), 359–371. [Rin] Ringe, M., The C MeatAxe, Version 2.4, http://www.math.rwth-aachen.de/~MTX. [SWW00] Suleiman, I. A. I., Walsh, P. G. and Wilson, R. A., Conjugacy classes in sporadic simple groups, Comm. Algebra, 28, 7 (2000), 3209–3222. [Wil96] Wilson, R. A., Standard generators for sporadic simple groups, J. Algebra, 184, 2 (1996), 505–515. [ATLAS] Wilson, R. A., Walsh, P., Tripp, J., Suleiman, I., Parker, R. A., Norton, S. P., Nickerson, S., Linton, S., Bray, J. and Abbott, R., ATLAS of Finite Group Representations, http://brauer.maths.qmul.ac.uk/Atlas/v3.  atlasrep/doc/chap2.html0000644000175000017500000017701712701177223013462 0ustar samsam GAP (AtlasRep) - Chapter 2: Tutorial for the AtlasRep Package
Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

2 Tutorial for the AtlasRep Package

This chapter gives an overview of the basic functionality provided by the AtlasRep package. The main concepts and interface functions are presented in the first sections, and Section 2.4 shows a few small examples.

2.1 Accessing a Specific Group in AtlasRep

The AtlasRep package gives access to a database, the ATLAS of Group Representations [ATLAS], that contains generators and related data for several groups, mainly for extensions of simple groups (see Section 2.1-1) and for their maximal subgroups (see Section 2.1-2).

Note that the data are not part of the package. They are fetched from a web server as soon as they are needed for the first time, see Section 4.3-1.

First of all, we load the AtlasRep package. Some of the examples require also the GAP packages CTblLib and TomLib, so we load also these packages.

gap> LoadPackage( "AtlasRep" );
true
gap> LoadPackage( "CTblLib" );
true
gap> LoadPackage( "TomLib" );
true

2.1-1 Accessing a Group in AtlasRep via its Name

Each group that occurs in this database is specified by a name, which is a string similar to the name used in the ATLAS of Finite Groups [CCNPW85]. For those groups whose character tables are contained in the GAP Character Table Library [Bre13], the names are equal to the Identifier (Reference: Identifier (for character tables)) values of these character tables. Examples of such names are "M24" for the Mathieu group M_24, "2.A6" for the double cover of the alternating group A_6, and "2.A6.2_1" for the double cover of the symmetric group S_6. The names that actually occur are listed in the first column of the overview table that is printed by the function DisplayAtlasInfo (3.5-1), called without arguments, see below. The other columns of the table describe the data that are available in the database.

For example, DisplayAtlasInfo (3.5-1) may print the following lines. Omissions are indicated with "...".

gap> DisplayAtlasInfo();
group                    |  # | maxes | cl | cyc | out | fnd | chk | prs
-------------------------+----+-------+----+-----+-----+-----+-----+----
...
2.A5                     | 26 |     3 |    |     |     |     |  +  |  + 
2.A5.2                   | 11 |     4 |    |     |     |     |  +  |  + 
2.A6                     | 18 |     5 |    |     |     |     |     |    
2.A6.2_1                 |  3 |     6 |    |     |     |     |     |    
2.A7                     | 24 |       |    |     |     |     |     |    
2.A7.2                   |  7 |       |    |     |     |     |     |    
...
M22                      | 58 |     8 |  + |  +  |     |  +  |  +  |  + 
M22.2                    | 46 |     7 |  + |  +  |     |  +  |  +  |  + 
M23                      | 66 |     7 |  + |  +  |     |  +  |  +  |  + 
M24                      | 62 |     9 |  + |  +  |     |  +  |  +  |  + 
McL                      | 46 |    12 |  + |  +  |     |  +  |  +  |  + 
McL.2                    | 27 |    10 |    |  +  |     |  +  |  +  |  + 
O7(3)                    | 28 |       |    |     |     |     |     |    
O7(3).2                  |  3 |       |    |     |     |     |     |    
...

Called with a group name as the only argument, the function AtlasGroup (3.5-7) returns a group isomorphic to the group with the given name. If permutation generators are available in the database then a permutation group (of smallest available degree) is returned, otherwise a matrix group.

gap> g:= AtlasGroup( "M24" );
Group([ (1,4)(2,7)(3,17)(5,13)(6,9)(8,15)(10,19)(11,18)(12,21)(14,16)
(20,24)(22,23), (1,4,6)(2,21,14)(3,9,15)(5,18,10)(13,17,16)
(19,24,23) ])
gap> IsPermGroup( g );  NrMovedPoints( g );  Size( g );
true
24
244823040

2.1-2 Accessing a Maximal Subgroup of a Group in AtlasRep

Many maximal subgroups of extensions of simple groups can be constructed using the function AtlasSubgroup (3.5-8). Given the name of the extension of the simple group and the number of the conjugacy class of maximal subgroups, this function returns a representative from this class.

gap> g:= AtlasSubgroup( "M24", 1 );
Group([ (2,10)(3,12)(4,14)(6,9)(8,16)(15,18)(20,22)(21,24), (1,7,2,9)
(3,22,10,23)(4,19,8,12)(5,14)(6,18)(13,16,17,24) ])
gap> IsPermGroup( g );  NrMovedPoints( g );  Size( g );
true
23
10200960

The classes of maximal subgroups are ordered w. r. t. decreasing subgroup order. So the first class contains the largest maximal subgroups.

Note that groups obtained by AtlasSubgroup (3.5-8) may be not very suitable for computations in the sense that much nicer representations exist. For example, the sporadic simple O'Nan group O'N contains a maximal subgroup S isomorphic with the Janko group J_1; the smallest permutation representation of O'N has degree 122760, so restricting this representation to S yields a representation of J_1 of that degree. However, J_1 has a faithful permutation representation of degree 266, which admits much more efficient computations. If you are just interested in J_1 and not in its embedding into O'N then one possibility to get a "nicer" faithful representation is to call SmallerDegreePermutationRepresentation (Reference: SmallerDegreePermutationRepresentation). In the abovementioned example, this works quite well; note that in general, we cannot expect that we get a representation of smallest degree in this way.

gap> s:= AtlasSubgroup( "ON", 3 );
<permutation group of size 175560 with 2 generators>
gap> NrMovedPoints( s );  Size( s );
122760
175560
gap> hom:= SmallerDegreePermutationRepresentation( s );;
gap> NrMovedPoints( Image( hom ) );
1540

In this particular case, one could of course also ask directly for the group J_1.

gap> j1:= AtlasGroup( "J1" );
<permutation group of size 175560 with 2 generators>
gap> NrMovedPoints( j1 );
266

If you have a group G, say, and you are really interested in the embedding of a maximal subgroup of G into G then an easy way to get compatible generators is to create G with AtlasGroup (3.5-7) and then to call AtlasSubgroup (3.5-8) with first argument the group G.

gap> g:= AtlasGroup( "ON" );
<permutation group of size 460815505920 with 2 generators>
gap> s:= AtlasSubgroup( g, 3 );
<permutation group of size 175560 with 2 generators>
gap> IsSubset( g, s );
true
gap> IsSubset( g, j1 );
false

2.2 Accessing Specific Generators in AtlasRep

The function DisplayAtlasInfo (3.5-1), called with an admissible name of a group as the only argument, lists the ATLAS data available for this group.

gap> DisplayAtlasInfo( "A5" );
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
 1: G <= Sym(5)                  3-trans., on cosets of A4 (1st max.)
 2: G <= Sym(6)                  2-trans., on cosets of D10 (2nd max.)
 3: G <= Sym(10)                 rank 3, on cosets of S3 (3rd max.)
 4: G <= GL(4a,2)                
 5: G <= GL(4b,2)                
 6: G <= GL(4,3)                 
 7: G <= GL(6,3)                 
 8: G <= GL(2a,4)                
 9: G <= GL(2b,4)                
10: G <= GL(3,5)                 
11: G <= GL(5,5)                 
12: G <= GL(3a,9)                
13: G <= GL(3b,9)                
14: G <= GL(4,Z)                 
15: G <= GL(5,Z)                 
16: G <= GL(6,Z)                 
17: G <= GL(3a,Field([Sqrt(5)])) 
18: G <= GL(3b,Field([Sqrt(5)])) 

Programs for G = A5:    (all refer to std. generators 1)
--------------------
presentation
std. gen. checker
maxes (all 3):
  1:  A4
  2:  D10
  3:  S3

In order to fetch one of the listed permutation groups or matrix groups, you can call AtlasGroup (3.5-7) with second argument the function Position (Reference: Position) and third argument the position in the list.

gap> AtlasGroup( "A5", Position, 1 );
Group([ (1,2)(3,4), (1,3,5) ])

Note that this approach may yield a different group after an update of the database, if new data for the group become available.

Alternatively, you can describe the desired group by conditions, such as the degree in the case of a permutation group, and the dimension and the base ring in the case of a matrix group.

gap> AtlasGroup( "A5", NrMovedPoints, 10 );
Group([ (2,4)(3,5)(6,8)(7,10), (1,2,3)(4,6,7)(5,8,9) ])
gap> AtlasGroup( "A5", Dimension, 4, Ring, GF(2) );
<matrix group of size 60 with 2 generators>

The same holds for the restriction to maximal subgroups: Use AtlasSubgroup (3.5-8) with the same arguments as AtlasGroup (3.5-7), except that additionally the number of the class of maximal subgroups is entered as the last argument. Note that the conditions refer to the group, not to the subgroup; it may happen that the subgroup moves fewer points than the big group.

gap> AtlasSubgroup( "A5", Dimension, 4, Ring, GF(2), 1 );
<matrix group of size 12 with 2 generators>
gap> g:= AtlasSubgroup( "A5", NrMovedPoints, 10, 3 );
Group([ (2,4)(3,5)(6,8)(7,10), (1,4)(3,8)(5,7)(6,10) ])
gap> Size( g );  NrMovedPoints( g );
6
9

2.3 Basic Concepts used in AtlasRep

2.3-1 Groups, Generators, and Representations

Up to now, we have talked only about groups and subgroups. The AtlasRep package provides access to group generators, and in fact these generators have the property that mapping one set of generators to another set of generators for the same group defines an isomorphism. These generators are called standard generators, see Section 3.3.

So instead of thinking about several generating sets of a group G, say, we can think about one abstract group G, with one fixed set of generators, and mapping these generators to any set of generators provided by AtlasRep defines a representation of G. This viewpoint motivates the name "ATLAS of Group Representations" for the database.

If you are interested in the generators provided by the database rather than in the groups they generate, you can use the function OneAtlasGeneratingSetInfo (3.5-5) instead of AtlasGroup (3.5-7), with the same arguments. This will yield a record that describes the representation in question. Calling the function AtlasGenerators (3.5-2) with this record will then yield a record with the additional component generators, which holds the list of generators.

gap> info:= OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, 10 );
rec( groupname := "A5", id := "", 
  identifier := [ "A5", [ "A5G1-p10B0.m1", "A5G1-p10B0.m2" ], 1, 10 ],
  isPrimitive := true, maxnr := 3, p := 10, rankAction := 3, 
  repname := "A5G1-p10B0", repnr := 3, size := 60, stabilizer := "S3",
  standardization := 1, transitivity := 1, type := "perm" )
gap> info2:= AtlasGenerators( info );
rec( generators := [ (2,4)(3,5)(6,8)(7,10), (1,2,3)(4,6,7)(5,8,9) ], 
  groupname := "A5", id := "", 
  identifier := [ "A5", [ "A5G1-p10B0.m1", "A5G1-p10B0.m2" ], 1, 10 ],
  isPrimitive := true, maxnr := 3, p := 10, rankAction := 3, 
  repname := "A5G1-p10B0", repnr := 3, size := 60, stabilizer := "S3",
  standardization := 1, transitivity := 1, type := "perm" )
gap> info2.generators;
[ (2,4)(3,5)(6,8)(7,10), (1,2,3)(4,6,7)(5,8,9) ]

2.3-2 Straight Line Programs

For computing certain group elements from standard generators, such as generators of a subgroup or class representatives, AtlasRep uses straight line programs, see Reference: Straight Line Programs. Essentially this means to evaluate words in the generators, similar to MappedWord (Reference: MappedWord) but more efficiently.

It can be useful to deal with these straight line programs, see AtlasProgram (3.5-3). For example, an automorphism α, say, of the group G, if available in AtlasRep, is given by a straight line program that defines the images of standard generators of G. This way, one can for example compute the image of a subgroup U of G under α by first applying the straight line program for α to standard generators of G, and then applying the straight line program for the restriction from G to U.

gap> prginfo:= AtlasProgramInfo( "A5", "maxes", 1 );
rec( groupname := "A5", identifier := [ "A5", "A5G1-max1W1", 1 ], 
  size := 12, standardization := 1, subgroupname := "A4" )
gap> prg:= AtlasProgram( prginfo.identifier );
rec( groupname := "A5", identifier := [ "A5", "A5G1-max1W1", 1 ], 
  program := <straight line program>, size := 12, 
  standardization := 1, subgroupname := "A4" )
gap> Display( prg.program );
# input:
r:= [ g1, g2 ];
# program:
r[3]:= r[1]*r[2];
r[4]:= r[2]*r[1];
r[5]:= r[3]*r[3];
r[1]:= r[5]*r[4];
# return values:
[ r[1], r[2] ]
gap> ResultOfStraightLineProgram( prg.program, info2.generators );
[ (1,10)(2,3)(4,9)(7,8), (1,2,3)(4,6,7)(5,8,9) ]

2.4 Examples of Using the AtlasRep Package

2.4-1 Example: Class Representatives

First we show the computation of class representatives of the Mathieu group M_11, in a 2-modular matrix representation. We start with the ordinary and Brauer character tables of this group.

gap> tbl:= CharacterTable( "M11" );;
gap> modtbl:= tbl mod 2;;
gap> CharacterDegrees( modtbl );
[ [ 1, 1 ], [ 10, 1 ], [ 16, 2 ], [ 44, 1 ] ]

The output of CharacterDegrees (Reference: CharacterDegrees) means that the 2-modular irreducibles of M_11 have degrees 1, 10, 16, 16, and 44.

Using DisplayAtlasInfo (3.5-1), we find out that matrix generators for the irreducible 10-dimensional representation are available in the database.

gap> DisplayAtlasInfo( "M11", Characteristic, 2 );
Representations for G = M11:    (all refer to std. generators 1)
----------------------------
 6: G <= GL(10,2)  character 10a
 7: G <= GL(32,2)  character 16ab
 8: G <= GL(44,2)  character 44a
16: G <= GL(16a,4) character 16a
17: G <= GL(16b,4) character 16b

So we decide to work with this representation. We fetch the generators and compute the list of class representatives of M_11 in the representation. The ordering of class representatives is the same as that in the character table of the ATLAS of Finite Groups ([CCNPW85]), which coincides with the ordering of columns in the GAP table we have fetched above.

gap> info:= OneAtlasGeneratingSetInfo( "M11", Characteristic, 2,
>                                             Dimension, 10 );;
gap> gens:= AtlasGenerators( info.identifier );;
gap> ccls:= AtlasProgram( "M11", gens.standardization, "classes" );
rec( groupname := "M11", identifier := [ "M11", "M11G1-cclsW1", 1 ], 
  outputs := [ "1A", "2A", "3A", "4A", "5A", "6A", "8A", "8B", "11A", 
      "11B" ], program := <straight line program>, 
  standardization := 1 )
gap> reps:= ResultOfStraightLineProgram( ccls.program, gens.generators );;

If we would need only a few class representatives, we could use the GAP library function RestrictOutputsOfSLP (Reference: RestrictOutputsOfSLP) to create a straight line program that computes only specified outputs. Here is an example where only the class representatives of order eight are computed.

gap> ord8prg:= RestrictOutputsOfSLP( ccls.program,
>                   Filtered( [ 1 .. 10 ], i -> ccls.outputs[i][1] = '8' ) );
<straight line program>
gap> ord8reps:= ResultOfStraightLineProgram( ord8prg, gens.generators );;
gap> List( ord8reps, m -> Position( reps, m ) );
[ 7, 8 ]

Let us check that the class representatives have the right orders.

gap> List( reps, Order ) = OrdersClassRepresentatives( tbl );
true

From the class representatives, we can compute the Brauer character we had started with. This Brauer character is defined on all classes of the 2-modular table. So we first pick only those representatives, using the GAP function GetFusionMap (Reference: GetFusionMap); in this situation, it returns the class fusion from the Brauer table into the ordinary table.

gap> fus:= GetFusionMap( modtbl, tbl );
[ 1, 3, 5, 9, 10 ]
gap> modreps:= reps{ fus };;

Then we call the GAP function BrauerCharacterValue (Reference: BrauerCharacterValue), which computes the Brauer character value from the matrix given.

gap> char:= List( modreps, BrauerCharacterValue );
[ 10, 1, 0, -1, -1 ]
gap> Position( Irr( modtbl ), char );
2

2.4-2 Example: Permutation and Matrix Representations

The second example shows the computation of a permutation representation from a matrix representation. We work with the 10-dimensional representation used above, and consider the action on the 2^10 vectors of the underlying row space.

gap> grp:= Group( gens.generators );;
gap> v:= GF(2)^10;;
gap> orbs:= Orbits( grp, AsList( v ) );;
gap> List( orbs, Length );
[ 1, 396, 55, 330, 66, 165, 11 ]

We see that there are six nontrivial orbits, and we can compute the permutation actions on these orbits directly using Action (Reference: Action homomorphisms). However, for larger examples, one cannot write down all orbits on the row space, so one has to use another strategy if one is interested in a particular orbit.

Let us assume that we are interested in the orbit of length 11. The point stabilizer is the first maximal subgroup of M_11, thus the restriction of the representation to this subgroup has a nontrivial fixed point space. This restriction can be computed using the AtlasRep package.

gap> gens:= AtlasGenerators( "M11", 6, 1 );;

Now computing the fixed point space is standard linear algebra.

gap> id:= IdentityMat( 10, GF(2) );;
gap> sub1:= Subspace( v, NullspaceMat( gens.generators[1] - id ) );;
gap> sub2:= Subspace( v, NullspaceMat( gens.generators[2] - id ) );;
gap> fix:= Intersection( sub1, sub2 );
<vector space of dimension 1 over GF(2)>

The final step is of course the computation of the permutation action on the orbit.

gap> orb:= Orbit( grp, Basis( fix )[1] );;
gap> act:= Action( grp, orb );;  Print( act, "\n" );
Group( [ ( 1, 2)( 4, 6)( 5, 8)( 7,10), ( 1, 3, 5, 9)( 2, 4, 7,11) ] )

Note that this group is not equal to the group obtained by fetching the permutation representation from the database. This is due to a different numbering of the points, so the groups are permutation isomorphic.

gap> permgrp:= Group( AtlasGenerators( "M11", 1 ).generators );;
gap> Print( permgrp, "\n" );
Group( [ ( 2,10)( 4,11)( 5, 7)( 8, 9), ( 1, 4, 3, 8)( 2, 5, 6, 9) ] )
gap> permgrp = act;
false
gap> IsConjugate( SymmetricGroup(11), permgrp, act );
true

2.4-3 Example: Outer Automorphisms

The straight line programs for applying outer automorphisms to standard generators can of course be used to define the automorphisms themselves as GAP mappings.

gap> DisplayAtlasInfo( "G2(3)", IsStraightLineProgram );
Programs for G = G2(3):    (all refer to std. generators 1)
-----------------------
class repres.
presentation
repr. cyc. subg.
std. gen. checker
automorphisms:
  2
maxes (all 10):
   1:  U3(3).2
   2:  U3(3).2
   3:  (3^(1+2)+x3^2):2S4
   4:  (3^(1+2)+x3^2):2S4
   5:  L3(3).2
   6:  L3(3).2
   7:  L2(8).3
   8:  2^3.L3(2)
   9:  L2(13)
  10:  2^(1+4)+:3^2.2
gap> prog:= AtlasProgram( "G2(3)", "automorphism", "2" ).program;;
gap> info:= OneAtlasGeneratingSetInfo( "G2(3)", Dimension, 7 );;
gap> gens:= AtlasGenerators( info ).generators;;
gap> imgs:= ResultOfStraightLineProgram( prog, gens );;

If we are not suspicious whether the script really describes an automorphism then we should tell this to GAP, in order to avoid the expensive checks of the properties of being a homomorphism and bijective (see Section Reference: Creating Group Homomorphisms). This looks as follows.

gap> g:= Group( gens );;
gap> aut:= GroupHomomorphismByImagesNC( g, g, gens, imgs );;
gap> SetIsBijective( aut, true );

If we are suspicious whether the script describes an automorphism then we might have the idea to check it with GAP, as follows.

gap> aut:= GroupHomomorphismByImages( g, g, gens, imgs );;
gap> IsBijective( aut );
true

(Note that even for a comparatively small group such as G_2(3), this was a difficult task for GAP before version 4.3.)

Often one can form images under an automorphism α, say, without creating the homomorphism object. This is obvious for the standard generators of the group G themselves, but also for generators of a maximal subgroup M computed from standard generators of G, provided that the straight line programs in question refer to the same standard generators. Note that the generators of M are given by evaluating words in terms of standard generators of G, and their images under α can be obtained by evaluating the same words at the images under α of the standard generators of G.

gap> max1:= AtlasProgram( "G2(3)", 1 ).program;;
gap> mgens:= ResultOfStraightLineProgram( max1, gens );;
gap> comp:= CompositionOfStraightLinePrograms( max1, prog );;
gap> mimgs:= ResultOfStraightLineProgram( comp, gens );;

The list mgens is the list of generators of the first maximal subgroup of G_2(3), mimgs is the list of images under the automorphism given by the straight line program prog. Note that applying the program returned by CompositionOfStraightLinePrograms (Reference: CompositionOfStraightLinePrograms) means to apply first prog and then max1. Since we have already constructed the GAP object representing the automorphism, we can check whether the results are equal.

gap> mimgs = List( mgens, x -> x^aut );
true

However, it should be emphasized that using aut requires a huge machinery of computations behind the scenes, whereas applying the straight line programs prog and max1 involves only elementary operations with the generators. The latter is feasible also for larger groups, for which constructing the GAP automorphism might be too hard.

2.4-4 Example: Using Semi-presentations and Black Box Programs

Let us suppose that we want to restrict a representation of the Mathieu group M_12 to a non-maximal subgroup of the type L_2(11). The idea is that this subgroup can be found as a maximal subgroup of a maximal subgroup of the type M_11, which is itself maximal in M_12. For that, we fetch a representation of M_12 and use a straight line program for restricting it to the first maximal subgroup, which has the type M_11.

gap> info:= OneAtlasGeneratingSetInfo( "M12", NrMovedPoints, 12 );
rec( charactername := "1a+11a", groupname := "M12", id := "a", 
  identifier := [ "M12", [ "M12G1-p12aB0.m1", "M12G1-p12aB0.m2" ], 1, 
      12 ], isPrimitive := true, maxnr := 1, p := 12, rankAction := 2,
  repname := "M12G1-p12aB0", repnr := 1, size := 95040, 
  stabilizer := "M11", standardization := 1, transitivity := 5, 
  type := "perm" )
gap> gensM12:= AtlasGenerators( info.identifier );;
gap> restM11:= AtlasProgram( "M12", "maxes", 1 );;
gap> gensM11:= ResultOfStraightLineProgram( restM11.program,
>                                           gensM12.generators );
[ (3,9)(4,12)(5,10)(6,8), (1,4,11,5)(2,10,8,3) ]

Now we cannot simply apply a straight line program for a group to some generators, since they are not necessarily standard generators of the group. We check this property using a semi-presentation for M_11, see 6.1-7.

gap> checkM11:= AtlasProgram( "M11", "check" );
rec( groupname := "M11", identifier := [ "M11", "M11G1-check1", 1, 1 ]
    , program := <straight line decision>, standardization := 1 )
gap> ResultOfStraightLineDecision( checkM11.program, gensM11 );
true

So we are lucky that applying the appropriate program for M_11 will give us the required generators for L_2(11).

gap> restL211:= AtlasProgram( "M11", "maxes", 2 );;
gap> gensL211:= ResultOfStraightLineProgram( restL211.program, gensM11 );
[ (3,9)(4,12)(5,10)(6,8), (1,11,9)(2,12,8)(3,6,10) ]
gap> G:= Group( gensL211 );;  Size( G );  IsSimple( G );
660
true

Usually representations are not given in terms of standard generators. For example, let us take the M_11 type group returned by the GAP function MathieuGroup (Reference: MathieuGroup).

gap> G:= MathieuGroup( 11 );;
gap> gens:= GeneratorsOfGroup( G );
[ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6) ]
gap> ResultOfStraightLineDecision( checkM11.program, gens );
false

If we want to compute an L_2(11) type subgroup of this group, we can use a black box program for computing standard generators, and then apply the straight line program for computing the restriction.

gap> find:= AtlasProgram( "M11", "find" );
rec( groupname := "M11", identifier := [ "M11", "M11G1-find1", 1, 1 ],
  program := <black box program>, standardization := 1 )
gap> stdgens:= ResultOfBBoxProgram( find.program, Group( gens ) );;
gap> List( stdgens, Order );
[ 2, 4 ]
gap> ResultOfStraightLineDecision( checkM11.program, stdgens );
true
gap> gensL211:= ResultOfStraightLineProgram( restL211.program, stdgens );;
gap> List( gensL211, Order );
[ 2, 3 ]
gap> G:= Group( gensL211 );;  Size( G );  IsSimple( G );
660
true

2.4-5 Example: Using the GAP Library of Tables of Marks

The GAP Library of Tables of Marks (the GAP package TomLib, [NMP13]) provides, for many almost simple groups, information for constructing representatives of all conjugacy classes of subgroups. If this information is compatible with the standard generators of the ATLAS of Group Representations then we can use it to restrict any representation from the ATLAS to prescribed subgroups. This is useful in particular for those subgroups for which the ATLAS of Group Representations itself does not contain a straight line program.

gap> tom:= TableOfMarks( "A5" );
TableOfMarks( "A5" )
gap> info:= StandardGeneratorsInfo( tom );
[ rec( ATLAS := true, description := "|a|=2, |b|=3, |ab|=5", 
      generators := "a, b", 
      script := [ [ 1, 2 ], [ 2, 3 ], [ 1, 1, 2, 1, 5 ] ], 
      standardization := 1 ) ]

The true value of the component ATLAS indicates that the information stored on tom refers to the standard generators of type 1 in the ATLAS of Group Representations.

We want to restrict a 4-dimensional integral representation of A_5 to a Sylow 2 subgroup of A_5, and use RepresentativeTomByGeneratorsNC (Reference: RepresentativeTomByGeneratorsNC) for that.

gap> info:= OneAtlasGeneratingSetInfo( "A5", Ring, Integers, Dimension, 4 );;
gap> stdgens:= AtlasGenerators( info.identifier );
rec( dim := 4, 
  generators := 
    [ 
      [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ], 
          [ -1, -1, -1, -1 ] ], 
      [ [ 0, 1, 0, 0 ], [ 0, 0, 0, 1 ], [ 0, 0, 1, 0 ], 
          [ 1, 0, 0, 0 ] ] ], groupname := "A5", id := "", 
  identifier := [ "A5", "A5G1-Zr4B0.g", 1, 4 ], 
  repname := "A5G1-Zr4B0", repnr := 14, ring := Integers, size := 60, 
  standardization := 1, type := "matint" )
gap> orders:= OrdersTom( tom );
[ 1, 2, 3, 4, 5, 6, 10, 12, 60 ]
gap> pos:= Position( orders, 4 );
4
gap> sub:= RepresentativeTomByGeneratorsNC( tom, pos, stdgens.generators );
<matrix group of size 4 with 2 generators>
gap> GeneratorsOfGroup( sub );
[ [ [ 1, 0, 0, 0 ], [ -1, -1, -1, -1 ], [ 0, 0, 0, 1 ], 
      [ 0, 0, 1, 0 ] ], 
  [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ], 
      [ -1, -1, -1, -1 ] ] ]

2.4-6 Example: Index 770 Subgroups in M_22

The sporadic simple Mathieu group M_22 contains a unique class of subgroups of index 770 (and order 576). This can be seen for example using GAP's Library of Tables of Marks.

gap> tom:= TableOfMarks( "M22" );
TableOfMarks( "M22" )
gap> subord:= Size( UnderlyingGroup( tom ) ) / 770;
576
gap> ord:= OrdersTom( tom );;
gap> tomstabs:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = subord );
[ 144 ]

The permutation representation of M_22 on the right cosets of such a subgroup S is contained in the ATLAS of Group Representations.

gap> DisplayAtlasInfo( "M22", NrMovedPoints, 770 );
Representations for G = M22:    (all refer to std. generators 1)
----------------------------
12: G <= Sym(770) rank 9, on cosets of (A4xA4):4 < 2^4:A6

We now verify the information shown about the point stabilizer and about the maximal overgroups of S in M_22.

gap> maxtom:= MaximalSubgroupsTom( tom );
[ [ 155, 154, 153, 152, 151, 150, 146, 145 ], 
  [ 22, 77, 176, 176, 231, 330, 616, 672 ] ]
gap> List( tomstabs, i -> List( maxtom[1], j -> ContainedTom( tom, i, j ) ) );
[ [ 0, 10, 0, 0, 0, 0, 0, 0 ] ]

We see that the only maximal subgroups of M_22 that contain S have index 77 in M_22. According to the ATLAS of Finite Groups, these maximal subgroups have the structure 2^4:A_6. From that and from the structure of A_6, we conclude that S has the structure 2^4:(3^2:4).

Alternatively, we look at the permutation representation of degree 770. We fetch it from the ATLAS of Group Representations. There is exactly one nontrivial block system for this representation, with 77 blocks of length 10.

gap> g:= AtlasGroup( "M22", NrMovedPoints, 770 );
<permutation group of size 443520 with 2 generators>
gap> allbl:= AllBlocks( g );;
gap> List( allbl, Length );
[ 10 ]

Furthermore, GAP computes that the point stabilizer S has the structure (A_4 × A_4):4.

gap> stab:= Stabilizer( g, 1 );;
gap> StructureDescription( stab );
"(A4 x A4) : C4"
gap> blocks:= Orbit( g, allbl[1], OnSets );;
gap> act:= Action( g, blocks, OnSets );;
gap> StructureDescription( Stabilizer( act, 1 ) );
"(C2 x C2 x C2 x C2) : A6"

2.4-7 Example: Index 462 Subgroups in M_22

The ATLAS of Group Representations contains three degree 462 permutation representations of the group M_22.

gap> DisplayAtlasInfo( "M22", NrMovedPoints, 462 );
Representations for G = M22:    (all refer to std. generators 1)
----------------------------
7: G <= Sym(462a) rank 5, on cosets of 2^4:A5 < 2^4:A6
8: G <= Sym(462b) rank 8, on cosets of 2^4:A5 < L3(4), 2^4:S5
9: G <= Sym(462c) rank 8, on cosets of 2^4:A5 < L3(4), 2^4:A6

The point stabilizers in these three representations have the structure 2^4:A_5. Using GAP's Library of Tables of Marks, we can show that these stabilizers are exactly the three classes of subgroups of order 960 in M_22. For that, we first verify that the group generators stored in GAP's table of marks coincide with the standard generators used by the ATLAS of Group Representations.

gap> tom:= TableOfMarks( "M22" );
TableOfMarks( "M22" )
gap> genstom:= GeneratorsOfGroup( UnderlyingGroup( tom ) );;
gap> checkM22:= AtlasProgram( "M22", "check" );
rec( groupname := "M22", identifier := [ "M22", "M22G1-check1", 1, 1 ]
    , program := <straight line decision>, standardization := 1 )
gap> ResultOfStraightLineDecision( checkM22.program, genstom );
true

There are indeed three classes of subgroups of order 960 in M_22.

gap> ord:= OrdersTom( tom );;
gap> tomstabs:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = 960 );
[ 147, 148, 149 ]

Now we compute representatives of these three classes in the three representations 462a, 462b, and 462c. We see that each of the three classes occurs as a point stabilizer in exactly one of the three representations.

gap> atlasreps:= AllAtlasGeneratingSetInfos( "M22", NrMovedPoints, 462 );
[ rec( charactername := "1a+21a+55a+154a+231a", groupname := "M22", 
      id := "a", 
      identifier := 
        [ "M22", [ "M22G1-p462aB0.m1", "M22G1-p462aB0.m2" ], 1, 462 ],
      isPrimitive := false, p := 462, rankAction := 5, 
      repname := "M22G1-p462aB0", repnr := 7, size := 443520, 
      stabilizer := "2^4:A5 < 2^4:A6", standardization := 1, 
      transitivity := 1, type := "perm" ), 
  rec( charactername := "1a+21a^2+55a+154a+210a", groupname := "M22", 
      id := "b", 
      identifier := 
        [ "M22", [ "M22G1-p462bB0.m1", "M22G1-p462bB0.m2" ], 1, 462 ],
      isPrimitive := false, p := 462, rankAction := 8, 
      repname := "M22G1-p462bB0", repnr := 8, size := 443520, 
      stabilizer := "2^4:A5 < L3(4), 2^4:S5", standardization := 1, 
      transitivity := 1, type := "perm" ), 
  rec( charactername := "1a+21a^2+55a+154a+210a", groupname := "M22", 
      id := "c", 
      identifier := 
        [ "M22", [ "M22G1-p462cB0.m1", "M22G1-p462cB0.m2" ], 1, 462 ],
      isPrimitive := false, p := 462, rankAction := 8, 
      repname := "M22G1-p462cB0", repnr := 9, size := 443520, 
      stabilizer := "2^4:A5 < L3(4), 2^4:A6", standardization := 1, 
      transitivity := 1, type := "perm" ) ]
gap> atlasreps:= List( atlasreps, AtlasGroup );;
gap> tomstabreps:= List( atlasreps, G -> List( tomstabs,
> i -> RepresentativeTomByGenerators( tom, i, GeneratorsOfGroup( G ) ) ) );;
gap> List( tomstabreps, x -> List( x, NrMovedPoints ) );
[ [ 462, 462, 461 ], [ 460, 462, 462 ], [ 462, 461, 462 ] ]

More precisely, we see that the point stabilizers in the three representations 462a, 462b, 462c lie in the subgroup classes 149, 147, 148, respectively, of the table of marks.

The point stabilizers in the representations 462b and 462c are isomorphic, but not isomorphic with the point stabilizer in 462a.

gap> stabs:= List( atlasreps, G -> Stabilizer( G, 1 ) );;
gap> List( stabs, IdGroup );
[ [ 960, 11358 ], [ 960, 11357 ], [ 960, 11357 ] ]
gap> List( stabs, PerfectIdentification );
[ [ 960, 2 ], [ 960, 1 ], [ 960, 1 ] ]

The three representations are imprimitive. The containment of the point stabilizers in maximal subgroups of M_22 can be computed using the table of marks of M_22.

gap> maxtom:= MaximalSubgroupsTom( tom );
[ [ 155, 154, 153, 152, 151, 150, 146, 145 ], 
  [ 22, 77, 176, 176, 231, 330, 616, 672 ] ]
gap> List( tomstabs, i -> List( maxtom[1], j -> ContainedTom( tom, i, j ) ) );
[ [ 21, 0, 0, 0, 1, 0, 0, 0 ], [ 21, 6, 0, 0, 0, 0, 0, 0 ], 
  [ 0, 6, 0, 0, 0, 0, 0, 0 ] ]

We see:

  • The point stabilizers in 462a (subgroups in the class 149 of the table of marks) are contained only in maximal subgroups in class 154; these groups have the structure 2^4:A_6.

  • The point stabilizers in 462b (subgroups in the class 147) are contained in maximal subgroups in the classes 155 and 151; these groups have the structures L_3(4) and 2^4:S_5, respectively.

  • The point stabilizers in 462c (subgroups in the class 148) are contained in maximal subgroups in the classes 155 and 154.

We identify the supergroups of the point stabilizers by computing the block systems.

gap> bl:= List( atlasreps, AllBlocks );;
gap> List( bl, Length );
[ 1, 3, 2 ]
gap> List( bl, l -> List( l, Length ) );
[ [ 6 ], [ 21, 21, 2 ], [ 21, 6 ] ]

Note that the two block systems with blocks of length 21 for 462b belong to the same supergroups (of the type L_3(4)); each of these subgroups fixes two different subsets of 21 points.

The representation 462a is multiplicity-free, that is, it splits into a sum of pairwise nonisomorphic irreducible representations. This can be seen from the fact that the rank of this permutation representation (that is, the number of orbits of the point stabilizer) is five; each permutation representation with this property is multiplicity-free.

The other two representations have rank eight. We have seen the ranks in the overview that was shown by DisplayAtlasInfo (3.5-1) in the beginning. Now we compute the ranks from the permutation groups.

gap> List( atlasreps, RankAction );
[ 5, 8, 8 ]

In fact the two representations 462b and 462c have the same permutation character. We check this by computing the possible permutation characters of degree 462 for M_22, and decomposing them into irreducible characters, using the character table from GAP's Character Table Library.

gap> t:= CharacterTable( "M22" );;
gap> perms:= PermChars( t, 462 );
[ Character( CharacterTable( "M22" ),
  [ 462, 30, 3, 2, 2, 2, 3, 0, 0, 0, 0, 0 ] ), 
  Character( CharacterTable( "M22" ),
  [ 462, 30, 12, 2, 2, 2, 0, 0, 0, 0, 0, 0 ] ) ]
gap> MatScalarProducts( t, Irr( t ), perms );
[ [ 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 ], 
  [ 1, 2, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 ] ]

In particular, we see that the rank eight characters are not multiplicity-free.

Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

generated by GAPDoc2HTML

atlasrep/doc/chap5.html0000644000175000017500000006570412701177223013464 0ustar samsam GAP (AtlasRep) - Chapter 5: Private Extensions of the AtlasRep Package
Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

5 Private Extensions of the AtlasRep Package

It may be interesting to use the functions of the GAP interface also for representations or programs that are not part of the ATLAS of Group Representations. This chapter describes how to achieve this.

The main idea is that users can notify directories containing the "private" data files, which may consist of

  1. new faithful representations and programs for groups that are declared already in the "official" ATLAS of Group Representations,

  2. the declaration of groups that are not declared in the "official" ATLAS of Group Representations, and representations and programs for them, and

  3. the definition of new kinds of representations and programs.

The first two issues are dealt with in Section 5.1 and Section 5.2. The last is described in Section 7.5.

Finally, an example of using private extensions is given in Section 5.3.

Several of the sanity checks for the official part of the AtlasRep package make sense also for private extensions, see Section 7.8 for more information.

5.1 Adding a Private Data Directory

After the AtlasRep package has been loaded into the GAP session, one can add private data. However, one should not add private files to the local data directories of the package, or modify files in these directories. Instead, additional data should be put into separate directories. It should be noted that a data file is fetched from a server only if the local data directories do not contain a file with this name, independent of the contents of the files. (As a consequence, corrupted files in the local data directories are not automatically replaced by a correct server file.)

5.1-1 AtlasOfGroupRepresentationsNotifyPrivateDirectory
‣ AtlasOfGroupRepresentationsNotifyPrivateDirectory( dir[, dirid][, test] )( function )

Returns: true if none of the filenames with admissible format in the directory dir is contained in other data directories and if the data belongs to groups whose names have been declared, otherwise false.

Let dir be a directory (see Reference: Directories) or a string denoting the name of a directory (such that the GAP object describing this directory can be obtained by calling Directory (Reference: Directory) with the argument dir). In the following, let dirname be the name of the directory. So dirname can be an absolute path or a path relative to the home directory of the user (starting with a tilde character ~) or a path relative to the directory where GAP was started.

If the optional argument dirid is given, it must be a string. This value will be used in the identifier components of the records that are returned by interface functions (see Section 3.5) for data contained in the directory dir. Note that the directory name may be different in different GAP sessions or for different users who want to access the same data, whereas the identifier components shall be independent of such differences. The default for dirid is dirname.

If the optional argument test is given, it must be true or false. In the true case, consistency checks are switched on while the file toc.g is read. This costs some extra time, but it is recommended after each extension of the file toc.g. The default for test is false.

AtlasOfGroupRepresentationsNotifyPrivateDirectory notifies the data in the directory dir to the AtlasRep package. First the pair [ dirname, dirid ] is added to the private component of AtlasOfGroupRepresentationsInfo (7.1-6). If the directory contains a file with the name toc.g then this file is read; this file is useful for adding new group names using AGR.GNAN and for adding describing data about the representations, see Section 7.7. Next the table of contents of the private directory is built from the list of files contained in the private directory or in its subdirectories (one layer deep).

Only those files are considered whose names match an admissible format (see Section 7.6). Filenames that are already contained in another data directory of the AtlasRep package are ignored, and messages about these filenames are printed if the info level of InfoAtlasRep (7.1-1) is at least 1.

Note that this implies that the files of the "official" (i.e. non-private) data directories have priority over files in private directories.

If the directory contains files for groups whose names have not been declared before and if the info level of InfoAtlasRep (7.1-1) is at least 1 then a message about these names is printed.

For convenience, the user may collect the notifications of private data directories in the file gaprc (see Section Reference: The gap.ini and gaprc files).

5.1-2 AtlasOfGroupRepresentationsForgetPrivateDirectory
‣ AtlasOfGroupRepresentationsForgetPrivateDirectory( dirid )( function )

If dirid is the identifier of a private data directory that has been notified with AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1) then AtlasOfGroupRepresentationsForgetPrivateDirectory removes the directory from the list of notified private directories; this means that from then on, the data in this directory cannot be accessed anymore in the current session.

5.2 The Effect of Private Extensions on the User Interface

First suppose that only new groups or new data for known groups are added.

In this case, DisplayAtlasInfo (3.5-1) lists the private representations and programs in the same way as the "official" data, except that private parts are marked with the string stored in the component markprivate of AtlasOfGroupRepresentationsInfo (7.1-6); by default, this is a star *. The ordering of representations listed by DisplayAtlasInfo (3.5-1) (and referred to by AtlasGenerators (3.5-2)) will in general change when private directories are notified. If several private directories are used then the ordering of data may depend on the ordering of notifications. For the other interface functions described in Chapter 3, the only difference is that also the private data can be accessed. In particular the "free format" groupnameGi-XdescrWn for straight line programs (see Section 7.6) may be used in private directories; the data can be accessed with AtlasProgram (3.5-3), where the last two arguments are the strings "other" and descr.

If also private data types are introduced (see Section 7.5) then additional columns or rows can appear in the output of DisplayAtlasInfo (3.5-1), and new inputs can become meaningful for all interface functions. Examples for these changes can be found in Section 5.3.

5.3 An Example of Extending the AtlasRep Package

In the beginning we set the info level of InfoAtlasRep (7.1-1) to 1.

gap> level:= InfoLevel( InfoAtlasRep );;
gap> SetInfoLevel( InfoAtlasRep, 1 );

Let us assume that the directory privdir contains data for the cyclic group C_4 of order 4 and for the alternating group A_5 on 5 points, respectively. Note that it is obvious what the term "standard generators" means for the group C_4.

Further let us assume that privdir contains the following files.

C4G1-p4B0.m1

a faithful permutation representation of C_4 on 4 points,

C4G1-max1W1

the straight line program that returns the square of its unique input,

C4G1-a2W1

the straight line program that raises its unique input to the third power,

C4G1-XtestW1

the straight line program that returns the square of its unique input,

A5G1-p60B0.m1 and A5G1-p60B0.m2

the regular permutation representation of A_5.

The directory and the files can be created as follows.

gap> prv:= DirectoryTemporary( "privdir" );;
gap> FileString( Filename( prv, "C4G1-p4B0.m1" ),
>                MeatAxeString( [ (1,2,3,4) ], 4 ) );;
gap> FileString( Filename( prv, "C4G1-max1W1" ),
>                "inp 1\npwr 2 1 2\noup 1 2\n" );;
gap> FileString( Filename( prv, "C4G1-XtestW1" ),
>                "inp 1\npwr 2 1 2\noup 1 2\n" );;
gap> FileString( Filename( prv, "C4G1-a2W1" ),
>                "inp 1\npwr 3 1 2\noup 1 2\n" );;
gap> FileString( Filename( prv, "C4G1-Ar1aB0.g" ),
>                "return rec( generators:= [ [[E(4)]] ] );\n" );;
gap> points:= Elements( AlternatingGroup( 5 ) );;
gap> FileString( Filename( prv, "A5G1-p60B0.m1" ),
>      MeatAxeString( [ Permutation( (1,2)(3,4), points, OnRight ) ], 60 ) );;
gap> FileString( Filename( prv, "A5G1-p60B0.m2" ),
>      MeatAxeString( [ Permutation( (1,3,5), points, OnRight ) ], 60 ) );;

(We could also introduce intermediate directories C4 and A5, say, each with the data for one group only. Here we do not show this because creating directories programmatically seems to be possible only with the GAP package IO.)

The official part of the AtlasRep package does not contain information about C_4, so we first notify this group, in the file privdir/toc.g. Besides the name of the group, we store the following information: the group order, the number of (classes of) maximal subgroups, their orders, their structures, and describing data about the two permutation representations. (The group A_5 is known with name A5 in the official part of the AtlasRep package, so it cannot be notified again.)

gap> FileString( Filename( prv, "toc.g" ), Concatenation( [
>        "AGR.GNAN(\"C4\",\"C4\");\n",
>        "AGR.GRS(\"C4\",4);\n",
>        "AGR.MXN(\"C4\",1);\n",
>        "AGR.MXO(\"C4\",[2]);\n",
>        "AGR.MXS(\"C4\",[\"C2\"]);\n",
>        "AGR.API(\"C4G1-p4B0\",[1,4,\"imprim\",\"1 < C2\"]);\n",
>        "AGR.API(\"A5G1-p60B0\",[1,60,\"imprim\",\"1 < A4\"]);\n",
>        ] ) );;

Then we notify the private directory.

gap> AtlasOfGroupRepresentationsNotifyPrivateDirectory( prv, "priv", true );
true

Now we can use the interface functions for accessing the data in the private directory.

gap> DisplayAtlasInfo( [ "C4" ] );
group | # | maxes | cl | cyc | out | fnd | chk | prs
------+---+-------+----+-----+-----+-----+-----+----
C4*   | 2 |     1 |    |     |   2 |     |     |    
gap> DisplayAtlasInfo( "C4" );
Representations for G = C4:    (all refer to std. generators 1)
---------------------------
1: G <= Sym(4)*   rank 4, on cosets of 1 < C2
2: G <= GL(1a,C)* 

Programs for G = C4:    (all refer to std. generators 1)
--------------------
automorphisms:
  2*
maxes (all 1):
  1*:  C2
other scripts:
  "test"*
gap> DisplayAtlasInfo( "C4", IsPermGroup, true );
Representations for G = C4:    (all refer to std. generators 1)
---------------------------
1: G <= Sym(4)* rank 4, on cosets of 1 < C2
gap> DisplayAtlasInfo( "C4", IsMatrixGroup );
Representations for G = C4:    (all refer to std. generators 1)
---------------------------
2: G <= GL(1a,C)* 
gap> DisplayAtlasInfo( "C4", Dimension, 2 );
gap> DisplayAtlasInfo( "A5", NrMovedPoints, 60 );
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
4: G <= Sym(60)* rank 60, on cosets of 1 < A4
gap> info:= OneAtlasGeneratingSetInfo( "C4" );
rec( groupname := "C4", id := "", 
  identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ], 
  isPrimitive := false, p := 4, rankAction := 4, 
  repname := "C4G1-p4B0", repnr := 1, size := 4, 
  stabilizer := "1 < C2", standardization := 1, transitivity := 1, 
  type := "perm" )
gap> AtlasGenerators( info.identifier );
rec( generators := [ (1,2,3,4) ], groupname := "C4", id := "", 
  identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ], 
  isPrimitive := false, p := 4, rankAction := 4, 
  repname := "C4G1-p4B0", repnr := 1, size := 4, 
  stabilizer := "1 < C2", standardization := 1, transitivity := 1, 
  type := "perm" )
gap> AtlasProgram( "C4", 1 );
rec( groupname := "C4", 
  identifier := [ [ "priv", "C4" ], "C4G1-max1W1", 1 ], 
  program := <straight line program>, size := 2, standardization := 1,
  subgroupname := "C2" )
gap> AtlasProgram( "C4", "maxes", 1 );
rec( groupname := "C4", 
  identifier := [ [ "priv", "C4" ], "C4G1-max1W1", 1 ], 
  program := <straight line program>, size := 2, standardization := 1,
  subgroupname := "C2" )
gap> AtlasProgram( "C4", "maxes", 2 );
fail
gap> AtlasGenerators( "C4", 1 );
rec( generators := [ (1,2,3,4) ], groupname := "C4", id := "", 
  identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ], 
  isPrimitive := false, p := 4, rankAction := 4, 
  repname := "C4G1-p4B0", repnr := 1, size := 4, 
  stabilizer := "1 < C2", standardization := 1, transitivity := 1, 
  type := "perm" )
gap> AtlasGenerators( "C4", 2 );
rec( dim := 1, generators := [ [ [ E(4) ] ] ], groupname := "C4", 
  id := "a", identifier := [ [ "priv", "C4" ], "C4G1-Ar1aB0.g", 1, 1 ]
    , repname := "C4G1-Ar1aB0", repnr := 2, size := 4, 
  standardization := 1, type := "matalg" )
gap> AtlasGenerators( "C4", 3 );
fail
gap> AtlasProgram( "C4", "other", "test" );
rec( groupname := "C4", 
  identifier := [ [ "priv", "C4" ], "C4G1-XtestW1", 1 ], 
  program := <straight line program>, standardization := 1 )

We can restrict the data shown by DisplayAtlasInfo (3.5-1) to the private directory, as follows.

gap> DisplayAtlasInfo( "contents", "priv" );
group                    | # | maxes | cl | cyc | out | fnd | chk | p*
-------------------------+---+-------+----+-----+-----+-----+-----+--*
A5*                      | 1 |       |    |     |     |     |     |  *
C4*                      | 2 |     1 |    |     |   2 |     |     |  *

For checking the data in the private directory, we apply the relevant sanity checks (see Section 7.8).

gap> if not IsBound( AGR.Test ) then
>      ReadPackage( "atlasrep", "gap/test.g" );
>    fi;
gap> AGR.Test.Words( "priv" );
true
gap> AGR.Test.FileHeaders( "priv" );
true
gap> AGR.Test.Files( "priv" );
true
gap> AGR.Test.BinaryFormat( "priv" );
true
gap> AGR.Test.Primitivity( "priv" );
true
gap> AGR.Test.Characters( "priv" );
true

Finally, we "uninstall" the private directory, and reset the info level that had been set to 1 in the beginning. (Also the group name C4 is removed this way, which is an advantage of using a toc.g file over calling AGRGNAN directly.), Note that we need not remove the data in the temporary directory, GAP will do this automatically.

gap> AtlasOfGroupRepresentationsForgetPrivateDirectory( "priv" );
gap> SetInfoLevel( InfoAtlasRep, level );
Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

generated by GAPDoc2HTML

atlasrep/doc/chap0.html0000644000175000017500000006625212701177223013456 0ustar samsam GAP (AtlasRep) - Contents
Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

AtlasRep — A GAP 4 Package

(Version 1.5.1)

Robert A. Wilson
Email: R.A.Wilson@qmul.ac.uk
Homepage: http://www.maths.qmw.ac.uk/~raw

Richard A. Parker
Email: richpark@gmx.co.uk

Simon Nickerson
Homepage: http://nickerson.org.uk/groups

John N. Bray
Email: J.N.Bray@qmul.ac.uk
Homepage: http://www.maths.qmw.ac.uk/~jnb

Thomas Breuer
Email: sam@Math.RWTH-Aachen.De
Homepage: http://www.math.rwth-aachen.de/~Thomas.Breuer

Copyright

© 2002–2016

This package may be distributed under the terms and conditions of the GNU Public License Version 3 or later, see http://www.gnu.org/licenses.

Contents


Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

generated by GAPDoc2HTML

atlasrep/doc/chap4.html0000644000175000017500000011006012701177223013445 0ustar samsam GAP (AtlasRep) - Chapter 4: Customizations of the AtlasRep Package
Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

4 Customizations of the AtlasRep Package

4.1 Installing the AtlasRep Package

To install the package, unpack the archive file in a directory in the pkg directory of your local copy of GAP 4. This might be the pkg directory of the GAP 4 root directory, see Reference: Installing a GAP Package for details. It is however also possible to keep an additional pkg directory in your private directories, see Section Reference: GAP Root Directories. The latter possibility must be chosen if you do not have write access to the GAP root directory.

Data files that are available from an earlier version of the package are in principle kept; see AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates (4.2-4) for necessary updates.

If it is likely that one will work offline, it makes sense to install the "starter archive" that can be downloaded from the package's homepage.

The package consists entirely of GAP code, no external binaries need to be compiled for the package itself. However, if the GAP package IO [Neu14] is used to access remote data files (see Section 4.3-3) then its external binary must be available.

After unpacking the package archive, the write permissions for those directories should be checked into which users will download files. Every user can customize these paths via a user preference, see Section 4.3-9, the defaults are the subdirectories datagens and dataword of the package directory. The recommended permissions under UNIX for the default directories are set as follows.

you@unix> chmod 1777 atlasrep/data*
you@unix> ls -ld atlasrep/data*
drwxrwxrwt   3 you      you          1024 Oct 31 12:34 datagens
drwxrwxrwt   3 you      you          1024 Oct 31 12:34 dataword

For checking the installation of the package, you should start GAP and call

gap> ReadPackage( "atlasrep", "tst/testinst.g" );

If the installation is o.k. then the GAP prompt appears without anything else being printed; otherwise the output lines tell you what should be changed.

More test files are available in the tst directory of the package, see Section  7.8 for details.

PDF, HTML, and text versions of the package manual are available in the doc directory of the package.

4.2 Maintaining the Local Data of the AtlasRep Package

The current table of contents of the database is contained in the file gap/atlasprm.g of the AtlasRep package. This file is read by default when the package is loaded. It may happen that new data files have been added to the servers since the last release of the AtlasRep package, thus it is useful to update the table of contents of the package from time to time.

For that, one can fetch the most recent version of the file gap/atlasprm.g from the home page of the package (see Section 4.4), either by calling ReloadAtlasTableOfContents (4.2-1) in a GAP session or "by hand". In the latter case, the new file can then be read into the GAP session via ReplaceAtlasTableOfContents (4.2-3). Alternatively, one can add a line to the user's gaprc file (see Reference: The gap.ini and gaprc files), which assigns the filename of the current gap/atlasprm.g file (as an absolute path or relative to the user's home directory, cf. Directory (Reference: Directory)) to the global variable ATLASREP_TOCFILE; in this case, this file is read instead of the one from the package distribution when the package is loaded.

Users who have write access to the directory where the AtlasRep package is installed can alternatively use the maketoc script in the etc directory of the package for regularly updating the file gap/atlasprm.g. Users without this write access can store the new file in a different place, and read it with ReplaceAtlasTableOfContents (4.2-3).

4.2-1 ReloadAtlasTableOfContents
‣ ReloadAtlasTableOfContents( dirname )( function )

Returns: fail if the required table of contents could not be reloaded, otherwise true.

Let dirname be a string, which must be one of "remote", "local", or the name of a private data directory (see Chapter 5).

In the case of "remote", the file atlasprm.g is fetched from the package's home page, and then read into GAP. In the case of "local", the subset of the data listed in the "remote" table of contents is considered that are actually available in the local data directories. In the case of a private directory, its contents is inspected, and the table of contents for dirname is replaced by the one obtained from inspecting the actual contents of the data directories (see Section 7.7).

4.2-2 StoreAtlasTableOfContents
‣ StoreAtlasTableOfContents( filename )( function )

Let filename be a string. This function prints the loaded table of contents of the servers to the file with name filename.

4.2-3 ReplaceAtlasTableOfContents
‣ ReplaceAtlasTableOfContents( filename )( function )

Let filename be the name of a file that has been created with StoreAtlasTableOfContents (4.2-2).

ReplaceAtlasTableOfContents first removes the information that GAP has stored about the table of contents of the servers, and then reads the file with name filename, thus replacing the previous information by the stored one.

4.2-4 AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates
‣ AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates( )( function )

Returns: the list of names of all locally available data files that should be removed.

This function fetches the file changes.html from the package's home page, extracts the times of changes for the data files in question, and compares them with the times of the last changes of the local data files. For that, the GAP package IO [Neu14] is needed; if it is not available then an error message is printed, and fail is returned.

If the time of the last modification of a server file is later than that of the local copy then the local file must be updated. (This means that touching files in the local directories will cheat this function.)

It is useful that a system administrator (i. e., someone who has the permission to remove files from the data directories) runs this function from time to time, and afterwards removes the files in the list that is returned. This way, new versions of these files will be fetched automatically from the servers when a user asks for their data.

4.3 User Parameters for the AtlasRep Package

This section lists global parameters for which it might make sense to change their defaults by assignments to global variables (see AtlasOfGroupRepresentationsUserParameters (4.3-8) for an overview of these parameters) or using GAP's user preferences (see Reference: Configuring User preferences).

4.3-1 Local or Remote Access

There are two possibilities to use the AtlasRep package.

Local access only (offline)

You can restrict the access to the data that are actually stored in the local installation of GAP.

Remote access (online)

If your computer is connected to a network that provides access to the ATLAS data (for example the internet) then the functions of the package may fetch the requested data automatically from remote servers when they are required for the first time; these data are then by default stored in the local copy, so later access to them needs no network transfer.

The latter possibility is presently not used by other GAP packages, so it may be regarded as an important feature of the AtlasRep package. Anyhow it requires a few words of explanation.

The possibility of online access reflects in particular the fact that the ATLAS of Group Representations is designed as an open database, it is expected to grow. As soon as the developers of the ATLAS of Group Representations add new information to the servers, these data become available in GAP when remote access is enabled, after one has updated the corresponding table of contents (see Section 4.2).

Remote access is enabled if and only if the value of the remote component of the global variable AtlasOfGroupRepresentationsInfo (7.1-6) is true. If one wants to work offline, i.e., if one does not want GAP to attempt accessing remote data then this value must be set to false.

Conversely, if the default value of the remote component in your GAP installation is false then changing this value to true may be not successful. First, it might be the case that no server is reachable. And second, if one can in principle download files from a server then it might be impossible to actually store these files in the data directories of the installed package; in this case, it is advisable to install the whole package or just its data directories in a private directory, see Reference: GAP Root Directories for details.

4.3-2 Adding and Removing Servers

When access to remote data is enabled (see Section 4.3-1) then the available servers are given by the servers component of the global variable AtlasOfGroupRepresentationsInfo (7.1-6).

Removing entries from this list means to disable access to the corresponding servers, adding entries makes the corresponding servers available. Of course the latter makes sense only if the new servers really exist, for example in a local network.

Currently there is just one remote server. As soon as other servers become available, or a server name is changed which makes it necessary to adjust the servers component, this will be announced in the GAP Forum, cf. Tutorial: Further Information about GAP. The same holds when upgrades of the package become available.

4.3-3 Accessing Data Files with the GAP Package IO or with wget

When access to remote data is enabled (see Section 4.3-1) then one needs either the GAP package IO [Neu14] or the external program wget for accessing data files.

The chosen alternative is given by the value of the wget component of the global variable AtlasOfGroupRepresentationsInfo (7.1-6).

If this component has the value true then only wget is tried, if the value is false then only the IO package is used. If this component is not bound or bound to another value than true or false (this is also the default) then the IO package is preferred to wget if this package is available, and otherwise wget is tried.

Note that the system program wget may be not available, and that it may require some work to install it; hints for that can be found on the home page of the AtlasRep package (see Section 4.4).

4.3-4 Compressed or Uncompressed Data Files

When used with UNIX, GAP can read gzipped files, see Reference: Saving and Loading a Workspace. If the component compress of AtlasOfGroupRepresentationsInfo (7.1-6) has the value true then each MeatAxe format file that is fetched from a remote server is afterwards compressed with gzip. This saves a lot of space if many MeatAxe format files are accessed. (Note that data files in other formats are very small.) For example, at the time of the release of version 1.5.1 there were about 8400 data files in MeatAxe format, which needed about 1400 MB in uncompressed text format and about 275 MB in compressed text format. The default value for the component compress is false.

4.3-5 Customizing DisplayAtlasInfo

The way how DisplayAtlasInfo (3.5-1) shows the requested overview is controlled by the component displayFunction of AtlasOfGroupRepresentationsInfo (7.1-6). The default value is Print (Reference: Print), other useful values are PrintFormattedString (GAPDoc: PrintFormattedString) and AGR.Pager; the latter calls Pager (Reference: Pager) with the formatted option, which is necessary for switching off GAP's automatic line breaking.

4.3-6 Customizing the Access to Data Files

By default, local data files are stored in the subdirectories datagens and dataword of the directory given by the user preference AtlasRepDataDirectory (see Section 4.3-9), and the files are exactly the text files provided on the servers. However, a more flexible approach may be useful.

First, one may want to use different file formats, for example the MeatAxe binary files that are provided by the servers parallel to the MeatAxe text files. Second, one may want to use a different directory structure, for example the same structure as used on the servers –this makes sense for example if a local mirror of a server is available, because then one can read the server files directly, without transferring/copying them to another directory.

As a consequence, one would like to customize the meaning of the following three access steps.

Are the required files locally available?

The required files may have a different name or a different path, and the data can be available in one file or can be distributed to several files.

How can a file be made locally available?

A different server file may be fetched or some postprocessing may be required.

How is the data of a file accessed by GAP?

A different function may be needed to read the file.

Details how to achieve these customizations can be found in Section 7.2.

4.3-7 Reading Large Matrices over Finite Fields

Matrices over finite fields in GAP can be represented in a compressed format that needs less space than the corresponding text file. Such a MeatAxe format text file can be read by ScanMeatAxeFile (7.3-1) either line by line (which is the default) or as a whole; the latter is faster but needs more space than the former. For example, a 4370 by 4370 matrix over the field with two elements (as occurs for an irreducible representation of the Baby Monster) requires less than 3 MB space in GAP but the corresponding MeatAxe format text file is more than 19 MB large, which means that when one reads the file with the fast variant, GAP will temporarily grow by more than this value. One can change the mode by setting the global variable CMeatAxe.FastRead (7.1-4) to true or false, respectively.

Note that this parameter is meaningful only when ScanMeatAxeFile (7.3-1) is used. It has no effect for example if MeatAxe binary files are read, cf. FFMatOrPermCMtxBinary (7.3-5).

4.3-8 AtlasOfGroupRepresentationsUserParameters
‣ AtlasOfGroupRepresentationsUserParameters( )( function )

This function returns a string that describes an overview of the current values of the user parameters introduced in this section. One can use Print (Reference: Print) or Pager (Reference: Pager) for showing the overview.

4.3-9 User preference AtlasRepDataDirectory

The value must be a string that is the filename of a directory (in the sense of IsDirectoryPath (Reference: IsDirectoryPath)) that contains the directories datagens and dataword in which downloaded data will be stored. The default is the installation path of the AtlasRep package (including a trailing slash symbol).

4.3-10 User preference WriteMeatAxeFilesOfMode2

The value true means that the function MeatAxeString (7.3-2) will encode permutation matrices via mode 2 descriptions, that is, the first entry in the header line is 2, and the following lines contain the positions of the nonzero entries. If the value is false (the default) then MeatAxeString (7.3-2) encodes permutation matrices via mode 1 or mode 6 descriptions, that is, the lines contain the matrix entries.

4.3-11 User preference BaseOfMeatAxePermutation

The value 0 means that the function CMtxBinaryFFMatOrPerm (7.3-4) writes zero-based permutations, that is, permutations acting on the points from 0 to the degree minus one; this is achieved by shifting down all images of the GAP permutation by one. The value 1 (the default) means that the permutation stored in the binary file acts on the points from 1 to the degree.

Up to version 2.3 of the C-MeatAxe, permutations in binary files were always one-based. Zero-based permutations were introduced in version 2.4, which still is able to read files containing one-based permutations.

4.4 Web Services for the AtlasRep Package

The home page of the AtlasRep package is

http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep.

Besides package archives and introductory package information, it provides

4.5 Extending the ATLAS Database

Users who have computed new representations that might be interesting for inclusion into the ATLAS of Group representations can send the data in question to R.A.Wilson@qmul.ac.uk.

It is also possible to store "private" representations and programs in local directories, and to use them in the same way as the "official" data. See Chapter 5 for details.

Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

generated by GAPDoc2HTML

atlasrep/doc/chap7.html0000644000175000017500000036604612701177223013471 0ustar samsam GAP (AtlasRep) - Chapter 7: Technicalities of the AtlasRep Package
Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

7 Technicalities of the AtlasRep Package

This chapter describes those parts of the GAP interface to the ATLAS of Group Representations that do not belong to the user interface (cf. Chapter 3).

Besides global variables used for administrational purposes (see Section 7.1) and several sanity checks (see Section 7.8), they can be regarded as the interface between the data actually contained in the files and the corresponding GAP objects (see Section 7.2, 7.3, 7.4, and 7.5), and the interface between the remote and the local version of the database (see Section 7.6 and 7.7). The former interface contains functions to read and write files in MeatAxe format, which may be interesting for users familiar with MeatAxe standalones (see for example [Rin]). Other low level functions may be undocumented in the sense that they are not described in this manual. Users interested in them may look at the actual implementation in the gap directory of the package, but it may happen that this will be changed in future versions of the package.

7.1 Global Variables Used by the AtlasRep Package

For debugging purposes, the functions from the GAP interface to the ATLAS of Group Representations print information depending on the info level of the info classes InfoAtlasRep (7.1-1), InfoCMeatAxe (7.1-2), and InfoBBox (7.1-3) (cf. Reference: Info Functions).

The info level of an info class can be changed using SetInfoLevel (Reference: SetInfoLevel). For example, the info level of InfoAtlasRep (7.1-1) can be set to the nonnegative integer n using SetInfoLevel( InfoAtlasRep, n ).

Information about files being read can be obtained by setting the value of the global variable InfoRead1 to Print (Reference: Print).

7.1-1 InfoAtlasRep
‣ InfoAtlasRep( info class )

If the info level of InfoAtlasRep is at least 1 then information about fail results of functions in the AtlasRep package is printed. If the info level is at least 2 then information about calls to external programs is printed. The default level is 0, no information is printed on this level.

7.1-2 InfoCMeatAxe
‣ InfoCMeatAxe( info class )

If the info level of InfoCMeatAxe is at least 1 then information about fail results of C-MeatAxe functions is printed. The default level is zero, no information is printed on this level.

7.1-3 InfoBBox
‣ InfoBBox( info class )

If the info level of InfoBBox is at least 1 then information about fail results of functions dealing with black box programs (see Section 6.2) is printed. The default level is 0, no information is printed on this level.

7.1-4 CMeatAxe.FastRead
‣ CMeatAxe.FastRead( global variable )

If this component is bound and has the value true then ScanMeatAxeFile (7.3-1) reads text files via StringFile (GAPDoc: StringFile). Otherwise each file containing a matrix over a finite field is read line by line via ReadLine (Reference: ReadLine), and the GAP matrix is constructed line by line, in a compressed representation (see Reference: Row Vectors over Finite Fields and Reference: Matrices over Finite Fields), which makes it possible to read large matrices in a reasonable amount of space. The StringFile (GAPDoc: StringFile) approach is faster but needs more intermediate space when text files containing matrices over finite fields are read.

7.1-5 AGR
‣ AGR( global variable )

is a record whose components are functions and data that are used by the higher level interface functions.

7.1-6 AtlasOfGroupRepresentationsInfo
‣ AtlasOfGroupRepresentationsInfo( global variable )

This is a record that is defined in the file gap/types.g of the package, with the following components.

Components corresponding to user parameters (see Section 4.3) are

remote

a boolean that controls what files are available; if the value is true then GAP is allowed to try remotely accessing any ATLAS file from the servers (see below) and thus all files listed in the global table of contents are available, if the value is false then GAP may access only those files that are stored in the database directories of the local GAP installation (see Section 4.3-1),

servers

a list of pairs [ server, path ], where server is a string denoting the http address of a server where files can be fetched that are not stored in the local database, and path is a string describing the path where the data directories on the server reside,

wget

controls whether the GAP package IO [Neu14] or the external program wget is used to fetch data files, see 4.3-3,

compress

a boolean that controls whether MeatAxe format text files are stored in compressed form; if the value is true then these files are compressed with gzip after they have been fetched from a server, see Section 4.3-4,

displayFunction

the function that is used by DisplayAtlasInfo (3.5-1) for printing the formatted data, see Section 4.3-5,

accessFunctions

a list of records, each describing how to access the data files, see Sections 4.3-6 and 7.2, and

markprivate

a string used in DisplayAtlasInfo (3.5-1) to mark private data, see Section  5.2.

System components (which are computed automatically) are

GAPnames

a list of pairs, each containing the GAP name and the ATLAS-file name of a group, see Section 3.2,

groupnames

a list of triples, each containing at the first position the name of the directory on each server that contains data about the group G in question, at the second position the name of the (usually simple) group for which a subdirectory exists that contains the data about G, and at the third position the ATLAS-file name used for G, see Section 7.6,

private

a list of pairs of strings used for administrating private data (see Chapter 5); the value is changed by AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1) and AtlasOfGroupRepresentationsForgetPrivateDirectory (5.1-2),

characterinfo, permrepinfo, ringinfo

additional information about representations, concerning the characters afforded, the point stabilizers of permutation representations, and the ring of definition of matrix representations; this information is used by DisplayAtlasInfo (3.5-1),

TableOfContents

a record with at most the components local, remote, types, and the names of private data directories. The values of the components local and remote can be computed automatically by ReloadAtlasTableOfContents (4.2-1), the value of the component types is set in AGR.DeclareDataType (7.5-1), and the values of the components for local data directories are created by AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1).

7.2 How to Customize the Access to Data files

We discuss the three steps listed in Section 4.3-6.

For creating an overview of the locally available data, the first of these steps must be available independent of actually accessing the file in question. For updating the local copy of the server data, the second of the above steps must be available independent of the third one. Therefore, the package provides the possibility to extend the default behaviour by adding new records to the accessFunctions component of AtlasOfGroupRepresentationsInfo (7.1-6). Its components are as follows.

location( filename, groupname, dirname, type )

Let filename be the default filename (without path) of the required file, or a list of such filenames. Let groupname be the ATLAS name of the group to which the data in these files belong, dirname be the default directory name (one of "datagens", "dataword", or the dirid value of a private directory, see AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1)), and type be the data type (see AGR.DeclareDataType (7.5-1)). This function must return either the absolute path(s) where the mechanism implemented by the current record expects the local version of the given file(s), or fail if this function does not feel responsible for these file(s). In the latter case, the location function in another record will know a path.

The file(s) is/are regarded as not locally available if all installed location functions return either fail or paths of nonexisting files, in the sense of IsExistingFile (Reference: IsExistingFile).

fetch( filepath, filename, groupname, dirname, type )

This function is called when a file is not locally available and if the location function in the current record has returned a path or a list of paths. The arguments dirname and type must be the same as for the location function, and filepath and filename must be strings (not lists of strings).

The return value must be true if the function succeeded with making the file locally available (including postprocessing if applicable), and false otherwise.

contents( filepath, type )

This function is called when the location function in the current record has returned the path(s) filepath, and if either these are paths of existing files or the fetch function in the current record has been called for these paths, and the return value was true. The argument type must be the same as for the location and the fetch functions.

The return value must be the contents of the file(s), in the sense that the GAP matrix, matrix list, permutation, permutation list, or program described by the file(s) is returned. This means that besides reading the file(s) via the appropriate function, interpreting the contents may be necessary.

description

This must be a short string that describes for which kinds of files the functions in the current record are intended, which file formats are supported etc. The value is used by AtlasOfGroupRepresentationsUserParameters (4.3-8).

active

The current accessFunctions record is ignored by AGR.FileContents (7.6-2) if the value is not true.

In AGR.FileContents (7.6-2), the records in the accessFunctions component of AtlasOfGroupRepresentationsInfo (7.1-6) are considered in reversed order.

By default, the accessFunctions list contains three records. Only for one of them, the active component has the value true. One of the other two records can be used to change the access to permutation representations and to matrix representations over finite fields such that MeatAxe binary files are transferred and read instead of MeatAxe text files. The fourth record makes sense only if a local server is accessible, i. e., if the server files can be read directly, without being transferred into the data directories of the package.

7.3 Reading and Writing MeatAxe Format Files

7.3-1 ScanMeatAxeFile
‣ ScanMeatAxeFile( filename[, q][, "string"] )( function )

Returns: the matrix or list of permutations stored in the file or encoded by the string.

Let filename be the name of a GAP readable file (see Reference: Filename) that contains a matrix or a permutation or a list of permutations in MeatAxe text format (see the section about the program zcv in the C-MeatAxe documentation [Rin]), and let q be a prime power. ScanMeatAxeFile returns the corresponding GAP matrix or list of permutations, respectively.

If the file contains a matrix then the way how it is read by ScanMeatAxeFile depends on the value of the global variable CMeatAxe.FastRead (7.1-4).

If the parameter q is given then the result matrix is represented over the field with q elements, the default for q is the field size stored in the file.

If the file contains a list of permutations then it is read with StringFile (GAPDoc: StringFile); the parameter q, if given, is ignored in this case.

If the string "string" is entered as the third argument then the first argument must be a string as obtained by reading a file in MeatAxe text format as a text stream (see InputTextFile (Reference: InputTextFile)). Also in this case, ScanMeatAxeFile returns the corresponding GAP matrix or list of permutations, respectively.

7.3-2 MeatAxeString
‣ MeatAxeString( mat, q )( operation )
‣ MeatAxeString( perms, degree )( operation )
‣ MeatAxeString( perm, q, dims )( operation )

Returns: a string encoding the GAP objects given as input in MeatAxe format.

In the first form, for a matrix mat whose entries lie in the finite field with q elements, MeatAxeString returns a string that encodes mat as a matrix over GF(q), in MeatAxe text format.

In the second form, for a nonempty list perms of permutations that move only points up to the positive integer degree, MeatAxeString returns a string that encodes perms as permutations of degree degree, in C-MeatAxe text format (see [Rin]).

In the third form, for a permutation perm with largest moved point n, say, a prime power q, and a list dims of length two containing two positive integers larger than or equal to n, MeatAxeString returns a string that encodes perm as a matrix over GF(q), of dimensions dims, whose first n rows and columns describe the permutation matrix corresponding to perm, and the remaining rows and columns are zero.

When strings are printed to files using PrintTo (Reference: PrintTo) or AppendTo (Reference: AppendTo) then line breaks are inserted whenever lines exceed the number of characters given by the second entry of the list returned by SizeScreen (Reference: SizeScreen), see Reference: Operations for Output Streams. This behaviour is not desirable for creating data files. So the recommended functions for printing the result of MeatAxeString to a file are FileString (GAPDoc: FileString) and WriteAll (Reference: WriteAll).

gap> mat:= [ [ 1, -1 ], [ 0, 1 ] ] * Z(3)^0;;
gap> str:= MeatAxeString( mat, 3 );
"1 3 2 2\n12\n01\n"
gap> mat = ScanMeatAxeFile( str, "string" );
true
gap> str:= MeatAxeString( mat, 9 );
"1 9 2 2\n12\n01\n"
gap> mat = ScanMeatAxeFile( str, "string" );
true
gap> perms:= [ (1,2,3)(5,6) ];;
gap> str:= MeatAxeString( perms, 6 );
"12 1 6 1\n2\n3\n1\n4\n6\n5\n"
gap> perms = ScanMeatAxeFile( str, "string" );
true
gap> str:= MeatAxeString( perms, 8 );
"12 1 8 1\n2\n3\n1\n4\n6\n5\n7\n8\n"
gap> perms = ScanMeatAxeFile( str, "string" );
true

Note that the output of MeatAxeString in the case of permutation matrices depends on the user preference WriteMeatAxeFilesOfMode2.

gap> perm:= (1,2,4);;
gap> str:= MeatAxeString( perm, 3, [ 5, 6 ] );
"2 3 5 6\n2\n4\n3\n1\n5\n"
gap> mat:= ScanMeatAxeFile( str, "string" );;  Print( mat, "\n" );
[ [ 0*Z(3), Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ], 
  [ 0*Z(3), 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3), 0*Z(3) ], 
  [ 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3) ], 
  [ Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ], 
  [ 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3) ] ]
gap> pref:= UserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2" );;
gap> SetUserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2", true );
gap> MeatAxeString( mat, 3 ) = str;
true
gap> SetUserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2", false );
gap> MeatAxeString( mat, 3 );
"1 3 5 6\n010000\n000100\n001000\n100000\n000010\n"
gap> SetUserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2", pref );

7.3-3 FFList
‣ FFList( F )( function )

Returns: a list of elements in the given finite field.

‣ FFLists( global variable )

FFList is a utility program for the conversion of vectors and matrices from MeatAxe format to GAP format and vice versa. It is used by ScanMeatAxeFile (7.3-1) and MeatAxeString (7.3-2).

For a finite field F, FFList returns a list l giving the correspondence between the MeatAxe numbering and the GAP numbering of the elements in F.

The element of F corresponding to MeatAxe number n is l[ n+1 ], and the MeatAxe number of the field element z is Position( l, z ) - 1.

The global variable FFLists is used to store the information about F once it has been computed.

gap> FFList( GF(4) );
[ 0*Z(2), Z(2)^0, Z(2^2), Z(2^2)^2 ]
gap> IsBound( FFLists[4] );
true

7.3-4 CMtxBinaryFFMatOrPerm
‣ CMtxBinaryFFMatOrPerm( elm, def, outfile[, base] )( function )

Let the pair (elm, def) be either of the form (M, q) where M is a matrix over a finite field F, say, with q ≤ 256 elements, or of the form (π, n) where π is a permutation with largest moved point at most n. Let outfile be a string. CMtxBinaryFFMatOrPerm writes the C-MeatAxe binary format of M, viewed as a matrix over F, or of π, viewed as a permutation on the points up to n, to the file with name outfile.

In the case of a permutation π, the optional argument base prescribes whether the binary file contains the points from 0 to deg- 1 (base= 0, supported by version 2.4 of the C-MeatAxe) or the points from 1 to deg (base= 1, supported by older versions of the C-MeatAxe). The default for base is given by the value of the user preference BaseOfMeatAxePermutation, see Section 4.3-11.

(The binary format is described in the C-MeatAxe manual [Rin].)

gap> tmpdir:= DirectoryTemporary();;
gap> mat:= Filename( tmpdir, "mat" );;
gap> q:= 4;;
gap> mats:= GeneratorsOfGroup( GL(10,q) );;
gap> CMtxBinaryFFMatOrPerm( mats[1], q, Concatenation( mat, "1" ) );
gap> CMtxBinaryFFMatOrPerm( mats[2], q, Concatenation( mat, "2" ) );
gap> prm:= Filename( tmpdir, "prm" );;
gap> n:= 200;;
gap> perms:= GeneratorsOfGroup( SymmetricGroup( n ) );;
gap> CMtxBinaryFFMatOrPerm( perms[1], n, Concatenation( prm, "1" ) );
gap> CMtxBinaryFFMatOrPerm( perms[2], n, Concatenation( prm, "2" ) );
gap> CMtxBinaryFFMatOrPerm( perms[1], n, Concatenation( prm, "1a" ), 0 );
gap> CMtxBinaryFFMatOrPerm( perms[2], n, Concatenation( prm, "2b" ), 1 );

7.3-5 FFMatOrPermCMtxBinary
‣ FFMatOrPermCMtxBinary( fname )( function )

Returns: the matrix or permutation stored in the file.

Let fname be the name of a file that contains the C-MeatAxe binary format of a matrix over a finite field or of a permutation, as is described in [Rin]. FFMatOrPermCMtxBinary returns the corresponding GAP matrix or permutation.

gap> FFMatOrPermCMtxBinary( Concatenation( mat, "1" ) ) = mats[1];
true
gap> FFMatOrPermCMtxBinary( Concatenation( mat, "2" ) ) = mats[2];
true
gap> FFMatOrPermCMtxBinary( Concatenation( prm, "1" ) ) = perms[1];
true
gap> FFMatOrPermCMtxBinary( Concatenation( prm, "2" ) ) = perms[2];
true
gap> FFMatOrPermCMtxBinary( Concatenation( prm, "1a" ) ) = perms[1];
true
gap> FFMatOrPermCMtxBinary( Concatenation( prm, "2b" ) ) = perms[2];
true

7.4 Reading and Writing ATLAS Straight Line Programs

7.4-1 ScanStraightLineProgram
‣ ScanStraightLineProgram( filename[, "string"] )( function )

Returns: a record containing the straight line program.

Let filename be the name of a file that contains a straight line program in the sense that it consists only of lines in the following form.

#anything

lines starting with a hash sign # are ignored,

echo anything

lines starting with echo are ignored for the program component of the result record (see below), they are used to set up the bijection between the labels used in the program and conjugacy class names in the case that the program computes dedicated class representatives,

inp n

means that there are n inputs, referred to via the labels 1, 2, ..., n,

inp k a1 a2 ... ak

means that the next k inputs are referred to via the labels a1, a2, ..., ak,

cjr a b

means that a is replaced by b^(-1) * a * b,

cj a b c

means that c is defined as b^(-1) * a * b,

com a b c

means that c is defined as a^(-1) * b^(-1) * a * b,

iv a b

means that b is defined as a^(-1),

mu a b c

means that c is defined as a * b,

pwr a b c

means that c is defined as b^a,

cp a b

means that b is defined as a copy of a,

oup l

means that there are l outputs, stored in the labels 1, 2, ..., l, and

oup l b1 b2 ... bl

means that the next l outputs are stored in the labels b1, b2, ... bl.

Each of the labels a, b, c can be any nonempty sequence of digits and alphabet characters, except that the first argument of pwr must denote an integer.

If the inp or oup statements are missing then the input or output, respectively, is assumed to be given by the labels 1 and 2. There can be multiple inp lines at the beginning of the program and multiple oup lines at the end of the program. Only the first inp or oup line may omit the names of the elements. For example, an empty file filename or an empty string string represent a straight line program with two inputs that are returned as outputs.

No command except cjr may overwrite its own input. For example, the line mu a b a is not legal. (This is not checked.)

ScanStraightLineProgram returns a record containing as the value of its component program the corresponding GAP straight line program (see IsStraightLineProgram (Reference: IsStraightLineProgram)) if the input string satisfies the syntax rules stated above, and returns fail otherwise. In the latter case, information about the first corrupted line of the program is printed if the info level of InfoCMeatAxe (7.1-2) is at least 1.

If the string "string" is entered as the second argument then the first argument must be a string as obtained by reading a file in MeatAxe text format as a text stream (see InputTextFile (Reference: InputTextFile)). Also in this case, ScanStraightLineProgram returns either a record with the corresponding GAP straight line program or fail.

If the input describes a straight line program that computes certain class representatives of the group in question then the result record also contains the component outputs. Its value is a list of strings, the entry at position i denoting the name of the class in which the i output of the straight line program lies; see Section 3.4 for the definition of the class names that occur.

Such straight line programs must end with a sequence of output specifications of the following form.

echo "Classes 1A 2A 3A 5A 5B"
oup 5 3 1 2 4 5

This example means that the list of outputs of the program contains elements of the classes 1A, 2A, 3A, 5A, and 5B (in this order), and that inside the program, these elements are referred to by the five names 3, 1, 2, 4, and 5.

7.4-2 AtlasStringOfProgram
‣ AtlasStringOfProgram( prog[, outputnames] )( function )
‣ AtlasStringOfProgram( prog[, "mtx"] )( function )

Returns: a string encoding the straight line program/decision in the format used in ATLAS files.

For a straight line program or straight line decision prog (see IsStraightLineProgram (Reference: IsStraightLineProgram) and IsStraightLineDecision (6.1-1)), this function returns a string describing the input format of an equivalent straight line program or straight line decision as used in the ATLAS of Group Representations, that is, the lines are of the form described in ScanStraightLineProgram (7.4-1).

A list of strings that is given as the optional second argument outputnames is interpreted as the class names corresponding to the outputs; this argument has the effect that appropriate echo statements appear in the result string.

If the string "mtx" is given as the second argument then the result has the format used in the C-MeatAxe (see [Rin]) rather than the format described in Section 7.4. (Note that the C-MeatAxe format does not make sense if the argument outputnames is given, and that this format does not support inp and oup statements.)

The argument prog must not be a black box program (see IsBBoxProgram (6.2-1)).

gap> str:= "inp 2\nmu 1 2 3\nmu 3 1 2\niv 2 1\noup 2 1 2";;
gap> prg:= ScanStraightLineProgram( str, "string" );
rec( program := <straight line program> )
gap> prg:= prg.program;;
gap> Display( prg );
# input:
r:= [ g1, g2 ];
# program:
r[3]:= r[1]*r[2];
r[2]:= r[3]*r[1];
r[1]:= r[2]^-1;
# return values:
[ r[1], r[2] ]
gap> StringOfResultOfStraightLineProgram( prg, [ "a", "b" ] );
"[ (aba)^-1, aba ]"
gap> AtlasStringOfProgram( prg );
"inp 2\nmu 1 2 3\nmu 3 1 2\niv 2 1\noup 2\n"
gap> prg:= StraightLineProgram( "(a^2b^3)^-1", [ "a", "b" ] );
<straight line program>
gap> Print( AtlasStringOfProgram( prg ) );
inp 2
pwr 2 1 4
pwr 3 2 5
mu 4 5 3
iv 3 4
oup 1 4
gap> prg:= StraightLineProgram( [ [2,3], [ [3,1,1,4], [1,2,3,1] ] ], 2 );
<straight line program>
gap> Print( AtlasStringOfProgram( prg ) );
inp 2
pwr 3 2 3
pwr 4 1 5
mu 3 5 4
pwr 2 1 6
mu 6 3 5
oup 2 4 5
gap> Print( AtlasStringOfProgram( prg, "mtx" ) );
# inputs are expected in 1 2
zsm pwr3 2 3
zsm pwr4 1 5
zmu 3 5 4
zsm pwr2 1 6
zmu 6 3 5
echo "outputs are in 4 5"
gap> str:= "inp 2\nchor 1 2\nchor 2 3\nmu 1 2 3\nchor 3 5";;
gap> prg:= ScanStraightLineDecision( str );;
gap> AtlasStringOfProgram( prg.program );
"inp 2\nchor 1 2\nchor 2 3\nmu 1 2 3\nchor 3 5\n"

7.5 Data Types Used in the ATLAS of Group Representations

Each representation or program that is administrated by the AtlasRep package belongs to a unique data type. Informally, examples of data types are "permutation representation", "matrix representation over the integers", or "straight line program for computing class representatives".

The idea is that for each data type, there can be

  • a column of its own in the output produced by DisplayAtlasInfo (3.5-1) when called without arguments or with only argument a list of group names,

  • a line format of its own for the output produced by DisplayAtlasInfo (3.5-1) when called with first argument a group name,

  • an input format of its own for AtlasProgram (3.5-3),

  • an input format of its own for OneAtlasGeneratingSetInfo (3.5-5), and

  • specific tests for the data of this data type; these functions are used by the global tests described in Section 7.8.

Formally, a data type is defined by a record whose components are used by the interface functions. The details are described in the following.

7.5-1 AGR.DeclareDataType
‣ AGR.DeclareDataType( kind, name, record )( function )

Let kind be one of the strings "rep" or "prg", and record be a record. AGR.DeclareDataType declares a new data type of representations (if kind is "rep") or of programs (if kind is "prg"). For each group used in the AtlasRep package, the record that contains the information about the data will have a component name whose value is a list containing the data about the new type. Examples of name are "perm", "matff", and "classes".

Mandatory components of record are

FilenameFormat

This defines the format of the filenames containing data of the type in question. The value must be a list that can be used as the second argument of AGR.ParseFilenameFormat (7.6-1), such that only filenames of the type in question match. (It is not checked whether this "detection function" matches exactly one type, so declaring a new type needs care.)

AddFileInfo

This defines the information stored in the table of contents for the data of the type. The value must be a function that takes three arguments (the current list of data for the type and the given group, a list returned by AGR.ParseFilenameFormat (7.6-1) for the given type, and a filename). This function adds the necessary parts of the data entry to the list, and returns true if the data belongs to the type, otherwise false is returned; note that the latter case occurs if the filename matches the format description but additional conditions on the parts of the name are not satisfied (for example integer parts may be required to be positive or prime powers).

ReadAndInterpretDefault

This is the function that does the work for the default contents value of the accessFunctions component of AtlasOfGroupRepresentationsInfo (7.1-6), see Section 7.2. This function must take a path and return the GAP object given by this file.

AddDescribingComponents (for rep only)

This function takes two arguments, a record (that will be returned by AtlasGenerators (3.5-2), OneAtlasGeneratingSetInfo (3.5-5), or AllAtlasGeneratingSetInfos (3.5-6)) and the type record record. It sets the components p, dim, id, and ring that are promised for return values of the abovementioned three functions.

DisplayGroup (for rep only)

This defines the format of the lines printed by DisplayAtlasInfo (3.5-1) for a given group. The value must be a function that takes a list as returned by the function given in the component AddFileInfo, and returns the string to be printed for the representation in question.

Optional components of record are

DisplayOverviewInfo

This is used to introduce a new column in the output of DisplayAtlasInfo (3.5-1) when this is called without arguments or with a list of group names as its only argument. The value must be a list of length three, containing at its first position a string used as the header of the column, at its second position one of the strings "r" or "l", denoting right or left aligned column entries, and at its third position a function that takes two arguments (a list of tables of contents of the AtlasRep package and a group name), and returns a list of length two, containing the string to be printed as the column value and true or false, depending on whether private data is involved or not. (The default is fail, indicating that no new column shall be printed.)

DisplayPRG (for prg only)

This is used in DisplayAtlasInfo (3.5-1) for ATLAS programs. The value must be a function that takes four arguments (a list of tables of contents to examine, the name of the given group, a list of integers or true for the required standardization, and a list of all available standardizations), and returns the list of lines (strings) to be printed as the information about the available programs of the current type and for the given group. (The default is to return an empty list.)

AccessGroupCondition (for rep only)

This is used in DisplayAtlasInfo (3.5-1) and OneAtlasGeneratingSetInfo (3.5-5). The value must be a function that takes two arguments (a list as returned by OneAtlasGeneratingSetInfo (3.5-5), and a list of conditions), and returns true or false, depending on whether the first argument satisfies the conditions. (The default value is ReturnFalse (Reference: ReturnFalse).)

The function must support conditions such as [ IsPermGroup, true ] and [ NrMovedPoints, [ 5, 6 ] ], in general a list of functions followed by a prescribed value, a list of prescribed values, another (unary) function, or the string "minimal". For an overview of the interesting functions, see DisplayAtlasInfo (3.5-1).

AccessPRG (for prg only)

This is used in AtlasProgram (3.5-3). The value must be a function that takes three arguments (the record with the information about the given group in the current table of contents, an integer or a list of integers or true for the required standardization, and a list of conditions given by the optional arguments of AtlasProgram (3.5-3)), and returns either fail or a list that together with the group name forms the identifier of a program that matches the conditions. (The default value is ReturnFail (Reference: ReturnFail).)

AtlasProgram (for prg only)

This is used in AtlasProgram (3.5-3) to create the result value from the identifier. (The default value is AtlasProgramDefault, which works whenever the second entry of the identifier is the filename; this is not the case for example if the program is the composition of several programs.)

AtlasProgramInfo (for prg only)

This is used in AtlasProgramInfo (3.5-4) to create the result value from the identifier. (The default value is AtlasProgramDefault.)

TOCEntryString

This is used in StoreAtlasTableOfContents (4.2-2). The value must be a function that takes two arguments (the name name of the type and a list as returned by AGR.ParseFilenameFormat (7.6-1) and returns a string that describes the appropriate function call. (The default value is TOCEntryStringDefault.)

PostprocessFileInfo

This is used in the construction of a table of contents via ReloadAtlasTableOfContents (4.2-1), for testing or rearranging the data of the current table of contents. The value must be a function that takes two arguments, the table of contents record and the record in it that belongs to one fixed group. (The default function does nothing.)

SortTOCEntries

This is used in the construction of a table of contents (see ReloadAtlasTableOfContents (4.2-1)), for sorting the entries after they have been added and after the value of the component PostprocessFileInfo has been called. The value must be a function that takes a list as returned by AGR.ParseFilenameFormat (7.6-1), and returns the sorting key. (There is no default value, which means that no sorting is needed.)

TestFileHeaders (for rep only)

This is used in the function AGR.Test.FileHeaders. The value must be a function that takes the same four arguments as AGR.FileContents (7.6-2), except that the first argument "datagens" can be replaced by "local" and that the third argument is a list as returned by AGR.ParseFilenameFormat (7.6-1). (The default value is ReturnTrue (Reference: ReturnTrue).)

TestFiles (for rep only)

This is used in the function AGR.Test.Files. The format of the value and the default are the same as for the value of the component TestFileHeaders.

TestWords (for prg only)

This is used in the function AGR.Test.Words. The value must be a function that takes five arguments where the first four are the same arguments as for AGR.FileContents (7.6-2), except that the first argument "dataword" can be replaced by "local", and the fifth argument is true or false, indicating verbose mode or not.

7.6 Filenames Used in the ATLAS of Group Representations

The data of each local GAP version of the ATLAS of Group Representations are either private (see Chapter 5) or are stored in the two directories datagens and dataword. In the following, we describe the format of filenames in the latter two directories, as a reference of the "official" part of the ATLAS.

In the directory datagens, the generators for the representations available are stored, the directory dataword contains the programs to compute conjugacy class representatives, generators of maximal subgroups, images of generators under automorphisms of a given group G from standard generators of G, and to check and compute standard generators (see Section 3.3).

The name of each data file in the ATLAS of Group Representations describes the contents of the file. This section lists the definitions of the filenames used.

Each filename consists of two parts, separated by a minus sign -. The first part is always of the form groupnameGi, where the integer i denotes the i-th set of standard generators for the group G, say, with ATLAS-file name groupname (see 3.2). The translations of the name groupname to the name(s) used within GAP is given by the component GAPnames of AtlasOfGroupRepresentationsInfo (7.1-6).

The filenames in the directory dataword have one of the following forms. In each of these cases, the suffix Wn means that n is the version number of the program.

groupnameGi-cycWn

In this case, the file contains a straight line program that returns a list of representatives of generators of maximally cyclic subgroups of G. An example is Co1G1-cycW1.

groupnameGi-cclsWn

In this case, the file contains a straight line program that returns a list of conjugacy class representatives of G. An example is RuG1-cclsW1.

groupnameGicycWn-cclsWm

In this case, the file contains a straight line program that takes the return value of the program in the file groupnameGi-cycWn (see above), and returns a list of conjugacy class representatives of G. An example is M11G1cycW1-cclsW1.

groupnameGi-maxkWn

In this case, the file contains a straight line program that takes generators of G w.r.t. the i-th set of standard generators, and returns a list of generators (in general not standard generators) for a subgroup U in the k-th class of maximal subgroups of G. An example is J1G1-max7W1.

groupnameGimaxkWn-subgroupnameGjWm

In this case, the file contains a straight line program that takes the return value of the program in the file groupnameGi-maxkWn (see above), which are generators for a group U, say; subgroupname is a name for U, and the return value is a list of standard generators for U, w.r.t. the j-th set of standard generators. (Of course this implies that the groups in the k-th class of maximal subgroups of G are isomorphic to the group with name subgroupname.) An example is J1G1max1W1-L211G1W1; the first class of maximal subgroups of the Janko group J_1 consists of groups isomorphic to the linear group L_2(11), for which standard generators are defined.

groupnameGi-aoutnameWn

In this case, the file contains a straight line program that takes generators of G w.r.t. the i-th set of standard generators, and returns the list of their images under the outer automorphism α of G given by the name outname; if this name is empty then α is the unique nontrivial outer automorphism of G; if it is a positive integer k then α is a generator of the unique cyclic order k subgroup of the outer automorphism group of G; if it is of the form 2_1 or 2a, 4_2 or 4b, 3_3 or 3c ... then α generates the cyclic group of automorphisms induced on G by G.2_1, G.4_2, G.3_3 ...; finally, if it is of the form kpd, with k one of the above forms and d an integer then d denotes the number of dashes appended to the automorphism described by k; if d = 1 then d can be omitted. Examples are A5G1-aW1, L34G1-a2_1W1, U43G1-a2_3pW1, and O8p3G1-a2_2p5W1; these file names describe the outer order 2 automorphism of A_5 (induced by the action of S_5) and the order 2 automorphisms of L_3(4), U_4(3), and O_8^+(3) induced by the actions of L_3(4).2_1, U_4(3).2_2^', and O_8^+(3).2_2^{'''''}, respectively.

groupnameGi-GjWn

In this case, the file contains a straight line program that takes generators of G w.r.t. the i-th set of standard generators, and returns standard generators of G w.r.t. the j-th set of standard generators. An example is L35G1-G2W1.

groupnameGi-checkn

In this case, the file contains a straight line decision that takes generators of G, and returns true if these generators are standard generators w.r.t. the i-th standardization, and false otherwise.

groupnameGi-Pn

In this case, the file contains a straight line decision that takes some group elements, and returns true if these elements are standard generators for G, w.r.t. the i-th standardization, and false otherwise.

groupnameGi-findn

In this case, the file contains a black box program that takes a group, and returns (if it is successful) a set of standard generators for G, w.r.t. the i-th standardization.

groupnameGi-XdescrWn

In this case, the file contains a straight line program that takes generators of G w.r.t. the i-th set of standard generators, and whose return value corresponds to descr. This format is used only in private extensions (see Chapter 5), such a script can be accessed with descr as the third argument of AtlasProgram (3.5-3).

The filenames in the directory datagens have one of the following forms. In each of these cases, id is a (possibly empty) string that starts with a lowercase alphabet letter (see IsLowerAlphaChar (Reference: IsLowerAlphaChar)), and m is a nonnegative integer, meaning that the generators are written w.r.t. the m-th basis (the meaning is defined by the ATLAS developers).

groupnameGi-fqrdimidBm.mnr

a file in MeatAxe text file format containing the nr-th generator of a matrix representation over the field with q elements, of dimension dim. An example is S5G1-f2r4aB0.m1.

groupnameGi-pnidBm.mnr

a file in MeatAxe text file format containing the nr-th generator of a permutation representation on n points. An example is M11G1-p11B0.m1.

groupnameGi-ArdimidBm.g

a GAP readable file containing all generators of a matrix representation of dimension dim over an algebraic number field not specified further. An example is A5G1-Ar3aB0.g.

groupnameGi-ZrdimidBm.g

a GAP readable file containing all generators of a matrix representation over the integers, of dimension dim. An example is A5G1-Zr4B0.g.

groupnameGi-HrdimidBm.g

a GAP readable file containing all generators of a matrix representation over a quaternion algebra over an algebraic number field, of dimension dim. An example is 2A6G1-Hr2aB0.g.

groupnameGi-ZnrdimidBm.g

a GAP readable file containing all generators of a matrix representation of dimension dim over the ring of integers mod n. An example is 2A8G1-Z4r4aB0.g.

7.6-1 AGR.ParseFilenameFormat
‣ AGR.ParseFilenameFormat( string, format )( function )

Returns: a list of strings and integers if string matches format, and fail otherwise.

Let string be a filename, and format be a list [ [ c_1, c_2, ..., c_n ], [ f_1, f_2, ..., f_n ] ] such that each entry c_i is a list of strings and of functions that take a character as their argument and return true or false, and such that each entry f_i is a function for parsing a filename, such as the currently undocumented functions ParseForwards and ParseBackwards.

AGR.ParseFilenameFormat returns a list of strings and integers such that the concatenation of their String (Reference: String) values yields string if string matches format, and fail otherwise. Matching is defined as follows. Splitting string at each minus character (-) yields m parts s_1, s_2, ..., s_m. The string string matches format if s_i matches the conditions in c_i, for 1 ≤ i ≤ n, in the sense that applying f_i to s_i and c_i yields a non-fail result.

gap> format:= [ [ [ IsChar, "G", IsDigitChar ],
>                 [ "p", IsDigitChar, AGR.IsLowerAlphaOrDigitChar,
>                   "B", IsDigitChar, ".m", IsDigitChar ] ],
>               [ ParseBackwards, ParseForwards ] ];;
gap> AGR.ParseFilenameFormat( "A6G1-p10B0.m1", format );
[ "A6", "G", 1, "p", 10, "", "B", 0, ".m", 1 ]
gap> AGR.ParseFilenameFormat( "A6G1-p15aB0.m1", format );
[ "A6", "G", 1, "p", 15, "a", "B", 0, ".m", 1 ]
gap> AGR.ParseFilenameFormat( "A6G1-f2r16B0.m1", format );
fail

7.6-2 AGR.FileContents
‣ AGR.FileContents( dirname, groupname, filename, type )( function )

Returns: the GAP object obtained from reading and interpreting the file(s) with name(s) filename.

Let dirname and groupname be strings, filename be a string or a list of strings, and type be a data type (see AGR.DeclareDataType (7.5-1)). dirname must be one of "datagens", "dataword", or the dirid value of a private directory, see AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1). If groupname is the ATLAS-file name of a group G (see Section 3.2), and if filename is either the name of an accessible file in the dirname directory of the ATLAS, or a list of such filenames, with data concerning G and for the data type type, then AGR.FileContents returns the contents of the corresponding file(s), in the sense that the file(s) (or equivalent ones, see Section 4.3-6) is/are read, and the result is interpreted if necessary; otherwise fail is returned.

Note that if filename refers to file(s) already stored in the dirname directory then AGR.FileContents does not check whether the table of contents of the ATLAS of Group Representations actually contains filename.

7.7 The Tables of Contents of the ATLAS of Group Representations

The list of data currently available is stored in several tables of contents, one for the local GAP data, one for the data on remote servers, and one for each private data directory. These tables of contents are created by ReloadAtlasTableOfContents (4.2-1).

It is assumed that the local data directories contain only files that are also available on servers. Private extensions to the database (cf. Section 4.5 and Chapter 5) cannot be handled by putting the data files into the local directories.

Each table of contents is represented by a record whose components are the ATLAS-file names of the groups (see Section 3.2) and lastupdated, a string describing the date of the last update of this table of contents. The value for each group name is a record whose components are the names of those data types (see Section 7.5) for which data are available.

Here are the administrational functions that are used to build the tables of contents. Some of them may be useful also for private extensions of the package (see Chapter 5).

The following functions define group names, available representations, and straight line programs.

AGR.GNAN( gapname, atlasname )

Called with two strings gapname (the GAP name of the group) and atlasname (the ATLAS name of the group), AGR.GNAN stores the information in the list AtlasOfGroupRepresentationsInfo.GAPnames, which defines the name mapping between the ATLAS names and GAP names of the groups.

This function may be used also for private extensions of the database.

An example of a valid call is AGR.GNAN("A5.2","S5").

AGR.GRP( dirname, simpname, groupname)

Called with three strings, AGR.GRP stores in the groupname component of AtlasOfGroupRepresentationsInfo (7.1-6) in which path on the servers the data about the group with ATLAS name groupname can be found.

This function is not intended for private extensions of the database.

An example of a valid call is AGR.GRP("alt","A5","S5").

AGR.TOC( typename, filename, crcfile )

Called with two strings typename and filename, and a list crc of integers, AGR.TOC notifies an entry to the TableOfContents.remote component of AtlasOfGroupRepresentationsInfo (7.1-6), where typename must be the name of the data type to which the entry belongs, filename must be the prefix of the data file(s), and crc must be the list of CrcFile (Reference: CrcFile) values of the file(s).

This function is not intended for private extensions of the database.

An example of a valid call is AGR.TOC("perm","S5G1-p5B0.m",[-3581724,115937465]).

The following functions add data about the groups and their standard generators. The function calls must be executed after the corresponding AGR.GNAN calls.

AGR.GRS( gapname, size )

Called with the string gapname (the GAP name of the group) and the integer size (the order of the group), AGR.GRS stores this information in AtlasOfGroupRepresentationsInfo.GAPnames.

An example of a valid call is AGR.GRS("A5.2",120).

AGR.MXN( gapname, nrMaxes )

Called with the string gapname (the GAP name of the group) and the integer nrMaxes (the number of classes of maximal subgroups of the group), AGR.MXN stores the information in AtlasOfGroupRepresentationsInfo.GAPnames.

An example of a valid call is AGR.MXN("A5.2",4).

AGR.MXO( gapname, sizesMaxes )

Called with the string gapname (the GAP name of the group) and the list sizesMaxes (of subgroup orders of the classes of maximal subgroups of the group, not necessarily dense, in non-increasing order), AGR.MXO stores the information in AtlasOfGroupRepresentationsInfo.GAPnames.

An example of a valid call is AGR.MXO("A5.2",[60,24,20,12]).

AGR.MXS( gapname, structureMaxes )

Called with the string gapname (the GAP name of the group) and the list structureMaxes (of strings describing the structures of the maximal subgroups of the group, not necessarily dense), AGR.MXS stores the information in AtlasOfGroupRepresentationsInfo.GAPnames.

An example of a valid call is AGR.MXS("A5.2",["A5","S4","5:4","S3x2"]).

AGR.KERPRG( gapname, kernelProgram )

Called with the string gapname (the GAP name of the group) and the list kernelProgram (with entries the standardization of the group, the GAP name of a factor group, and the list of lines of a straight line program that computes generators of the kernel of the epimorphism from the group to the factor group), AGR.KERPRG stores the information in AtlasOfGroupRepresentationsInfo.GAPnames.

An example of a valid call is AGR.KERPRG("2.J2",[1,"J2",[[[1,2]]]]).

AGR.STDCOMP

Called with the string gapname (the GAP name of the group) and the list factorCompatibility (with entries the standardization of the group, the GAP name of a factor group, the standardization of this factor group, and true or false, indicating whether mapping the standard generators for gapname to those of factgapname defines an epimorphism), AGR.STDCOMP stores the information in AtlasOfGroupRepresentationsInfo.GAPnames.

An example of a valid call is AGR.STDCOMP("2.A5.2",[1,"A5.2",1,true]).

The following functions add data about representations or straight line programs that are already known. The function calls must be executed after the corresponding AGR.TOC calls.

AGR.RNG( repname, descr )

Called with two strings repname (denoting the name of a file containing the generators of a matrix representation over a ring that is not determined by the filename) and descr (describing this ring R, say), AGR.RNG adds the triple [ repname, descr, R ] to the list stored in the ringinfo component of AtlasOfGroupRepresentationsInfo (7.1-6).

An example of a valid call is AGR.RNG("A5G1-Ar3aB0","Field([Sqrt(5)])").

AGR.TOCEXT( atlasname, std, maxnr, files )

Called with the string atlasname (the ATLAS name of the group), the positive integers std (the standardization) and maxnr (the number of the class of maximal subgroups), and the list files (of filenames of straight line programs for computing generators of the maxnr-th maximal subgroup, using a straight line program for a factor group plus perhaps some straight line program for computing kernel generators), AGR.TOCEXT stores the information in the maxext component of the atlasname component of the "remote" table of contents.

An example of a valid call is AGR.TOCEXT("2A5",1,3,["A5G1-max3W1"]).

AGR.API( repname, info )

Called with the string repname (denoting the name of a permutation representation) and the list info (describing the point stabilizer of this representation), AGR.API binds the component repname of the record AtlasOfGroupRepresentationsInfo.permrepinfo to info.

info has the following entries.

  • At position 1, the transitivity is stored.

  • If the transitivity is zero then the second entry is the list of orbit lengths.

  • If the transitivity is positive then the second entry is the rank of the action.

  • If the transitivity is positive then the third entry is one of the strings "prim", "imprim", denoting primitivity or not.

  • If the transitivity is positive then the fourth entry is a string describing the structure of the point stabilizer. If the third entry is "imprim" then this description consists of a subgroup part and a maximal subgroup part, separated by " < ".

  • If the third entry is "prim" then the fifth entry is either "???" or it denotes the number of the class of maximal subgroups that are the point stabilizers.

An example of a valid call is AGR.API("A5G1-p5B0",[3,2,"prim","A4",1]).

AGR.CHAR( groupname, repname, char, pos[, charname] )

Called with the strings groupname (the GAP name of the group) and repname (denoting the name of the representation), the integer char (the characteristic of the representation), and pos (the position or list of positions of the irreducible constituent(s)), AGR.CHAR stores the information in AtlasOfGroupRepresentationsInfo.characterinfo. A string describing the character can be entered as charname.

An example of a valid call is AGR.CHAR("M11","M11G1-p11B0",0,[1,2],"1a+10a").

These functions are used to create the initial table of contents for the server data of the AtlasRep package when the file gap/atlasprm.g of the package is read.

7.8 Sanity Checks for the ATLAS of Group Representations

The fact that the ATLAS of Group Representations is designed as an open database (see Section 4.3-1) makes it especially desirable to have consistency checks available which can be run automatically whenever new data are added by the developers of the ATLAS. The tests described in Section 7.8-1 can be used also for data from private extensions of the package (see Chapter 5), Section 7.8-2 lists tests which do not have this property.

All these tests apply only to the local table of contents (see Section 7.7) or to private extensions. So only those data files are checked that are actually available in the local GAP installation. No files are fetched from servers during these tests. The required space and time for running these tests depend on the amount of locally available data.

The file tst/testall.g of the package contains Test (Reference: Test) statements for executing a collection of such sanity checks; one can run them by calling ReadPackage( "AtlasRep", "tst/testall.g" ). If no problem occurs then GAP prints only lines starting with one of the following.

+ Input file:
+ GAP4stones:

Some of the checks compute and verify additional data, such as information about point stabilizers of permutation representations. In these cases, output lines starting with #E are error messages that point to inconsistencies, whereas output lines starting with #I inform about data that have been computed and were not yet stored, or about stored data that were not verified.

The examples in the package manual form a part of the tests, they are collected in the file tst/docxpl.tst of the package.

7.8-1 Sanity Checks for a Table of Contents

The following tests can be used to check the data that belong to a given table of contents. Each of these tests is given by a function with optional argument tocid, the identifying string that had been entered as the second argument of AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1). The contents of the local dataword directory can be checked by entering "local", which is also the default for tocid. The function returns false if an error occurs, otherwise true. Currently the following tests of this kind are available.

AGR.Test.Words( [tocid] )

processes all straight line programs that are stored in the directory with identifier tocid, using the function stored in the TestWords component of the data type in question.

AGR.Test.FileHeaders( [tocid] )

checks whether all MeatAxe text format data files in the directory with identifier tocid have a header line that is consistent with the filename, and whether the contents of all GAP format data files in this directory is consistent with the contents of the file.

AGR.Test.Files( [tocid] )

checks whether the MeatAxe text files that are stored in the directory with identifier tocid can be read with ScanMeatAxeFile (7.3-1) such that the result is not fail. The function does not check whether the first line of a MeatAxe text file is consistent with the filename, since this can be tested with AGR.Test.FileHeaders.

AGR.Test.BinaryFormat( [tocid] )

checks whether all MeatAxe text format data files in the directory with identifier tocid satisfy that applying first CMtxBinaryFFMatOrPerm (7.3-4) and then FFMatOrPermCMtxBinary (7.3-5) yields the same object.

AGR.Test.Primitivity( [tocid] )

checks the stored primitivity information for the permutation representations that are stored in the directory with identifier tocid.

AGR.Test.Characters( [tocid] )

checks the stored character information for the matrix and permutation representations that are stored in the directory with identifier tocid.

7.8-2 Other Sanity Checks

The tests described in this section are not intended for checking data from private extensions of the AtlasRep package. Each of the tests is given by a function without arguments that returns false if a contradiction was found during the test, and true otherwise. Additionally, certain messages are printed when contradictions between stored and computed data are found, when stored data cannot be verified computationally, or when the computations yield improvements of the stored data. Currently the following tests of this kind are available.

AGR.Test.GroupOrders()

checks whether the group orders stored in the GAPnames component of AtlasOfGroupRepresentationsInfo (7.1-6) coincide with the group orders computed from an ATLAS permutation representation of degree up to AGR.Test.MaxTestDegree, from the character table or the table of marks with the given name, or from the structure of the name. Supported is a splitting of the name at the first dot (.), where the two parts of the name are examined with the same criteria in order to derive the group order.

AGR.Test.MaxesOrders()

checks whether the orders of maximal subgroups stored in the component GAPnames of AtlasOfGroupRepresentationsInfo (7.1-6) coincide with the orders computed from the restriction of an ATLAS permutation representation of degree up to AGR.Test.MaxTestDegree, from the character table, or the table of marks with the given name, or from the information about maximal subgroups of a factor group modulo a normal subgroup that is contained in the Frattini subgroup.

AGR.Test.MaxesStructure()

checks whether the names of maximal subgroups stored in the component GAPnames of AtlasOfGroupRepresentationsInfo (7.1-6) coincide with the names computed from the GAP character table with the given name.

AGR.Test.StdCompatibility()

checks whether the information about the compatibility of standard generators of a group and its factor groups that is stored in the GAPnames component of AtlasOfGroupRepresentationsInfo (7.1-6) coincides with computed values.

The following criterion is used for computing the value for a group G. Use the GAP Character Table Library to determine factor groups F of G for which standard generators are defined and moreover a presentation in terms of these standard generators is known. Evaluate the relators of the presentation in the standard generators of G, and let N be the normal closure of these elements in G. Then mapping the standard generators of F to the N-cosets of the standard generators of G is an epimorphism. If |G/N| = |F| holds then G/N and F are isomorphic, and the standard generators of G and F are compatible in the sense that mapping the standard generators of G to their N-cosets yields standard generators of F.

AGR.Test.CompatibleMaxes()

checks whether the information about deriving straight line programs for restricting to subgroups from straight line programs that belong to a factor group coincide with computed values.

The following criterion is used for computing the value for a group G. If F is a factor group of G such that the standard generators of G and F are compatible (see the test function AGR.Test.StdCompatibility) and if there are a presentation for F and a permutation representation of G then it is checked whether the "maxes" type straight line programs for F can be used to compute generators for the maximal subgroups of G; if not then generators of the kernel of the natural epimorphism from G to F, must be added.

AGR.Test.ClassScripts()

checks whether the straight line programs that compute representatives of certain conjugacy classes are consistent with information stored on the GAP character table of the group in question, in the sense that the given class names really occur in the character table and that the element orders and centralizer orders for the classes are correct.

AGR.Test.CycToCcls()

checks whether some straight line program that computes representatives of conjugacy classes of a group can be computed from the ordinary GAP character table of that group and a straight line program that computes representatives of cyclic subgroups. In this case the missing scripts are printed if the level of InfoAtlasRep (7.1-1) is at least 1.

AGR.Test.Standardization()

checks whether all generating sets corresponding to the same set of standard generators have the same element orders; for the case that straight line programs for computing certain class representatives are available, also the orders of these representatives are checked w. r. t. all generating sets.

AGR.Test.StdTomLib()

checks whether the standard generators are compatible with those that occur in the TomLib package.

AGR.Test.KernelGenerators()

checks whether the information stored in the GAPnames component of AtlasOfGroupRepresentationsInfo (7.1-6) about straight line programs for computing generators of the kernels of natural epimorphisms between ATLAS groups coincides with computed values.

The following criterion is used for computing the value for a group G. Use the GAP Character Table Library to determine factor groups F of G for which standard generators are defined such that mapping standard generators of G to those of F defines a homomorphism, and such that a presentation of F in terms of its standard generators is known. Evaluating the relators of the presentation in the standard generators of G yields normal subgroup generators for the kernel.

A message is printed for each group name for which some straight line program for computing kernel generators was not stored but now was computed, or for which the stored info cannot be verified,

AGR.Test.MinimalDegrees()

checks that the (permutation and matrix) representations available in the ATLAS of Group Representations do not have smaller degree than the claimed minimum.

Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

generated by GAPDoc2HTML

atlasrep/doc/chapBib.html0000644000175000017500000003107612701177223014007 0ustar samsam GAP (AtlasRep) - References
Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

References

[GAP] GAP – Groups, Algorithms, and Programming, Version 4.5.0, The GAP Group (2012), http://www.gap-system.org.

[BSWW01] Bray, J. N., Suleiman, I. A. I., Walsh, P. G. and Wilson, R. A., Generating maximal subgroups of sporadic simple groups, Comm. Algebra, 29 (3) (2001), 1325–1337.

[Bre13] Breuer, T., The GAP Character Table Library, Version 1.2.2 (2013)
(GAP package), http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib.

[BL14] Breuer, T. and Lübeck, F., Browse, ncurses interface and browsing applications, Version 1.8.6 (2014)
(GAP package), http://www.math.rwth-aachen.de/~Browse.

[BN95] Breuer, T. and Norton, S. P., Improvements to the Atlas, The Clarendon Press Oxford University Press, London Mathematical Society Monographs. New Series, 11, New York (1995), 297–327
(Appendix 2 by T. Breuer and S. Norton, Oxford Science Publications).

[CP96] Cannon, J. J. and Playoust, C., An introduction to algebraic programming in Magma, School of Mathematics and Statistics, University of Sydney, Sydney, Australia (1996), http://www.math.usyd.edu.au:8000/u/magma.

[CCNPW85] Conway, J. H., Curtis, R. T., Norton, S. P., Parker, R. A. and Wilson, R. A., Atlas of finite groups, Oxford University Press, Eynsham (1985), xxxiv+252 pages
(Maximal subgroups and ordinary characters for simple groups, With computational assistance from J. G. Thackray).

[HL89] Hiss, G. and Lux, K., Brauer trees of sporadic groups, The Clarendon Press, Oxford University Press, Oxford Science Publications, New York (1989), x+526 pages.

[Hup67] Huppert, B., Endliche Gruppen. I, Springer-Verlag, Die Grundlehren der Mathematischen Wissenschaften, Band 134, Berlin (1967), xii+793 pages.

[Jan05] Jansen, C., The minimal degrees of faithful representations of the sporadic simple groups and their covering groups, LMS J. Comput. Math., 8 (2005), 122–144 (electronic).

[JLPW95] Jansen, C., Lux, K., Parker, R. and Wilson, R., An atlas of Brauer characters, The Clarendon Press Oxford University Press, London Mathematical Society Monographs. New Series, 11, New York (1995), xviii+327 pages
(Appendix 2 by T. Breuer and S. Norton, Oxford Science Publications).

[LN12] Lübeck, F. and Neunhöffer, M., GAPDoc, A Meta Package for GAP Documentation, Version 1.5.1 (2012)
(GAP package), http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc.

[NMP13] Naughton, L., Merkwitz, T. and Pfeiffer, G., TomLib, The GAP Library of Tables of Marks, Version 1.2.4 (2013)
(GAP package), http://schmidt.nuigalway.ie/tomlib/tomlib.

[Neu14] Neunhöffer, M., IO, Bindings for low level C library IO, Version 4.3.1 (2014)
(GAP package), http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/io.html.

[Nic06] Nickerson, S. J., An Atlas of Characteristic Zero Representations, Phd thesis, School of Mathematics, University of Birmingham (2006).

[NW05] Nickerson, S. J. and Wilson, R. A., Semi-presentations for the sporadic simple groups, Experiment. Math., 14 (3) (2005), 359–371.

[Rin] Ringe, M., The C MeatAxe, Version 2.4, http://www.math.rwth-aachen.de/~MTX.

[SWW00] Suleiman, I. A. I., Walsh, P. G. and Wilson, R. A., Conjugacy classes in sporadic simple groups, Comm. Algebra, 28 (7) (2000), 3209–3222.

[Wil96] Wilson, R. A., Standard generators for sporadic simple groups, J. Algebra, 184 (2) (1996), 505–515.

[ATLAS] Wilson, R. A., Walsh, P., Tripp, J., Suleiman, I., Parker, R. A., Norton, S. P., Nickerson, S., Linton, S., Bray, J. and Abbott, R., ATLAS of Finite Group Representations, http://brauer.maths.qmul.ac.uk/Atlas/v3.

Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

generated by GAPDoc2HTML

atlasrep/doc/chap1.html0000644000175000017500000012702512701177223013453 0ustar samsam GAP (AtlasRep) - Chapter 1: Introduction to the AtlasRep Package
Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

1 Introduction to the AtlasRep Package

The aim of the GAP 4 package AtlasRep is to provide a link between GAP and the "ATLAS of Group Representations" [ATLAS], a database that comprises generating permutations and matrices for many almost simple groups, and information about their maximal subgroups. This database is available independent of GAP at

http://brauer.maths.qmul.ac.uk/Atlas

The AtlasRep package consists of this database (see Section 1.1) and a GAP interface (see Section 1.2); the latter is extended by further information available via the internet (see Section 4.4).

This package manual has the following parts.

A tutorial

gives an overview how the functions of the package can be used, see Chapter 2.

User interface functions

are described in Chapter 3.

Customizations of the package

are described in Chapter 4.

Information how to extend the database

can be found in Chapter 5.

More technical information

can be found in the chapters 6 (concerning GAP objects that are introduced by the package) and 7 (concerning global variables and sanity checks).

1.1 The ATLAS of Group Representations

The ATLAS of Group Representations consists of matrices over various rings, permutations, and shell scripts encoding so-called black box programs (see [Nic06] and Section 6.2). Many of these scripts are straight line programs (see [BSWW01], [SWW00], and Reference: Straight Line Programs) and straight line decisions (see Section 6.1). These programs can be used to compute certain elements in a group G from its standard generators (see [Wil96] and Section 3.3) for example generators of maximal subgroups of G or representatives of conjugacy classes of G.

The ATLAS of Group Representations has been prepared by Robert Wilson, Peter Walsh, Jonathan Tripp, Ibrahim Suleiman, Richard Parker, Simon Norton, Simon Nickerson, Steve Linton, John Bray, and Rachel Abbott (in reverse alphabetical order).

The information was computed and composed using computer algebra systems such as MeatAxe (see [Rin]), Magma (see [CP96]), and GAP (in reverse alphabetical order). Part of the constructions have been documented in the literature on almost simple groups, or the results have been used in such publications, see for example the references in [CCNPW85] and [BN95].

If you use the ATLAS of Group Representations to solve a problem then please send a short email to R.A.Wilson@qmul.ac.uk about it. The ATLAS of Group Representations database should be referenced with the entry [ATLAS] in the bibliography of this manual.

If your work made use of functions of the GAP interface (see Section 1.2) then you should also reference this interface, as follows.

@misc{ AtlasRep1.5.1,
  author =       {Wilson, R. A. and Parker, R. A. and Nickerson, S. and
                  Bray, J. N. and Breuer, T.},
  title =        {{AtlasRep}, A \textsf{GAP} Interface to the Atlas of
                  Group Representations,
                  {V}ersion 1.5.1},
  month =        {March},
  year =         {2016},
  note =         {\textsf{GAP} package},
  howpublished = {http://www.math.rwth-aachen.de/\~{}Thomas.Breuer/atlasrep}
}

For referencing the GAP system in general, use the entry [GAP] in the bibliography of this manual, see also

http://www.gap-system.org.

1.2 The GAP Interface to the ATLAS of Group Representations

The GAP interface to the ATLAS of Group Representations consists of essentially two parts.

  • First, there is the user interface which allows the user to get an overview of the contents of the database, and to access the data in GAP format; this is described in Chapter 3. Advanced users may add their own data to the database, this is described in Chapter 5.

  • Second, there is administrational information, which covers also the declaration of GAP objects such as straight line decisions and black box programs. This is important mainly for users interested in the actual implementation (e. g., for modifying the package) or in using it together with the C-MeatAxe standalone (see [Rin]); this is described in Chapter 7.

Information concerning the C-MeatAxe, including the manual [Rin], can be found at

http://www.math.rwth-aachen.de/LDFM/homes/MTX

The interface and this manual have been provided by Thomas Breuer, except for the interpreter for black box programs (see Section 6.2), which is due to Simon Nickerson. Comments, bug reports, and hints for improving the interface can be sent to sam@math.rwth-aachen.de.

1.3 What's New in AtlasRep, Compared to Older Versions?

1.3-1 What's New in Version 1.5.1? (March 2016)
  • The paths of the directories where downloaded data files get stored are now customizable, see Section 4.3-9. Up to now, the data were stored in subdirectories of the package directory, which might cause problems with write permissions, depending on the installation of the package. (Note that choosing other data directories can be useful also in order to keep existing local data files when a new version of GAP or of the AtlasRep package gets installed.) Thanks to Bill Allombert for pointing out this problem.

  • The information about data files from the ATLAS of Group Representations has been extended by CrcFile (Reference: CrcFile) values. These values are checked whenever data from such a file are read, and an error is signalled if the checksum does not fit to the expected one. Note that several users may access the same data files, and a user should not suffer from perhaps corrupted files that have been downloaded by other users. Thanks to Frank Lübeck for the idea to introduce this consistency test.

  • Whenever StringFile (GAPDoc: StringFile) is called by functions of the package, this happens in the wrapper function AGR.StringFile, in order to replace occasional line breaks of the form "\r\n" by "\n". Apparently it may happen that the "\r" is silently smuggled in when data files get copied to the local computer. Thanks to Marek Mitros for help with detecting and fixing this problem.

  • The function FFMatOrPermCMtxBinary (7.3-5) can now read also permutations stored in binary files that have been created with version 2.4 of the C-MeatAxe; note that this format is different from the one that is written by version 2.3. Conversely, CMtxBinaryFFMatOrPerm (7.3-4) has been generalized such that both formats can be written. The reference to the C-MeatAxe documentation now points to that of version 2.4. Thanks to Jürgen Müller for pointing out this problem.

  • The function MeatAxeString (7.3-2) can now encode permutation matrices in different ways. The mode (the first header entry) can be either 2 (then the positions of the nonzero entries are listed) or 1 or 6 (then all entries of the matrix are listed). In previous versions, the function produced a matrix of mode 2 whenever this was possible, but this behaviour is not useful if the result is not processed by the C-MeatAxe. Thanks to Klaus Lux for pointing out this problem.

  • Depending on the terminal capabilities and the value of AtlasOfGroupRepresentationsInfo.displayFunction, some non-ASCII characters may appear in the output shown by DisplayAtlasInfo (3.5-1).

1.3-2 What's New in Version 1.5? (July 2011)
  • The function AtlasSubgroup (3.5-8) now admits also the return value of OneAtlasGeneratingSetInfo (3.5-5) or the return value of AtlasGroup (3.5-7) as its first argument. The latter is implemented via the new attribute AtlasRepInfoRecord (3.5-9), which is set in the groups constructed by AtlasGroup (3.5-7).

  • Information about transitivity, rank, primitivity, and point stabilizers of many permutation representations is now available. If applicable then this information appears in the records returned by OneAtlasGeneratingSetInfo (3.5-5), it is part of the overview shown by DisplayAtlasInfo (3.5-1), and it is shown also in the data overview in the web, see Section 4.4.

    Two new manual sections about point stabilizers have been added, see the sections 2.4-6 and 2.4-7.

  • Information about the characters afforded by many matrix and permutation representations is now available. If applicable then this information appears in the records returned by OneAtlasGeneratingSetInfo (3.5-5), for matrix representations it is part of the overview shown by DisplayAtlasInfo (3.5-1), and it is shown also in the data overview in the web, see Section 4.4.

  • The functions Character (Reference: Character (for a character table and a list)), Identifier (Reference: Identifier (for character tables)), IsPrimitive (Reference: IsPrimitive), IsTransitive (Reference: IsTransitive), Transitivity (Reference: Transitivity), and RankAction (Reference: RankAction) are now supported as input conditions in DisplayAtlasInfo (3.5-1), OneAtlasGeneratingSetInfo (3.5-5), etc..

  • It is now possible to restrict the data shown by DisplayAtlasInfo (3.5-1) to private or non-private data. Also the data returned by OneAtlasGeneratingSetInfo (3.5-5) can be restricted to private or non-private data.

  • A tutorial for beginners was added to the manual, see Chapter 2, and the manual was restructured.

  • In the overview shown by DisplayAtlasInfo (3.5-1) and in the data overview in the web (see Section 4.4), the ordering of groups was improved such that, e.g., "A9" precedes "A10".

  • The function AtlasClassNames (3.4-2) now admits also a Brauer table as its argument, and works also for character tables of bicyclic extensions of simple groups.

  • The group names that are entered in DisplayAtlasInfo (3.5-1), OneAtlasGeneratingSetInfo (3.5-5), etc., are now case insensitive, and if the package CTblLib is available then the admissible group names for the GAP character table of the group in question can be used in these functions.

  • In order to reduce the number of global variables, several functions have been turned into components of the new global variable AGR (7.1-5). A few of these functions had been documented in the previous version, the old values are still available if the package file gap/obsolete.g has been read. This file is read automatically when the package gets loaded if GAPInfo.UserPreferences.ReadObsolete is true, see Reference: The gap.ini file.

  • A few nicer characters are used by DisplayAtlasInfo (3.5-1) if GAPInfo.TermEncoding has the value "UTF-8" and if AtlasOfGroupRepresentationsInfo.displayFunction is different from Print (Reference: Print), see Section 4.3-5.

  • A bug in the function ReloadAtlasTableOfContents (4.2-1) was fixed. Thanks to Jack Schmidt for reporting this bug.

1.3-3 What's New in Version 1.4? (June 2008)
  • In addition to the group orders that were added in version 1.3 (see Section 1.3-5), also many orders of maximal subgroups are now available. These values occur in the records returned by AtlasProgram (3.5-3) (for the case of "maxes" type programs) and of the three argument version of AtlasGenerators (3.5-2); now a size component may be bound. In these cases, the groups returned by AtlasSubgroup (3.5-8) have the Size (Reference: Size) attribute set.

  • The information about the number of maximal subgroups, if available, is now used in DisplayAtlasInfo (3.5-1).

  • In many cases, straight line programs for computing generators of maximal subgroups of a group G, say, can in fact be used to compute also generators of maximal subgroups of downward extensions of G; if not then it may suffice to extend the given straight line programs by additional generators.

    Currently this yields more than 200 new possibilities to compute maximal subgroups, this means a growth by about 25 percent. For example, all maximal subgroups of 12.M_22 and 2.Fi_22 can now be accessed via AtlasGenerators (3.5-2).

    (Of course this extension means only that one can access the straight line programs in question automatically via the GAP interface. In principle one could have used them already before, by explicitly applying a straight line program for a factor group to generators of a group, and perhaps adding some element in the kernel of the natural epimorphism.)

    For this feature, information about the compatibility of standard generators of groups and their factor groups was added.

  • The bibliographies contained in the ATLAS of Finite Groups [CCNPW85] and in the ATLAS of Brauer Characters [JLPW95] are now available, see BrowseBibliographySporadicSimple (3.6-2).

  • If the GAP package Browse (see [BL14]) is loaded then the new functions BrowseMinimalDegrees (3.6-1) and BrowseBibliographySporadicSimple (3.6-2) are available; these functions can be called also by choosing the corresponding menu entries of the Browse application BrowseGapData (Browse: BrowseGapData).

  • The function AtlasGroup (3.5-7) now admits also the return value of OneAtlasGeneratingSetInfo (3.5-5) as its argument.

1.3-4 What's New in Version 1.3.1? (October 2007)

This version was mainly released in order to fix a few problems. Now one does not get warnings about unbound variables when the package is loaded and the GAP package IO [Neu14] is not available, and pathological situations in FFMatOrPermCMtxBinary (7.3-5) (concerning extremely short corrupted data files and different byte orderings in binary files) are handled more carefully.

Besides this, the two functions AtlasGroup (3.5-7) and AtlasSubgroup (3.5-8) were introduced, and the extended function QuaternionAlgebra (Reference: QuaternionAlgebra) of GAP 4.4.10 can now be used for describing base rings in OneAtlasGeneratingSetInfo (3.5-5) and AllAtlasGeneratingSetInfos (3.5-6). (This is the reason why this version of the package requires at least version 4.4.10 of GAP.)

1.3-5 What's New in Version 1.3? (June 2007)
  • The database was extended, see Section 4.3-4 for the number and size of files.

  • New data types and corresponding GAP objects have been introduced, for representing semi-presentations, presentations, and programs for finding standard generators. For details, see AtlasProgram (3.5-3), Chapter 6, and Section 7.6.

  • The records returned by the functions AtlasGenerators (3.5-2), OneAtlasGeneratingSetInfo (3.5-5), and AllAtlasGeneratingSetInfos (3.5-6) now contain the name and (if known) the order of the group in question, and also components describing the degree in the case of permutation representations or the dimension and the base ring of the natural module in the case of matrix representations.

  • For many of the groups, information about the minimal degree of faithful permutation representations and the minimal dimensions of faithful matrix representations in various characteristics is available for DisplayAtlasInfo (3.5-1), OneAtlasGeneratingSetInfo (3.5-5), and AllAtlasGeneratingSetInfos (3.5-6), see also Section 6.3. For these functions, also properties such as IsPrimeInt (Reference: IsPrimeInt) can be used to describe the intended restriction of the output.

  • One can now use Pager (Reference: Pager) functionality in DisplayAtlasInfo (3.5-1), see Section 4.3-5.

    An interactive alternative to DisplayAtlasInfo (3.5-1) is provided by the function BrowseAtlasInfo (Browse: BrowseAtlasInfo) from the new (recommended) GAP package Browse [BL14].

  • The functions OneAtlasGeneratingSetInfo (3.5-5) and AllAtlasGeneratingSetInfos (3.5-6) now admit also a list of group names as the first argument.

  • The functions for actually accessing the data are more flexible now, see Section 4.3-6.

  • For transferring remote data, the GAP package IO [Neu14] can now be used (and is recommended) as an alternative to wget, see Section 4.3-3.

  • The address of the data server has changed. Since the access to the server is no longer possible via ftp, the mechanim used up to version 1.2, which was based on ftp, had to be rewritten.

    The main consequence of this change is that information about updates of the table of contents is now provided at the package's homepage. This means that on the one hand, now package users cannot compute the table of contents directly from the server data, but on the other hand the update information can be downloaded without the necessity to install perl.

    Another consequence is that the system program ls is no longer needed, see Section 1.3-7.

  • The package manual has been restructured, extended and improved. It is now based on the package GAPDoc [LN12].

1.3-6 What's New in Version 1.2? (November 2003)

Not much.

The release of Version 1.2 became necessary first of all in order to provide a package version that is compatible with GAP 4.4, since some cross-references into the GAP Reference Manual were broken due to changes of section names. Additionally, several web addresses concerning the package itself were changed and thus had to be adjusted.

This opportunity was used

  • to upgrade the administrational part for loading the package to the mechanism that is recommended for GAP 4.4,

  • to extend the test suite, which now covers more consistency checks using the GAP Character Table Library [Bre13],

  • to make the function ScanMeatAxeFile (7.3-1) more robust, due to the fact that the GAP function PermList (Reference: PermList) now returns fail instead of raising an error,

  • to change the way how representations with prescribed properties are accessed (the new function OneAtlasGeneratingSetInfo (3.5-5) is now preferred to the former OneAtlasGeneratingSet, and AllAtlasGeneratingSetInfos (3.5-6) has been added in order to provide programmatic access in parallel to the human readable descriptions printed by DisplayAtlasInfo (3.5-1)),

  • and last but not least to include the current table of contents of the underlying database.

For AtlasRep users, the new feature of GAP 4.4 is particularly interesting that due to better kernel support, reading large matrices over finite fields is now faster than it was in GAP 4.3.

1.3-7 What's New in Version 1.1? (October 2002)

The biggest change w.r.t. Version 1.1 is the addition of private extensions (see Chapter 5). It includes a new "free format" for straight line programs (see Section 5.2). Unfortunately, this feature requires the system program ls, so it may be not available for example under MS Windows operating systems. [But see Section 1.3-5.]

In order to admit the addition of other types of data, the implementation of several functions has been changed. Data types are described in Section 7.5. An example of a new data type are quaternionic representations (see Section 7.6). The user interface itself (see Chapter 3) remained the same.

As an alternative to perl, one can use wget now for transferring data files (see 4.3).

Data files can be read much more efficiently in GAP 4.3 than in GAP 4.2. In Version 1.1 of the AtlasRep package, this feature is used for reading matrices and permutations in MeatAxe text format with ScanMeatAxeFile (7.3-1). As a consequence, (at least) GAP 4.3 is required for AtlasRep Version 1.1.

The new compress component of the global variable AtlasOfGroupRepresentationsInfo (7.1-6) allows one to store data files automatically in gzipped form.

For matrix representations in characteristic zero, invariant forms and generators for the centralizer algebra are now accessible in GAP if they are contained in the source files --this information had been ignored in Version 1.0 (see AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates (4.2-4) for necessary updates).

Additional information is now available via the internet (see 4.4).

The update facilities have been extended (see 4.2).

The manual is now distributed also in pdf and HTML format; on the other hand, the PostScript format manual is no longer contained in the archives.

Apart from these changes, a few minor bugs in the handling of MeatAxe files have been fixed, typos in the documentation have been corrected, and the syntax checks for ATLAS straight line programs (see 7.4) have been improved.

1.4 Acknowledgements

  • Frank Lübeck and Max Neunhöffer kindly provided the perl script that had been used for fetching remote data until version 1.2. Thanks also to Greg Gamble and Alexander Hulpke for technical hints concerning "standard" perl.

  • Ulrich Kaiser helped with preparing the package for MS Windows.

  • Klaus Lux had the idea to support private extensions of the package, see Chapter 5 and helped to fix several bugs.

  • Frank Lübeck contributed the functions CMtxBinaryFFMatOrPerm (7.3-4) and FFMatOrPermCMtxBinary (7.3-5).

  • Frank Lübeck and Max Neunhöffer wrote the GAPDoc package [LN12], which is used for processing the documentation of the AtlasRep package and for processing the bibliographies included in this package (see BrowseBibliographySporadicSimple (3.6-2)),

  • Max Neunhöffer wrote the GAP package IO [Neu14], which is recommended for transferring data.

  • Max has also suggested the generalization of the data access described in Section 7.2, and the admissibility of the function Character (Reference: Character (for a character table and a list)) as a filter in DisplayAtlasInfo (3.5-1), OneAtlasGeneratingSetInfo (3.5-5), and AllAtlasGeneratingSetInfos (3.5-6).

  • Gunter Malle suggested to make the information about representations of minimal degree accessible, see Section 6.3.

  • Andries Brouwer suggested to add a tutorial (see Chapter 2), Klaus Lux suggested several improvements of this chapter.

Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

generated by GAPDoc2HTML

atlasrep/doc/chapInd.html0000644000175000017500000003227412701177223014026 0ustar samsam GAP (AtlasRep) - Index
Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

Index

AGR 7.1-5
AGR.DeclareDataType 7.5-1
AGR.FileContents 7.6-2
AGR.ParseFilenameFormat 7.6-1
AllAtlasGeneratingSetInfos 3.5-6
AsBBoxProgram 6.2-5
AsStraightLineDecision 6.1-8
AsStraightLineProgram 6.2-6
AtlasCharacterNames 3.4-3
AtlasClassNames 3.4-2
AtlasGenerators 3.5-2
AtlasGenerators, for an identifier 3.5-2
AtlasGroup, for an identifier record 3.5-7
AtlasGroup, for various arguments 3.5-7
AtlasOfGroupRepresentationsForgetPrivateDirectory 5.1-2
AtlasOfGroupRepresentationsInfo 7.1-6
AtlasOfGroupRepresentationsNotifyPrivateDirectory 5.1-1
AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates 4.2-4
AtlasOfGroupRepresentationsUserParameters 4.3-8
AtlasProgram 3.5-3
AtlasProgram, for an identifier 3.5-3
AtlasProgramInfo 3.5-4
AtlasRep .
ATLASREP_TOCFILE 4.2
AtlasRepInfoRecord 3.5-9
AtlasStringOfProgram 7.4-2
AtlasStringOfProgram, for MeatAxe format output 7.4-2
AtlasSubgroup, for a group and a number 3.5-8
AtlasSubgroup, for a group name (and various arguments) and a number 3.5-8
AtlasSubgroup, for an identifier record and a number 3.5-8
automorphisms 3.5-3
automorphisms 7.6
black box program 1.1
black box program, for finding standard generators 3.5-3
black box program, for finding standard generators 7.6
BrowseBibliographySporadicSimple 3.6-2
BrowseMinimalDegrees 3.6-1
C-MeatAxe 1.2
class representatives 3.5-3
class representatives 7.6
CMeatAxe.FastRead 7.1-4
CMtxBinaryFFMatOrPerm 7.3-4
compress 4.3-4
cyclic subgroups 3.5-3
DisplayAtlasInfo 3.5-1
DisplayAtlasInfo, for a group name, and optionally further restrictions 3.5-1
FFList 7.3-3
FFLists 7.3-3
FFMatOrPermCMtxBinary 7.3-5
ftp 1.3-5
gzip 1.3-7
gzip 4.3-4
gzip 7.1-6
InfoAtlasRep 7.1-1
InfoBBox 7.1-3
InfoCMeatAxe 7.1-2
IO package 4.1
IO package 4.2-4
IO package 4.3-3
IO package 4.3-3
IO package 7.1-6
IsBBoxProgram 6.2-1
IsStraightLineDecision 6.1-1
LinesOfStraightLineDecision 6.1-2
local access 4.3-1
Magma 1.1
matrix, MeatAxe format 7.3
maximal subgroups 3.5-3
maximal subgroups 7.6
maximally cyclic subgroups 3.5-3
MeatAxe 1.1
MeatAxeString 7.3-2
MeatAxeString, for a permutation, q, and dims 7.3-2
MeatAxeString, for permutations and a degree 7.3-2
MinimalRepresentationInfo 6.3-1
MinimalRepresentationInfoData 6.3-2
NrInputsOfStraightLineDecision 6.1-3
OneAtlasGeneratingSetInfo 3.5-5
perl 1.3-5
perl 1.4
permutation, MeatAxe format 7.3
presentation 6.1-7
presentation 7.6
ReloadAtlasTableOfContents 4.2-1
remote access 4.3-1
ReplaceAtlasTableOfContents 4.2-3
ResultOfBBoxProgram 6.2-4
ResultOfStraightLineDecision 6.1-6
RunBBoxProgram 6.2-3
ScanBBoxProgram 6.2-2
ScanMeatAxeFile 7.3-1
ScanStraightLineDecision 6.1-4
ScanStraightLineProgram 7.4-1
semi-presentation 6.1-7
semi-presentation 7.6
servers 4.3-1
SetMinimalRepresentationInfo 6.3-3
StoreAtlasTableOfContents 4.2-2
straight line decision, encoding a presentation 3.5-3
straight line decision, for checking standard generators 3.5-3
straight line program 1.1
straight line program 3.5-1
straight line program, for class representatives 3.5-3
straight line program, for maximal subgroups 3.5-3
straight line program, for outer automorphisms 3.5-3
straight line program, for representatives of cyclic subgroups 3.5-3
straight line program, for restandardizing 3.5-3
straight line program, free format 3.5-3
StraightLineDecision 6.1-5
StraightLineDecisionNC 6.1-5
StraightLineProgramFromStraightLineDecision 6.1-9
touch 4.2-4
wget 1.3-5
wget 1.3-7
wget 4.3-3
wget 4.3-3
wget 7.1-6
zcv 7.3-1

Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

generated by GAPDoc2HTML

atlasrep/doc/chap3.html0000644000175000017500000031231312701177223013451 0ustar samsam GAP (AtlasRep) - Chapter 3: The User Interface of the AtlasRep Package
Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

3 The User Interface of the AtlasRep Package

The user interface is the part of the GAP interface that allows one to display information about the current contents of the database and to access individual data (perhaps from a remote server, see Section 4.3-1). The corresponding functions are described in this chapter. See Section 2.4 for some small examples how to use the functions of the interface.

Extensions of the AtlasRep package are regarded as another part of the GAP interface, they are described in Chapter 5. Finally, the low level part of the interface are described in Chapter 7.

For some of the examples in this chapter, the GAP packages CTblLib and TomLib are needed, so we load them.

gap> LoadPackage( "ctbllib" );
true
gap> LoadPackage( "tomlib" );
true

3.1 Accessing vs. Constructing Representations

Note that accessing the data means in particular that it is not the aim of this package to construct representations from known ones. For example, if at least one permutation representation for a group G is stored but no matrix representation in a positive characteristic p, say, then OneAtlasGeneratingSetInfo (3.5-5) returns fail when it is asked for a description of an available set of matrix generators for G in characteristic p, although such a representation can be obtained by reduction modulo p of an integral matrix representation, which in turn can be constructed from any permutation representation.

3.2 Group Names Used in the AtlasRep Package

When you access data via the AtlasRep package, you specify the group in question by an admissible name. Thus it is essential to know these names, which are called the GAP names of the group in the following.

For a group G, say, whose character table is available in GAP's Character Table Library, the admissible names of G are the admissible names of this character table. If G is almost simple, one such name is the Identifier (Reference: Identifier (for character tables)) value of the character table, see Accessing a Character Table from the Library (CTblLib: Accessing a Character Table from the Library). This name is usually very similar to the name used in the ATLAS of Finite Groups [CCNPW85]. For example, "M22" is a GAP name of the Mathieu group M_22, "12_1.U4(3).2_1" is a GAP name of 12_1.U_4(3).2_1, the two names "S5" and "A5.2" are GAP names of the symmetric group S_5, and the two names "F3+" and "Fi24'" are GAP names of the simple Fischer group Fi_24^'.

When a GAP name is required as an input of a package function, this input is case insensitive. For example, both "A5" and "a5" are valid arguments of DisplayAtlasInfo (3.5-1).

Internally, for example as part of filenames (see Section 7.6), the package uses names that may differ from the GAP names; these names are called ATLAS-file names. For example, "A5", "TE62", and "F24" are ATLAS-file names. Of these, only "A5" is also a GAP name, but the other two are not; corresponding GAP names are "2E6(2)" and "Fi24'", respectively.

3.3 Standard Generators Used in the AtlasRep Package

For the general definition of standard generators of a group, see [Wil96].

Several different standard generators may be defined for a group, the definitions can be found at

http://brauer.maths.qmul.ac.uk/Atlas

When one specifies the standardization, the i-th set of standard generators is denoted by the number i. Note that when more than one set of standard generators is defined for a group, one must be careful to use compatible standardization. For example, the straight line programs, straight line decisions and black box programs in the database refer to a specific standardization of their inputs. That is, a straight line program for computing generators of a certain subgroup of a group G is defined only for a specific set of standard generators of G, and applying the program to matrix or permutation generators of G but w.r.t. a different standardization may yield unpredictable results. Therefore the results returned by the functions described in this chapter contain information about the standardizations they refer to.

3.4 Class Names Used in the AtlasRep Package

For each straight line program (see AtlasProgram (3.5-3)) that is used to compute lists of class representatives, it is essential to describe the classes in which these elements lie. Therefore, in these cases the records returned by the function AtlasProgram (3.5-3) contain a component outputs with value a list of class names.

Currently we define these class names only for simple groups and certain extensions of simple groups, see Section 3.4-1. The function AtlasClassNames (3.4-2) can be used to compute the list of class names from the character table in the GAP Library.

3.4-1 Definition of ATLAS Class Names

For the definition of class names of an almost simple group, we assume that the ordinary character tables of all nontrivial normal subgroups are shown in the ATLAS of Finite Groups [CCNPW85].

Each class name is a string consisting of the element order of the class in question followed by a combination of capital letters, digits, and the characters ' and - (starting with a capital letter). For example, 1A, 12A1, and 3B' denote the class that contains the identity element, a class of element order 12, and a class of element order 3, respectively.

  1. For the table of a simple group, the class names are the same as returned by the two argument version of the GAP function ClassNames (Reference: ClassNames), cf. [CCNPW85, Chapter 7, Section 5]: The classes are arranged w.r.t. increasing element order and for each element order w.r.t. decreasing centralizer order, the conjugacy classes that contain elements of order n are named nA, nB, nC, ...; the alphabet used here is potentially infinite, and reads A, B, C, ..., Z, A1, B1, ..., A2, B2, ....

    For example, the classes of the alternating group A_5 have the names 1A, 2A, 3A, 5A, and 5B.

  2. Next we consider the case of an upward extension G.A of a simple group G by a cyclic group of order A. The ATLAS defines class names for each element g of G.A only w.r.t. the group G.a, say, that is generated by G and g; namely, there is a power of g (with the exponent coprime to the order of g) for which the class has a name of the same form as the class names for simple groups, and the name of the class of g w.r.t. G.a is then obtained from this name by appending a suitable number of dashes '. So dashed class names refer exactly to those classes that are not printed in the ATLAS.

    For example, those classes of the symmetric group S_5 that do not lie in A_5 have the names 2B, 4A, and 6A. The outer classes of the group L_2(8).3 have the names 3B, 6A, 9D, and 3B', 6A', 9D'. The outer elements of order 5 in the group Sz(32).5 lie in the classes with names 5B, 5B', 5B'', and 5B'''.

    In the group G.A, the class of g may fuse with other classes. The name of the class of g in G.A is obtained from the names of the involved classes of G.a by concatenating their names after removing the element order part from all of them except the first one.

    For example, the elements of order 9 in the group L_2(27).6 are contained in the subgroup L_2(27).3 but not in L_2(27). In L_2(27).3, they lie in the classes 9A, 9A', 9B, and 9B'; in L_2(27).6, these classes fuse to 9AB and 9A'B'.

  3. Now we define class names for general upward extensions G.A of a simple group G. Each element g of such a group lies in an upward extension G.a by a cyclic group, and the class names w.r.t. G.a are already defined. The name of the class of g in G.A is obtained by concatenating the names of the classes in the orbit of G.A on the classes of cyclic upward extensions of G, after ordering the names lexicographically and removing the element order part from all of them except the first one. An exception is the situation where dashed and non-dashed class names appear in an orbit; in this case, the dashed names are omitted.

    For example, the classes 21A and 21B of the group U_3(5).3 fuse in U_3(5).S_3 to the class 21AB, and the class 2B of U_3(5).2 fuses with the involution classes 2B', 2B'' in the groups U_3(5).2^' and U_3(5).2^{''} to the class 2B of U_3(5).S_3.

    It may happen that some names in the outputs component of a record returned by AtlasProgram (3.5-3) do not uniquely determine the classes of the corresponding elements. For example, the (algebraically conjugate) classes 39A and 39B of the group Co_1 have not been distinguished yet. In such cases, the names used contain a minus sign -, and mean "one of the classes in the range described by the name before and the name after the minus sign"; the element order part of the name does not appear after the minus sign. So the name 39A-B for the group Co_1 means 39A or 39B, and the name 20A-B''' for the group Sz(32).5 means one of the classes of element order 20 in this group (these classes lie outside the simple group Sz).

  4. For a downward extension m.G.A of an almost simple group G.A by a cyclic group of order m, let π denote the natural epimorphism from m.G.A onto G.A. Each class name of m.G.A has the form nX_0, nX_1 etc., where nX is the class name of the image under π, and the indices 0, 1 etc. are chosen according to the position of the class in the lifting order rows for G, see [CCNPW85, Chapter 7, Section 7, and the example in Section 8]).

    For example, if m = 6 then 1A_1 and 1A_5 denote the classes containing the generators of the kernel of π, that is, central elements of order 6.

3.4-2 AtlasClassNames
‣ AtlasClassNames( tbl )( function )

Returns: a list of class names.

Let tbl be the ordinary or modular character table of a group G, say, that is almost simple or a downward extension of an almost simple group and such that tbl is an ATLAS table from the GAP Character Table Library, according to its InfoText (Reference: InfoText) value. Then AtlasClassNames returns the list of class names for G, as defined in Section 3.4-1. The ordering of class names is the same as the ordering of the columns of tbl.

(The function may work also for character tables that are not ATLAS tables, but then clearly the class names returned are somewhat arbitrary.)

gap> AtlasClassNames( CharacterTable( "L3(4).3" ) );
[ "1A", "2A", "3A", "4ABC", "5A", "5B", "7A", "7B", "3B", "3B'", 
  "3C", "3C'", "6B", "6B'", "15A", "15A'", "15B", "15B'", "21A", 
  "21A'", "21B", "21B'" ]
gap> AtlasClassNames( CharacterTable( "U3(5).2" ) );
[ "1A", "2A", "3A", "4A", "5A", "5B", "5CD", "6A", "7AB", "8AB", 
  "10A", "2B", "4B", "6D", "8C", "10B", "12B", "20A", "20B" ]
gap> AtlasClassNames( CharacterTable( "L2(27).6" ) );
[ "1A", "2A", "3AB", "7ABC", "13ABC", "13DEF", "14ABC", "2B", "4A", 
  "26ABC", "26DEF", "28ABC", "28DEF", "3C", "3C'", "6A", "6A'", 
  "9AB", "9A'B'", "6B", "6B'", "12A", "12A'" ]
gap> AtlasClassNames( CharacterTable( "L3(4).3.2_2" ) );
[ "1A", "2A", "3A", "4ABC", "5AB", "7A", "7B", "3B", "3C", "6B", 
  "15A", "15B", "21A", "21B", "2C", "4E", "6E", "8D", "14A", "14B" ]
gap> AtlasClassNames( CharacterTable( "3.A6" ) );
[ "1A_0", "1A_1", "1A_2", "2A_0", "2A_1", "2A_2", "3A_0", "3B_0", 
  "4A_0", "4A_1", "4A_2", "5A_0", "5A_1", "5A_2", "5B_0", "5B_1", 
  "5B_2" ]
gap> AtlasClassNames( CharacterTable( "2.A5.2" ) );
[ "1A_0", "1A_1", "2A_0", "3A_0", "3A_1", "5AB_0", "5AB_1", "2B_0", 
  "4A_0", "4A_1", "6A_0", "6A_1" ]

3.4-3 AtlasCharacterNames
‣ AtlasCharacterNames( tbl )( function )

Returns: a list of character names.

Let tbl be the ordinary or modular character table of a simple group. AtlasCharacterNames returns a list of strings, the i-th entry being the name of the i-th irreducible character of tbl; this name consists of the degree of this character followed by distinguishing lowercase letters.

gap> AtlasCharacterNames( CharacterTable( "A5" ) );                   
[ "1a", "3a", "3b", "4a", "5a" ]

3.5 Accessing Data of the AtlasRep Package

Note that the output of the examples in this section refers to a perhaps outdated table of contents; the current version of the database may contain more information than is shown here.

3.5-1 DisplayAtlasInfo
‣ DisplayAtlasInfo( [listofnames, ][std, ]["contents", sources, ][...] )( function )
‣ DisplayAtlasInfo( gapname[, std][, ...] )( function )

This function lists the information available via the AtlasRep package, for the given input. Depending on whether remote access to data is enabled (see Section 4.3-1), all the data provided by the ATLAS of Group Representations or only those in the local installation are considered.

An interactive alternative to DisplayAtlasInfo is the function BrowseAtlasInfo (Browse: BrowseAtlasInfo), see [BL14].

Called without arguments, DisplayAtlasInfo prints an overview what information the ATLAS of Group Representations provides. One line is printed for each group G, with the following columns.

group

the GAP name of G (see Section 3.2),

#

the number of faithful representations stored for G that satisfy the additional conditions given (see below),

maxes

the number of available straight line programs for computing generators of maximal subgroups of G,

cl

a + sign if at least one program for computing representatives of conjugacy classes of elements of G is stored,

cyc

a + sign if at least one program for computing representatives of classes of maximally cyclic subgroups of G is stored,

out

descriptions of outer automorphisms of G for which at least one program is stored,

fnd

a + sign if at least one program is available for finding standard generators,

chk

a + sign if at least one program is available for checking whether a set of generators is a set of standard generators, and

prs

a + sign if at least one program is available that encodes a presentation.

(The list can be printed to the screen or can be fed into a pager, see Section 4.3-5.)

Called with a list listofnames of strings that are GAP names for a group from the ATLAS of Group Representations, DisplayAtlasInfo prints the overview described above but restricted to the groups in this list.

In addition to or instead of listofnames, the string "contents" and a description sources of the data may be given about which the overview is formed. See below for admissible values of sources.

Called with a string gapname that is a GAP name for a group from the ATLAS of Group Representations, DisplayAtlasInfo prints an overview of the information that is available for this group. One line is printed for each faithful representation, showing the number of this representation (which can be used in calls of AtlasGenerators (3.5-2)), and a string of one of the following forms; in both cases, id is a (possibly empty) string.

G <= Sym(nid)

denotes a permutation representation of degree n, for example G <= Sym(40a) and G <= Sym(40b) denote two (nonequivalent) representations of degree 40.

G <= GL(nid,descr)

denotes a matrix representation of dimension n over a coefficient ring described by descr, which can be a prime power, (denoting the ring of integers), a description of an algebraic extension field, (denoting an unspecified algebraic extension field), or ℤ/m for an integer m (denoting the ring of residues mod m); for example, G <= GL(2a,4) and G <= GL(2b,4) denote two (nonequivalent) representations of dimension 2 over the field with four elements.

After the representations, the programs available for gapname are listed.

The following optional arguments can be used to restrict the overviews.

std

must be a positive integer or a list of positive integers; if it is given then only those representations are considered that refer to the std-th set of standard generators or the i-th set of standard generators, for i in std (see Section 3.3),

"contents" and sources

for a string or a list of strings sources, restrict the data about which the overview is formed; if sources is the string "public" then only non-private data (see Chapter 5) are considered, if sources is a string that denotes a private extension in the sense of a dirid argument of AtlasOfGroupRepresentationsNotifyPrivateDirectory (5.1-1) then only the data that belong to this private extension are considered; also a list of such strings may be given, then the union of these data is considered,

Identifier and id

restrict to representations with identifier component in the list id (note that this component is itself a list, entering this list is not admissible), or satisfying the function id,

IsPermGroup and true

restrict to permutation representations,

NrMovedPoints and n

for a positive integer, a list of positive integers, or a property n, restrict to permutation representations of degree equal to n, or in the list n, or satisfying the function n,

NrMovedPoints and the string "minimal"

restrict to faithful permutation representations of minimal degree (if this information is available),

IsTransitive and true or false

restrict to transitive or intransitive permutation representations (if this information is available),

IsPrimitive and true or false

restrict to primitive or imprimitive permutation representations (if this information is available),

Transitivity and n

for a nonnegative integer, a list of nonnegative integers, or a property n, restrict to permutation representations of transitivity equal to n, or in the list n, or satisfying the function n (if this information is available),

RankAction and n

for a nonnegative integer, a list of nonnegative integers, or a property n, restrict to permutation representations of rank equal to n, or in the list n, or satisfying the function n (if this information is available),

IsMatrixGroup and true

restrict to matrix representations,

Characteristic and p

for a prime integer, a list of prime integers, or a property p, restrict to matrix representations over fields of characteristic equal to p, or in the list p, or satisfying the function p (representations over residue class rings that are not fields can be addressed by entering fail as the value of p),

Dimension and n

for a positive integer, a list of positive integers, or a property n, restrict to matrix representations of dimension equal to n, or in the list n, or satisfying the function n,

Characteristic, p, Dimension, and the string "minimal"

for a prime integer p, restrict to faithful matrix representations over fields of characteristic p that have minimal dimension (if this information is available),

Ring and R

for a ring or a property R, restrict to matrix representations over this ring or satisfying this function (note that the representation might be defined over a proper subring of R),

Ring, R, Dimension, and the string "minimal"

for a ring R, restrict to faithful matrix representations over this ring that have minimal dimension (if this information is available),

Character and chi

for a class function or a list of class functions chi, restrict to matrix representations with these characters (note that the underlying characteristic of the class function, see Section Reference: UnderlyingCharacteristic, determines the characteristic of the matrices), and

IsStraightLineProgram and true

restrict to straight line programs, straight line decisions (see Section 6.1), and black box programs (see Section 6.2).

Note that the above conditions refer only to the information that is available without accessing the representations. For example, if it is not stored in the table of contents whether a permutation representation is primitive then this representation does not match an IsPrimitive condition in DisplayAtlasInfo.

If "minimality" information is requested and no available representation matches this condition then either no minimal representation is available or the information about the minimality is missing. See MinimalRepresentationInfo (6.3-1) for checking whether the minimality information is available for the group in question. Note that in the cases where the string "minimal" occurs as an argument, MinimalRepresentationInfo (6.3-1) is called with third argument "lookup"; this is because the stored information was precomputed just for the groups in the ATLAS of Group Representations, so trying to compute non-stored minimality information (using other available databases) will hardly be successful.

The representations are ordered as follows. Permutation representations come first (ordered according to their degrees), followed by matrix representations over finite fields (ordered first according to the field size and second according to the dimension), matrix representations over the integers, and then matrix representations over algebraic extension fields (both kinds ordered according to the dimension), the last representations are matrix representations over residue class rings (ordered first according to the modulus and second according to the dimension).

The maximal subgroups are ordered according to decreasing group order. For an extension G.p of a simple group G by an outer automorphism of prime order p, this means that G is the first maximal subgroup and then come the extensions of the maximal subgroups of G and the novelties; so the n-th maximal subgroup of G and the n-th maximal subgroup of G.p are in general not related. (This coincides with the numbering used for the Maxes (CTblLib: Maxes) attribute for character tables.)

gap> DisplayAtlasInfo( [ "M11", "A5" ] );
group |  # | maxes | cl | cyc | out | fnd | chk | prs
------+----+-------+----+-----+-----+-----+-----+----
M11   | 42 |     5 |  + |  +  |     |  +  |  +  |  + 
A5    | 18 |     3 |    |     |     |     |  +  |  + 

The above output means that the ATLAS of Group Representations contains 42 representations of the Mathieu group M_11, straight line programs for computing generators of representatives of all five classes of maximal subgroups, for computing representatives of the conjugacy classes of elements and of generators of maximally cyclic subgroups, contains no straight line program for applying outer automorphisms (well, in fact M_11 admits no nontrivial outer automorphism), and contains straight line decisions that check a set of generators or a set of group elements for being a set of standard generators. Analogously, 18 representations of the alternating group A_5 are available, straight line programs for computing generators of representatives of all three classes of maximal subgroups, and no straight line programs for computing representatives of the conjugacy classes of elements, of generators of maximally cyclic subgroups, and no for computing images under outer automorphisms; straight line decisions for checking the standardization of generators or group elements are available.

gap> DisplayAtlasInfo( "A5", IsPermGroup, true );
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
1: G <= Sym(5)  3-trans., on cosets of A4 (1st max.)
2: G <= Sym(6)  2-trans., on cosets of D10 (2nd max.)
3: G <= Sym(10) rank 3, on cosets of S3 (3rd max.)
gap> DisplayAtlasInfo( "A5", NrMovedPoints, [ 4 .. 9 ] );
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
1: G <= Sym(5) 3-trans., on cosets of A4 (1st max.)
2: G <= Sym(6) 2-trans., on cosets of D10 (2nd max.)

The first three representations stored for A_5 are (in fact primitive) permutation representations.

gap> DisplayAtlasInfo( "A5", Dimension, [ 1 .. 3 ] );
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
 8: G <= GL(2a,4)                
 9: G <= GL(2b,4)                
10: G <= GL(3,5)                 
12: G <= GL(3a,9)                
13: G <= GL(3b,9)                
17: G <= GL(3a,Field([Sqrt(5)])) 
18: G <= GL(3b,Field([Sqrt(5)])) 
gap> DisplayAtlasInfo( "A5", Characteristic, 0 );
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
14: G <= GL(4,Z)                 
15: G <= GL(5,Z)                 
16: G <= GL(6,Z)                 
17: G <= GL(3a,Field([Sqrt(5)])) 
18: G <= GL(3b,Field([Sqrt(5)])) 

The representations with number between 4 and 13 are (in fact irreducible) matrix representations over various finite fields, those with numbers 14 to 16 are integral matrix representations, and the last two are matrix representations over the field generated by sqrt{5} over the rational number field.

gap> DisplayAtlasInfo( "A5", Identifier, "a" );
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
 4: G <= GL(4a,2)                
 8: G <= GL(2a,4)                
12: G <= GL(3a,9)                
17: G <= GL(3a,Field([Sqrt(5)])) 

Each of the representations with the numbers 4, 8, 12, and 17 is labeled with the distinguishing letter a.

gap> DisplayAtlasInfo( "A5", NrMovedPoints, IsPrimeInt );
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
1: G <= Sym(5) 3-trans., on cosets of A4 (1st max.)
gap> DisplayAtlasInfo( "A5", Characteristic, IsOddInt );
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
 6: G <= GL(4,3)  
 7: G <= GL(6,3)  
10: G <= GL(3,5)  
11: G <= GL(5,5)  
12: G <= GL(3a,9) 
13: G <= GL(3b,9) 
gap> DisplayAtlasInfo( "A5", Dimension, IsPrimeInt );
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
 8: G <= GL(2a,4)                
 9: G <= GL(2b,4)                
10: G <= GL(3,5)                 
11: G <= GL(5,5)                 
12: G <= GL(3a,9)                
13: G <= GL(3b,9)                
15: G <= GL(5,Z)                 
17: G <= GL(3a,Field([Sqrt(5)])) 
18: G <= GL(3b,Field([Sqrt(5)])) 
gap> DisplayAtlasInfo( "A5", Ring, IsFinite and IsPrimeField );
Representations for G = A5:    (all refer to std. generators 1)
---------------------------
 4: G <= GL(4a,2) 
 5: G <= GL(4b,2) 
 6: G <= GL(4,3)  
 7: G <= GL(6,3)  
10: G <= GL(3,5)  
11: G <= GL(5,5)  

The above examples show how the output can be restricted using a property (a unary function that returns either true or false) that follows NrMovedPoints (Reference: NrMovedPoints (for a permutation)), Characteristic (Reference: Characteristic), Dimension (Reference: Dimension), or Ring (Reference: Ring) in the argument list of DisplayAtlasInfo.

gap> DisplayAtlasInfo( "A5", IsStraightLineProgram, true );
Programs for G = A5:    (all refer to std. generators 1)
--------------------
presentation
std. gen. checker
maxes (all 3):
  1:  A4
  2:  D10
  3:  S3

Straight line programs are available for computing generators of representatives of the three classes of maximal subgroups of A_5, and a straight line decision for checking whether given generators are in fact standard generators is available as well as a presentation in terms of standard generators, see AtlasProgram (3.5-3).

3.5-2 AtlasGenerators
‣ AtlasGenerators( gapname, repnr[, maxnr] )( function )
‣ AtlasGenerators( identifier )( function )

Returns: a record containing generators for a representation, or fail.

In the first form, gapname must be a string denoting a GAP name (see Section 3.2) of a group, and repnr a positive integer. If the ATLAS of Group Representations contains at least repnr representations for the group with GAP name gapname then AtlasGenerators, when called with gapname and repnr, returns an immutable record describing the repnr-th representation; otherwise fail is returned. If a third argument maxnr, a positive integer, is given then an immutable record describing the restriction of the repnr-th representation to the maxnr-th maximal subgroup is returned.

The result record has at least the following components.

generators

a list of generators for the group,

groupname

the GAP name of the group (see Section 3.2),

identifier

a GAP object (a list of filenames plus additional information) that uniquely determines the representation; the value can be used as identifier argument of AtlasGenerators.

repnr

the number of the representation in the current session, equal to the argument repnr if this is given.

standardization

the positive integer denoting the underlying standard generators,

Additionally, the group order may be stored in the component size, and describing components may be available that depend on the data type of the representation: For permutation representations, these are p for the number of moved points, id for the distinguishing string as described for DisplayAtlasInfo (3.5-1), and information about primitivity, point stabilizers etc. if available; for matrix representations, these are dim for the dimension of the matrices, ring (if known) for the ring generated by the matrix entries, id for the distinguishing string, and information about the character if available.

It should be noted that the number repnr refers to the number shown by DisplayAtlasInfo (3.5-1) in the current session; it may be that after the addition of new representations, repnr refers to another representation.

The alternative form of AtlasGenerators, with only argument identifier, can be used to fetch the result record with identifier value equal to identifier. The purpose of this variant is to access the same representation also in different GAP sessions.

gap> gens1:= AtlasGenerators( "A5", 1 );
rec( generators := [ (1,2)(3,4), (1,3,5) ], groupname := "A5", 
  id := "", 
  identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], 
  isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, 
  repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", 
  standardization := 1, transitivity := 3, type := "perm" )
gap> gens8:= AtlasGenerators( "A5", 8 );
rec( dim := 2, 
  generators := [ [ [ Z(2)^0, 0*Z(2) ], [ Z(2^2), Z(2)^0 ] ], 
      [ [ 0*Z(2), Z(2)^0 ], [ Z(2)^0, Z(2)^0 ] ] ], groupname := "A5",
  id := "a", 
  identifier := [ "A5", [ "A5G1-f4r2aB0.m1", "A5G1-f4r2aB0.m2" ], 1, 
      4 ], repname := "A5G1-f4r2aB0", repnr := 8, ring := GF(2^2), 
  size := 60, standardization := 1, type := "matff" )
gap> gens17:= AtlasGenerators( "A5", 17 );
rec( dim := 3, 
  generators := 
    [ [ [ -1, 0, 0 ], [ 0, -1, 0 ], [ -E(5)-E(5)^4, -E(5)-E(5)^4, 1 ] 
         ], [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ], 
  groupname := "A5", id := "a", 
  identifier := [ "A5", "A5G1-Ar3aB0.g", 1, 3 ], 
  repname := "A5G1-Ar3aB0", repnr := 17, ring := NF(5,[ 1, 4 ]), 
  size := 60, standardization := 1, type := "matalg" )

Each of the above pairs of elements generates a group isomorphic to A_5.

gap> gens1max2:= AtlasGenerators( "A5", 1, 2 );
rec( generators := [ (1,2)(3,4), (2,3)(4,5) ], groupname := "D10", 
  identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5, 2 ],
  repnr := 1, size := 10, standardization := 1 )
gap> id:= gens1max2.identifier;;
gap> gens1max2 = AtlasGenerators( id );
true
gap> max2:= Group( gens1max2.generators );;
gap> Size( max2 );
10
gap> IdGroup( max2 ) = IdGroup( DihedralGroup( 10 ) );
true

The elements stored in gens1max2.generators describe the restriction of the first representation of A_5 to a group in the second class of maximal subgroups of A_5 according to the list in the ATLAS of Finite Groups [CCNPW85]; this subgroup is isomorphic to the dihedral group D_10.

3.5-3 AtlasProgram
‣ AtlasProgram( gapname[, std], ... )( function )
‣ AtlasProgram( identifier )( function )

Returns: a record containing a program, or fail.

In the first form, gapname must be a string denoting a GAP name (see Section  3.2) of a group G, say. If the ATLAS of Group Representations contains a straight line program (see Section Reference: Straight Line Programs) or straight line decision (see Section 6.1) or black box program (see Section 6.2) as described by the remaining arguments (see below) then AtlasProgram returns an immutable record containing this program. Otherwise fail is returned.

If the optional argument std is given, only those straight line programs/decisions are considered that take generators from the std-th set of standard generators of G as input, see Section 3.3.

The result record has the following components.

program

the required straight line program/decision, or black box program,

standardization

the positive integer denoting the underlying standard generators of G,

identifier

a GAP object (a list of filenames plus additional information) that uniquely determines the program; the value can be used as identifier argument of AtlasProgram (see below).

In the first form, the last arguments must be as follows.

(the string "maxes" and) a positive integer maxnr

the required program computes generators of the maxnr-th maximal subgroup of the group with GAP name gapname.

In this case, the result record of AtlasProgram also may contain a component size, whose value is the order of the maximal subgroup in question.

one of the strings "classes" or "cyclic"

the required program computes representatives of conjugacy classes of elements or representatives of generators of maximally cyclic subgroups of G, respectively.

See [BSWW01] and [SWW00] for the background concerning these straight line programs. In these cases, the result record of AtlasProgram also contains a component outputs, whose value is a list of class names of the outputs, as described in Section 3.4.

the strings "automorphism" and autname

the required program computes images of standard generators under the outer automorphism of G that is given by this string.

Note that a value "2" of autname means that the square of the automorphism is an inner automorphism of G (not necessarily the identity mapping) but the automorphism itself is not.

the string "check"

the required result is a straight line decision that takes a list of generators for G and returns true if these generators are standard generators of G w.r.t. the standardization std, and false otherwise.

the string "presentation"

the required result is a straight line decision that takes a list of group elements and returns true if these elements are standard generators of G w.r.t. the standardization std, and false otherwise.

See StraightLineProgramFromStraightLineDecision (6.1-9) for an example how to derive defining relators for G in terms of the standard generators from such a straight line decision.

the string "find"

the required result is a black box program that takes G and returns a list of standard generators of G, w.r.t. the standardization std.

the string "restandardize" and an integer std2

the required result is a straight line program that computes standard generators of G w.r.t. the std2-th set of standard generators of G; in this case, the argument std must be given.

the strings "other" and descr

the required program is described by descr.

The second form of AtlasProgram, with only argument the list identifier, can be used to fetch the result record with identifier value equal to identifier.

gap> prog:= AtlasProgram( "A5", 2 );
rec( groupname := "A5", identifier := [ "A5", "A5G1-max2W1", 1 ], 
  program := <straight line program>, size := 10, 
  standardization := 1, subgroupname := "D10" )
gap> StringOfResultOfStraightLineProgram( prog.program, [ "a", "b" ] );
"[ a, bbab ]"
gap> gens1:= AtlasGenerators( "A5", 1 );
rec( generators := [ (1,2)(3,4), (1,3,5) ], groupname := "A5", 
  id := "", 
  identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], 
  isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, 
  repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", 
  standardization := 1, transitivity := 3, type := "perm" )
gap> maxgens:= ResultOfStraightLineProgram( prog.program, gens1.generators );
[ (1,2)(3,4), (2,3)(4,5) ]
gap> maxgens = gens1max2.generators;
true

The above example shows that for restricting representations given by standard generators to a maximal subgroup of A_5, we can also fetch and apply the appropriate straight line program. Such a program (see Reference: Straight Line Programs) takes standard generators of a group --in this example A_5-- as its input, and returns a list of elements in this group --in this example generators of the D_10 subgroup we had met above-- which are computed essentially by evaluating structured words in terms of the standard generators.

gap> prog:= AtlasProgram( "J1", "cyclic" );
rec( groupname := "J1", identifier := [ "J1", "J1G1-cycW1", 1 ], 
  outputs := [ "6A", "7A", "10B", "11A", "15B", "19A" ], 
  program := <straight line program>, standardization := 1 )
gap> gens:= GeneratorsOfGroup( FreeGroup( "x", "y" ) );;
gap> ResultOfStraightLineProgram( prog.program, gens );
[ (x*y)^2*((y*x)^2*y^2*x)^2*y^2, x*y, (x*(y*x*y)^2)^2*y, 
  (x*y*x*(y*x*y)^3*x*y^2)^2*x*y*x*(y*x*y)^2*y, x*y*x*(y*x*y)^2*y, 
  (x*y)^2*y ]

The above example shows how to fetch and use straight line programs for computing generators of representatives of maximally cyclic subgroups of a given group.

3.5-4 AtlasProgramInfo
‣ AtlasProgramInfo( gapname[, std][, "contents", sources][, ...] )( function )

Returns: a record describing a program, or fail.

AtlasProgramInfo takes the same arguments as AtlasProgram (3.5-3), and returns a similar result. The only difference is that the records returned by AtlasProgramInfo have no components program and outputs. The idea is that one can use AtlasProgramInfo for testing whether the program in question is available at all, but without transferring it from a remote server. The identifier component of the result of AtlasProgramInfo can then be used to fetch the program with AtlasProgram (3.5-3).

gap> AtlasProgramInfo( "J1", "cyclic" );
rec( groupname := "J1", identifier := [ "J1", "J1G1-cycW1", 1 ], 
  standardization := 1 )

3.5-5 OneAtlasGeneratingSetInfo
‣ OneAtlasGeneratingSetInfo( [gapname, ][std, ][...] )( function )

Returns: a record describing a representation that satisfies the conditions, or fail.

Let gapname be a string denoting a GAP name (see Section  3.2) of a group G, say. If the ATLAS of Group Representations contains at least one representation for G with the required properties then OneAtlasGeneratingSetInfo returns a record r whose components are the same as those of the records returned by AtlasGenerators (3.5-2), except that the component generators is not contained; the component identifier of r can be used as input for AtlasGenerators (3.5-2) in order to fetch the generators. If no representation satisfying the given conditions is available then fail is returned.

If the argument std is given then it must be a positive integer or a list of positive integers, denoting the sets of standard generators w.r.t. which the representation shall be given (see Section 3.3).

The argument gapname can be missing (then all available groups are considered), or a list of group names can be given instead.

Further restrictions can be entered as arguments, with the same meaning as described for DisplayAtlasInfo (3.5-1). The result of OneAtlasGeneratingSetInfo describes the first generating set for G that matches the restrictions, in the ordering shown by DisplayAtlasInfo (3.5-1).

Note that even in the case that the user parameter "remote" has the value true (see Section 4.3-1), OneAtlasGeneratingSetInfo does not attempt to transfer remote data files, just the table of contents is evaluated. So this function (as well as AllAtlasGeneratingSetInfos (3.5-6)) can be used to check for the availability of certain representations, and afterwards one can call AtlasGenerators (3.5-2) for those representations one wants to work with.

In the following example, we try to access information about permutation representations for the alternating group A_5.

gap> info:= OneAtlasGeneratingSetInfo( "A5" );
rec( groupname := "A5", id := "", 
  identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], 
  isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, 
  repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", 
  standardization := 1, transitivity := 3, type := "perm" )
gap> gens:= AtlasGenerators( info.identifier );
rec( generators := [ (1,2)(3,4), (1,3,5) ], groupname := "A5", 
  id := "", 
  identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], 
  isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, 
  repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", 
  standardization := 1, transitivity := 3, type := "perm" )
gap> info = OneAtlasGeneratingSetInfo( "A5", IsPermGroup, true );
true
gap> info = OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, "minimal" );
true
gap> info = OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, [ 1 .. 10 ] );
true
gap> OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, 20 );
fail

Note that a permutation representation of degree 20 could be obtained by taking twice the primitive representation on 10 points; however, the ATLAS of Group Representations does not store this imprimitive representation (cf. Section 3.1).

We continue this example a little. Next we access matrix representations of A_5.

gap> info:= OneAtlasGeneratingSetInfo( "A5", IsMatrixGroup, true );
rec( dim := 4, groupname := "A5", id := "a", 
  identifier := [ "A5", [ "A5G1-f2r4aB0.m1", "A5G1-f2r4aB0.m2" ], 1, 
      2 ], repname := "A5G1-f2r4aB0", repnr := 4, ring := GF(2), 
  size := 60, standardization := 1, type := "matff" )
gap> gens:= AtlasGenerators( info.identifier );
rec( dim := 4, 
  generators := [ <an immutable 4x4 matrix over GF2>, 
      <an immutable 4x4 matrix over GF2> ], groupname := "A5", 
  id := "a", 
  identifier := [ "A5", [ "A5G1-f2r4aB0.m1", "A5G1-f2r4aB0.m2" ], 1, 
      2 ], repname := "A5G1-f2r4aB0", repnr := 4, ring := GF(2), 
  size := 60, standardization := 1, type := "matff" )
gap> info = OneAtlasGeneratingSetInfo( "A5", Dimension, 4 );
true
gap> info = OneAtlasGeneratingSetInfo( "A5", Characteristic, 2 );
true
gap> info = OneAtlasGeneratingSetInfo( "A5", Ring, GF(2) );
true
gap> OneAtlasGeneratingSetInfo( "A5", Characteristic, [2,5], Dimension, 2 );
rec( dim := 2, groupname := "A5", id := "a", 
  identifier := [ "A5", [ "A5G1-f4r2aB0.m1", "A5G1-f4r2aB0.m2" ], 1, 
      4 ], repname := "A5G1-f4r2aB0", repnr := 8, ring := GF(2^2), 
  size := 60, standardization := 1, type := "matff" )
gap> OneAtlasGeneratingSetInfo( "A5", Characteristic, [2,5], Dimension, 1 );
fail
gap> info:= OneAtlasGeneratingSetInfo( "A5", Characteristic, 0, Dimension, 4 );
rec( dim := 4, groupname := "A5", id := "", 
  identifier := [ "A5", "A5G1-Zr4B0.g", 1, 4 ], 
  repname := "A5G1-Zr4B0", repnr := 14, ring := Integers, size := 60, 
  standardization := 1, type := "matint" )
gap> gens:= AtlasGenerators( info.identifier );
rec( dim := 4, 
  generators := 
    [ 
      [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ], 
          [ -1, -1, -1, -1 ] ], 
      [ [ 0, 1, 0, 0 ], [ 0, 0, 0, 1 ], [ 0, 0, 1, 0 ], 
          [ 1, 0, 0, 0 ] ] ], groupname := "A5", id := "", 
  identifier := [ "A5", "A5G1-Zr4B0.g", 1, 4 ], 
  repname := "A5G1-Zr4B0", repnr := 14, ring := Integers, size := 60, 
  standardization := 1, type := "matint" )
gap> info = OneAtlasGeneratingSetInfo( "A5", Ring, Integers );
true
gap> info = OneAtlasGeneratingSetInfo( "A5", Ring, CF(37) );
true
gap> OneAtlasGeneratingSetInfo( "A5", Ring, Integers mod 77 );
fail
gap> info:= OneAtlasGeneratingSetInfo( "A5", Ring, CF(5), Dimension, 3 );
rec( dim := 3, groupname := "A5", id := "a", 
  identifier := [ "A5", "A5G1-Ar3aB0.g", 1, 3 ], 
  repname := "A5G1-Ar3aB0", repnr := 17, ring := NF(5,[ 1, 4 ]), 
  size := 60, standardization := 1, type := "matalg" )
gap> gens:= AtlasGenerators( info.identifier );
rec( dim := 3, 
  generators := 
    [ [ [ -1, 0, 0 ], [ 0, -1, 0 ], [ -E(5)-E(5)^4, -E(5)-E(5)^4, 1 ] 
         ], [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ], 
  groupname := "A5", id := "a", 
  identifier := [ "A5", "A5G1-Ar3aB0.g", 1, 3 ], 
  repname := "A5G1-Ar3aB0", repnr := 17, ring := NF(5,[ 1, 4 ]), 
  size := 60, standardization := 1, type := "matalg" )
gap> OneAtlasGeneratingSetInfo( "A5", Ring, GF(17) );
fail

3.5-6 AllAtlasGeneratingSetInfos
‣ AllAtlasGeneratingSetInfos( [gapname, ][std, ][...] )( function )

Returns: the list of all records describing representations that satisfy the conditions.

AllAtlasGeneratingSetInfos is similar to OneAtlasGeneratingSetInfo (3.5-5). The difference is that the list of all records describing the available representations with the given properties is returned instead of just one such component. In particular an empty list is returned if no such representation is available.

gap> AllAtlasGeneratingSetInfos( "A5", IsPermGroup, true );
[ rec( groupname := "A5", id := "", 
      identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ]
        , isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, 
      repname := "A5G1-p5B0", repnr := 1, size := 60, 
      stabilizer := "A4", standardization := 1, transitivity := 3, 
      type := "perm" ), 
  rec( groupname := "A5", id := "", 
      identifier := [ "A5", [ "A5G1-p6B0.m1", "A5G1-p6B0.m2" ], 1, 6 ]
        , isPrimitive := true, maxnr := 2, p := 6, rankAction := 2, 
      repname := "A5G1-p6B0", repnr := 2, size := 60, 
      stabilizer := "D10", standardization := 1, transitivity := 2, 
      type := "perm" ), 
  rec( groupname := "A5", id := "", 
      identifier := [ "A5", [ "A5G1-p10B0.m1", "A5G1-p10B0.m2" ], 1, 
          10 ], isPrimitive := true, maxnr := 3, p := 10, 
      rankAction := 3, repname := "A5G1-p10B0", repnr := 3, 
      size := 60, stabilizer := "S3", standardization := 1, 
      transitivity := 1, type := "perm" ) ]

Note that a matrix representation in any characteristic can be obtained by reducing a permutation representation or an integral matrix representation; however, the ATLAS of Group Representations does not store such a representation (cf. Section 3.1).

3.5-7 AtlasGroup
‣ AtlasGroup( [gapname[, std, ]][...] )( function )
‣ AtlasGroup( identifier )( function )

Returns: a group that satisfies the conditions, or fail.

AtlasGroup takes the same arguments as OneAtlasGeneratingSetInfo (3.5-5), and returns the group generated by the generators component of the record that is returned by OneAtlasGeneratingSetInfo (3.5-5) with these arguments; if OneAtlasGeneratingSetInfo (3.5-5) returns fail then also AtlasGroup returns fail.

gap> g:= AtlasGroup( "A5" );
Group([ (1,2)(3,4), (1,3,5) ])

Alternatively, it is possible to enter exactly one argument, a record identifier as returned by OneAtlasGeneratingSetInfo (3.5-5) or AllAtlasGeneratingSetInfos (3.5-6), or the identifier component of such a record.

gap> info:= OneAtlasGeneratingSetInfo( "A5" );
rec( groupname := "A5", id := "", 
  identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], 
  isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, 
  repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", 
  standardization := 1, transitivity := 3, type := "perm" )
gap> AtlasGroup( info );
Group([ (1,2)(3,4), (1,3,5) ])
gap> AtlasGroup( info.identifier );
Group([ (1,2)(3,4), (1,3,5) ])

In the groups returned by AtlasGroup, the value of the attribute AtlasRepInfoRecord (3.5-9) is set. This information is used for example by AtlasSubgroup (3.5-8) when this function is called with second argument a group created by AtlasGroup.

3.5-8 AtlasSubgroup
‣ AtlasSubgroup( gapname[, std][, ...], maxnr )( function )
‣ AtlasSubgroup( identifier, maxnr )( function )
‣ AtlasSubgroup( G, maxnr )( function )

Returns: a group that satisfies the conditions, or fail.

The arguments of AtlasSubgroup, except the last argument maxn, are the same as for AtlasGroup (3.5-7). If the ATLAS of Group Representations provides a straight line program for restricting representations of the group with name gapname (given w.r.t. the std-th standard generators) to the maxnr-th maximal subgroup and if a representation with the required properties is available, in the sense that calling AtlasGroup (3.5-7) with the same arguments except maxnr yields a group, then AtlasSubgroup returns the restriction of this representation to the maxnr-th maximal subgroup.

In all other cases, fail is returned.

Note that the conditions refer to the group and not to the subgroup. It may happen that in the restriction of a permutation representation to a subgroup, fewer points are moved, or that the restriction of a matrix representation turns out to be defined over a smaller ring. Here is an example.

gap> g:= AtlasSubgroup( "A5", NrMovedPoints, 5, 1 );
Group([ (1,5)(2,3), (1,3,5) ])
gap> NrMovedPoints( g );
4

Alternatively, it is possible to enter exactly two arguments, the first being a record identifier as returned by OneAtlasGeneratingSetInfo (3.5-5) or AllAtlasGeneratingSetInfos (3.5-6), or the identifier component of such a record, or a group G constructed with AtlasGroup (3.5-7).

gap> info:= OneAtlasGeneratingSetInfo( "A5" );
rec( groupname := "A5", id := "", 
  identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], 
  isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, 
  repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", 
  standardization := 1, transitivity := 3, type := "perm" )
gap> AtlasSubgroup( info, 1 );
Group([ (1,5)(2,3), (1,3,5) ])
gap> AtlasSubgroup( info.identifier, 1 );
Group([ (1,5)(2,3), (1,3,5) ])
gap> AtlasSubgroup( AtlasGroup( "A5" ), 1 );
Group([ (1,5)(2,3), (1,3,5) ])

3.5-9 AtlasRepInfoRecord
‣ AtlasRepInfoRecord( G )( attribute )

Returns: the record stored in the group G when this was constructed with AtlasGroup (3.5-7).

For a group G that has been constructed with AtlasGroup (3.5-7), the value of this attribute is the info record that describes G, in the sense that this record was the first argument of the call to AtlasGroup (3.5-7), or it is the result of the call to OneAtlasGeneratingSetInfo (3.5-5) with the conditions that were listed in the call to AtlasGroup (3.5-7).

gap> AtlasRepInfoRecord( AtlasGroup( "A5" ) );
rec( groupname := "A5", id := "", 
  identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], 
  isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, 
  repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", 
  standardization := 1, transitivity := 3, type := "perm" )

3.6 Browse Applications Provided by AtlasRep

The functions BrowseMinimalDegrees (3.6-1), BrowseBibliographySporadicSimple (3.6-2), and BrowseAtlasInfo (Browse: BrowseAtlasInfo) (an alternative to DisplayAtlasInfo (3.5-1)) are available only if the GAP package Browse (see [BL14]) is loaded.

3.6-1 BrowseMinimalDegrees
‣ BrowseMinimalDegrees( [groupnames] )( function )

Returns: the list of info records for the clicked representations.

If the GAP package Browse (see [BL14]) is loaded then this function is available. It opens a browse table whose rows correspond to the groups for which the ATLAS of Group Representations contains some information about minimal degrees, whose columns correspond to the characteristics that occur, and whose entries are the known minimal degrees.

gap> if IsBound( BrowseMinimalDegrees ) then
>   down:= NCurses.keys.DOWN;;  DOWN:= NCurses.keys.NPAGE;;
>   right:= NCurses.keys.RIGHT;;  END:= NCurses.keys.END;;
>   enter:= NCurses.keys.ENTER;;  nop:= [ 14, 14, 14 ];;
>   # just scroll in the table
>   BrowseData.SetReplay( Concatenation( [ DOWN, DOWN, DOWN,
>          right, right, right ], "sedddrrrddd", nop, nop, "Q" ) );
>   BrowseMinimalDegrees();;
>   # restrict the table to the groups with minimal ordinary degree 6
>   BrowseData.SetReplay( Concatenation( "scf6",
>        [ down, down, right, enter, enter ] , nop, nop, "Q" ) );
>   BrowseMinimalDegrees();;
>   BrowseData.SetReplay( false );
> fi;

If an argument groupnames is given then it must be a list of group names of the ATLAS of Group Representations; the browse table is then restricted to the rows corresponding to these group names and to the columns that are relevant for these groups. A perhaps interesting example is the subtable with the data concerning sporadic simple groups and their covering groups, which has been published in [Jan05]. This table can be shown as follows.

gap> if IsBound( BrowseMinimalDegrees ) then
>   # just scroll in the table
>   BrowseData.SetReplay( Concatenation( [ DOWN, DOWN, DOWN, END ],
>          "rrrrrrrrrrrrrr", nop, nop, "Q" ) );
>   BrowseMinimalDegrees( BibliographySporadicSimple.groupNamesJan05 );;
> fi;

The browse table does not contain rows for the groups 6.M_22, 12.M_22, 6.Fi_22. Note that in spite of the title of [Jan05], the entries in Table 1 of this paper are in fact the minimal degrees of faithful irreducible representations, and in the above three cases, these degrees are larger than the minimal degrees of faithful representations. The underlying data of the browse table is about the minimal faithful (but not necessarily irreducible) degrees.

The return value of BrowseMinimalDegrees is the list of OneAtlasGeneratingSetInfo (3.5-5) values for those representations that have been "clicked" in visual mode.

The variant without arguments of this function is also available in the menu shown by BrowseGapData (Browse: BrowseGapData).

3.6-2 BrowseBibliographySporadicSimple
‣ BrowseBibliographySporadicSimple( )( function )

Returns: a record as returned by ParseBibXMLExtString (GAPDoc: ParseBibXMLextString).

If the GAP package Browse (see [BL14]) is loaded then this function is available. It opens a browse table whose rows correspond to the entries of the bibliographies in the ATLAS of Finite Groups [CCNPW85] and in the ATLAS of Brauer Characters [JLPW95].

The function is based on BrowseBibliography (Browse: BrowseBibliography), see the documentation of this function for details, e.g., about the return value.

The returned record encodes the bibliography entries corresponding to those rows of the table that are "clicked" in visual mode, in the same format as the return value of ParseBibXMLExtString (GAPDoc: ParseBibXMLextString), see the manual of the GAP package GAPDoc [LN12] for details.

BrowseBibliographySporadicSimple can be called also via the menu shown by BrowseGapData (Browse: BrowseGapData).

gap> if IsBound( BrowseBibliographySporadicSimple ) then
>   enter:= NCurses.keys.ENTER;;  nop:= [ 14, 14, 14 ];;
>   BrowseData.SetReplay( Concatenation(
>     # choose the application
>     "/Bibliography of Sporadic Simple Groups", [ enter, enter ],
>     # search in the title column for the Atlas of Finite Groups
>     "scr/Atlas of finite groups", [ enter,
>     # and quit
>     nop, nop, nop, nop ], "Q" ) );
>   BrowseGapData();;
>   BrowseData.SetReplay( false );
> fi;

The bibliographies contained in the ATLAS of Finite Groups [CCNPW85] and in the ATLAS of Brauer Characters [JLPW95] are available online in HTML format, see http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep/bibl/index.html.

The source data in BibXMLext format, which are used by BrowseBibliographySporadicSimple, is part of the AtlasRep package, in four files with suffix xml in the package's bibl directory. Note that each of the two books contains two bibliographies.

Details about the BibXMLext format, including information how to transform the data into other formats such as BibTeX, can be found in the GAP package GAPDoc (see [LN12]).

Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

generated by GAPDoc2HTML

atlasrep/doc/chooser.html0000644000175000017500000000000012701177223021007 1atlasrep/doc/chooser.htmlustar samsamatlasrep/doc/chap6.html0000644000175000017500000022655412701177223013467 0ustar samsam GAP (AtlasRep) - Chapter 6: New GAP Objects and Utility Functions Provided by the AtlasRep Package
Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

6 New GAP Objects and Utility Functions Provided by the AtlasRep Package

This chapter describes GAP objects and functions that are provided by the AtlasRep package but that might be of general interest.

The new objects are straight line decisions (see Section 6.1) and black box programs (see Section 6.2).

The new functions are concerned with representations of minimal degree, see Section 6.3.

6.1 Straight Line Decisions

Straight line decisions are similar to straight line programs (see Section Reference: Straight Line Programs) but return true or false. A straight line decisions checks a property for its inputs. An important example is to check whether a given list of group generators is in fact a list of standard generators (cf. Section3.3) for this group.

A straight line decision in GAP is represented by an object in the filter IsStraightLineDecision (6.1-1) that stores a list of "lines" each of which has one of the following three forms.

  1. a nonempty dense list l of integers,

  2. a pair [ l, i ] where l is a list of form 1. and i is a positive integer,

  3. a list ["Order", i, n ] where i and n are positive integers.

The first two forms have the same meaning as for straight line programs (see Section Reference: Straight Line Programs), the last form means a check whether the element stored at the label i-th has the order n.

For the meaning of the list of lines, see ResultOfStraightLineDecision (6.1-6).

Straight line decisions can be constructed using StraightLineDecision (6.1-5), defining attributes for straight line decisions are NrInputsOfStraightLineDecision (6.1-3) and LinesOfStraightLineDecision (6.1-2), an operation for straight line decisions is ResultOfStraightLineDecision (6.1-6).

Special methods applicable to straight line decisions are installed for the operations Display (Reference: Display), IsInternallyConsistent (Reference: IsInternallyConsistent), PrintObj (Reference: PrintObj), and ViewObj (Reference: ViewObj).

For a straight line decision prog, the default Display (Reference: Display) method prints the interpretation of prog as a sequence of assignments of associative words and of order checks; a record with components gensnames (with value a list of strings) and listname (a string) may be entered as second argument of Display (Reference: Display), in this case these names are used, the default for gensnames is [ g1, g2, ... ], the default for listname is r.

6.1-1 IsStraightLineDecision
‣ IsStraightLineDecision( obj )( category )

Each straight line decision in GAP lies in the filter IsStraightLineDecision.

6.1-2 LinesOfStraightLineDecision
‣ LinesOfStraightLineDecision( prog )( operation )

Returns: the list of lines that define the straight line decision.

This defining attribute for the straight line decision prog (see IsStraightLineDecision (6.1-1)) corresponds to LinesOfStraightLineProgram (Reference: LinesOfStraightLineProgram) for straight line programs.

gap> dec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ],
> [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] );
<straight line decision>
gap> LinesOfStraightLineDecision( dec );
[ [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 1, 2 ], [ "Order", 2, 3 ], 
  [ "Order", 3, 5 ] ]

6.1-3 NrInputsOfStraightLineDecision
‣ NrInputsOfStraightLineDecision( prog )( operation )

Returns: the number of inputs required for the straight line decision.

This defining attribute corresponds to NrInputsOfStraightLineProgram (Reference: NrInputsOfStraightLineProgram).

gap> NrInputsOfStraightLineDecision( dec );
2

6.1-4 ScanStraightLineDecision
‣ ScanStraightLineDecision( string )( function )

Returns: a record containing the straight line decision, or fail.

Let string be a string that encodes a straight line decision in the sense that it consists of the lines listed for ScanStraightLineProgram (7.4-1), except that oup lines are not allowed, and instead lines of the following form may occur.

chor a b

means that it is checked whether the order of the element at label a is b.

ScanStraightLineDecision returns a record containing as the value of its component program the corresponding GAP straight line decision (see IsStraightLineDecision (6.1-1)) if the input string satisfies the syntax rules stated above, and returns fail otherwise. In the latter case, information about the first corrupted line of the program is printed if the info level of InfoCMeatAxe (7.1-2) is at least 1.

gap> str:= "inp 2\nchor 1 2\nchor 2 3\nmu 1 2 3\nchor 3 5";;
gap> prg:= ScanStraightLineDecision( str );
rec( program := <straight line decision> )
gap> prg:= prg.program;;
gap> Display( prg );
# input:
r:= [ g1, g2 ];
# program:
if Order( r[1] ) <> 2 then  return false;  fi;
if Order( r[2] ) <> 3 then  return false;  fi;
r[3]:= r[1]*r[2];
if Order( r[3] ) <> 5 then  return false;  fi;
# return value:
true

6.1-5 StraightLineDecision
‣ StraightLineDecision( lines[, nrgens] )( function )
‣ StraightLineDecisionNC( lines[, nrgens] )( function )

Returns: the straight line decision given by the list of lines.

Let lines be a list of lists that defines a unique straight line decision (see IsStraightLineDecision (6.1-1)); in this case StraightLineDecision returns this program, otherwise an error is signalled. The optional argument nrgens specifies the number of input generators of the program; if a list of integers (a line of form 1. in the definition above) occurs in lines then this number is not determined by lines and therefore must be specified by the argument nrgens; if not then StraightLineDecision returns fail.

StraightLineDecisionNC does the same as StraightLineDecision, except that the internal consistency of the program is not checked.

6.1-6 ResultOfStraightLineDecision
‣ ResultOfStraightLineDecision( prog, gens[, orderfunc] )( operation )

Returns: true if all checks succeed, otherwise false.

ResultOfStraightLineDecision evaluates the straight line decision (see IsStraightLineDecision (6.1-1)) prog at the group elements in the list gens.

The function for computing the order of a group element can be given as the optional argument orderfunc. For example, this may be a function that gives up at a certain limit if one has to be aware of extremely huge orders in failure cases.

The result of a straight line decision with lines p_1, p_2, ..., p_k when applied to gens is defined as follows.

(a)

First a list r of intermediate values is initialized with a shallow copy of gens.

(b)

For i ≤ k, before the i-th step, let r be of length n. If p_i is the external representation of an associative word in the first n generators then the image of this word under the homomorphism that is given by mapping r to these first n generators is added to r. If p_i is a pair [ l, j ], for a list l, then the same element is computed, but instead of being added to r, it replaces the j-th entry of r. If p_i is a triple ["Order", i, n ] then it is checked whether the order of r[i] is n; if not then false is returned immediately.

(c)

If all k lines have been processed and no order check has failed then true is returned.

Here are some examples.

gap> dec:= StraightLineDecision( [ ], 1 );
<straight line decision>
gap> ResultOfStraightLineDecision( dec, [ () ] );
true

The above straight line decision dec returns true –for any input of the right length.

gap> dec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ],
>       [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] );
<straight line decision>
gap> LinesOfStraightLineDecision( dec );
[ [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 1, 2 ], [ "Order", 2, 3 ], 
  [ "Order", 3, 5 ] ]
gap> ResultOfStraightLineDecision( dec, [ (), () ] );
false
gap> ResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,4,5) ] );
true

The above straight line decision admits two inputs; it tests whether the orders of the inputs are 2 and 3, and the order of their product is 5.

6.1-7 Semi-Presentations and Presentations

We can associate a finitely presented group F / R to each straight line decision dec, say, as follows. The free generators of the free group F are in bijection with the inputs, and the defining relators generating R as a normal subgroup of F are given by those words w^k for which dec contains a check whether the order of w equals k.

So if dec returns true for the input list [ g_1, g_2, ..., g_n ] then mapping the free generators of F to the inputs defines an epimorphism Φ from F to the group G, say, that is generated by these inputs, such that R is contained in the kernel of Φ.

(Note that "satisfying dec" is a stronger property than "satisfying a presentation". For example, ⟨ x ∣ x^2 = x^3 = 1 ⟩ is a presentation for the trivial group, but the straight line decision that checks whether the order of x is both 2 and 3 clearly always returns false.)

The ATLAS of Group Representations contains the following two kinds of straight line decisions.

  • A presentation is a straight line decision dec that is defined for a set of standard generators of a group G and that returns true if and only if the list of inputs is in fact a sequence of such standard generators for G. In other words, the relators derived from the order checks in the way described above are defining relators for G, and moreover these relators are words in terms of standard generators. (In particular the kernel of the map Φ equals R whenever dec returns true.)

  • A semi-presentation is a straight line decision dec that is defined for a set of standard generators of a group G and that returns true for a list of inputs that is known to generate a group isomorphic with G if and only if these inputs form in fact a sequence of standard generators for G. In other words, the relators derived from the order checks in the way described above are not necessarily defining relators for G, but if we assume that the g_i generate G then they are standard generators. (In particular, F / R may be a larger group than G but in this case Φ maps the free generators of F to standard generators of G.)

    More about semi-presentations can be found in [NW05].

Available presentations and semi-presentations are listed by DisplayAtlasInfo (3.5-1), they can be accessed via AtlasProgram (3.5-3). (Clearly each presentation is also a semi-presentation. So a semi-presentation for some standard generators of a group is regarded as available whenever a presentation for these standard generators and this group is available.)

Note that different groups can have the same semi-presentation. We illustrate this with an example that is mentioned in [NW05]. The groups L_2(7) ≅ L_3(2) and L_2(8) are generated by elements of the orders 2 and 3 such that their product has order 7, and no further conditions are necessary to define standard generators.

gap> check:= AtlasProgram( "L2(8)", "check" );
rec( groupname := "L2(8)", 
  identifier := [ "L2(8)", "L28G1-check1", 1, 1 ], 
  program := <straight line decision>, standardization := 1 )
gap> gens:= AtlasGenerators( "L2(8)", 1 );
rec( charactername := "1a+8a", 
  generators := [ (1,2)(3,4)(6,7)(8,9), (1,3,2)(4,5,6)(7,8,9) ], 
  groupname := "L2(8)", id := "", 
  identifier := [ "L2(8)", [ "L28G1-p9B0.m1", "L28G1-p9B0.m2" ], 1, 9 
     ], isPrimitive := true, maxnr := 1, p := 9, rankAction := 2, 
  repname := "L28G1-p9B0", repnr := 1, size := 504, 
  stabilizer := "2^3:7", standardization := 1, transitivity := 3, 
  type := "perm" )
gap> ResultOfStraightLineDecision( check.program, gens.generators );
true
gap> gens:= AtlasGenerators( "L3(2)", 1 );
rec( generators := [ (2,4)(3,5), (1,2,3)(5,6,7) ], 
  groupname := "L3(2)", id := "a", 
  identifier := [ "L3(2)", [ "L27G1-p7aB0.m1", "L27G1-p7aB0.m2" ], 1, 
      7 ], isPrimitive := true, maxnr := 1, p := 7, rankAction := 2, 
  repname := "L27G1-p7aB0", repnr := 1, size := 168, 
  stabilizer := "S4", standardization := 1, transitivity := 2, 
  type := "perm" )
gap> ResultOfStraightLineDecision( check.program, gens.generators );
true

6.1-8 AsStraightLineDecision
‣ AsStraightLineDecision( bbox )( attribute )

Returns: an equivalent straight line decision for the given black box program, or fail.

For a black box program (see IsBBoxProgram (6.2-1)) bbox, AsStraightLineDecision returns a straight line decision (see IsStraightLineDecision (6.1-1)) with the same output as bbox, in the sense of AsBBoxProgram (6.2-5), if such a straight line decision exists, and fail otherwise.

gap> lines:= [ [ "Order", 1, 2 ], [ "Order", 2, 3 ],
>              [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 3, 5 ] ];;
gap> dec:= StraightLineDecision( lines, 2 );
<straight line decision>
gap> bboxdec:= AsBBoxProgram( dec );
<black box program>
gap> asdec:= AsStraightLineDecision( bboxdec );
<straight line decision>
gap> LinesOfStraightLineDecision( asdec );
[ [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ [ 1, 1, 2, 1 ], 3 ], 
  [ "Order", 3, 5 ] ]

6.1-9 StraightLineProgramFromStraightLineDecision
‣ StraightLineProgramFromStraightLineDecision( dec )( operation )

Returns: the straight line program associated to the given straight line decision.

For a straight line decision dec (see IsStraightLineDecision (6.1-1), StraightLineProgramFromStraightLineDecision returns the straight line program (see IsStraightLineProgram (Reference: IsStraightLineProgram) obtained by replacing each line of type 3. (i.e, each order check) by an assignment of the power in question to a new slot, and by declaring the list of these elements as the return value.

This means that the return value describes exactly the defining relators of the presentation that is associated to the straight line decision, see 6.1-7.

For example, one can use the return value for printing the relators with StringOfResultOfStraightLineProgram (Reference: StringOfResultOfStraightLineProgram), or for explicitly constructing the relators as words in terms of free generators, by applying ResultOfStraightLineProgram (Reference: ResultOfStraightLineProgram) to the program and to these generators.

gap> dec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ],
> [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] );
<straight line decision>
gap> prog:= StraightLineProgramFromStraightLineDecision( dec );
<straight line program>
gap> Display( prog );
# input:
r:= [ g1, g2 ];
# program:
r[3]:= r[1]*r[2];
r[4]:= r[1]^2;
r[5]:= r[2]^3;
r[6]:= r[3]^5;
# return values:
[ r[4], r[5], r[6] ]
gap> StringOfResultOfStraightLineProgram( prog, [ "a", "b" ] );
"[ a^2, b^3, (ab)^5 ]"
gap> gens:= GeneratorsOfGroup( FreeGroup( "a", "b" ) );
[ a, b ]
gap> ResultOfStraightLineProgram( prog, gens );
[ a^2, b^3, (a*b)^5 ]

6.2 Black Box Programs

Black box programs formalize the idea that one takes some group elements, forms arithmetic expressions in terms of them, tests properties of these expressions, executes conditional statements (including jumps inside the program) depending on the results of these tests, and eventually returns some result.

A specification of the language can be found in [Nic06], see also

http://brauer.maths.qmul.ac.uk/Atlas/info/blackbox.html.

The inputs of a black box program may be explicit group elements, and the program may also ask for random elements from a given group. The program steps form products, inverses, conjugates, commutators, etc. of known elements, tests concern essentially the orders of elements, and the result is a list of group elements or true or false or fail.

Examples that can be modeled by black box programs are

straight line programs,

which require a fixed number of input elements and form arithmetic expressions of elements but do not use random elements, tests, conditional statements and jumps; the return value is always a list of elements; these programs are described in Section Reference: Straight Line Programs.

straight line decisions,

which differ from straight line programs only in the sense that also order tests are admissible, and that the return value is true if all these tests are satisfied, and false as soon as the first such test fails; they are described in Section 6.1.

scripts for finding standard generators,

which take a group and a function to generate a random element in this group but no explicit input elements, admit all control structures, and return either a list of standard generators or fail; see ResultOfBBoxProgram (6.2-4) for examples.

In the case of general black box programs, currently GAP provides only the possibility to read an existing program via ScanBBoxProgram (6.2-2), and to run the program using RunBBoxProgram (6.2-3). It is not our aim to write such programs in GAP.

The special case of the "find" scripts mentioned above is also admissible as an argument of ResultOfBBoxProgram (6.2-4), which returns either the set of generators or fail.

Contrary to the general situation, more support is provided for straight line programs and straight line decisions in GAP, see Section Reference: Straight Line Programs for functions that manipulate them (compose, restrict etc.).

The functions AsStraightLineProgram (6.2-6) and AsStraightLineDecision (6.1-8) can be used to transform a general black box program object into a straight line program or a straight line decision if this is possible.

Conversely, one can create an equivalent general black box program from a straight line program or from a straight line decision with AsBBoxProgram (6.2-5).

(Computing a straight line program related to a given straight line decision is supported in the sense of StraightLineProgramFromStraightLineDecision (6.1-9).)

Note that none of these three kinds of objects is a special case of another: Running a black box program with RunBBoxProgram (6.2-3) yields a record, running a straight line program with ResultOfStraightLineProgram (Reference: ResultOfStraightLineProgram) yields a list of elements, and running a straight line decision with ResultOfStraightLineDecision (6.1-6) yields true or false.

6.2-1 IsBBoxProgram
‣ IsBBoxProgram( obj )( category )

Each black box program in GAP lies in the filter IsBBoxProgram.

6.2-2 ScanBBoxProgram
‣ ScanBBoxProgram( string )( function )

Returns: a record containing the black box program encoded by the input string, or fail.

For a string string that describes a black box program, e.g., the return value of StringFile (GAPDoc: StringFile), ScanBBoxProgram computes this black box program. If this is successful then the return value is a record containing as the value of its component program the corresponding GAP object that represents the program, otherwise fail is returned.

As the first example, we construct a black box program that tries to find standard generators for the alternating group A_5; these standard generators are any pair of elements of the orders 2 and 3, respectively, such that their product has order 5.

gap> findstr:= "\
>   set V 0\n\
> lbl START1\n\
>   rand 1\n\
>   ord 1 A\n\
>   incr V\n\
>   if V gt 100 then timeout\n\
>   if A notin 1 2 3 5 then fail\n\
>   if A noteq 2 then jmp START1\n\
> lbl START2\n\
>   rand 2\n\
>   ord 2 B\n\
>   incr V\n\
>   if V gt 100 then timeout\n\
>   if B notin 1 2 3 5 then fail\n\
>   if B noteq 3 then jmp START2\n\
>   # The elements 1 and 2 have the orders 2 and 3, respectively.\n\
>   set X 0\n\
> lbl CONJ\n\
>   incr X\n\
>   if X gt 100 then timeout\n\
>   rand 3\n\
>   cjr 2 3\n\
>   mu 1 2 4   # ab\n\
>   ord 4 C\n\
>   if C notin 2 3 5 then fail\n\
>   if C noteq 5 then jmp CONJ\n\
>   oup 2 1 2";;
gap> find:= ScanBBoxProgram( findstr );
rec( program := <black box program> )

The second example is a black box program that checks whether its two inputs are standard generators for A_5.

gap> checkstr:= "\
> chor 1 2\n\
> chor 2 3\n\
> mu 1 2 3\n\
> chor 3 5";;
gap> check:= ScanBBoxProgram( checkstr );
rec( program := <black box program> )

6.2-3 RunBBoxProgram
‣ RunBBoxProgram( prog, G, input, options )( function )

Returns: a record describing the result and the statistics of running the black box program prog, or fail, or the string "timeout".

For a black box program prog, a group G, a list input of group elements, and a record options, RunBBoxProgram applies prog to input, where G is used only to compute random elements.

The return value is fail if a syntax error or an explicit fail statement is reached at runtime, and the string "timeout" if a timeout statement is reached. (The latter might mean that the random choices were unlucky.) Otherwise a record with the following components is returned.

gens

a list of group elements, bound if an oup statement was reached,

result

true if a true statement was reached, false if either a false statement or a failed order check was reached,

The other components serve as statistical information about the numbers of the various operations (multiply, invert, power, order, random, conjugate, conjugateinplace, commutator), and the runtime in milliseconds (timetaken).

The following components of options are supported.

randomfunction

the function called with argument G in order to compute a random element of G (default PseudoRandom (Reference: PseudoRandom))

orderfunction

the function for computing element orders (the default is Order (Reference: Order)),

quiet

if true then ignore echo statements (default false),

verbose

if true then print information about the line that is currently processed, and about order checks (default false),

allowbreaks

if true then call Error (Reference: Error) when a break statement is reached, otherwise ignore break statements (default true).

As an example, we run the black box programs constructed in the example for ScanBBoxProgram (6.2-2).

gap> g:= AlternatingGroup( 5 );;
gap> res:= RunBBoxProgram( find.program, g, [], rec() );;
gap> IsBound( res.gens );  IsBound( res.result );
true
false
gap> List( res.gens, Order );
[ 2, 3 ]
gap> Order( Product( res.gens ) );
5
gap> res:= RunBBoxProgram( check.program, "dummy", res.gens, rec() );;
gap> IsBound( res.gens );  IsBound( res.result );
false
true
gap> res.result;
true
gap> othergens:= GeneratorsOfGroup( g );;
gap> res:= RunBBoxProgram( check.program, "dummy", othergens, rec() );;
gap> res.result;
false

6.2-4 ResultOfBBoxProgram
‣ ResultOfBBoxProgram( prog, G )( function )

Returns: a list of group elements or true, false, fail, or the string "timeout".

This function calls RunBBoxProgram (6.2-3) with the black box program prog and second argument either a group or a list of group elements; the default options are assumed. The return value is fail if this call yields fail, otherwise the gens component of the result, if bound, or the result component if not.

As an example, we run the black box programs constructed in the example for ScanBBoxProgram (6.2-2).

gap> g:= AlternatingGroup( 5 );;
gap> res:= ResultOfBBoxProgram( find.program, g );;
gap> List( res, Order );
[ 2, 3 ]
gap> Order( Product( res ) );
5
gap> res:= ResultOfBBoxProgram( check.program, res );
true
gap> othergens:= GeneratorsOfGroup( g );;
gap> res:= ResultOfBBoxProgram( check.program, othergens );
false

6.2-5 AsBBoxProgram
‣ AsBBoxProgram( slp )( attribute )

Returns: an equivalent black box program for the given straight line program or straight line decision.

Let slp be a straight line program (see IsStraightLineProgram (Reference: IsStraightLineProgram)) or a straight line decision (see IsStraightLineDecision (6.1-1)). Then AsBBoxProgram returns a black box program bbox (see IsBBoxProgram (6.2-1)) with the "same" output as slp, in the sense that ResultOfBBoxProgram (6.2-4) yields the same result for bbox as ResultOfStraightLineProgram (Reference: ResultOfStraightLineProgram) or ResultOfStraightLineDecision (6.1-6), respectively, for slp.

gap> f:= FreeGroup( "x", "y" );;  gens:= GeneratorsOfGroup( f );;
gap> slp:= StraightLineProgram( [ [1,2,2,3], [3,-1] ], 2 );
<straight line program>
gap> ResultOfStraightLineProgram( slp, gens );
y^-3*x^-2
gap> bboxslp:= AsBBoxProgram( slp );
<black box program>
gap> ResultOfBBoxProgram( bboxslp, gens );
[ y^-3*x^-2 ]
gap> lines:= [ [ "Order", 1, 2 ], [ "Order", 2, 3 ],
>              [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 3, 5 ] ];;
gap> dec:= StraightLineDecision( lines, 2 );
<straight line decision>
gap> ResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,3,5) ] );
true
gap> ResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,3,4) ] );
false
gap> bboxdec:= AsBBoxProgram( dec );
<black box program>
gap> ResultOfBBoxProgram( bboxdec, [ (1,2)(3,4), (1,3,5) ] );
true
gap> ResultOfBBoxProgram( bboxdec, [ (1,2)(3,4), (1,3,4) ] );
false

6.2-6 AsStraightLineProgram
‣ AsStraightLineProgram( bbox )( attribute )

Returns: an equivalent straight line program for the given black box program, or fail.

For a black box program (see AsBBoxProgram (6.2-5)) bbox, AsStraightLineProgram returns a straight line program (see IsStraightLineProgram (Reference: IsStraightLineProgram)) with the same output as bbox if such a straight line program exists, and fail otherwise.

gap> Display( AsStraightLineProgram( bboxslp ) );
# input:
r:= [ g1, g2 ];
# program:
r[3]:= r[1]^2;
r[4]:= r[2]^3;
r[5]:= r[3]*r[4];
r[3]:= r[5]^-1;
# return values:
[ r[3] ]
gap> AsStraightLineProgram( bboxdec );
fail

6.3 Representations of Minimal Degree

This section deals with minimal degrees of permutation and matrix representations. We do not provide an algorithm that computes these degrees for an arbitrary group, we only provide some tools for evaluating known databases, mainly concerning "bicyclic extensions" (see [CCNPW85, Section 6.5]) of simple groups, in order to derive the minimal degrees, see Section 6.3-4.

In the AtlasRep package, this information can be used for prescribing "minimality conditions" in DisplayAtlasInfo (3.5-1), OneAtlasGeneratingSetInfo (3.5-5), and AllAtlasGeneratingSetInfos (3.5-6). An overview of the stored minimal degrees can be shown with BrowseMinimalDegrees (3.6-1).

6.3-1 MinimalRepresentationInfo
‣ MinimalRepresentationInfo( grpname, conditions )( function )

Returns: a record with the components value and source, or fail

Let grpname be the GAP name of a group G, say. If the information described by conditions about minimal representations of this group can be computed or is stored then MinimalRepresentationInfo returns a record with the components value and source, otherwise fail is returned.

The following values for conditions are supported.

  • If conditions is NrMovedPoints (Reference: NrMovedPoints (for a permutation)) then value, if known, is the degree of a minimal faithful (not necessarily transitive) permutation representation for G.

  • If conditions consists of Characteristic (Reference: Characteristic) and a prime integer p then value, if known, is the dimension of a minimal faithful (not necessarily irreducible) matrix representation in characteristic p for G.

  • If conditions consists of Size (Reference: Size) and a prime power q then value, if known, is the dimension of a minimal faithful (not necessarily irreducible) matrix representation over the field of size q for G.

In all cases, the value of the component source is a list of strings that describe sources of the information, which can be the ordinary or modular character table of G (see [CCNPW85], [JLPW95], [HL89]), the table of marks of G, or [Jan05]. For an overview of minimal degrees of faithful matrix representations for sporadic simple groups and their covering groups, see also

http://www.math.rwth-aachen.de/~MOC/mindeg/.

Note that MinimalRepresentationInfo cannot provide any information about minimal representations over prescribed fields in characteristic zero.

Information about groups that occur in the AtlasRep package is precomputed in MinimalRepresentationInfoData (6.3-2), so the packages CTblLib and TomLib are not needed when MinimalRepresentationInfo is called for these groups. (The only case that is not covered by this list is that one asks for the minimal degree of matrix representations over a prescribed field in characteristic coprime to the group order.)

One of the following strings can be given as an additional last argument.

"cache"

means that the function tries to compute (and then store) values that are not stored in MinimalRepresentationInfoData (6.3-2), but stored values are preferred; this is also the default.

"lookup"

means that stored values are returned but the function does not attempt to compute values that are not stored in MinimalRepresentationInfoData (6.3-2).

"recompute"

means that the function always tries to compute the desired value, and checks the result against stored values.

gap> MinimalRepresentationInfo( "A5", NrMovedPoints );
rec( 
  source := [ "computed (alternating group)", 
      "computed (char. table)", "computed (subgroup tables)", 
      "computed (subgroup tables, known repres.)", 
      "computed (table of marks)" ], value := 5 )
gap> MinimalRepresentationInfo( "A5", Characteristic, 2 );
rec( source := [ "computed (char. table)" ], value := 2 )
gap> MinimalRepresentationInfo( "A5", Size, 2 );
rec( source := [ "computed (char. table)" ], value := 4 )

6.3-2 MinimalRepresentationInfoData
‣ MinimalRepresentationInfoData( global variable )

This is a record whose components are GAP names of groups for which information about minimal permutation and matrix representations were known in advance or have been computed in the current GAP session. The value for the group G, say, is a record with the following components.

NrMovedPoints

a record with the components value (the degree of a smallest faithful permutation representation of G) and source (a string describing the source of this information).

Characteristic

a record whose components are at most 0 and strings corresponding to prime integers, each bound to a record with the components value (the degree of a smallest faithful matrix representation of G in this characteristic) and source (a string describing the source of this information).

CharacteristicAndSize

a record whose components are strings corresponding to prime integers p, each bound to a record with the components sizes (a list of powers q of p), dimensions (the corresponding list of minimal dimensions of faithful matrix representations of G over a field of size q), sources (the corresponding list of strings describing the source of this information), and complete (a record with the components val (true if the minimal dimension over any finite field in characteristic p can be derived from the values in the record, and false otherwise) and source (a string describing the source of this information)).

The values are set by SetMinimalRepresentationInfo (6.3-3).

6.3-3 SetMinimalRepresentationInfo
‣ SetMinimalRepresentationInfo( grpname, op, value, source )( function )

Returns: true if the values were successfully set, false if stored values contradict the given ones.

This function sets an entry in MinimalRepresentationInfoData (6.3-2) for the group G, say, with GAP name grpname.

Supported values for op are

  • "NrMovedPoints" (see NrMovedPoints (Reference: NrMovedPoints (for a permutation))), which means that value is the degree of minimal faithful (not necessarily transitive) permutation representations of G,

  • a list of length two with first entry "Characteristic" (see Characteristic (Reference: Characteristic)) and second entry char either zero or a prime integer, which means that value is the dimension of minimal faithful (not necessarily irreducible) matrix representations of G in characteristic char,

  • a list of length two with first entry "Size" (see Size (Reference: Size)) and second entry a prime power q, which means that value is the dimension of minimal faithful (not necessarily irreducible) matrix representations of G over the field with q elements, and

  • a list of length three with first entry "Characteristic" (see Characteristic (Reference: Characteristic)), second entry a prime integer p, and third entry the string "complete", which means that the information stored for characteristic p is complete in the sense that for any given power q of p, the minimal faithful degree over the field with q elements equals that for the largest stored field size of which q is a power.

In each case, source is a string describing the source of the data; computed values are detected from the prefix "comp" of source.

If the intended value is already stored and differs from value then an error message is printed.

gap> SetMinimalRepresentationInfo( "A5", "NrMovedPoints", 5,
>      "computed (alternating group)" );
true
gap> SetMinimalRepresentationInfo( "A5", [ "Characteristic", 0 ], 3,
>      "computed (char. table)" );
true
gap> SetMinimalRepresentationInfo( "A5", [ "Characteristic", 2 ], 2,
>      "computed (char. table)" );
true
gap> SetMinimalRepresentationInfo( "A5", [ "Size", 2 ], 4,
>      "computed (char. table)" );
true
gap> SetMinimalRepresentationInfo( "A5", [ "Size", 4 ], 2,
>      "computed (char. table)" );
true
gap> SetMinimalRepresentationInfo( "A5", [ "Characteristic", 3 ], 3,
>      "computed (char. table)" );
true

6.3-4 Criteria Used to Compute Minimality Information

The information about the minimal degree of a faithful matrix representation of G in a given characteristic or over a given field in positive characteristic is derived from the relevant (ordinary or modular) character table of G, except in a few cases where this table itself is not known but enough information about the degrees is available in [HL89] and [Jan05].

The following criteria are used for deriving the minimal degree of a faithful permutation representation of G from the information in the GAP libraries of character tables and of tables of marks.

  • If the name of G has the form "An" or "An.2" (denoting alternating and symmetric groups, respectively) then the minimal degree is n, except if n is smaller than 3 or 2, respectively.

  • If the name of G has the form "L2(q)" (denoting projective special linear groups in dimension two) then the minimal degree is q + 1, except if q ∈ { 2, 3, 5, 7, 9, 11 }, see [Hup67, Satz II.8.28].

  • If the largest maximal subgroup of G is core-free then the index of this subgroup is the minimal degree. (This is used when the two character tables in question and the class fusion are available in GAP's Character Table Library ([Bre13]); this happens for many character tables of simple groups.)

  • If G has a unique minimal normal subgroup then each minimal faithful permutation representation is transitive.

    In this case, the minimal degree can be computed directly from the information in the table of marks of G if this is available in GAP's Library of Tables of Marks ([NMP13]).

    Suppose that the largest maximal subgroup of G is not core-free but simple and normal in G, and that the other maximal subgroups of G are core-free. In this case, we take the minimum of the indices of the core-free maximal subgroups and of the product of index and minimal degree of the normal maximal subgroup. (This suffices since no core-free subgroup of the whole group can contain a nontrivial normal subgroup of a normal maximal subgroup.)

    Let N be the unique minimal normal subgroup of G, and assume that G/N is simple and has minimal degree n, say. If there is a subgroup U of index n ⋅ |N| in G that intersects N trivially then the minimal degree of G is n ⋅ |N|. (This is used for the case that N is central in G and N × U occurs as a subgroup of G.)

  • If we know a subgroup of G whose minimal degree is n, say, and if we know either (a class fusion from) a core-free subgroup of index n in G or a faithful permutation representation of degree n for G then n is the minimal degree for G. (This happens often for tables of almost simple groups.)

Goto Chapter: Top 1 2 3 4 5 6 7 Bib Ind

generated by GAPDoc2HTML

atlasrep/doc/manualbib.xml0000644000175000017500000002152612677270362014256 0ustar samsam J. J.Cannon C.Playoust An introduction to algebraic programming in <C>Magma</C> http://www.math.usyd.edu.au:8000/u/magma 1996 Sydney, Australia School of Mathematics and Statistics, University of Sydney GerhardHiss KlausLux Brauer trees of sporadic groups The Clarendon Press, Oxford University Press 1989 Oxford Science Publications
New York
0-19-853381-0 1033265 (91k:20018) 20C20 (20-02 20D08) Harvey Blau x+526
ChristophJansen The minimal degrees of faithful representations of the sporadic simple groups and their covering groups LMS J. Comput. Math. 2005 8 122–144 (electronic) 1461-1570 2153793 (2006e:20026) 20C34 Robert A. Wilson LMS Journal of Computation and Mathematics
Ibrahim A. I.Suleiman Peter G.Walsh Robert A.Wilson Conjugacy classes in sporadic simple groups Comm. Algebra 2000 28 7 3209–3222 0092-7872 1765312 (2001c:20031) 20D08 (20E45) Wujie Shi COALDM Communications in Algebra
S. J.Nickerson R. A.Wilson Semi-presentations for the sporadic simple groups Experiment. Math. 2005 14 3 359–371 1058-6458 2172713 (2006h:20019) 20D08 (20F05) Andrea Previtali Experimental Mathematics
S. J.Nickerson An <C>A</C>tlas of <C>C</C>haracteristic <C>Z</C>ero <C>R</C>epresentations School of Mathematics, University of Birmingham 2006 Phd thesis Robert A.Wilson Richard A.Parker SimonNickerson John N.Bray ThomasBreuer <C>AtlasRep</C>, A <Wrap Name="Package">GAP</Wrap> <C>I</C>nterface to the <C>A</C>tlas of <C>G</C>roup <C>R</C>epresentations, <C>V</C>ersion 1.5.1 http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep Mar 2016 Refereed GAP package ThomasBreuer FrankLübeck <C>Browse</C>, ncurses interface and browsing applications, <C>V</C>ersion 1.8.6 http://www.math.rwth-aachen.de/~Browse Aug 2014 GAP package MichaelRinge The <C>C</C> <C>M</C>eat<C>A</C>xe, <C>V</C>ersion 2.4 http://www.math.rwth-aachen.de/~MTX ThomasBreuer <Wrap Name="Package">CTBlocks</Wrap>, <C>B</C>locks of <C>C</C>haracter <C>T</C>ables, <C>V</C>ersion 0.9.3 http://www.math.rwth-aachen.de/~Thomas.Breuer/ctblocks Feb 2014 GAP package T.Breuer The <Wrap Name="Package">GAP</Wrap> <C>C</C>haracter <C>T</C>able <C>L</C>ibrary, <C>V</C>ersion 1.2.2 http://www.math.rwth-aachen.de/~Thomas.Breuer/ctbllib Mar 2013 GAP package FrankLübeck MaxNeunhöffer <Wrap Name="Package">GAPDoc</Wrap>, A <C>M</C>eta <C>P</C>ackage for <Wrap Name="Package">GAP</Wrap> <C>D</C>ocumentation, <C>V</C>ersion 1.5.1 http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc Feb 2012 GAP package MaxNeunhöffer <C>IO</C>, Bindings for low level <C>C</C> library <C>IO</C>, <C>V</C>ersion 4.3.1 http://www-groups.mcs.st-and.ac.uk/~neunhoef/Computer/Software/Gap/io.html Apr 2014 GAP package ThomasBreuer InesHöhler JürgenMüller <C>MFER</C>, multiplicity-free endomorphism rings of permutation modules of the sporadic simple groups and their cyclic and bicyclic extensions, <C>V</C>ersion 1.0.0 http://www.math.rwth-aachen.de/~MFER Jul 2009 GAP package multiplicity-free; permutation character; endomorphism ring; sporadic simple group LiamNaughton ThomasMerkwitz GötzPfeiffer <C>TomLib</C>, The <Wrap Name="Package">GAP</Wrap> Library of Tables of Marks, <C>V</C>ersion 1.2.4 http://schmidt.nuigalway.ie/tomlib/tomlib Nov 2013 GAP package table of marks; Burnside matrix; subgroup lattice; finite simple groups; Moebius function; Euler function Robert A.Wilson PeterWalsh JonathanTripp IbrahimSuleiman Richard A.Parker Simon P.Norton SimonNickerson SteveLinton JohnBray RachelAbbott <C>ATLAS of Finite Group Representations</C> http://brauer.maths.qmul.ac.uk/Atlas/v3 ATLAS
atlasrep/doc/main.xml0000644000175000017500000000417112676037135013243 0ustar samsam ATLAS"> http://brauer.maths.qmul.ac.uk/Atlas"> R.A.Wilson@qmul.ac.uk"> ---"> ]> <Package>AtlasRep</Package> — A GAP 4 Package<Index>AtlasRep</Index> (Version &VERSIONNUMBER;) Robert A. Wilson &WILSONMAIL; http://www.maths.qmw.ac.uk/~raw Richard A. Parker richpark@gmx.co.uk Simon Nickerson http://nickerson.org.uk/groups John N. Bray J.N.Bray@qmul.ac.uk http://www.maths.qmw.ac.uk/~jnb Thomas Breuer sam@Math.RWTH-Aachen.De http://www.math.rwth-aachen.de/~Thomas.Breuer ©right; 2002–2016

This package may be distributed under the terms and conditions of the GNU Public License Version 3 or later, see http://www.gnu.org/licenses. <#Include SYSTEM "introduc.xml"> <#Include SYSTEM "tutorial.xml"> <#Include SYSTEM "interfac.xml"> <#Include SYSTEM "atlasrep.xml"> <#Include SYSTEM "extend.xml"> <#Include SYSTEM "utils.xml"> <#Include SYSTEM "technica.xml"> atlasrep/doc/utils.xml0000644000175000017500000000620211605152542013443 0ustar samsam New &GAP; Objects and Utility Functions Provided by the AtlasRep Package This chapter describes &GAP; objects and functions that are provided by the AtlasRep package but that might be of general interest.

The new objects are straight line decisions (see Section ) and black box programs (see Section ).

The new functions are concerned with representations of minimal degree, see Section .

Straight Line Decisions <#Include Label="StraightLineDecisionIntro"> <#Include Label="IsStraightLineDecision"> <#Include Label="LinesOfStraightLineDecision"> <#Include Label="NrInputsOfStraightLineDecision"> <#Include Label="ScanStraightLineDecision"> <#Include Label="StraightLineDecision"> <#Include Label="ResultOfStraightLineDecision"> <#Include Label="Semi-Presentations"> <#Include Label="AsStraightLineDecision"> <#Include Label="StraightLineProgramFromStraightLineDecision">
Black Box Programs <#Include Label="BBoxIntro"> <#Include Label="IsBBoxProgram"> <#Include Label="ScanBBoxProgram"> <#Include Label="RunBBoxProgram"> <#Include Label="ResultOfBBoxProgram"> <#Include Label="AsBBoxProgram"> <#Include Label="AsStraightLineProgram">
Representations of Minimal Degree This section deals with minimal degrees of permutation and matrix representations. We do not provide an algorithm that computes these degrees for an arbitrary group, we only provide some tools for evaluating known databases, mainly concerning bicyclic extensions (see ) of simple groups, in order to derive the minimal degrees, see Section .

In the AtlasRep package, this information can be used for prescribing minimality conditions in , , and . An overview of the stored minimal degrees can be shown with . <#Include Label="MinimalRepresentationInfo"> <#Include Label="MinimalRepresentationInfoData"> <#Include Label="SetMinimalRepresentationInfo"> <#Include Label="subsect:minimality-criteria">

atlasrep/doc/tutorial.xml0000644000175000017500000012361112701177005014151 0ustar samsam Tutorial for the AtlasRep Package This chapter gives an overview of the basic functionality provided by the AtlasRep package. The main concepts and interface functions are presented in the first sections, and Section  shows a few small examples.
Accessing a Specific Group in AtlasRep The AtlasRep package gives access to a database, the &ATLAS; of Group Representations , that contains generators and related data for several groups, mainly for extensions of simple groups (see Section ) and for their maximal subgroups (see Section ).

Note that the data are not part of the package. They are fetched from a web server as soon as they are needed for the first time, see Section .

First of all, we load the AtlasRep package. Some of the examples require also the &GAP; packages CTblLib and TomLib, so we load also these packages. LoadPackage( "AtlasRep" ); true gap> LoadPackage( "CTblLib" ); true gap> LoadPackage( "TomLib" ); true ]]> Accessing a Group in AtlasRep via its Name Each group that occurs in this database is specified by a name, which is a string similar to the name used in the &ATLAS; of Finite Groups . For those groups whose character tables are contained in the &GAP; Character Table Library , the names are equal to the values of these character tables. Examples of such names are "M24" for the Mathieu group M_{24}, "2.A6" for the double cover of the alternating group A_6, and "2.A6.2_1" for the double cover of the symmetric group S_6. The names that actually occur are listed in the first column of the overview table that is printed by the function , called without arguments, see below. The other columns of the table describe the data that are available in the database.

For example, may print the following lines. Omissions are indicated with .... DisplayAtlasInfo(); group | # | maxes | cl | cyc | out | fnd | chk | prs -------------------------+----+-------+----+-----+-----+-----+-----+---- ... 2.A5 | 26 | 3 | | | | | + | + 2.A5.2 | 11 | 4 | | | | | + | + 2.A6 | 18 | 5 | | | | | | 2.A6.2_1 | 3 | 6 | | | | | | 2.A7 | 24 | | | | | | | 2.A7.2 | 7 | | | | | | | ... M22 | 58 | 8 | + | + | | + | + | + M22.2 | 46 | 7 | + | + | | + | + | + M23 | 66 | 7 | + | + | | + | + | + M24 | 62 | 9 | + | + | | + | + | + McL | 46 | 12 | + | + | | + | + | + McL.2 | 27 | 10 | | + | | + | + | + O7(3) | 28 | | | | | | | O7(3).2 | 3 | | | | | | | ... ]]>

Called with a group name as the only argument, the function returns a group isomorphic to the group with the given name. If permutation generators are available in the database then a permutation group (of smallest available degree) is returned, otherwise a matrix group. g:= AtlasGroup( "M24" ); Group([ (1,4)(2,7)(3,17)(5,13)(6,9)(8,15)(10,19)(11,18)(12,21)(14,16) (20,24)(22,23), (1,4,6)(2,21,14)(3,9,15)(5,18,10)(13,17,16) (19,24,23) ]) gap> IsPermGroup( g ); NrMovedPoints( g ); Size( g ); true 24 244823040 ]]> Accessing a Maximal Subgroup of a Group in AtlasRep Many maximal subgroups of extensions of simple groups can be constructed using the function . Given the name of the extension of the simple group and the number of the conjugacy class of maximal subgroups, this function returns a representative from this class. g:= AtlasSubgroup( "M24", 1 ); Group([ (2,10)(3,12)(4,14)(6,9)(8,16)(15,18)(20,22)(21,24), (1,7,2,9) (3,22,10,23)(4,19,8,12)(5,14)(6,18)(13,16,17,24) ]) gap> IsPermGroup( g ); NrMovedPoints( g ); Size( g ); true 23 10200960 ]]> The classes of maximal subgroups are ordered w. r. t. decreasing subgroup order. So the first class contains the largest maximal subgroups.

Note that groups obtained by may be not very suitable for computations in the sense that much nicer representations exist. For example, the sporadic simple O'Nan group O'N contains a maximal subgroup S isomorphic with the Janko group J_1; the smallest permutation representation of O'N has degree 122760, so restricting this representation to S yields a representation of J_1 of that degree. However, J_1 has a faithful permutation representation of degree 266, which admits much more efficient computations. If you are just interested in J_1 and not in its embedding into O'N then one possibility to get a nicer faithful representation is to call . In the abovementioned example, this works quite well; note that in general, we cannot expect that we get a representation of smallest degree in this way. s:= AtlasSubgroup( "ON", 3 ); gap> NrMovedPoints( s ); Size( s ); 122760 175560 gap> hom:= SmallerDegreePermutationRepresentation( s );; gap> NrMovedPoints( Image( hom ) ); 1540 ]]>

In this particular case, one could of course also ask directly for the group J_1. j1:= AtlasGroup( "J1" ); gap> NrMovedPoints( j1 ); 266 ]]> If you have a group G, say, and you are really interested in the embedding of a maximal subgroup of G into G then an easy way to get compatible generators is to create G with and then to call with first argument the group G. g:= AtlasGroup( "ON" ); gap> s:= AtlasSubgroup( g, 3 ); gap> IsSubset( g, s ); true gap> IsSubset( g, j1 ); false ]]>

Accessing Specific Generators in AtlasRep The function , called with an admissible name of a group as the only argument, lists the &ATLAS; data available for this group. DisplayAtlasInfo( "A5" ); Representations for G = A5: (all refer to std. generators 1) --------------------------- 1: G <= Sym(5) 3-trans., on cosets of A4 (1st max.) 2: G <= Sym(6) 2-trans., on cosets of D10 (2nd max.) 3: G <= Sym(10) rank 3, on cosets of S3 (3rd max.) 4: G <= GL(4a,2) 5: G <= GL(4b,2) 6: G <= GL(4,3) 7: G <= GL(6,3) 8: G <= GL(2a,4) 9: G <= GL(2b,4) 10: G <= GL(3,5) 11: G <= GL(5,5) 12: G <= GL(3a,9) 13: G <= GL(3b,9) 14: G <= GL(4,Z) 15: G <= GL(5,Z) 16: G <= GL(6,Z) 17: G <= GL(3a,Field([Sqrt(5)])) 18: G <= GL(3b,Field([Sqrt(5)])) Programs for G = A5: (all refer to std. generators 1) -------------------- presentation std. gen. checker maxes (all 3): 1: A4 2: D10 3: S3 ]]> In order to fetch one of the listed permutation groups or matrix groups, you can call with second argument the function and third argument the position in the list. AtlasGroup( "A5", Position, 1 ); Group([ (1,2)(3,4), (1,3,5) ]) ]]> Note that this approach may yield a different group after an update of the database, if new data for the group become available.

Alternatively, you can describe the desired group by conditions, such as the degree in the case of a permutation group, and the dimension and the base ring in the case of a matrix group. AtlasGroup( "A5", NrMovedPoints, 10 ); Group([ (2,4)(3,5)(6,8)(7,10), (1,2,3)(4,6,7)(5,8,9) ]) gap> AtlasGroup( "A5", Dimension, 4, Ring, GF(2) ); ]]>

The same holds for the restriction to maximal subgroups: Use with the same arguments as , except that additionally the number of the class of maximal subgroups is entered as the last argument. Note that the conditions refer to the group, not to the subgroup; it may happen that the subgroup moves fewer points than the big group. AtlasSubgroup( "A5", Dimension, 4, Ring, GF(2), 1 ); gap> g:= AtlasSubgroup( "A5", NrMovedPoints, 10, 3 ); Group([ (2,4)(3,5)(6,8)(7,10), (1,4)(3,8)(5,7)(6,10) ]) gap> Size( g ); NrMovedPoints( g ); 6 9 ]]>

Basic Concepts used in AtlasRep Groups, Generators, and Representations Up to now, we have talked only about groups and subgroups. The AtlasRep package provides access to group generators, and in fact these generators have the property that mapping one set of generators to another set of generators for the same group defines an isomorphism. These generators are called standard generators, see Section .

So instead of thinking about several generating sets of a group G, say, we can think about one abstract group G, with one fixed set of generators, and mapping these generators to any set of generators provided by AtlasRep defines a representation of G. This viewpoint motivates the name &ATLAS; of Group Representations for the database.

If you are interested in the generators provided by the database rather than in the groups they generate, you can use the function instead of , with the same arguments. This will yield a record that describes the representation in question. Calling the function with this record will then yield a record with the additional component generators, which holds the list of generators.

info:= OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, 10 ); rec( groupname := "A5", id := "", identifier := [ "A5", [ "A5G1-p10B0.m1", "A5G1-p10B0.m2" ], 1, 10 ], isPrimitive := true, maxnr := 3, p := 10, rankAction := 3, repname := "A5G1-p10B0", repnr := 3, size := 60, stabilizer := "S3", standardization := 1, transitivity := 1, type := "perm" ) gap> info2:= AtlasGenerators( info ); rec( generators := [ (2,4)(3,5)(6,8)(7,10), (1,2,3)(4,6,7)(5,8,9) ], groupname := "A5", id := "", identifier := [ "A5", [ "A5G1-p10B0.m1", "A5G1-p10B0.m2" ], 1, 10 ], isPrimitive := true, maxnr := 3, p := 10, rankAction := 3, repname := "A5G1-p10B0", repnr := 3, size := 60, stabilizer := "S3", standardization := 1, transitivity := 1, type := "perm" ) gap> info2.generators; [ (2,4)(3,5)(6,8)(7,10), (1,2,3)(4,6,7)(5,8,9) ] ]]> Straight Line Programs For computing certain group elements from standard generators, such as generators of a subgroup or class representatives, AtlasRep uses straight line programs, see . Essentially this means to evaluate words in the generators, similar to but more efficiently.

It can be useful to deal with these straight line programs, see . For example, an automorphism \alpha, say, of the group G, if available in AtlasRep, is given by a straight line program that defines the images of standard generators of G. This way, one can for example compute the image of a subgroup U of G under \alpha by first applying the straight line program for \alpha to standard generators of G, and then applying the straight line program for the restriction from G to U.

prginfo:= AtlasProgramInfo( "A5", "maxes", 1 ); rec( groupname := "A5", identifier := [ "A5", "A5G1-max1W1", 1 ], size := 12, standardization := 1, subgroupname := "A4" ) gap> prg:= AtlasProgram( prginfo.identifier ); rec( groupname := "A5", identifier := [ "A5", "A5G1-max1W1", 1 ], program := , size := 12, standardization := 1, subgroupname := "A4" ) gap> Display( prg.program ); # input: r:= [ g1, g2 ]; # program: r[3]:= r[1]*r[2]; r[4]:= r[2]*r[1]; r[5]:= r[3]*r[3]; r[1]:= r[5]*r[4]; # return values: [ r[1], r[2] ] gap> ResultOfStraightLineProgram( prg.program, info2.generators ); [ (1,10)(2,3)(4,9)(7,8), (1,2,3)(4,6,7)(5,8,9) ] ]]>

Examples of Using the AtlasRep Package Example: Class Representatives First we show the computation of class representatives of the Mathieu group M_{11}, in a 2-modular matrix representation. We start with the ordinary and Brauer character tables of this group.

tbl:= CharacterTable( "M11" );; gap> modtbl:= tbl mod 2;; gap> CharacterDegrees( modtbl ); [ [ 1, 1 ], [ 10, 1 ], [ 16, 2 ], [ 44, 1 ] ] ]]>

The output of means that the 2-modular irreducibles of M_{11} have degrees 1, 10, 16, 16, and 44.

Using , we find out that matrix generators for the irreducible 10-dimensional representation are available in the database.

DisplayAtlasInfo( "M11", Characteristic, 2 ); Representations for G = M11: (all refer to std. generators 1) ---------------------------- 6: G <= GL(10,2) character 10a 7: G <= GL(32,2) character 16ab 8: G <= GL(44,2) character 44a 16: G <= GL(16a,4) character 16a 17: G <= GL(16b,4) character 16b ]]>

So we decide to work with this representation. We fetch the generators and compute the list of class representatives of M_{11} in the representation. The ordering of class representatives is the same as that in the character table of the &ATLAS; of Finite Groups (), which coincides with the ordering of columns in the &GAP; table we have fetched above.

info:= OneAtlasGeneratingSetInfo( "M11", Characteristic, 2, > Dimension, 10 );; gap> gens:= AtlasGenerators( info.identifier );; gap> ccls:= AtlasProgram( "M11", gens.standardization, "classes" ); rec( groupname := "M11", identifier := [ "M11", "M11G1-cclsW1", 1 ], outputs := [ "1A", "2A", "3A", "4A", "5A", "6A", "8A", "8B", "11A", "11B" ], program := , standardization := 1 ) gap> reps:= ResultOfStraightLineProgram( ccls.program, gens.generators );; ]]>

If we would need only a few class representatives, we could use the &GAP; library function to create a straight line program that computes only specified outputs. Here is an example where only the class representatives of order eight are computed.

ord8prg:= RestrictOutputsOfSLP( ccls.program, > Filtered( [ 1 .. 10 ], i -> ccls.outputs[i][1] = '8' ) ); gap> ord8reps:= ResultOfStraightLineProgram( ord8prg, gens.generators );; gap> List( ord8reps, m -> Position( reps, m ) ); [ 7, 8 ] ]]>

Let us check that the class representatives have the right orders.

List( reps, Order ) = OrdersClassRepresentatives( tbl ); true ]]>

From the class representatives, we can compute the Brauer character we had started with. This Brauer character is defined on all classes of the 2-modular table. So we first pick only those representatives, using the &GAP; function ; in this situation, it returns the class fusion from the Brauer table into the ordinary table.

fus:= GetFusionMap( modtbl, tbl ); [ 1, 3, 5, 9, 10 ] gap> modreps:= reps{ fus };; ]]>

Then we call the &GAP; function , which computes the Brauer character value from the matrix given.

char:= List( modreps, BrauerCharacterValue ); [ 10, 1, 0, -1, -1 ] gap> Position( Irr( modtbl ), char ); 2 ]]> Example: Permutation and Matrix Representations The second example shows the computation of a permutation representation from a matrix representation. We work with the 10-dimensional representation used above, and consider the action on the 2^{10} vectors of the underlying row space.

grp:= Group( gens.generators );; gap> v:= GF(2)^10;; gap> orbs:= Orbits( grp, AsList( v ) );; gap> List( orbs, Length ); [ 1, 396, 55, 330, 66, 165, 11 ] ]]>

We see that there are six nontrivial orbits, and we can compute the permutation actions on these orbits directly using . However, for larger examples, one cannot write down all orbits on the row space, so one has to use another strategy if one is interested in a particular orbit.

Let us assume that we are interested in the orbit of length 11. The point stabilizer is the first maximal subgroup of M_{11}, thus the restriction of the representation to this subgroup has a nontrivial fixed point space. This restriction can be computed using the AtlasRep package.

gens:= AtlasGenerators( "M11", 6, 1 );; ]]>

Now computing the fixed point space is standard linear algebra.

id:= IdentityMat( 10, GF(2) );; gap> sub1:= Subspace( v, NullspaceMat( gens.generators[1] - id ) );; gap> sub2:= Subspace( v, NullspaceMat( gens.generators[2] - id ) );; gap> fix:= Intersection( sub1, sub2 ); ]]>

The final step is of course the computation of the permutation action on the orbit.

orb:= Orbit( grp, Basis( fix )[1] );; gap> act:= Action( grp, orb );; Print( act, "\n" ); Group( [ ( 1, 2)( 4, 6)( 5, 8)( 7,10), ( 1, 3, 5, 9)( 2, 4, 7,11) ] ) ]]>

Note that this group is not equal to the group obtained by fetching the permutation representation from the database. This is due to a different numbering of the points, so the groups are permutation isomorphic.

permgrp:= Group( AtlasGenerators( "M11", 1 ).generators );; gap> Print( permgrp, "\n" ); Group( [ ( 2,10)( 4,11)( 5, 7)( 8, 9), ( 1, 4, 3, 8)( 2, 5, 6, 9) ] ) gap> permgrp = act; false gap> IsConjugate( SymmetricGroup(11), permgrp, act ); true ]]> Example: Outer Automorphisms The straight line programs for applying outer automorphisms to standard generators can of course be used to define the automorphisms themselves as &GAP; mappings.

DisplayAtlasInfo( "G2(3)", IsStraightLineProgram ); Programs for G = G2(3): (all refer to std. generators 1) ----------------------- class repres. presentation repr. cyc. subg. std. gen. checker automorphisms: 2 maxes (all 10): 1: U3(3).2 2: U3(3).2 3: (3^(1+2)+x3^2):2S4 4: (3^(1+2)+x3^2):2S4 5: L3(3).2 6: L3(3).2 7: L2(8).3 8: 2^3.L3(2) 9: L2(13) 10: 2^(1+4)+:3^2.2 gap> prog:= AtlasProgram( "G2(3)", "automorphism", "2" ).program;; gap> info:= OneAtlasGeneratingSetInfo( "G2(3)", Dimension, 7 );; gap> gens:= AtlasGenerators( info ).generators;; gap> imgs:= ResultOfStraightLineProgram( prog, gens );; ]]>

If we are not suspicious whether the script really describes an automorphism then we should tell this to &GAP;, in order to avoid the expensive checks of the properties of being a homomorphism and bijective (see Section ). This looks as follows.

g:= Group( gens );; gap> aut:= GroupHomomorphismByImagesNC( g, g, gens, imgs );; gap> SetIsBijective( aut, true ); ]]>

If we are suspicious whether the script describes an automorphism then we might have the idea to check it with &GAP;, as follows.

aut:= GroupHomomorphismByImages( g, g, gens, imgs );; gap> IsBijective( aut ); true ]]>

(Note that even for a comparatively small group such as G_2(3), this was a difficult task for &GAP; before version 4.3.)

Often one can form images under an automorphism \alpha, say, without creating the homomorphism object. This is obvious for the standard generators of the group G themselves, but also for generators of a maximal subgroup M computed from standard generators of G, provided that the straight line programs in question refer to the same standard generators. Note that the generators of M are given by evaluating words in terms of standard generators of G, and their images under \alpha can be obtained by evaluating the same words at the images under \alpha of the standard generators of G.

max1:= AtlasProgram( "G2(3)", 1 ).program;; gap> mgens:= ResultOfStraightLineProgram( max1, gens );; gap> comp:= CompositionOfStraightLinePrograms( max1, prog );; gap> mimgs:= ResultOfStraightLineProgram( comp, gens );; ]]>

The list mgens is the list of generators of the first maximal subgroup of G_2(3), mimgs is the list of images under the automorphism given by the straight line program prog. Note that applying the program returned by means to apply first prog and then max1. Since we have already constructed the &GAP; object representing the automorphism, we can check whether the results are equal.

mimgs = List( mgens, x -> x^aut ); true ]]>

However, it should be emphasized that using aut requires a huge machinery of computations behind the scenes, whereas applying the straight line programs prog and max1 involves only elementary operations with the generators. The latter is feasible also for larger groups, for which constructing the &GAP; automorphism might be too hard. Example: Using Semi-presentations and Black Box Programs Let us suppose that we want to restrict a representation of the Mathieu group M_{12} to a non-maximal subgroup of the type L_2(11). The idea is that this subgroup can be found as a maximal subgroup of a maximal subgroup of the type M_{11}, which is itself maximal in M_{12}. For that, we fetch a representation of M_{12} and use a straight line program for restricting it to the first maximal subgroup, which has the type M_{11}.

info:= OneAtlasGeneratingSetInfo( "M12", NrMovedPoints, 12 ); rec( charactername := "1a+11a", groupname := "M12", id := "a", identifier := [ "M12", [ "M12G1-p12aB0.m1", "M12G1-p12aB0.m2" ], 1, 12 ], isPrimitive := true, maxnr := 1, p := 12, rankAction := 2, repname := "M12G1-p12aB0", repnr := 1, size := 95040, stabilizer := "M11", standardization := 1, transitivity := 5, type := "perm" ) gap> gensM12:= AtlasGenerators( info.identifier );; gap> restM11:= AtlasProgram( "M12", "maxes", 1 );; gap> gensM11:= ResultOfStraightLineProgram( restM11.program, > gensM12.generators ); [ (3,9)(4,12)(5,10)(6,8), (1,4,11,5)(2,10,8,3) ] ]]>

Now we cannot simply apply a straight line program for a group to some generators, since they are not necessarily standard generators of the group. We check this property using a semi-presentation for M_{11}, see .

checkM11:= AtlasProgram( "M11", "check" ); rec( groupname := "M11", identifier := [ "M11", "M11G1-check1", 1, 1 ] , program := , standardization := 1 ) gap> ResultOfStraightLineDecision( checkM11.program, gensM11 ); true ]]>

So we are lucky that applying the appropriate program for M_{11} will give us the required generators for L_2(11).

restL211:= AtlasProgram( "M11", "maxes", 2 );; gap> gensL211:= ResultOfStraightLineProgram( restL211.program, gensM11 ); [ (3,9)(4,12)(5,10)(6,8), (1,11,9)(2,12,8)(3,6,10) ] gap> G:= Group( gensL211 );; Size( G ); IsSimple( G ); 660 true ]]>

Usually representations are not given in terms of standard generators. For example, let us take the M_{11} type group returned by the &GAP; function .

G:= MathieuGroup( 11 );; gap> gens:= GeneratorsOfGroup( G ); [ (1,2,3,4,5,6,7,8,9,10,11), (3,7,11,8)(4,10,5,6) ] gap> ResultOfStraightLineDecision( checkM11.program, gens ); false ]]>

If we want to compute an L_2(11) type subgroup of this group, we can use a black box program for computing standard generators, and then apply the straight line program for computing the restriction.

find:= AtlasProgram( "M11", "find" ); rec( groupname := "M11", identifier := [ "M11", "M11G1-find1", 1, 1 ], program := , standardization := 1 ) gap> stdgens:= ResultOfBBoxProgram( find.program, Group( gens ) );; gap> List( stdgens, Order ); [ 2, 4 ] gap> ResultOfStraightLineDecision( checkM11.program, stdgens ); true gap> gensL211:= ResultOfStraightLineProgram( restL211.program, stdgens );; gap> List( gensL211, Order ); [ 2, 3 ] gap> G:= Group( gensL211 );; Size( G ); IsSimple( G ); 660 true ]]> Example: Using the &GAP; Library of Tables of Marks The &GAP; Library of Tables of Marks (the &GAP; package TomLib, ) provides, for many almost simple groups, information for constructing representatives of all conjugacy classes of subgroups. If this information is compatible with the standard generators of the &ATLAS; of Group Representations then we can use it to restrict any representation from the &ATLAS; to prescribed subgroups. This is useful in particular for those subgroups for which the &ATLAS; of Group Representations itself does not contain a straight line program.

tom:= TableOfMarks( "A5" ); TableOfMarks( "A5" ) gap> info:= StandardGeneratorsInfo( tom ); [ rec( ATLAS := true, description := "|a|=2, |b|=3, |ab|=5", generators := "a, b", script := [ [ 1, 2 ], [ 2, 3 ], [ 1, 1, 2, 1, 5 ] ], standardization := 1 ) ] ]]>

The true value of the component ATLAS indicates that the information stored on tom refers to the standard generators of type 1 in the &ATLAS; of Group Representations.

We want to restrict a 4-dimensional integral representation of A_5 to a Sylow 2 subgroup of A_5, and use for that.

info:= OneAtlasGeneratingSetInfo( "A5", Ring, Integers, Dimension, 4 );; gap> stdgens:= AtlasGenerators( info.identifier ); rec( dim := 4, generators := [ [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ], [ -1, -1, -1, -1 ] ], [ [ 0, 1, 0, 0 ], [ 0, 0, 0, 1 ], [ 0, 0, 1, 0 ], [ 1, 0, 0, 0 ] ] ], groupname := "A5", id := "", identifier := [ "A5", "A5G1-Zr4B0.g", 1, 4 ], repname := "A5G1-Zr4B0", repnr := 14, ring := Integers, size := 60, standardization := 1, type := "matint" ) gap> orders:= OrdersTom( tom ); [ 1, 2, 3, 4, 5, 6, 10, 12, 60 ] gap> pos:= Position( orders, 4 ); 4 gap> sub:= RepresentativeTomByGeneratorsNC( tom, pos, stdgens.generators ); gap> GeneratorsOfGroup( sub ); [ [ [ 1, 0, 0, 0 ], [ -1, -1, -1, -1 ], [ 0, 0, 0, 1 ], [ 0, 0, 1, 0 ] ], [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ], [ -1, -1, -1, -1 ] ] ] ]]> Example: Index 770 Subgroups in M_{22} The sporadic simple Mathieu group M_{22} contains a unique class of subgroups of index 770 (and order 576). This can be seen for example using &GAP;'s Library of Tables of Marks.

tom:= TableOfMarks( "M22" ); TableOfMarks( "M22" ) gap> subord:= Size( UnderlyingGroup( tom ) ) / 770; 576 gap> ord:= OrdersTom( tom );; gap> tomstabs:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = subord ); [ 144 ] ]]>

The permutation representation of M_{22} on the right cosets of such a subgroup S is contained in the &ATLAS; of Group Representations.

DisplayAtlasInfo( "M22", NrMovedPoints, 770 ); Representations for G = M22: (all refer to std. generators 1) ---------------------------- 12: G <= Sym(770) rank 9, on cosets of (A4xA4):4 < 2^4:A6 ]]>

We now verify the information shown about the point stabilizer and about the maximal overgroups of S in M_{22}.

maxtom:= MaximalSubgroupsTom( tom ); [ [ 155, 154, 153, 152, 151, 150, 146, 145 ], [ 22, 77, 176, 176, 231, 330, 616, 672 ] ] gap> List( tomstabs, i -> List( maxtom[1], j -> ContainedTom( tom, i, j ) ) ); [ [ 0, 10, 0, 0, 0, 0, 0, 0 ] ] ]]>

We see that the only maximal subgroups of M_{22} that contain S have index 77 in M_{22}. According to the &ATLAS; of Finite Groups, these maximal subgroups have the structure 2^4:A_6. From that and from the structure of A_6, we conclude that S has the structure 2^4:(3^2:4).

Alternatively, we look at the permutation representation of degree 770. We fetch it from the &ATLAS; of Group Representations. There is exactly one nontrivial block system for this representation, with 77 blocks of length 10.

g:= AtlasGroup( "M22", NrMovedPoints, 770 ); gap> allbl:= AllBlocks( g );; gap> List( allbl, Length ); [ 10 ] ]]>

Furthermore, &GAP; computes that the point stabilizer S has the structure (A_4 \times A_4):4.

stab:= Stabilizer( g, 1 );; gap> StructureDescription( stab ); "(A4 x A4) : C4" gap> blocks:= Orbit( g, allbl[1], OnSets );; gap> act:= Action( g, blocks, OnSets );; gap> StructureDescription( Stabilizer( act, 1 ) ); "(C2 x C2 x C2 x C2) : A6" ]]> Example: Index 462 Subgroups in M_{22} The &ATLAS; of Group Representations contains three degree 462 permutation representations of the group M_{22}.

DisplayAtlasInfo( "M22", NrMovedPoints, 462 ); Representations for G = M22: (all refer to std. generators 1) ---------------------------- 7: G <= Sym(462a) rank 5, on cosets of 2^4:A5 < 2^4:A6 8: G <= Sym(462b) rank 8, on cosets of 2^4:A5 < L3(4), 2^4:S5 9: G <= Sym(462c) rank 8, on cosets of 2^4:A5 < L3(4), 2^4:A6 ]]>

The point stabilizers in these three representations have the structure 2^4:A_5. Using &GAP;'s Library of Tables of Marks, we can show that these stabilizers are exactly the three classes of subgroups of order 960 in M_{22}. For that, we first verify that the group generators stored in &GAP;'s table of marks coincide with the standard generators used by the &ATLAS; of Group Representations.

tom:= TableOfMarks( "M22" ); TableOfMarks( "M22" ) gap> genstom:= GeneratorsOfGroup( UnderlyingGroup( tom ) );; gap> checkM22:= AtlasProgram( "M22", "check" ); rec( groupname := "M22", identifier := [ "M22", "M22G1-check1", 1, 1 ] , program := , standardization := 1 ) gap> ResultOfStraightLineDecision( checkM22.program, genstom ); true ]]>

There are indeed three classes of subgroups of order 960 in M_{22}.

ord:= OrdersTom( tom );; gap> tomstabs:= Filtered( [ 1 .. Length( ord ) ], i -> ord[i] = 960 ); [ 147, 148, 149 ] ]]>

Now we compute representatives of these three classes in the three representations 462a, 462b, and 462c. We see that each of the three classes occurs as a point stabilizer in exactly one of the three representations.

atlasreps:= AllAtlasGeneratingSetInfos( "M22", NrMovedPoints, 462 ); [ rec( charactername := "1a+21a+55a+154a+231a", groupname := "M22", id := "a", identifier := [ "M22", [ "M22G1-p462aB0.m1", "M22G1-p462aB0.m2" ], 1, 462 ], isPrimitive := false, p := 462, rankAction := 5, repname := "M22G1-p462aB0", repnr := 7, size := 443520, stabilizer := "2^4:A5 < 2^4:A6", standardization := 1, transitivity := 1, type := "perm" ), rec( charactername := "1a+21a^2+55a+154a+210a", groupname := "M22", id := "b", identifier := [ "M22", [ "M22G1-p462bB0.m1", "M22G1-p462bB0.m2" ], 1, 462 ], isPrimitive := false, p := 462, rankAction := 8, repname := "M22G1-p462bB0", repnr := 8, size := 443520, stabilizer := "2^4:A5 < L3(4), 2^4:S5", standardization := 1, transitivity := 1, type := "perm" ), rec( charactername := "1a+21a^2+55a+154a+210a", groupname := "M22", id := "c", identifier := [ "M22", [ "M22G1-p462cB0.m1", "M22G1-p462cB0.m2" ], 1, 462 ], isPrimitive := false, p := 462, rankAction := 8, repname := "M22G1-p462cB0", repnr := 9, size := 443520, stabilizer := "2^4:A5 < L3(4), 2^4:A6", standardization := 1, transitivity := 1, type := "perm" ) ] gap> atlasreps:= List( atlasreps, AtlasGroup );; gap> tomstabreps:= List( atlasreps, G -> List( tomstabs, > i -> RepresentativeTomByGenerators( tom, i, GeneratorsOfGroup( G ) ) ) );; gap> List( tomstabreps, x -> List( x, NrMovedPoints ) ); [ [ 462, 462, 461 ], [ 460, 462, 462 ], [ 462, 461, 462 ] ] ]]>

More precisely, we see that the point stabilizers in the three representations 462a, 462b, 462c lie in the subgroup classes 149, 147, 148, respectively, of the table of marks.

The point stabilizers in the representations 462b and 462c are isomorphic, but not isomorphic with the point stabilizer in 462a.

stabs:= List( atlasreps, G -> Stabilizer( G, 1 ) );; gap> List( stabs, IdGroup ); [ [ 960, 11358 ], [ 960, 11357 ], [ 960, 11357 ] ] gap> List( stabs, PerfectIdentification ); [ [ 960, 2 ], [ 960, 1 ], [ 960, 1 ] ] ]]>

The three representations are imprimitive. The containment of the point stabilizers in maximal subgroups of M_{22} can be computed using the table of marks of M_{22}.

maxtom:= MaximalSubgroupsTom( tom ); [ [ 155, 154, 153, 152, 151, 150, 146, 145 ], [ 22, 77, 176, 176, 231, 330, 616, 672 ] ] gap> List( tomstabs, i -> List( maxtom[1], j -> ContainedTom( tom, i, j ) ) ); [ [ 21, 0, 0, 0, 1, 0, 0, 0 ], [ 21, 6, 0, 0, 0, 0, 0, 0 ], [ 0, 6, 0, 0, 0, 0, 0, 0 ] ] ]]>

We see: The point stabilizers in 462a (subgroups in the class 149 of the table of marks) are contained only in maximal subgroups in class 154; these groups have the structure 2^4:A_6. The point stabilizers in 462b (subgroups in the class 147) are contained in maximal subgroups in the classes 155 and 151; these groups have the structures L_3(4) and 2^4:S_5, respectively. The point stabilizers in 462c (subgroups in the class 148) are contained in maximal subgroups in the classes 155 and 154.

We identify the supergroups of the point stabilizers by computing the block systems.

bl:= List( atlasreps, AllBlocks );; gap> List( bl, Length ); [ 1, 3, 2 ] gap> List( bl, l -> List( l, Length ) ); [ [ 6 ], [ 21, 21, 2 ], [ 21, 6 ] ] ]]>

Note that the two block systems with blocks of length 21 for 462b belong to the same supergroups (of the type L_3(4)); each of these subgroups fixes two different subsets of 21 points.

The representation 462a is multiplicity-free, that is, it splits into a sum of pairwise nonisomorphic irreducible representations. This can be seen from the fact that the rank of this permutation representation (that is, the number of orbits of the point stabilizer) is five; each permutation representation with this property is multiplicity-free.

The other two representations have rank eight. We have seen the ranks in the overview that was shown by in the beginning. Now we compute the ranks from the permutation groups.

List( atlasreps, RankAction ); [ 5, 8, 8 ] ]]>

In fact the two representations 462b and 462c have the same permutation character. We check this by computing the possible permutation characters of degree 462 for M_{22}, and decomposing them into irreducible characters, using the character table from &GAP;'s Character Table Library.

t:= CharacterTable( "M22" );; gap> perms:= PermChars( t, 462 ); [ Character( CharacterTable( "M22" ), [ 462, 30, 3, 2, 2, 2, 3, 0, 0, 0, 0, 0 ] ), Character( CharacterTable( "M22" ), [ 462, 30, 12, 2, 2, 2, 0, 0, 0, 0, 0, 0 ] ) ] gap> MatScalarProducts( t, Irr( t ), perms ); [ [ 1, 1, 0, 0, 1, 0, 1, 0, 1, 0, 0, 0 ], [ 1, 2, 0, 0, 1, 0, 1, 1, 0, 0, 0, 0 ] ] ]]>

In particular, we see that the rank eight characters are not multiplicity-free.

atlasrep/doc/technica.xml0000644000175000017500000001634212700274402014064 0ustar samsam Technicalities of the AtlasRep Package This chapter describes those parts of the &GAP; interface to the &ATLAS; of Group Representations that do not belong to the user interface (cf. Chapter ).

Besides global variables used for administrational purposes (see Section ) and several sanity checks (see Section ), they can be regarded as the interface between the data actually contained in the files and the corresponding &GAP; objects (see Section , , , and ), and the interface between the remote and the local version of the database (see Section  and ). The former interface contains functions to read and write files in &MeatAxe; format, which may be interesting for users familiar with &MeatAxe; standalones (see for example ). Other low level functions may be undocumented in the sense that they are not described in this manual. Users interested in them may look at the actual implementation in the gap directory of the package, but it may happen that this will be changed in future versions of the package.

Global Variables Used by the AtlasRep Package For debugging purposes, the functions from the &GAP; interface to the &ATLAS; of Group Representations print information depending on the info level of the info classes , , and (cf. ).

The info level of an info class can be changed using . For example, the info level of can be set to the nonnegative integer n using SetInfoLevel( InfoAtlasRep, n ).

Information about files being read can be obtained by setting the value of the global variable InfoRead1 to .

<#Include Label="InfoAtlasRep"> <#Include Label="InfoCMeatAxe"> <#Include Label="InfoBBox">

If this component is bound and has the value true then reads text files via . Otherwise each file containing a matrix over a finite field is read line by line via , and the &GAP; matrix is constructed line by line, in a compressed representation (see  and ), which makes it possible to read large matrices in a reasonable amount of space. The approach is faster but needs more intermediate space when text files containing matrices over finite fields are read.

<#Include Label="AGR"> <#Include Label="AtlasOfGroupRepresentationsInfo">

How to Customize the Access to Data files <#Include Label="AccessFunctionsDefault">
Reading and Writing MeatAxe Format Files matrix permutation <#Include Label="ScanMeatAxeFile"> <#Include Label="MeatAxeString"> <#Include Label="FFList"> <#Include Label="CMtxBinaryFFMatOrPerm"> <#Include Label="FFMatOrPermCMtxBinary">
Reading and Writing &ATLAS; Straight Line Programs <#Include Label="ScanStraightLineProgram"> <#Include Label="AtlasStringOfProgram">
Data Types Used in the &ATLAS; of Group Representations Each representation or program that is administrated by the AtlasRep package belongs to a unique data type. Informally, examples of data types are permutation representation, matrix representation over the integers, or straight line program for computing class representatives.

The idea is that for each data type, there can be a column of its own in the output produced by when called without arguments or with only argument a list of group names, a line format of its own for the output produced by when called with first argument a group name, an input format of its own for , an input format of its own for , and specific tests for the data of this data type; these functions are used by the global tests described in Section .

Formally, a data type is defined by a record whose components are used by the interface functions. The details are described in the following. <#Include Label="AGRDeclareDataType">

Filenames Used in the &ATLAS; of Group Representations <#Include Label="[1]{access}">

<#Include Label="AGRParseFilenameFormat"> <#Include Label="AGRFileContents">

The Tables of Contents of the &ATLAS; of Group Representations <#Include Label="toc">
Sanity Checks for the &ATLAS; of Group Representations <#Include Label="tests">
atlasrep/doc/extend.xml0000644000175000017500000003054612677273752013623 0ustar samsam Private Extensions of the AtlasRep Package It may be interesting to use the functions of the &GAP; interface also for representations or programs that are not part of the &ATLAS; of Group Representations. This chapter describes how to achieve this.

The main idea is that users can notify directories containing the private data files, which may consist of new faithful representations and programs for groups that are declared already in the official &ATLAS; of Group Representations, the declaration of groups that are not declared in the official &ATLAS; of Group Representations, and representations and programs for them, and the definition of new kinds of representations and programs.

The first two issues are dealt with in Section  and Section . The last is described in Section .

Finally, an example of using private extensions is given in Section .

Several of the sanity checks for the official part of the AtlasRep package make sense also for private extensions, see Section  for more information.

Adding a Private Data Directory <#Include Label="[3]{access}"> <#Include Label="AtlasOfGroupRepresentationsNotifyPrivateDirectory"> <#Include Label="AtlasOfGroupRepresentationsForgetPrivateDirectory">
The Effect of Private Extensions on the User Interface First suppose that only new groups or new data for known groups are added.

In this case, lists the private representations and programs in the same way as the official data, except that private parts are marked with the string stored in the component markprivate of ; by default, this is a star *. The ordering of representations listed by (and referred to by ) will in general change when private directories are notified. If several private directories are used then the ordering of data may depend on the ordering of notifications. For the other interface functions described in Chapter , the only difference is that also the private data can be accessed. In particular the free format groupnameGi-XdescrWn for straight line programs (see Section ) may be used in private directories; the data can be accessed with , where the last two arguments are the strings "other" and descr.

If also private data types are introduced (see Section ) then additional columns or rows can appear in the output of , and new inputs can become meaningful for all interface functions. Examples for these changes can be found in Section .

An Example of Extending the AtlasRep Package In the beginning we set the info level of to 1. level:= InfoLevel( InfoAtlasRep );; gap> SetInfoLevel( InfoAtlasRep, 1 ); ]]> Let us assume that the directory privdir contains data for the cyclic group C_4 of order 4 and for the alternating group A_5 on 5 points, respectively. Note that it is obvious what the term standard generators means for the group C_4.

Further let us assume that privdir contains the following files. C4G1-p4B0.m1 a faithful permutation representation of C_4 on 4 points, C4G1-max1W1 the straight line program that returns the square of its unique input, C4G1-a2W1 the straight line program that raises its unique input to the third power, C4G1-XtestW1 the straight line program that returns the square of its unique input, A5G1-p60B0.m1 and A5G1-p60B0.m2 the regular permutation representation of A_5.

The directory and the files can be created as follows.

prv:= DirectoryTemporary( "privdir" );; gap> FileString( Filename( prv, "C4G1-p4B0.m1" ), > MeatAxeString( [ (1,2,3,4) ], 4 ) );; gap> FileString( Filename( prv, "C4G1-max1W1" ), > "inp 1\npwr 2 1 2\noup 1 2\n" );; gap> FileString( Filename( prv, "C4G1-XtestW1" ), > "inp 1\npwr 2 1 2\noup 1 2\n" );; gap> FileString( Filename( prv, "C4G1-a2W1" ), > "inp 1\npwr 3 1 2\noup 1 2\n" );; gap> FileString( Filename( prv, "C4G1-Ar1aB0.g" ), > "return rec( generators:= [ [[E(4)]] ] );\n" );; gap> points:= Elements( AlternatingGroup( 5 ) );; gap> FileString( Filename( prv, "A5G1-p60B0.m1" ), > MeatAxeString( [ Permutation( (1,2)(3,4), points, OnRight ) ], 60 ) );; gap> FileString( Filename( prv, "A5G1-p60B0.m2" ), > MeatAxeString( [ Permutation( (1,3,5), points, OnRight ) ], 60 ) );; ]]>

(We could also introduce intermediate directories C4 and A5, say, each with the data for one group only. Here we do not show this because creating directories programmatically seems to be possible only with the &GAP; package IO.)

The official part of the AtlasRep package does not contain information about C_4, so we first notify this group, in the file privdir/toc.g. Besides the name of the group, we store the following information: the group order, the number of (classes of) maximal subgroups, their orders, their structures, and describing data about the two permutation representations. (The group A_5 is known with name A5 in the official part of the AtlasRep package, so it cannot be notified again.)

FileString( Filename( prv, "toc.g" ), Concatenation( [ > "AGR.GNAN(\"C4\",\"C4\");\n", > "AGR.GRS(\"C4\",4);\n", > "AGR.MXN(\"C4\",1);\n", > "AGR.MXO(\"C4\",[2]);\n", > "AGR.MXS(\"C4\",[\"C2\"]);\n", > "AGR.API(\"C4G1-p4B0\",[1,4,\"imprim\",\"1 < C2\"]);\n", > "AGR.API(\"A5G1-p60B0\",[1,60,\"imprim\",\"1 < A4\"]);\n", > ] ) );; ]]>

Then we notify the private directory.

AtlasOfGroupRepresentationsNotifyPrivateDirectory( prv, "priv", true ); true ]]>

Now we can use the interface functions for accessing the data in the private directory.

DisplayAtlasInfo( [ "C4" ] ); group | # | maxes | cl | cyc | out | fnd | chk | prs ------+---+-------+----+-----+-----+-----+-----+---- C4* | 2 | 1 | | | 2 | | | gap> DisplayAtlasInfo( "C4" ); Representations for G = C4: (all refer to std. generators 1) --------------------------- 1: G <= Sym(4)* rank 4, on cosets of 1 < C2 2: G <= GL(1a,C)* Programs for G = C4: (all refer to std. generators 1) -------------------- automorphisms: 2* maxes (all 1): 1*: C2 other scripts: "test"* gap> DisplayAtlasInfo( "C4", IsPermGroup, true ); Representations for G = C4: (all refer to std. generators 1) --------------------------- 1: G <= Sym(4)* rank 4, on cosets of 1 < C2 gap> DisplayAtlasInfo( "C4", IsMatrixGroup ); Representations for G = C4: (all refer to std. generators 1) --------------------------- 2: G <= GL(1a,C)* gap> DisplayAtlasInfo( "C4", Dimension, 2 ); gap> DisplayAtlasInfo( "A5", NrMovedPoints, 60 ); Representations for G = A5: (all refer to std. generators 1) --------------------------- 4: G <= Sym(60)* rank 60, on cosets of 1 < A4 gap> info:= OneAtlasGeneratingSetInfo( "C4" ); rec( groupname := "C4", id := "", identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ], isPrimitive := false, p := 4, rankAction := 4, repname := "C4G1-p4B0", repnr := 1, size := 4, stabilizer := "1 < C2", standardization := 1, transitivity := 1, type := "perm" ) gap> AtlasGenerators( info.identifier ); rec( generators := [ (1,2,3,4) ], groupname := "C4", id := "", identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ], isPrimitive := false, p := 4, rankAction := 4, repname := "C4G1-p4B0", repnr := 1, size := 4, stabilizer := "1 < C2", standardization := 1, transitivity := 1, type := "perm" ) gap> AtlasProgram( "C4", 1 ); rec( groupname := "C4", identifier := [ [ "priv", "C4" ], "C4G1-max1W1", 1 ], program := , size := 2, standardization := 1, subgroupname := "C2" ) gap> AtlasProgram( "C4", "maxes", 1 ); rec( groupname := "C4", identifier := [ [ "priv", "C4" ], "C4G1-max1W1", 1 ], program := , size := 2, standardization := 1, subgroupname := "C2" ) gap> AtlasProgram( "C4", "maxes", 2 ); fail gap> AtlasGenerators( "C4", 1 ); rec( generators := [ (1,2,3,4) ], groupname := "C4", id := "", identifier := [ [ "priv", "C4" ], [ "C4G1-p4B0.m1" ], 1, 4 ], isPrimitive := false, p := 4, rankAction := 4, repname := "C4G1-p4B0", repnr := 1, size := 4, stabilizer := "1 < C2", standardization := 1, transitivity := 1, type := "perm" ) gap> AtlasGenerators( "C4", 2 ); rec( dim := 1, generators := [ [ [ E(4) ] ] ], groupname := "C4", id := "a", identifier := [ [ "priv", "C4" ], "C4G1-Ar1aB0.g", 1, 1 ] , repname := "C4G1-Ar1aB0", repnr := 2, size := 4, standardization := 1, type := "matalg" ) gap> AtlasGenerators( "C4", 3 ); fail gap> AtlasProgram( "C4", "other", "test" ); rec( groupname := "C4", identifier := [ [ "priv", "C4" ], "C4G1-XtestW1", 1 ], program := , standardization := 1 ) ]]>

We can restrict the data shown by to the private directory, as follows.

DisplayAtlasInfo( "contents", "priv" ); group | # | maxes | cl | cyc | out | fnd | chk | p* -------------------------+---+-------+----+-----+-----+-----+-----+--* A5* | 1 | | | | | | | * C4* | 2 | 1 | | | 2 | | | * ]]>

For checking the data in the private directory, we apply the relevant sanity checks (see Section ).

if not IsBound( AGR.Test ) then > ReadPackage( "atlasrep", "gap/test.g" ); > fi; gap> AGR.Test.Words( "priv" ); true gap> AGR.Test.FileHeaders( "priv" ); true gap> AGR.Test.Files( "priv" ); true gap> AGR.Test.BinaryFormat( "priv" ); true gap> AGR.Test.Primitivity( "priv" ); true gap> AGR.Test.Characters( "priv" ); true ]]>

Finally, we uninstall the private directory, and reset the info level that had been set to 1 in the beginning. (Also the group name C4 is removed this way, which is an advantage of using a toc.g file over calling AGRGNAN directly.), Note that we need not remove the data in the temporary directory, &GAP; will do this automatically.

AtlasOfGroupRepresentationsForgetPrivateDirectory( "priv" ); gap> SetInfoLevel( InfoAtlasRep, level ); ]]>

atlasrep/doc/introduc.xml0000644000175000017500000007374712701177037014160 0ustar samsam Introduction to the AtlasRep Package The aim of the &GAP; 4 package AtlasRep is to provide a link between &GAP; and the &ATLAS; of Group Representations , a database that comprises generating permutations and matrices for many almost simple groups, and information about their maximal subgroups. This database is available independent of &GAP; at

&ATLASSERVER;

The AtlasRep package consists of this database (see Section ) and a &GAP; interface (see Section ); the latter is extended by further information available via the internet (see Section ).

This package manual has the following parts. A tutorial gives an overview how the functions of the package can be used, see Chapter . User interface functions are described in Chapter . Customizations of the package are described in Chapter . Information how to extend the database can be found in Chapter . More technical information can be found in the chapters  (concerning &GAP; objects that are introduced by the package) and  (concerning global variables and sanity checks).

The &ATLAS; of Group Representations The &ATLAS; of Group Representations consists of matrices over various rings, permutations, and shell scripts encoding so-called black box programs black box program (see and Section ). Many of these scripts are straight line programs straight line program (see , , and ) and straight line decisions (see Section ). These programs can be used to compute certain elements in a group G from its standard generators (see  and Section ) for example generators of maximal subgroups of G or representatives of conjugacy classes of G.

The &ATLAS; of Group Representations has been prepared by Robert Wilson, Peter Walsh, Jonathan Tripp, Ibrahim Suleiman, Richard Parker, Simon Norton, Simon Nickerson, Steve Linton, John Bray, and Rachel Abbott (in reverse alphabetical order).

The information was computed and composed using computer algebra systems such as &MeatAxe; (see ), Magma (see ), and &GAP; (in reverse alphabetical order). &MeatAxe; Magma Part of the constructions have been documented in the literature on almost simple groups, or the results have been used in such publications, see for example the references in  and .

If you use the &ATLAS; of Group Representations to solve a problem then please send a short email to &WILSONMAIL; about it. The &ATLAS; of Group Representations database should be referenced with the entry  in the bibliography of this manual.

If your work made use of functions of the &GAP; interface (see Section ) then you should also reference this interface, as follows.

@misc{ AtlasRep&VERSIONNUMBER;, author = {Wilson, R. A. and Parker, R. A. and Nickerson, S. and Bray, J. N. and Breuer, T.}, title = {{AtlasRep}, A \textsf{GAP} Interface to the Atlas of Group Representations, {V}ersion &VERSIONNUMBER;}, month = {&RELEASEMONTH;}, year = {&RELEASEYEAR;}, note = {\textsf{GAP} package}, howpublished = {http://www.math.rwth-aachen.de/\~{}Thomas.Breuer/atlasrep} }

For referencing the &GAP; system in general, use the entry  in the bibliography of this manual, see also

http://www.gap-system.org.

The GAP Interface to the &ATLAS; of Group Representations C-&MeatAxe; The &GAP; interface to the &ATLAS; of Group Representations consists of essentially two parts. First, there is the user interface which allows the user to get an overview of the contents of the database, and to access the data in &GAP; format; this is described in Chapter . Advanced users may add their own data to the database, this is described in Chapter . Second, there is administrational information, which covers also the declaration of &GAP; objects such as straight line decisions and black box programs. This is important mainly for users interested in the actual implementation (e. g., for modifying the package) or in using it together with the C-&MeatAxe; standalone (see ); this is described in Chapter . Information concerning the C-&MeatAxe;, including the manual , can be found at

http://www.math.rwth-aachen.de/LDFM/homes/MTX

The interface and this manual have been provided by Thomas Breuer, except for the interpreter for black box programs (see Section ), which is due to Simon Nickerson. Comments, bug reports, and hints for improving the interface can be sent to sam@math.rwth-aachen.de.

What's New in AtlasRep, Compared to Older Versions? ]]> What's New in Version &VERSIONNUMBER;? (&RELEASEMONTH; &RELEASEYEAR;) The paths of the directories where downloaded data files get stored are now customizable, see Section . Up to now, the data were stored in subdirectories of the package directory, which might cause problems with write permissions, depending on the installation of the package. (Note that choosing other data directories can be useful also in order to keep existing local data files when a new version of &GAP; or of the AtlasRep package gets installed.) Thanks to Bill Allombert for pointing out this problem. The information about data files from the &ATLAS; of Group Representations has been extended by values. These values are checked whenever data from such a file are read, and an error is signalled if the checksum does not fit to the expected one. Note that several users may access the same data files, and a user should not suffer from perhaps corrupted files that have been downloaded by other users. Thanks to Frank Lübeck for the idea to introduce this consistency test. Whenever is called by functions of the package, this happens in the wrapper function AGR.StringFile, in order to replace occasional line breaks of the form "\r\n" by "\n". Apparently it may happen that the "\r" is silently smuggled in when data files get copied to the local computer. Thanks to Marek Mitros for help with detecting and fixing this problem. The function can now read also permutations stored in binary files that have been created with version 2.4 of the C-&MeatAxe;; note that this format is different from the one that is written by version 2.3. Conversely, has been generalized such that both formats can be written. The reference to the C-&MeatAxe; documentation now points to that of version 2.4. Thanks to Jürgen Müller for pointing out this problem. The function can now encode permutation matrices in different ways. The mode (the first header entry) can be either 2 (then the positions of the nonzero entries are listed) or 1 or 6 (then all entries of the matrix are listed). In previous versions, the function produced a matrix of mode 2 whenever this was possible, but this behaviour is not useful if the result is not processed by the C-&MeatAxe;. Thanks to Klaus Lux for pointing out this problem. Depending on the terminal capabilities and the value of AtlasOfGroupRepresentationsInfo.displayFunction, some non-ASCII characters may appear in the output shown by . What's New in Version 1.5? (July 2011) The function now admits also the return value of or the return value of as its first argument. The latter is implemented via the new attribute , which is set in the groups constructed by . Information about transitivity, rank, primitivity, and point stabilizers of many permutation representations is now available. If applicable then this information appears in the records returned by , it is part of the overview shown by , and it is shown also in the data overview in the web, see Section .

Two new manual sections about point stabilizers have been added, see the sections and . Information about the characters afforded by many matrix and permutation representations is now available. If applicable then this information appears in the records returned by , for matrix representations it is part of the overview shown by , and it is shown also in the data overview in the web, see Section . The functions , , , , , and are now supported as input conditions in , , etc.. It is now possible to restrict the data shown by to private or non-private data. Also the data returned by can be restricted to private or non-private data. A tutorial for beginners was added to the manual, see Chapter , and the manual was restructured. In the overview shown by and in the data overview in the web (see Section ), the ordering of groups was improved such that, e.g., "A9" precedes "A10". The function now admits also a Brauer table as its argument, and works also for character tables of bicyclic extensions of simple groups. The group names that are entered in , , etc., are now case insensitive, and if the package CTblLib is available then the admissible group names for the &GAP; character table of the group in question can be used in these functions. In order to reduce the number of global variables, several functions have been turned into components of the new global variable . A few of these functions had been documented in the previous version, the old values are still available if the package file gap/obsolete.g has been read. This file is read automatically when the package gets loaded if GAPInfo.UserPreferences.ReadObsolete is true, see . A few nicer characters are used by if GAPInfo.TermEncoding has the value "UTF-8" and if AtlasOfGroupRepresentationsInfo.displayFunction is different from , see Section . A bug in the function was fixed. Thanks to Jack Schmidt for reporting this bug. What's New in Version 1.4? (June 2008) In addition to the group orders that were added in version 1.3 (see Section ), also many orders of maximal subgroups are now available. These values occur in the records returned by (for the case of "maxes" type programs) and of the three argument version of ; now a size component may be bound. In these cases, the groups returned by have the attribute set. The information about the number of maximal subgroups, if available, is now used in . In many cases, straight line programs for computing generators of maximal subgroups of a group G, say, can in fact be used to compute also generators of maximal subgroups of downward extensions of G; if not then it may suffice to extend the given straight line programs by additional generators.

Currently this yields more than 200 new possibilities to compute maximal subgroups, this means a growth by about 25 percent. For example, all maximal subgroups of 12.M_{22} and 2.Fi_{22} can now be accessed via .

(Of course this extension means only that one can access the straight line programs in question automatically via the &GAP; interface. In principle one could have used them already before, by explicitly applying a straight line program for a factor group to generators of a group, and perhaps adding some element in the kernel of the natural epimorphism.)

For this feature, information about the compatibility of standard generators of groups and their factor groups was added. The bibliographies contained in the &ATLAS; of Finite Groups and in the &ATLAS; of Brauer Characters are now available, see . If the &GAP; package Browse (see ) is loaded then the new functions and are available; these functions can be called also by choosing the corresponding menu entries of the Browse application . The function now admits also the return value of as its argument. What's New in Version 1.3.1? (October 2007) This version was mainly released in order to fix a few problems. Now one does not get warnings about unbound variables when the package is loaded and the &GAP; package IO is not available, and pathological situations in (concerning extremely short corrupted data files and different byte orderings in binary files) are handled more carefully.

Besides this, the two functions and were introduced, and the extended function of &GAP; 4.4.10 can now be used for describing base rings in and . (This is the reason why this version of the package requires at least version 4.4.10 of &GAP;.) What's New in Version 1.3? (June 2007) The database was extended, see Section  for the number and size of files. New data types and corresponding &GAP; objects have been introduced, for representing semi-presentations, presentations, and programs for finding standard generators. For details, see , Chapter , and Section . The records returned by the functions , , and now contain the name and (if known) the order of the group in question, and also components describing the degree in the case of permutation representations or the dimension and the base ring of the natural module in the case of matrix representations. For many of the groups, information about the minimal degree of faithful permutation representations and the minimal dimensions of faithful matrix representations in various characteristics is available for , , and , see also Section . For these functions, also properties such as can be used to describe the intended restriction of the output. One can now use functionality in , see Section .

An interactive alternative to is provided by the function from the new (recommended) &GAP; package Browse . The functions and now admit also a list of group names as the first argument. The functions for actually accessing the data are more flexible now, see Section . For transferring remote data, the &GAP; package IO can now be used (and is recommended) as an alternative to wget, wget see Section . The address of the data server has changed. ftp Since the access to the server is no longer possible via ftp, the mechanim used up to version 1.2, which was based on ftp, had to be rewritten.

The main consequence of this change is that information about updates of the table of contents is now provided at the package's homepage. This means that on the one hand, now package users cannot compute the table of contents directly from the server data, but on the other hand the update information can be downloaded without the necessity to install perl. perl

Another consequence is that the system program ls is no longer needed, see Section . The package manual has been restructured, extended and improved. It is now based on the package &GAPDoc; . What's New in Version 1.2? (November 2003) Not much.

The release of Version 1.2 became necessary first of all in order to provide a package version that is compatible with &GAP; 4.4, since some cross-references into the &GAP; Reference Manual were broken due to changes of section names. Additionally, several web addresses concerning the package itself were changed and thus had to be adjusted.

This opportunity was used to upgrade the administrational part for loading the package to the mechanism that is recommended for &GAP; 4.4, to extend the test suite, which now covers more consistency checks using the &GAP; Character Table Library , to make the function more robust, due to the fact that the &GAP; function now returns fail instead of raising an error, to change the way how representations with prescribed properties are accessed (the new function is now preferred to the former OneAtlasGeneratingSet, and has been added in order to provide programmatic access in parallel to the human readable descriptions printed by ), and last but not least to include the current table of contents of the underlying database.

For AtlasRep users, the new feature of &GAP; 4.4 is particularly interesting that due to better kernel support, reading large matrices over finite fields is now faster than it was in &GAP; 4.3. What's New in Version 1.1? (October 2002) The biggest change w.r.t. Version 1.1 is the addition of private extensions (see Chapter ). It includes a new free format for straight line programs (see Section ). Unfortunately, this feature requires the system program ls, so it may be not available for example under MS Windows operating systems. [But see Section .]

In order to admit the addition of other types of data, the implementation of several functions has been changed. Data types are described in Section . An example of a new data type are quaternionic representations (see Section ). The user interface itself (see Chapter ) remained the same.

wget As an alternative to perl, one can use wget now for transferring data files (see ).

Data files can be read much more efficiently in &GAP; 4.3 than in &GAP; 4.2. In Version 1.1 of the AtlasRep package, this feature is used for reading matrices and permutations in &MeatAxe; text format with . As a consequence, (at least) &GAP; 4.3 is required for AtlasRep Version 1.1.

gzip The new compress component of the global variable allows one to store data files automatically in gzipped form.

For matrix representations in characteristic zero, invariant forms and generators for the centralizer algebra are now accessible in &GAP; if they are contained in the source files --this information had been ignored in Version 1.0 (see  for necessary updates).

Additional information is now available via the internet (see ).

The update facilities have been extended (see ).

The manual is now distributed also in pdf and HTML format; on the other hand, the PostScript format manual is no longer contained in the archives.

Apart from these changes, a few minor bugs in the handling of &MeatAxe; files have been fixed, typos in the documentation have been corrected, and the syntax checks for &ATLAS; straight line programs (see ) have been improved.

Acknowledgements Frank Lübeck and Max Neunhöffer kindly provided the perl scriptperl that had been used for fetching remote data until version 1.2. Thanks also to Greg Gamble and Alexander Hulpke for technical hints concerning standard perl. Ulrich Kaiser helped with preparing the package for MS Windows. Klaus Lux had the idea to support private extensions of the package, see Chapter  and helped to fix several bugs. Frank Lübeck contributed the functions and . Frank Lübeck and Max Neunhöffer wrote the &GAPDoc; package , which is used for processing the documentation of the AtlasRep package and for processing the bibliographies included in this package (see ), Max Neunhöffer wrote the &GAP; package IO , which is recommended for transferring data. Max has also suggested the generalization of the data access described in Section , and the admissibility of the function as a filter in , , and . Gunter Malle suggested to make the information about representations of minimal degree accessible, see Section . Andries Brouwer suggested to add a tutorial (see Chapter ), Klaus Lux suggested several improvements of this chapter.
atlasrep/doc/atlasrep.xml0000644000175000017500000003755412700273130014126 0ustar samsam Customizations of the AtlasRep Package
Installing the AtlasRep Package To install the package, unpack the archive file in a directory in the pkg directory of your local copy of &GAP; 4. This might be the pkg directory of the &GAP; 4 root directory, see  for details. It is however also possible to keep an additional pkg directory in your private directories, see Section . The latter possibility must be chosen if you do not have write access to the &GAP; root directory.

Data files that are available from an earlier version of the package are in principle kept; see  for necessary updates.

If it is likely that one will work offline, it makes sense to install the starter archive that can be downloaded from the package's homepage.

The package consists entirely of &GAP; code, no external binaries need to be compiled for the package itself. However, if the &GAP; package IO IO package is used to access remote data files (see Section ) then its external binary must be available.

After unpacking the package archive, the write permissions for those directories should be checked into which users will download files. Every user can customize these paths via a user preference, see Section , the defaults are the subdirectories datagens and dataword of the package directory. The recommended permissions under UNIX for the default directories are set as follows.

chmod 1777 atlasrep/data* you@unix> ls -ld atlasrep/data* drwxrwxrwt 3 you you 1024 Oct 31 12:34 datagens drwxrwxrwt 3 you you 1024 Oct 31 12:34 dataword ]]>

<#Include Label="[1]{testinst.g}">

PDF, HTML, and text versions of the package manual are available in the doc directory of the package.

Maintaining the Local Data of the AtlasRep Package ]]> The current table of contents of the database is contained in the file gap/atlasprm.g of the AtlasRep package. This file is read by default when the package is loaded. It may happen that new data files have been added to the servers since the last release of the AtlasRep package, thus it is useful to update the table of contents of the package from time to time.

For that, one can fetch the most recent version of the file gap/atlasprm.g from the home page of the package (see Section ), either by calling  in a &GAP; session or by hand. In the latter case, the new file can then be read into the &GAP; session via . <#Include Label="ATLASREP_TOCFILE">

Users who have write access to the directory where the AtlasRep package is installed can alternatively use the maketoc script in the etc directory of the package for regularly updating the file gap/atlasprm.g. Users without this write access can store the new file in a different place, and read it with .

<#Include Label="ReloadAtlasTableOfContents"> <#Include Label="StoreAtlasTableOfContents"> <#Include Label="ReplaceAtlasTableOfContents"> <#Include Label="AGRTestTableOfContentsRemoteUpdates">

User Parameters for the AtlasRep Package This section lists global parameters for which it might make sense to change their defaults by assignments to global variables (see for an overview of these parameters) or using &GAP;'s user preferences (see ). Local or Remote Access local access remote access servers There are two possibilities to use the AtlasRep package.

Local access only (offline) You can restrict the access to the data that are actually stored in the local installation of &GAP;. Remote access (online) If your computer is connected to a network that provides access to the &ATLAS; data (for example the internet) then the functions of the package may fetch the requested data automatically from remote servers when they are required for the first time; these data are then by default stored in the local copy, so later access to them needs no network transfer.

The latter possibility is presently not used by other &GAP; packages, so it may be regarded as an important feature of the AtlasRep package. Anyhow it requires a few words of explanation.

The possibility of online access reflects in particular the fact that the &ATLAS; of Group Representations is designed as an open database, it is expected to grow. As soon as the developers of the &ATLAS; of Group Representations add new information to the servers, these data become available in &GAP; when remote access is enabled, after one has updated the corresponding table of contents (see Section ).

Remote access is enabled if and only if the value of the remote component of the global variable is true. If one wants to work offline, i.e., if one does not want &GAP; to attempt accessing remote data then this value must be set to false.

Conversely, if the default value of the remote component in your &GAP; installation is false then changing this value to true may be not successful. First, it might be the case that no server is reachable. And second, if one can in principle download files from a server then it might be impossible to actually store these files in the data directories of the installed package; in this case, it is advisable to install the whole package or just its data directories in a private directory, see  for details. Adding and Removing Servers When access to remote data is enabled (see Section ) then the available servers are given by the servers component of the global variable .

Removing entries from this list means to disable access to the corresponding servers, adding entries makes the corresponding servers available. Of course the latter makes sense only if the new servers really exist, for example in a local network.

Currently there is just one remote server. As soon as other servers become available, or a server name is changed which makes it necessary to adjust the servers component, this will be announced in the &GAP; Forum, cf. . The same holds when upgrades of the package become available. Accessing Data Files with the &GAP; Package IO or with wget <#Include Label="IO_or_wget"> Compressed or Uncompressed Data Files When used with UNIX, &GAP; can read gzipped files, see . If the component compress compress of has the value true then each &MeatAxe; format file that is fetched from a remote server is afterwards compressed with gzip. gzip This saves a lot of space if many &MeatAxe; format files are accessed. (Note that data files in other formats are very small.) For example, at the time of the release of version 1.5.1 there were about 8\,400 data files in &MeatAxe; format, which needed about 1\,400 MB in uncompressed text format and about 275 MB in compressed text format. The default value for the component compress is false. Customizing DisplayAtlasInfo The way how shows the requested overview is controlled by the component displayFunction of . The default value is , other useful values are and AGR.Pager; the latter calls with the formatted option, which is necessary for switching off &GAP;'s automatic line breaking. Customizing the Access to Data Files By default, local data files are stored in the subdirectories datagens and dataword of the directory given by the user preference AtlasRepDataDirectory (see Section ), and the files are exactly the text files provided on the servers. However, a more flexible approach may be useful.

First, one may want to use different file formats, for example the &MeatAxe; binary files that are provided by the servers parallel to the &MeatAxe; text files. Second, one may want to use a different directory structure, for example the same structure as used on the servers –this makes sense for example if a local mirror of a server is available, because then one can read the server files directly, without transferring/copying them to another directory.

As a consequence, one would like to customize the meaning of the following three access steps.

Are the required files locally available? The required files may have a different name or a different path, and the data can be available in one file or can be distributed to several files. How can a file be made locally available? A different server file may be fetched or some postprocessing may be required. How is the data of a file accessed by &GAP;? A different function may be needed to read the file.

Details how to achieve these customizations can be found in Section . Reading Large Matrices over Finite Fields Matrices over finite fields in &GAP; can be represented in a compressed format that needs less space than the corresponding text file. Such a &MeatAxe; format text file can be read by either line by line (which is the default) or as a whole; the latter is faster but needs more space than the former. For example, a 4\,370 by 4\,370 matrix over the field with two elements (as occurs for an irreducible representation of the Baby Monster) requires less than 3 MB space in &GAP; but the corresponding &MeatAxe; format text file is more than 19 MB large, which means that when one reads the file with the fast variant, &GAP; will temporarily grow by more than this value. One can change the mode by setting the global variable to true or false, respectively.

Note that this parameter is meaningful only when is used. It has no effect for example if &MeatAxe; binary files are read, cf. . <#Include Label="AtlasOfGroupRepresentationsShowUserParameters"> <#Include Label="AtlasRepDataDirectory"> <#Include Label="WriteMeatAxeFilesOfMode2"> <#Include Label="BaseOfMeatAxePermutation">

Web Services for the AtlasRep Package The home page of the AtlasRep package is

&ATLASREPHOME;.

Besides package archives and introductory package information, it provides

the current file with the table of contents (the file gap/atlasprm.g of the package, see &ATLASREPHOME;/atlasprm.g), cf. , a starter archive containing many small representations and programs (see &ATLASREPHOME;/atlasrepdata.tar.gz), the list of changes of server files in HTML format (see &ATLASREPHOME;/htm/data/changes.htm), cf. , and an overview of the data available via the &GAP; interface to the &ATLAS; of Group Representations, in HTML format (see &ATLASREPHOME;/htm/data/overview.htm); this is similar to the information shown by , further information can be found on the home page of the &ATLAS;, see &ATLASSERVER;.

Extending the &ATLAS; Database Users who have computed new representations that might be interesting for inclusion into the &ATLAS; of Group representations can send the data in question to &WILSONMAIL;.

It is also possible to store private representations and programs in local directories, and to use them in the same way as the official data. See Chapter  for details.

atlasrep/doc/interfac.xml0000644000175000017500000002040212676045571014110 0ustar samsam The User Interface of the AtlasRep Package The user interface is the part of the &GAP; interface that allows one to display information about the current contents of the database and to access individual data (perhaps from a remote server, see Section ). The corresponding functions are described in this chapter. See Section  for some small examples how to use the functions of the interface.

Extensions of the AtlasRep package are regarded as another part of the &GAP; interface, they are described in Chapter . Finally, the low level part of the interface are described in Chapter .

For some of the examples in this chapter, the &GAP; packages CTblLib and TomLib are needed, so we load them.

LoadPackage( "ctbllib" ); true gap> LoadPackage( "tomlib" ); true ]]>

Accessing vs. Constructing Representations Note that accessing the data means in particular that it is not the aim of this package to construct representations from known ones. For example, if at least one permutation representation for a group G is stored but no matrix representation in a positive characteristic p, say, then returns fail when it is asked for a description of an available set of matrix generators for G in characteristic p, although such a representation can be obtained by reduction modulo p of an integral matrix representation, which in turn can be constructed from any permutation representation.
Group Names Used in the AtlasRep Package ]]> When you access data via the AtlasRep package, you specify the group in question by an admissible name. Thus it is essential to know these names, which are called the &GAP; names of the group in the following.

For a group G, say, whose character table is available in &GAP;'s Character Table Library, the admissible names of G are the admissible names of this character table. If G is almost simple, one such name is the value of the character table, see . This name is usually very similar to the name used in the &ATLAS; of Finite Groups . For example, "M22" is a &GAP; name of the Mathieu group M_{22}, "12_1.U4(3).2_1" is a &GAP; name of 12_1.U_4(3).2_1, the two names "S5" and "A5.2" are &GAP; names of the symmetric group S_5, and the two names "F3+" and "Fi24'" are &GAP; names of the simple Fischer group Fi_{24}^\prime.

When a &GAP; name is required as an input of a package function, this input is case insensitive. For example, both "A5" and "a5" are valid arguments of .

Internally, for example as part of filenames (see Section ), the package uses names that may differ from the &GAP; names; these names are called &ATLAS;-file names. For example, "A5", "TE62", and "F24" are &ATLAS;-file names. Of these, only "A5" is also a &GAP; name, but the other two are not; corresponding &GAP; names are "2E6(2)" and "Fi24'", respectively.

Standard Generators Used in the AtlasRep Package For the general definition of standard generators of a group, see .

Several different standard generators may be defined for a group, the definitions can be found at

&ATLASSERVER;

When one specifies the standardization, the i-th set of standard generators is denoted by the number i. Note that when more than one set of standard generators is defined for a group, one must be careful to use compatible standardization. For example, the straight line programs, straight line decisions and black box programs in the database refer to a specific standardization of their inputs. That is, a straight line program for computing generators of a certain subgroup of a group G is defined only for a specific set of standard generators of G, and applying the program to matrix or permutation generators of G but w.r.t. a different standardization may yield unpredictable results. Therefore the results returned by the functions described in this chapter contain information about the standardizations they refer to.

Class Names Used in the AtlasRep Package For each straight line program (see ) that is used to compute lists of class representatives, it is essential to describe the classes in which these elements lie. Therefore, in these cases the records returned by the function contain a component outputs with value a list of class names.

Currently we define these class names only for simple groups and certain extensions of simple groups, see Section . The function can be used to compute the list of class names from the character table in the &GAP; Library. <#Include Label="classnames"> <#Include Label="AtlasClassNames"> <#Include Label="AtlasCharacterNames">

Accessing Data of the AtlasRep Package Note that the output of the examples in this section refers to a perhaps outdated table of contents; the current version of the database may contain more information than is shown here.

<#Include Label="DisplayAtlasInfo"> <#Include Label="AtlasGenerators"> <#Include Label="AtlasProgram"> <#Include Label="AtlasProgramInfo"> <#Include Label="OneAtlasGeneratingSetInfo"> <#Include Label="AllAtlasGeneratingSetInfos"> <#Include Label="AtlasGroup"> <#Include Label="AtlasSubgroup"> <#Include Label="AtlasRepInfoRecord">

Browse Applications Provided by AtlasRep The functions , , and (an alternative to ) are available only if the &GAP; package Browse (see ) is loaded. <#Include Label="BrowseMinimalDegrees"> <#Include Label="BrowseBibliographySporadicSimple">
atlasrep/datagens/dummy0000644000175000017500000000010607141120121013641 0ustar samsamThis file is only for causing that the directory is created by `zoo'. atlasrep/dataword/dummy0000644000175000017500000000010607141120130013660 0ustar samsamThis file is only for causing that the directory is created by `zoo'. atlasrep/etc/maketoc0000755000175000017500000000175311605512063013144 0ustar samsam#!/bin/sh ############################################################################# ## #W maketoc GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This script fetches the newest version of the file ## 'pkg/atlasrep/gap/atlasprm.g' from the package's homepage, ## replaces the package's file with it if necessary, and saves the old ## version of that file in 'pkg/atlasrep/gap/atlasprm.old'. ## ## The script must be called from the directory 'pkg/atlasrep', ## in the form `etc/maketoc ', ## where must be a command to call GAP 4. ## $1 -q <, , ) ## ## <#GAPDoc Label="AGRDeclareDataType"> ## ## ## ## ## Let kind be one of the strings "rep" or "prg", ## and record be a record. ## declares a new data type of ## representations (if kind is "rep") or of ## programs (if kind is "prg"). ## For each group used in the AtlasRep package, ## the record that contains the information about the data will have ## a component name whose value is a list ## containing the data about the new type. ## Examples of name are "perm", "matff", ## and "classes". ##

## Mandatory components of record are ##

## ## FilenameFormat ## ## This defines the format of the filenames containing data of the type ## in question. ## The value must be a list that can be used as the second argument of ## , ## such that only filenames of the type in question match. ## (It is not checked whether this detection function matches ## exactly one type, so declaring a new type needs care.) ## ## AddFileInfo ## ## This defines the information stored in the table of contents for the ## data of the type. ## The value must be a function that takes three arguments (the current ## list of data for the type and the given group, a list returned ## by for the given type, ## and a filename). ## This function adds the necessary parts of the data entry to the list, ## and returns true if the data belongs to the type, ## otherwise false is returned; ## note that the latter case occurs if the filename matches the format ## description but additional conditions on the parts of the name are ## not satisfied (for example integer parts may be required to be ## positive or prime powers). ## ## ReadAndInterpretDefault ## ## This is the function that does the work for the default ## contents value of the accessFunctions component of ## , see ## Section . ## This function must take a path and return the &GAP; object given by ## this file. ## ## AddDescribingComponents (for rep only) ## ## This function takes two arguments, a record (that will be returned by ## , , ## or ) and the type record ## record. ## It sets the components p, dim, id, and ring ## that are promised for return values of the abovementioned three ## functions. ## ## DisplayGroup (for rep only) ## ## This defines the format of the lines printed by ## for a given group. ## The value must be a function that takes a list as returned by the ## function given in the component AddFileInfo, and returns the ## string to be printed for the representation in question. ## ## ##

## Optional components of record are ##

## ## DisplayOverviewInfo ## ## This is used to introduce a new column in the output of ## when this is called ## without arguments or with a list of group names as its only argument. ## The value must be a list of length three, containing at its first ## position a string used as the header of the column, at its second ## position one of the strings "r" or "l", ## denoting right or left aligned column entries, ## and at its third position a function that takes two arguments ## (a list of tables of contents of the AtlasRep ## package and a group name), and returns a list of length two, ## containing the string to be printed as the column value and ## true or false, ## depending on whether private data is involved or not. ## (The default is fail, ## indicating that no new column shall be printed.) ## ## DisplayPRG (for prg only) ## ## This is used in for &ATLAS; programs. ## The value must be a function that takes four arguments (a list of ## tables of contents to examine, the name of the given group, ## a list of integers or true for the required standardization, ## and a list of all available standardizations), and returns the list ## of lines (strings) to be printed as the information about the ## available programs of the current type and for the given group. ## (The default is to return an empty list.) ## ## AccessGroupCondition (for rep only) ## ## This is used in and ## . ## The value must be a function that takes two arguments ## (a list as returned by , ## and a list of conditions), ## and returns true or false, depending on whether the ## first argument satisfies the conditions. ## (The default value is .) ##

## The function must support conditions such as ## [ IsPermGroup, true ] and [ NrMovedPoints, [ 5, 6 ] ], ## in general a list of functions followed by a prescribed value, ## a list of prescribed values, another (unary) function, ## or the string "minimal". ## For an overview of the interesting functions, ## see . ## ## AccessPRG (for prg only) ## ## This is used in . ## The value must be a function that takes three arguments (the record ## with the information about the given group in the current table of ## contents, an integer or a list of integers or true for the ## required standardization, and a list of conditions given by the ## optional arguments of ), ## and returns either fail or a list that together with the group ## name forms the identifier of a program that matches the ## conditions. ## (The default value is .) ## ## AtlasProgram (for prg only) ## ## This is used in to create the ## result value from the identifier. ## (The default value is AtlasProgramDefault, which ## works whenever the second entry of the identifier is the filename; ## this is not the case for example if the program is the composition of ## several programs.) ## ## AtlasProgramInfo (for prg only) ## ## This is used in to create the ## result value from the identifier. ## (The default value is AtlasProgramDefault.) ## ## TOCEntryString ## ## This is used in . ## The value must be a function that takes two arguments ## (the name name of the type and a list as returned by ## ## and returns a string that describes the appropriate function call. ## (The default value is TOCEntryStringDefault.) ## ## PostprocessFileInfo ## ## This is used in the construction of a table of contents via ## , ## for testing or rearranging the data of the current table of contents. ## The value must be a function that takes two arguments, ## the table of contents record and the record in it that belongs to ## one fixed group. ## (The default function does nothing.) ## ## SortTOCEntries ## ## This is used in the construction of a table of contents ## (see ), ## for sorting the entries after they have been added and after the ## value of the component PostprocessFileInfo has been called. ## The value must be a function that takes a list as returned by ## , ## and returns the sorting key. ## (There is no default value, which means that no sorting is needed.) ## ## TestFileHeaders (for rep only) ## ## This is used in the function AGR.Test.FileHeaders. ## The value must be a function that takes the same four arguments as ## , ## except that the first argument "datagens" can be replaced by ## "local" and that the third argument is a list as returned by ## . ## (The default value is .) ## ## TestFiles (for rep only) ## ## This is used in the function AGR.Test.Files. ## The format of the value and the default are the same as for ## the value of the component TestFileHeaders. ## ## TestWords (for prg only) ## ## This is used in the function AGR.Test.Words. ## The value must be a function that takes five arguments where the first ## four are the same arguments as for , ## except that the first argument "dataword" can be replaced by ## "local", ## and the fifth argument is true or false, ## indicating verbose mode or not. ## ## ## ## ## <#/GAPDoc> ## ############################################################################# ## #V AtlasOfGroupRepresentationsInfo ## ## <#GAPDoc Label="AtlasOfGroupRepresentationsInfo"> ## ## ## ## ## This is a record that is defined in the file gap/types.g of the ## package, with the following components. ##

## Components corresponding to user parameters (see ## Section ) ## are ##

## ## remote ## ## a boolean that controls what files are available; ## if the value is true then &GAP; is allowed to try remotely ## accessing any &ATLAS; file from the servers (see below) and thus all ## files listed in the global table of contents are available, ## if the value is false then &GAP; may access ## only those files that are stored in the database directories of the ## local &GAP; installation ## (see Section ), ## ## servers ## ## a list of pairs [ server, path ], ## where server is a string denoting the http address of ## a server where files can be fetched that are not stored in the local ## database, ## and path is a string describing the path ## where the data directories on the server reside, ## ## wget ## ## controls whether the &GAP; package ## IOIO package ## or the external program ## wgetwget ## is used to fetch data files, ## see , ## ## compress ## ## gzip ## a boolean that controls whether &MeatAxe; format text files are stored ## in compressed form; ## if the value is true then these files are compressed with ## gzip after they have been fetched from a server, see ## Section , ## ## displayFunction ## ## the function that is used by for ## printing the formatted data, ## see Section , ## ## accessFunctions ## ## a list of records, each describing how to access the data files, see ## Sections ## and , ## and ## ## markprivate ## ## a string used in to mark private data, ## see Section  . ## ## ## ##

## ## System components (which are computed automatically) are ##

## ## GAPnames ## ## a list of pairs, each containing the &GAP; name and the ## &ATLAS;-file name of a group, see ## Section , ## ## groupnames ## ## a list of triples, each containing at the first position the name of ## the directory on each server that contains data about the group ## G in question, ## at the second position the name of the (usually simple) group for ## which a subdirectory exists that contains the data about G, ## and at the third position the &ATLAS;-file name used for G, ## see Section , ## ## private ## ## a list of pairs of strings used for administrating private data ## (see Chapter ); ## the value is changed by ## ## and , ## ## characterinfo, permrepinfo, ringinfo ## ## additional information about representations, ## concerning the characters afforded, ## the point stabilizers of permutation representations, and ## the ring of definition of matrix representations; ## this information is used by , ## ## TableOfContents ## ## a record with at most the components local, remote, ## types, and the names of private data directories. ## The values of the components local and remote can be ## computed automatically by , ## the value of the component types is set in ## , ## and the values of the components for local data directories are ## created by ## . ## ## ## ## ## <#/GAPDoc> ## ## We want to delay reading the table of contents until the data are really ## accessed. ## DeclareAutoreadableVariables( "atlasrep", "gap/types.g", [ "AtlasOfGroupRepresentationsInfo" ] ); ############################################################################# ## #A Maxes( ) ## ## ## ## ## ## In some consistency checks, the &GAP; Character Table Library is used. ## Since the AtlasRep package does not require the table library, ## we declare the missing variables in order to avoid error messages. ## ## ## if not IsBound( Maxes ) then DeclareAttribute( "Maxes", IsUnknown ); InstallMethod( Maxes, [ IsUnknown ], Error ); fi; ############################################################################# ## #E atlasrep/gap/bbox.gd0000644000175000017500000010764412676700132013050 0ustar samsam############################################################################# ## #W bbox.gd GAP 4 package AtlasRep Thomas Breuer #W Simon Nickerson ## #Y Copyright (C) 2005, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains the declarations of the operations ## for black box programs and straight line decisions. ## ## 1. Functions for black box algorithms ## 2. Functions for straight line decisions ## ############################################################################# ## ## 1. Functions for black box algorithms ## ## <#GAPDoc Label="BBoxIntro"> ## Black box programs formalize the idea that one takes some group ## elements, forms arithmetic expressions in terms of them, tests properties ## of these expressions, ## executes conditional statements (including jumps inside the program) ## depending on the results of these tests, ## and eventually returns some result. ##

## A specification of the language can be found in , ## see also ##

## http://brauer.maths.qmul.ac.uk/Atlas/info/blackbox.html. ##

## The inputs of a black box program may be explicit group elements, ## and the program may also ask for random elements from a given group. ## The program steps form products, inverses, conjugates, ## commutators, etc. of known elements, ## tests concern essentially the orders of elements, ## and the result is a list of group elements or true or ## false or fail. ##

## Examples that can be modeled by black box programs are ##

## ## straight line programs, ## ## which require a fixed number of input elements and form arithmetic ## expressions of elements but do not use random elements, tests, ## conditional statements and jumps; ## the return value is always a list of elements; ## these programs are described ## in Section . ## ## straight line decisions, ## ## which differ from straight line programs only in the sense that also ## order tests are admissible, ## and that the return value is true if all these tests are ## satisfied, and false as soon as the first such test fails; ## they are described ## in Section . ## ## scripts for finding standard generators, ## ## which take a group and a function to generate a random element in this ## group but no explicit input elements, ## admit all control structures, and return either a list of standard ## generators or fail; ## see for examples. ## ## ##

## In the case of general black box programs, currently &GAP; provides only ## the possibility to read an existing program via ## , ## and to run the program using . ## It is not our aim to write such programs in &GAP;. ##

## The special case of the find scripts mentioned above is also ## admissible as an argument of , ## which returns either the set of generators or fail. ##

## Contrary to the general situation, ## more support is provided for straight line programs and straight line ## decisions in &GAP;, ## see Section ## for functions that manipulate them (compose, restrict etc.). ##

## The functions and ## can be used to transform a general ## black box program object into a straight line program or a straight line ## decision if this is possible. ##

## Conversely, one can create an equivalent general black box program from ## a straight line program or from a straight line decision with ## . ##

## (Computing a straight line program related to a given straight line ## decision is supported in the sense of ## .) ##

## Note that none of these three kinds of objects is a special case of ## another: ## Running a black box program with yields a ## record, ## running a straight line program with ## yields a list of ## elements, ## and running a straight line decision with ## yields true or ## false. ## <#/GAPDoc> ## ############################################################################# ## #V InfoBBox ## ## <#GAPDoc Label="InfoBBox"> ## ## ## ## ## If the info level of is at least 1 ## then information about fail results of functions dealing with ## black box programs (see Section ) ## is printed. ## The default level is 0, no information is printed on this level. ## ## ## <#/GAPDoc> ## DeclareInfoClass( "InfoBBox" ); ############################################################################# ## #C IsBBoxProgram( ) ## ## <#GAPDoc Label="IsBBoxProgram"> ## ## ## ## ## Each black box program in &GAP; lies in the filter ## . ## ## ## <#/GAPDoc> ## DeclareCategory( "IsBBoxProgram", IsObject ); ############################################################################# ## #A LinesOfBBoxProgram( ) ## ## Since no black box program can be a straight line program, ## we (ab)use the available attribute. ## DeclareSynonymAttr( "LinesOfBBoxProgram", LinesOfStraightLineProgram ); ############################################################################# ## #F ScanBBoxProgram( ) ## ## <#GAPDoc Label="ScanBBoxProgram"> ## ## ## ## ## a record containing the black box program encoded by the input string, ## or fail. ## ## ## For a string string that describes a black box program, e.g., ## the return value of , ## computes this black box program. ## If this is successful then the return value is a record containing as the ## value of its component program the corresponding &GAP; object ## that represents the program, ## otherwise fail is returned. ##

## As the first example, we construct a black box program that tries to find ## standard generators for the alternating group A_5; ## these standard generators are any pair of elements of the orders 2 ## and 3, respectively, such that their product has order 5. ##

## findstr:= "\ ## > set V 0\n\ ## > lbl START1\n\ ## > rand 1\n\ ## > ord 1 A\n\ ## > incr V\n\ ## > if V gt 100 then timeout\n\ ## > if A notin 1 2 3 5 then fail\n\ ## > if A noteq 2 then jmp START1\n\ ## > lbl START2\n\ ## > rand 2\n\ ## > ord 2 B\n\ ## > incr V\n\ ## > if V gt 100 then timeout\n\ ## > if B notin 1 2 3 5 then fail\n\ ## > if B noteq 3 then jmp START2\n\ ## > # The elements 1 and 2 have the orders 2 and 3, respectively.\n\ ## > set X 0\n\ ## > lbl CONJ\n\ ## > incr X\n\ ## > if X gt 100 then timeout\n\ ## > rand 3\n\ ## > cjr 2 3\n\ ## > mu 1 2 4 # ab\n\ ## > ord 4 C\n\ ## > if C notin 2 3 5 then fail\n\ ## > if C noteq 5 then jmp CONJ\n\ ## > oup 2 1 2";; ## gap> find:= ScanBBoxProgram( findstr ); ## rec( program := ) ## ]]> ##

## The second example is a black box program that checks whether its two ## inputs are standard generators for A_5. ##

## checkstr:= "\ ## > chor 1 2\n\ ## > chor 2 3\n\ ## > mu 1 2 3\n\ ## > chor 3 5";; ## gap> check:= ScanBBoxProgram( checkstr ); ## rec( program := ) ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "ScanBBoxProgram" ); ############################################################################# ## #F BBoxPerformInstruction( fullline, ins, G, ans, gpelts, ctr, options ) ## ## local utility (but recursive, therefore we declare it here) ## DeclareGlobalFunction( "BBoxPerformInstruction" ); ############################################################################# ## #F RunBBoxProgram( , , , ) ## ## <#GAPDoc Label="RunBBoxProgram"> ## ## ## ## ## a record describing the result and the statistics of running the ## black box program prog, or fail, ## or the string "timeout". ## ## ## For a black box program prog, a group G, ## a list input of group elements, ## and a record options, ## applies prog to input, ## where G is used only to compute random elements. ##

## The return value is fail if a syntax error or ## an explicit fail statement is reached at runtime, ## and the string "timeout" if a timeout statement is reached. ## (The latter might mean that the random choices were unlucky.) ## Otherwise a record with the following components is returned. ##

## ## gens ## ## a list of group elements, bound if an oup statement was reached, ## ## result ## ## true if a true statement was reached, ## false if either a false statement or a failed order check ## was reached, ## ## ##

## The other components serve as statistical information about the numbers ## of the various operations (multiply, invert, power, ## order, random, conjugate, conjugateinplace, ## commutator), and the runtime in milliseconds (timetaken). ##

## The following components of options are supported. ##

## ## randomfunction ## ## the function called with argument G in order to compute a ## random element of G ## (default ) ## ## orderfunction ## ## the function for computing element orders ## (the default is ), ## ## quiet ## ## if true then ignore echo statements ## (default false), ## ## verbose ## ## if true then print information about the line that is currently ## processed, and about order checks (default false), ## ## allowbreaks ## ## if true then call when a ## break statement is reached, otherwise ignore break ## statements (default true). ## ## ##

## As an example, we run the black box programs constructed in the example ## for . ##

## g:= AlternatingGroup( 5 );; ## gap> res:= RunBBoxProgram( find.program, g, [], rec() );; ## gap> IsBound( res.gens ); IsBound( res.result ); ## true ## false ## gap> List( res.gens, Order ); ## [ 2, 3 ] ## gap> Order( Product( res.gens ) ); ## 5 ## gap> res:= RunBBoxProgram( check.program, "dummy", res.gens, rec() );; ## gap> IsBound( res.gens ); IsBound( res.result ); ## false ## true ## gap> res.result; ## true ## gap> othergens:= GeneratorsOfGroup( g );; ## gap> res:= RunBBoxProgram( check.program, "dummy", othergens, rec() );; ## gap> res.result; ## false ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "RunBBoxProgram" ); ############################################################################# ## #F ResultOfBBoxProgram( , ) #F ResultOfBBoxProgram( , ) ## ## <#GAPDoc Label="ResultOfBBoxProgram"> ## ## ## ## ## a list of group elements or true, false, fail, ## or the string "timeout". ## ## ## This function calls ## with the black box program prog and second argument either a group ## or a list of group elements; the default options are assumed. ## The return value is fail if this call yields fail, ## otherwise the gens component of the result, if bound, ## or the result component if not. ##

## As an example, we run the black box programs constructed in the example ## for . ##

## g:= AlternatingGroup( 5 );; ## gap> res:= ResultOfBBoxProgram( find.program, g );; ## gap> List( res, Order ); ## [ 2, 3 ] ## gap> Order( Product( res ) ); ## 5 ## gap> res:= ResultOfBBoxProgram( check.program, res ); ## true ## gap> othergens:= GeneratorsOfGroup( g );; ## gap> res:= ResultOfBBoxProgram( check.program, othergens ); ## false ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "ResultOfBBoxProgram" ); ############################################################################# ## ## 2. Functions for straight line decisions ## ############################################################################# ## ## <#GAPDoc Label="StraightLineDecisionIntro"> ## Straight line decisions are similar to straight line programs ## (see Section ) ## but return true or false. ## A straight line decisions checks a property for its inputs. ## An important example is to check whether a given list of group generators ## is in fact a list of standard generators ## (cf. Section) ## for this group. ##

## A straight line decision in &GAP; is represented by an object in the ## filter ## that stores a list of lines ## each of which has one of the following three forms. ##

## ## ## a nonempty dense list l of integers, ## ## ## a pair [ l, i ] where ## l is a list of form 1. and i is a positive integer, ## ## ## a list [ "Order", i, n ] ## where i and n are positive integers. ## ## ##

## The first two forms have the same meaning as for straight line programs ## (see Section ), ## the last form means a check whether the element stored at the label ## i-th has the order n. ##

## For the meaning of the list of lines, see ## . ##

## Straight line decisions can be constructed using ## , ## defining attributes for straight line decisions are ## and ## , ## an operation for straight line decisions is ## . ##

## Special methods applicable to straight line decisions are installed for ## the operations , ## , ## , ## and . ##

## For a straight line decision prog, ## the default method prints ## the interpretation of prog as a sequence of assignments ## of associative words and of order checks; ## a record with components gensnames (with value a list of strings) ## and listname (a string) may be entered as second argument of ## , ## in this case these names are used, the default for gensnames is ## [ g1, g2, \ldots ], ## the default for listname is r. ## <#/GAPDoc> ## ############################################################################# ## #C IsStraightLineDecision( ) ## ## <#GAPDoc Label="IsStraightLineDecision"> ## ## ## ## ## Each straight line decision in &GAP; lies in the filter ## . ## ## ## <#/GAPDoc> ## DeclareCategory( "IsStraightLineDecision", IsObject ); ############################################################################# ## #F StraightLineDecision( [, ] ) #F StraightLineDecisionNC( [, ] ) ## ## <#GAPDoc Label="StraightLineDecision"> ## ## ## ## ## ## the straight line decision given by the list of lines. ## ## ## Let lines be a list of lists that defines a unique ## straight line decision (see ); ## in this case returns this program, ## otherwise an error is signalled. ## The optional argument nrgens specifies the number of ## input generators of the program; ## if a list of integers (a line of form 1. in the definition above) occurs ## in lines then this number is not determined by lines ## and therefore must be specified by the argument nrgens; ## if not then returns fail. ##

## does the same as ## , ## except that the internal consistency of the program is not checked. ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "StraightLineDecision" ); DeclareGlobalFunction( "StraightLineDecisionNC" ); ############################################################################# ## #A LinesOfStraightLineDecision( ) ## ## <#GAPDoc Label="LinesOfStraightLineDecision"> ## ## ## ## ## the list of lines that define the straight line decision. ## ## ## This defining attribute for the straight line decision prog ## (see ) corresponds to ## ## for straight line programs. ##

## dec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ], ## > [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] ); ## ## gap> LinesOfStraightLineDecision( dec ); ## [ [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 1, 2 ], [ "Order", 2, 3 ], ## [ "Order", 3, 5 ] ] ## ]]> ## ## ## <#/GAPDoc> ## DeclareAttribute( "LinesOfStraightLineDecision", IsStraightLineDecision ); ############################################################################# ## #A NrInputsOfStraightLineDecision( ) ## ## <#GAPDoc Label="NrInputsOfStraightLineDecision"> ## ## ## ## ## the number of inputs required for the straight line decision. ## ## ## This defining attribute corresponds to ## . ##

## NrInputsOfStraightLineDecision( dec ); ## 2 ## ]]> ## ## ## <#/GAPDoc> ## DeclareAttribute( "NrInputsOfStraightLineDecision", IsStraightLineDecision ); ############################################################################# ## #O ResultOfStraightLineDecision( , [, ] ) ## ## <#GAPDoc Label="ResultOfStraightLineDecision"> ## ## ## ## ## true if all checks succeed, otherwise false. ## ## ## evaluates the straight line ## decision (see ) prog ## at the group elements in the list gens. ##

## The function for computing the order of a group element can be given as ## the optional argument orderfunc. ## For example, this may be a function that gives up at a certain limit ## if one has to be aware of extremely huge orders in failure cases. ##

## The result of a straight line decision with lines ## p_1, p_2, \ldots, p_k ## when applied to gens is defined as follows. ##

## ## (a) ## ## First a list r of intermediate values is initialized ## with a shallow copy of gens. ## ## (b) ## ## For i \leq k, before the i-th step, ## let r be of length n. ## If p_i is the external representation of an associative word ## in the first n generators then the image of this word ## under the homomorphism that is given by mapping r ## to these first n generators is added to r. ## If p_i is a pair [ l, j ], for a list l, ## then the same element is computed, ## but instead of being added to r, ## it replaces the j-th entry of r. ## If p_i is a triple [ "Order", i, n ] ## then it is checked whether the order of r[i] is n; ## if not then false is returned immediately. ## ## (c) ## ## If all k lines have been processed and no order check ## has failed then true is returned. ## ## ##

## Here are some examples. ##

## dec:= StraightLineDecision( [ ], 1 ); ## ## gap> ResultOfStraightLineDecision( dec, [ () ] ); ## true ## ]]> ##

## The above straight line decision dec returns true ## –for any input of the right length. ##

## dec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ], ## > [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] ); ## ## gap> LinesOfStraightLineDecision( dec ); ## [ [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 1, 2 ], [ "Order", 2, 3 ], ## [ "Order", 3, 5 ] ] ## gap> ResultOfStraightLineDecision( dec, [ (), () ] ); ## false ## gap> ResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,4,5) ] ); ## true ## ]]> ##

## The above straight line decision admits two inputs; ## it tests whether the orders of the inputs are 2 and 3, ## and the order of their product is 5. ## ## ## <#/GAPDoc> ## DeclareOperation( "ResultOfStraightLineDecision", [ IsStraightLineDecision, IsHomogeneousList ] ); DeclareOperation( "ResultOfStraightLineDecision", [ IsStraightLineDecision, IsHomogeneousList, IsFunction ] ); ############################################################################# ## ## <#GAPDoc Label="Semi-Presentations"> ## ## Semi-Presentations and Presentations ## ## semi-presentation ## We can associate a finitely presented group F / R ## to each straight line decision dec, say, as follows. ## The free generators of the free group F are in bijection ## with the inputs, and the defining relators generating R as a ## normal subgroup of F are given by those words w^k ## for which dec contains a check whether the order of w ## equals k. ##

## So if dec returns true for the input list ## [ g_1, g_2, \ldots, g_n ] then mapping the free generators of ## F to the inputs defines an epimorphism \Phi from F ## to the group G, say, that is generated by these inputs, ## such that R is contained in the kernel of \Phi. ##

## (Note that satisfying dec is a stronger property than ## satisfying a presentation.presentation ## For example, \langle x \mid x^2 = x^3 = 1 \rangle ## is a presentation for the trivial group, but the straight line decision ## that checks whether the order of x is both 2 and 3 ## clearly always returns false.) ##

## The &ATLAS; of Group Representations contains the following two kinds of ## straight line decisions. ##

## ## ## A presentation is a straight line decision dec ## that is defined for a set of standard generators of a group G ## and that returns true if and only if the list of inputs is ## in fact a sequence of such standard generators for G. ## In other words, the relators derived from the order checks in the way ## described above are defining relators for G, ## and moreover these relators are words in terms of standard generators. ## (In particular the kernel of the map \Phi equals R ## whenever dec returns true.) ## ## ## A semi-presentation is a straight line decision dec ## that is defined for a set of standard generators of a group G ## and that returns true for a list of inputs that is known to ## generate a group isomorphic with G if and only if ## these inputs form in fact a sequence of standard generators for ## G. ## In other words, the relators derived from the order checks in the way ## described above are not necessarily defining relators ## for G, but if we assume that the g_i generate G ## then they are standard generators. ## (In particular, F / R may be a larger group than G ## but in this case \Phi maps the free generators of F ## to standard generators of G.) ##

## More about semi-presentations can be found in . ## ## ##

## Available presentations and semi-presentations are listed by ## , ## they can be accessed via . ## (Clearly each presentation is also a semi-presentation. ## So a semi-presentation for some standard generators of a group is ## regarded as available whenever a presentation for these standard ## generators and this group is available.) ##

## Note that different groups can have the same semi-presentation. ## We illustrate this with an example that is mentioned in ## . ## The groups L_2(7) \cong L_3(2) and L_2(8) are generated by ## elements of the orders 2 and 3 such that their product has ## order 7, and no further conditions are necessary to define ## standard generators. ##

## check:= AtlasProgram( "L2(8)", "check" ); ## rec( groupname := "L2(8)", ## identifier := [ "L2(8)", "L28G1-check1", 1, 1 ], ## program := , standardization := 1 ) ## gap> gens:= AtlasGenerators( "L2(8)", 1 ); ## rec( charactername := "1a+8a", ## generators := [ (1,2)(3,4)(6,7)(8,9), (1,3,2)(4,5,6)(7,8,9) ], ## groupname := "L2(8)", id := "", ## identifier := [ "L2(8)", [ "L28G1-p9B0.m1", "L28G1-p9B0.m2" ], 1, 9 ## ], isPrimitive := true, maxnr := 1, p := 9, rankAction := 2, ## repname := "L28G1-p9B0", repnr := 1, size := 504, ## stabilizer := "2^3:7", standardization := 1, transitivity := 3, ## type := "perm" ) ## gap> ResultOfStraightLineDecision( check.program, gens.generators ); ## true ## gap> gens:= AtlasGenerators( "L3(2)", 1 ); ## rec( generators := [ (2,4)(3,5), (1,2,3)(5,6,7) ], ## groupname := "L3(2)", id := "a", ## identifier := [ "L3(2)", [ "L27G1-p7aB0.m1", "L27G1-p7aB0.m2" ], 1, ## 7 ], isPrimitive := true, maxnr := 1, p := 7, rankAction := 2, ## repname := "L27G1-p7aB0", repnr := 1, size := 168, ## stabilizer := "S4", standardization := 1, transitivity := 2, ## type := "perm" ) ## gap> ResultOfStraightLineDecision( check.program, gens.generators ); ## true ## ]]> ## ## <#/GAPDoc> ## ############################################################################# ## #O StraightLineProgramFromStraightLineDecision( ) ## ## <#GAPDoc Label="StraightLineProgramFromStraightLineDecision"> ## ## ## ## ## the straight line program associated to the given straight line decision. ## ## ## For a straight line decision dec ## (see , ## returns the ## straight line program ## (see obtained by ## replacing each line of type 3. (i.e, each order check) by an ## assignment of the power in question to a new slot, ## and by declaring the list of these elements as the return value. ##

## This means that the return value describes exactly the defining relators ## of the presentation that is associated to the straight line decision, ## see . ##

## For example, one can use the return value for printing the relators with ## , ## or for explicitly constructing the relators as words in terms of free ## generators, ## by applying ## to the program and to these generators. ##

## dec:= StraightLineDecision( [ [ [ 1, 1, 2, 1 ], 3 ], ## > [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ "Order", 3, 5 ] ] ); ## ## gap> prog:= StraightLineProgramFromStraightLineDecision( dec ); ## ## gap> Display( prog ); ## # input: ## r:= [ g1, g2 ]; ## # program: ## r[3]:= r[1]*r[2]; ## r[4]:= r[1]^2; ## r[5]:= r[2]^3; ## r[6]:= r[3]^5; ## # return values: ## [ r[4], r[5], r[6] ] ## gap> StringOfResultOfStraightLineProgram( prog, [ "a", "b" ] ); ## "[ a^2, b^3, (ab)^5 ]" ## gap> gens:= GeneratorsOfGroup( FreeGroup( "a", "b" ) ); ## [ a, b ] ## gap> ResultOfStraightLineProgram( prog, gens ); ## [ a^2, b^3, (a*b)^5 ] ## ]]> ## ## ## <#/GAPDoc> ## DeclareOperation( "StraightLineProgramFromStraightLineDecision", [ IsStraightLineDecision ] ); ############################################################################# ## #A AsBBoxProgram( ) #A AsBBoxProgram( ) ## ## <#GAPDoc Label="AsBBoxProgram"> ## ## ## ## ## an equivalent black box program for the given straight line program ## or straight line decision. ## ## ## Let slp be a straight line program ## (see ) ## or a straight line decision (see ). ## Then returns a black box program bbox ## (see ) with the same output as ## slp, ## in the sense that yields the same ## result for bbox ## as or ## , respectively, for slp. ##

## f:= FreeGroup( "x", "y" );; gens:= GeneratorsOfGroup( f );; ## gap> slp:= StraightLineProgram( [ [1,2,2,3], [3,-1] ], 2 ); ## ## gap> ResultOfStraightLineProgram( slp, gens ); ## y^-3*x^-2 ## gap> bboxslp:= AsBBoxProgram( slp ); ## ## gap> ResultOfBBoxProgram( bboxslp, gens ); ## [ y^-3*x^-2 ] ## gap> lines:= [ [ "Order", 1, 2 ], [ "Order", 2, 3 ], ## > [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 3, 5 ] ];; ## gap> dec:= StraightLineDecision( lines, 2 ); ## ## gap> ResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,3,5) ] ); ## true ## gap> ResultOfStraightLineDecision( dec, [ (1,2)(3,4), (1,3,4) ] ); ## false ## gap> bboxdec:= AsBBoxProgram( dec ); ## ## gap> ResultOfBBoxProgram( bboxdec, [ (1,2)(3,4), (1,3,5) ] ); ## true ## gap> ResultOfBBoxProgram( bboxdec, [ (1,2)(3,4), (1,3,4) ] ); ## false ## ]]> ## ## ## <#/GAPDoc> ## DeclareAttribute( "AsBBoxProgram", IsStraightLineProgram ); DeclareAttribute( "AsBBoxProgram", IsStraightLineDecision ); ############################################################################# ## #A AsStraightLineProgram( ) ## ## <#GAPDoc Label="AsStraightLineProgram"> ## ## ## ## ## an equivalent straight line program for the given black box program, ## or fail. ## ## ## For a black box program (see ) bbox, ## returns a straight line program ## (see ) with the same ## output as bbox if such a straight line program exists, ## and fail otherwise. ##

## Display( AsStraightLineProgram( bboxslp ) ); ## # input: ## r:= [ g1, g2 ]; ## # program: ## r[3]:= r[1]^2; ## r[4]:= r[2]^3; ## r[5]:= r[3]*r[4]; ## r[3]:= r[5]^-1; ## # return values: ## [ r[3] ] ## gap> AsStraightLineProgram( bboxdec ); ## fail ## ]]> ## ## ## <#/GAPDoc> ## DeclareAttribute( "AsStraightLineProgram", IsBBoxProgram ); ############################################################################# ## #A AsStraightLineDecision( ) ## ## <#GAPDoc Label="AsStraightLineDecision"> ## ## ## ## ## an equivalent straight line decision for the given black box program, ## or fail. ## ## ## For a black box program (see ) bbox, ## returns a straight line decision ## (see ) with the same ## output as bbox, in the sense of , ## if such a straight line decision exists, ## and fail otherwise. ##

## lines:= [ [ "Order", 1, 2 ], [ "Order", 2, 3 ], ## > [ [ 1, 1, 2, 1 ], 3 ], [ "Order", 3, 5 ] ];; ## gap> dec:= StraightLineDecision( lines, 2 ); ## ## gap> bboxdec:= AsBBoxProgram( dec ); ## ## gap> asdec:= AsStraightLineDecision( bboxdec ); ## ## gap> LinesOfStraightLineDecision( asdec ); ## [ [ "Order", 1, 2 ], [ "Order", 2, 3 ], [ [ 1, 1, 2, 1 ], 3 ], ## [ "Order", 3, 5 ] ] ## ]]> ## ## ## <#/GAPDoc> ## DeclareAttribute( "AsStraightLineDecision", IsBBoxProgram ); ############################################################################# ## #E atlasrep/gap/obsolete.gi0000644000175000017500000000355011605520021013712 0ustar samsam############################################################################# ## #W obsolete.gi GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2011, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains implementations of global variables ## that had been documented in earlier versions of the AtlasRep package. ## ############################################################################# ## #F AtlasOfGroupRepresentationsTestClassScripts( ... ) #F AtlasOfGroupRepresentationsTestCompatibleMaxes( ... ) #F AtlasOfGroupRepresentationsTestFileHeaders( ... ) #F AtlasOfGroupRepresentationsTestFiles( ... ) #F AtlasOfGroupRepresentationsTestGroupOrders( ... ) #F AtlasOfGroupRepresentationsTestStdCompatibility( ... ) #F AtlasOfGroupRepresentationsTestSubgroupOrders( ... ) #F AtlasOfGroupRepresentationsTestWords( ... ) ## ## These functions are deprecated since version 1.5 of the package. ## if not IsBound( AGR.Test ) then ReadPackage( "atlasrep", "gap/test.g" ); fi; InstallGlobalFunction( AtlasOfGroupRepresentationsTestClassScripts, AGR.Test.ClassScripts ); InstallGlobalFunction( AtlasOfGroupRepresentationsTestCompatibleMaxes, AGR.Test.CompatibleMaxes ); InstallGlobalFunction( AtlasOfGroupRepresentationsTestFileHeaders, AGR.Test.FileHeaders ); InstallGlobalFunction( AtlasOfGroupRepresentationsTestFiles, AGR.Test.Files ); InstallGlobalFunction( AtlasOfGroupRepresentationsTestGroupOrders, AGR.Test.GroupOrders ); InstallGlobalFunction( AtlasOfGroupRepresentationsTestStdCompatibility, AGR.Test.StdCompatibility ); InstallGlobalFunction( AtlasOfGroupRepresentationsTestSubgroupOrders, AGR.Test.MaxesOrders ); InstallGlobalFunction( AtlasOfGroupRepresentationsTestWords, AGR.Test.Words ); ############################################################################# ## #E atlasrep/gap/types.g0000644000175000017500000030334612675775540013131 0ustar samsam############################################################################# ## #W types.g GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains implementations of the actual data types used in the ## &ATLAS; of Group Representations. ## ############################################################################# ## #V AtlasOfGroupRepresentationsInfo ## BindGlobal( "AtlasOfGroupRepresentationsInfo", rec( # user parameters remote := true, servers := [ [ "brauer.maths.qmul.ac.uk", "Atlas/" ], ], wget := "prefer IO to wget", compress := false, displayFunction := Print, accessFunctions := AtlasOfGroupRepresentationsAccessFunctionsDefault, markprivate := "*", # system parameters (filled automatically) GAPnames := [], groupnames := [], ringinfo := [], permrepinfo := rec(), characterinfo := rec(), private := [], filenames := [], TableOfContents := rec( remote := rec(), types := rec( rep := [], prg := [], cache := [] ), merged := rec() ), TOC_Cache := rec(), ) ); ############################################################################# ## #D Permutation representations ## ## <#GAPDoc Label="type:perm:format"> ## groupnameGi-pnidBm.mnr ## ## a file in &MeatAxe; text file format ## containing the nr-th generator of a permutation representation ## on n points. ## An example is M11G1-p11B0.m1. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "rep", "perm", rec( # `G-pB.m' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "p", IsDigitChar, AGR.IsLowerAlphaOrDigitChar, "B", IsDigitChar, ".m", IsDigitChar ] ], [ ParseBackwards, ParseForwards ] ], AddDescribingComponents := function( record, type ) local repid, parsed, comp, info, pos; repid:= record.identifier[2][1]; parsed:= AGR.ParseFilenameFormat( repid, type[2].FilenameFormat ); record.p:= Int( parsed[5] ); record.id:= parsed[6]; repid:= repid{ [ 1 .. Position( repid, '.' ) - 1 ] }; if IsBound( AtlasOfGroupRepresentationsInfo.characterinfo.( record.groupname ) ) then info:= AtlasOfGroupRepresentationsInfo.characterinfo.( record.groupname ); if IsBound( info[1] ) then info:= info[1]; pos:= Position( info[2], repid ); if pos <> fail and info[3][ pos ] <> fail then record.charactername:= info[3][ pos ]; fi; fi; fi; if IsBound( AtlasOfGroupRepresentationsInfo.permrepinfo.( repid ) ) then repid:= AtlasOfGroupRepresentationsInfo.permrepinfo.( repid ); for comp in [ "isPrimitive", "orbits", "rankAction", "stabilizer", "transitivity", "maxnr" ] do if IsBound( repid.( comp ) ) and repid.( comp ) <> "???" then record.( comp ):= repid.( comp ); fi; od; fi; end, # `[ , , , , ]' AddFileInfo := function( list, entry, name ) local known; if 0 < entry[5] then known:= First( list, x -> x{ [ 1 .. 4 ] } = entry{ [3, 5, 6, 8 ] } ); if known = fail then known:= entry{ [ 3, 5, 6, 8 ] }; Add( known, [] ); Add( list, known ); fi; known[5][ entry[10] ]:= name; return true; fi; return false; end, DisplayOverviewInfo := [ "#", "r", function( conditions ) # Put *all* types of representations together, in particular # assume that the functions for the other "rep" kind types are trivial! local info, no; conditions:= ShallowCopy( conditions ); conditions[1]:= conditions[1][1]; info:= CallFuncList( AllAtlasGeneratingSetInfos, conditions ); no:= Length( info ); if no = 0 then no:= ""; fi; return [ String( no ), ForAny( info, x -> not IsString( x.identifier[1] ) ) ]; end ], AccessGroupCondition := function( info, cond ) return AGR.CheckOneCondition( IsPermGroup, x -> x = true, cond ) and AGR.CheckOneCondition( IsPermGroup, cond ) and AGR.CheckOneCondition( IsMatrixGroup, x -> x = false, cond ) and AGR.CheckOneCondition( NrMovedPoints, x -> ( IsFunction( x ) and x( info.p ) = true ) or info.p = x, cond ) and AGR.CheckOneCondition( IsTransitive, x -> IsBound( info.transitivity ) and ( IsFunction( x ) and x( info.transitivity > 0 ) = true ) or ( info.transitivity > 0 ) = x, cond ) and AGR.CheckOneCondition( Transitivity, x -> IsBound( info.transitivity ) and ( IsFunction( x ) and x( info.transitivity ) = true ) or info.transitivity = x, cond ) and AGR.CheckOneCondition( IsPrimitive, x -> IsBound( info.isPrimitive ) and ( IsFunction( x ) and x( info.isPrimitive ) = true ) or info.isPrimitive = x, cond ) and AGR.CheckOneCondition( RankAction, x -> IsBound( info.rankAction ) and ( IsFunction( x ) and x( info.rankAction ) = true ) or info.rankAction = x, cond ) and AGR.CheckOneCondition( Identifier, x -> ( IsFunction( x ) and x( info.id ) = true ) or info.id = x, cond ) and IsEmpty( cond ); end, DisplayGroup := function( r ) local disp, sep; if AGR.ShowOnlyASCII() then disp:= Concatenation( "G <= Sym(", String( r.p ), r.id, ")" ); else disp:= Concatenation( "G ≤ Sym(", String( r.p ), r.id, ")" ); fi; if IsBound( r.transitivity ) then disp:= [ disp ]; if r.transitivity = 0 then # For intransitive repres., show the orbit lengths. Add( disp, Concatenation( "orbit lengths ", JoinStringsWithSeparator( List( r.orbits, String ), ", " ) ) ); sep:= ", "; elif r.transitivity = 1 then # For transitivity 1, show the rank (if known). if IsBound( r.rankAction ) and r.rankAction <> "???" then Add( disp, Concatenation( "rank ", String( r.rankAction ) ) ); sep:= ", "; fi; elif IsInt( r.transitivity ) then # For transitivity at least 2, show the transitivity. Add( disp, Concatenation( String( r.transitivity ), "-trans." ) ); sep:= ", "; else # The transitivity is not known. Add( disp, "" ); sep:= ""; fi; if 0 < r.transitivity then # For transitive representations, more info may be available. if r.isPrimitive then if IsBound( r.stabilizer ) and r.stabilizer <> "???" then Add( disp, Concatenation( sep, "on cosets of " ) ); Add( disp, r.stabilizer ); if IsBound( r.maxnr ) and r.maxnr <> "???" then Add( disp, Concatenation( " (", Ordinal( r.maxnr ), " max.)" ) ); else Add( disp, "" ); fi; elif IsBound( r.maxnr ) and r.maxnr <> "???" then Add( disp, Concatenation( sep, "on cosets of ", Ordinal( r.maxnr ), " max." ) ); else Add( disp, "primitive" ); fi; elif IsBound( r.stabilizer ) and r.stabilizer <> "???" then Add( disp, Concatenation( sep, "on cosets of " ) ); Add( disp, r.stabilizer ); fi; fi; fi; return disp; end, TestFileHeaders := function( tocid, groupname, entry, type ) local name, filename, len, file, line; if tocid = "local" then tocid:= "datagens"; fi; # Each generator is stored in a file of its own. for name in entry[ Length( entry ) ] do # Fetch the file if necessary. filename:= AtlasOfGroupRepresentationsLocalFilenameTransfer( tocid, groupname, name, type ); if filename = fail then return Concatenation( "filename `", name, "' not found" ); fi; filename:= filename[1]; len:= Length( filename ); if 3 < len and filename{ [ len-2 .. len ] } = ".gz" then filename:= filename{ [ 1 .. len-3 ] }; fi; # Read the first line of the file. file:= InputTextFile( filename ); if file = fail then return Concatenation( "cannot create input stream for file `", filename,"'" ); fi; InfoRead1( "#I reading `",filename,"' started\n" ); line:= ReadLine( file ); if line = fail then CloseStream( file ); return Concatenation( "no first line in file `",filename,"'" ); fi; while not '\n' in line do Append( line, ReadLine( file ) ); od; CloseStream( file ); InfoRead1( "#I reading `",filename,"' done\n" ); # The header must consist of four nonnegative integers. line:= CMeatAxeFileHeaderInfo( line ); if line = fail then return Concatenation( "illegal header of file `", filename,"'" ); fi; # Start the specific tests for permutations. # Check mode, number of permutations, and degree. if line[1] <> 12 then return Concatenation( "mode of file `", name, "' differs from 12" ); elif line[4] <> 1 then return Concatenation( "more than one permutation in file `", name, "'" ); elif line[3] <> entry[2] then return Concatenation( "perm. degree in file `", name, "' is ", String( line[3] ) ); fi; od; return true; end, TestFiles := AGR.TestFilesMTX, # Permutation representations are sorted according to # degree and identification string. SortTOCEntries := entry -> entry{ [ 2, 3 ] }, PostprocessFileInfo := function( toc, record ) local list, i; list:= record.perm; for i in [ 1 .. Length( list ) ] do if not IsDenseList( list[i][5] ) then #T better check whether the number of generators equals the number of #T standard generators! Info( InfoAtlasRep, 1, "not all generators for ", list[i][5] ); Unbind( list[i] ); fi; od; if not IsDenseList( list ) then record.perm:= Compacted( list ); fi; end, # We store the stem of the filename and the list of CRC values. TOCEntryString := function( typename, entry ) return Concatenation( [ "AGR.TOC(\"", typename, "\",\"", entry[5][1]{ [ 1 .. Length( entry[5][1] ) - 1 ] }, "\",", ReplacedString( String( List( entry[5], f -> First( AtlasOfGroupRepresentationsInfo.filenames, p -> p[1] = f )[2] ) ), " ", "" ), ");\n" ] ); end, # The default access reads the text format files. # Note that `ScanMeatAxeMat' returns a list of permutations. ReadAndInterpretDefault := paths -> Concatenation( List( paths, ScanMeatAxeFile ) ), ) ); ############################################################################# ## #D Matrix representations over finite fields ## ## <#GAPDoc Label="type:matff:format"> ## groupnameGi-fqrdimidBm.mnr ## ## a file in &MeatAxe; text file format ## containing the nr-th generator of a matrix representation ## over the field with q elements, of dimension dim. ## An example is S5G1-f2r4aB0.m1. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "rep", "matff", rec( # `G-frB.m' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "f", IsDigitChar, "r", IsDigitChar, AGR.IsLowerAlphaOrDigitChar, "B", IsDigitChar, ".m", IsDigitChar ] ], [ ParseBackwards, ParseForwards ] ], AddDescribingComponents := function( record, type ) local repid, parsed, info, char, pos; repid:= record.identifier[2][1]; parsed:= AGR.ParseFilenameFormat( repid, type[2].FilenameFormat ); record.dim:= Int( parsed[7] ); record.id:= parsed[8]; record.ring:= GF( parsed[5] ); if IsBound( AtlasOfGroupRepresentationsInfo.characterinfo.( record.groupname ) ) then info:= AtlasOfGroupRepresentationsInfo.characterinfo.( record.groupname ); char:= Characteristic( record.ring ); if IsBound( info[ char ] ) then info:= info[ char ]; pos:= Position( info[2], repid{ [ 1 .. Position( repid, '.' ) - 1 ] } ); if pos <> fail and info[3][ pos ] <> fail then record.charactername:= info[3][ pos ]; fi; fi; fi; end, # `[ , , , , , ]' AddFileInfo := function( list, entry, name ) local known; if IsPrimePowerInt( entry[5] ) and 0 < entry[7] then known:= First( list, x -> x{ [ 1 .. 5 ] } = entry{ [ 3, 5, 7, 8, 10 ] } ); if known = fail then known:= entry{ [ 3, 5, 7, 8, 10 ] }; Add( known, [] ); Add( list, known ); fi; known[6][ entry[12] ]:= name; return true; fi; return false; end, AccessGroupCondition := function( info, cond ) return AGR.CheckOneCondition( IsMatrixGroup, x -> x = true, cond ) and AGR.CheckOneCondition( IsMatrixGroup, cond ) and AGR.CheckOneCondition( IsPermGroup, x -> x = false, cond ) and AGR.CheckOneCondition( Characteristic, function( p ) local char; char:= SmallestRootInt( Size( info.ring ) ); return char = p or IsFunction( p ) and p( char ) = true; end, cond ) and AGR.CheckOneCondition( Dimension, x -> ( IsFunction( x ) and x( info.dim ) ) or info.dim = x, cond ) and AGR.CheckOneCondition( Ring, R -> ( IsFunction( R ) and R( info.ring ) ) or ( IsField( R ) and IsFinite( R ) and Size( info.ring ) mod Characteristic( R ) = 0 and DegreeOverPrimeField( R ) mod LogInt( Size( info.ring ), Characteristic( R ) ) = 0 ), cond ) and AGR.CheckOneCondition( Identifier, x -> ( IsFunction( x ) and x( info.id ) = true ) or info.id = x, cond ) and IsEmpty( cond ); end, DisplayGroup := function( r ) local disp; if AGR.ShowOnlyASCII() then disp:= Concatenation( "G <= GL(", String( r.dim ), r.id, ",", String( r.identifier[4] ), ")" ); if IsBound( r.charactername ) then disp:= [ disp, Concatenation( "character ", r.charactername ) ]; fi; else disp:= Concatenation( "G ≤ GL(", String( r.dim ), r.id, ",", String( r.identifier[4] ), ")" ); if IsBound( r.charactername ) then disp:= [ disp, Concatenation( "φ = ", r.charactername ) ]; fi; fi; return disp; end, TestFileHeaders := function( tocid, groupname, entry, type ) local name, filename, len, file, line, errors; if tocid = "local" then tocid:= "datagens"; fi; # Each generator is stored in a file of its own. for name in entry[ Length( entry ) ] do # Fetch the file if necessary. filename:= AtlasOfGroupRepresentationsLocalFilenameTransfer( tocid, groupname, name, type ); if filename = fail then return Concatenation( "filename `", name, "' not found" ); fi; filename:= filename[1]; len:= Length( filename ); if 3 < len and filename{ [ len-2 .. len ] } = ".gz" then filename:= filename{ [ 1 .. len-3 ] }; fi; # Read the first line of the file. file:= InputTextFile( filename ); if file = fail then return Concatenation( "cannot create input stream for file `", filename,"'" ); fi; InfoRead1( "#I reading `",filename,"' started\n" ); line:= ReadLine( file ); if line = fail then CloseStream( file ); return Concatenation( "no first line in file `",filename,"'" ); fi; while not '\n' in line do Append( line, ReadLine( file ) ); od; CloseStream( file ); InfoRead1( "#I reading `",filename,"' done\n" ); # The header must consist of four nonnegative integers. line:= CMeatAxeFileHeaderInfo( line ); if line = fail then return Concatenation( "illegal header of file `", filename,"'" ); fi; # Start the specific tests for matrices over finite fields. # Check mode, field size, and dimension. errors:= ""; if 6 < line[1] then Append( errors, Concatenation( "mode of file `", name, "' is larger than 6" ) ); elif line[2] <> entry[2] then Append( errors, Concatenation( "file `", name, "': field is of size ", String( line[2] ) ) ); elif line[3] <> entry[3] then Append( errors, Concatenation( "file `", name, "': matrix dimension is ", String( line[3] ) ) ); elif line[3] <> line[4] then Append( errors, Concatenation( "file `", name, "': matrix is not square" ) ); fi; if not IsEmpty( errors ) then return errors; fi; od; return true; end, TestFiles := AGR.TestFilesMTX, # Matrix representations over finite fields are sorted according to # field size, dimension, and identification string. SortTOCEntries := entry -> entry{ [ 2 .. 4 ] }, PostprocessFileInfo := function( toc, record ) local list, i; list:= record.matff; for i in [ 1 .. Length( list ) ] do if not IsDenseList( list[i][6] ) then #T better check whether the number of generators equals the number of #T standard generators! Info( InfoAtlasRep, 1, "not all generators for ", list[i][6] ); Unbind( list[i] ); fi; od; if not IsDenseList( list ) then record.matff:= Compacted( list ); fi; end, # We store the stem of the filename and the list of CRC values. TOCEntryString := function( typename, entry ) return Concatenation( [ "AGR.TOC(\"", typename, "\",\"", entry[6][1]{ [ 1 .. Length( entry[6][1] ) - 1 ] }, "\",", ReplacedString( String( List( entry[6], f -> First( AtlasOfGroupRepresentationsInfo.filenames, p -> p[1] = f )[2] ) ), " ", "" ), ");\n" ] ); end, # The default access reads the text format files. ReadAndInterpretDefault := paths -> List( paths, ScanMeatAxeFile ), ) ); ############################################################################# ## #D Matrix representations over the integers ## ## <#GAPDoc Label="type:matint:format"> ## groupnameGi-ZrdimidBm.g ## ## a &GAP; readable file ## containing all generators of a matrix representation ## over the integers, of dimension dim. ## An example is A5G1-Zr4B0.g. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "rep", "matint", rec( # `G-ZrB.g' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "Zr", IsDigitChar, AGR.IsLowerAlphaOrDigitChar, "B", IsDigitChar, ".g" ] ], [ ParseBackwards, ParseForwards ] ], AddDescribingComponents := function( record, type ) local repid, parsed, info, pos; repid:= record.identifier[2]; parsed:= AGR.ParseFilenameFormat( repid, type[2].FilenameFormat ); record.dim:= Int( parsed[5] ); record.id:= parsed[6]; record.ring:= Integers; if IsBound( AtlasOfGroupRepresentationsInfo.characterinfo.( record.groupname ) ) then info:= AtlasOfGroupRepresentationsInfo.characterinfo.( record.groupname ); if IsBound( info[1] ) then info:= info[1]; pos:= Position( info[2], repid{ [ 1 .. Position( repid, '.' ) - 1 ] } ); if pos <> fail and info[3][ pos ] <> fail then record.charactername:= info[3][ pos ]; fi; fi; fi; end, # `[ , , , , ]' AddFileInfo := function( list, entry, name ) if 0 < entry[5] then Add( list, Concatenation( entry{ [ 3, 5, 6, 8 ] }, [ name ] ) ); return true; fi; return false; end, AccessGroupCondition := function( info, cond ) return AGR.CheckOneCondition( IsMatrixGroup, x -> x = true, cond ) and AGR.CheckOneCondition( IsMatrixGroup, cond ) and AGR.CheckOneCondition( IsPermGroup, x -> x = false, cond ) and AGR.CheckOneCondition( Characteristic, p -> p = 0 or ( IsFunction( p ) and p( 0 ) = true ), cond ) and AGR.CheckOneCondition( Dimension, x -> ( IsFunction( x ) and x( info.dim ) ) or info.dim = x, cond ) and AGR.CheckOneCondition( Ring, R -> ( IsFunction( R ) and R( Integers ) ) or ( IsRing( R ) and IsCyclotomicCollection( R ) ), cond ) and AGR.CheckOneCondition( Identifier, x -> ( IsFunction( x ) and x( info.id ) = true ) or info.id = x, cond ) and IsEmpty( cond ); end, TestFileHeaders := function( tocid, groupname, entry, type ) return AGR.TestFileHeadersDefault( tocid, groupname, entry, type, entry[2], function( entry, mats, filename ) if not ForAll( mats, mat -> ForAll( mat, row -> ForAll( row, IsInt ) ) ) then return Concatenation( "matrices in `",filename, "' are not over the integers" ); fi; return true; end ); end, DisplayGroup := function( r ) local disp; if AGR.ShowOnlyASCII() then disp:= Concatenation( "G <= GL(", String( r.dim ), r.id, ",Z)" ); if IsBound( r.charactername ) then disp:= [ disp, Concatenation( "character ", r.charactername ) ]; fi; else disp:= Concatenation( "G ≤ GL(", String( r.dim ), r.id, ",ℤ)" ); if IsBound( r.charactername ) then disp:= [ disp, Concatenation( "χ = ", r.charactername ) ]; fi; fi; return disp; end, # Matrix representations over the integers are sorted according to # dimension and identification string. SortTOCEntries := entry -> entry{ [ 2, 3 ] }, ReadAndInterpretDefault := path -> AtlasDataGAPFormatFile( path ).generators, ) ); ############################################################################# ## #D Matrix representations over algebraic number fields ## ## <#GAPDoc Label="type:matalg:format"> ## groupnameGi-ArdimidBm.g ## ## a &GAP; readable file ## containing all generators of a matrix representation of dimension ## dim over an algebraic number field not specified further. ## An example is A5G1-Ar3aB0.g. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "rep", "matalg", rec( # `G-ArB.g' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "Ar", IsDigitChar, AGR.IsLowerAlphaOrDigitChar, "B", IsDigitChar, ".g" ] ], [ ParseBackwards, ParseForwards ] ], AddDescribingComponents := function( record, type ) local repid, parsed, info, pos; repid:= record.identifier[2]; parsed:= AGR.ParseFilenameFormat( repid, type[2].FilenameFormat ); record.dim:= Int( parsed[5] ); record.id:= parsed[6]; info:= record.identifier[2]; info:= info{ [ 1 .. Position( info, '.' )-1 ] }; info:= First( AtlasOfGroupRepresentationsInfo.ringinfo, x -> x[1] = info ); if info <> fail then record.ring:= info[3]; fi; if IsBound( AtlasOfGroupRepresentationsInfo.characterinfo.( record.groupname ) ) then info:= AtlasOfGroupRepresentationsInfo.characterinfo.( record.groupname ); if IsBound( info[1] ) then info:= info[1]; pos:= Position( info[2], repid{ [ 1 .. Position( repid, '.' ) - 1 ] } ); if pos <> fail and info[3][ pos ] <> fail then record.charactername:= info[3][ pos ]; fi; fi; fi; end, # `[ , , , , ]' AddFileInfo := function( list, entry, name ) if 0 < entry[5] then Add( list, Concatenation( entry{ [ 3, 5, 6, 8 ] }, [ name ] ) ); return true; fi; return false; end, AccessGroupCondition := function( info, cond ) return AGR.CheckOneCondition( IsMatrixGroup, x -> x = true, cond ) and AGR.CheckOneCondition( IsMatrixGroup, cond ) and AGR.CheckOneCondition( IsPermGroup, x -> x = false, cond ) and AGR.CheckOneCondition( Characteristic, p -> p = 0 or ( IsFunction( p ) and p( 0 ) = true ), cond ) and AGR.CheckOneCondition( Dimension, x -> ( IsFunction( x ) and x( info.dim ) = true ) or info.dim = x, cond ) and AGR.CheckOneCondition( Ring, x -> IsIdenticalObj( x, Cyclotomics ) or ( IsBound( info.ring ) and ( ( IsFunction( x ) and x( info.ring ) = true ) or ( IsRing( x ) and IsCyclotomicCollection( x ) and IsSubset( x, info.ring ) ) ) ), cond ) and AGR.CheckOneCondition( Identifier, x -> ( IsFunction( x ) and x( info.id ) = true ) or info.id = x, cond ) and IsEmpty( cond ); end, TestFileHeaders := function( tocid, groupname, entry, type ) return AGR.TestFileHeadersDefault( tocid, groupname, entry, type, entry[2], function( entry, mats, filename ) local info; if not IsCyclotomicCollCollColl( mats ) then return Concatenation( "matrices in `",filename, "' are not over cyclotomics" ); elif ForAll( Flat( mats ), IsInt ) then return Concatenation( "matrices in `",filename, "' are over the integers" ); fi; filename:= filename{ [ 1 .. Position( filename, '.' )-1 ] }; info:= First( AtlasOfGroupRepresentationsInfo.ringinfo, triple -> triple[1] = filename ); if info = fail then return Concatenation( "field info for `",filename, "' missing" ); elif Field( Rationals, Flat( mats ) ) <> info[3] then return Concatenation( "field info for `",filename, "' should be ", String( Field( Rationals, Flat( mats ) ) ) ); fi; return true; end ); end, DisplayGroup := function( r ) local fld, disp; fld:= r.identifier[2]; fld:= fld{ [ 1 .. Length( fld )-2 ] }; fld:= First( AtlasOfGroupRepresentationsInfo.ringinfo, p -> p[1] = fld ); if AGR.ShowOnlyASCII() then if fld <> fail then fld:= fld[2]; else fld:= "C"; fi; disp:= Concatenation( "G <= GL(", String( r.dim ), r.id, ",", fld, ")" ); if IsBound( r.charactername ) then disp:= [ disp, Concatenation( "character ", r.charactername ) ]; fi; else if fld <> fail then fld:= fld[2]; else fld:= "ℂ"; fi; disp:= Concatenation( "G ≤ GL(", String( r.dim ), r.id, ",", fld, ")" ); if IsBound( r.charactername ) then disp:= [ disp, Concatenation( "χ = ", r.charactername ) ]; fi; fi; return disp; end, # Matrix representations over algebraic extension fields are sorted # according to dimension and identification string. SortTOCEntries := entry -> entry{ [ 2, 3 ] }, ReadAndInterpretDefault := path -> AtlasDataGAPFormatFile( path ).generators, ) ); ############################################################################# ## #D Matrix representations over residue class rings ## ## <#GAPDoc Label="type:matmodn:format"> ## groupnameGi-ZnrdimidBm.g ## ## a &GAP; readable file ## containing all generators of a matrix representation of dimension ## dim over the ring of integers mod n. ## An example is 2A8G1-Z4r4aB0.g. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "rep", "matmodn", rec( # `G-ZrB.g' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "Z", IsDigitChar, "r", IsDigitChar, AGR.IsLowerAlphaOrDigitChar, "B", IsDigitChar, ".g" ] ], [ ParseBackwards, ParseForwards ] ], AddDescribingComponents := function( record, type ) local parsed; parsed:= AGR.ParseFilenameFormat( record.identifier[2], type[2].FilenameFormat ); record.dim:= Int( parsed[7] ); record.id:= parsed[8]; record.ring:= ZmodnZ( parsed[5] ); end, # `[ , , , , , ]' AddFileInfo := function( list, entry, name ) if 0 < entry[5] and 0 < entry[7] then Add( list, Concatenation( entry{ [ 3, 5, 7, 8, 10 ] }, [ name ] ) ); return true; fi; return false; end, AccessGroupCondition := function( info, cond ) return AGR.CheckOneCondition( IsMatrixGroup, x -> x = true, cond ) and AGR.CheckOneCondition( IsMatrixGroup, cond ) and AGR.CheckOneCondition( IsPermGroup, x -> x = false, cond ) and AGR.CheckOneCondition( Characteristic, p -> p = fail or ( IsFunction( p ) and p( fail ) = true ), cond ) and AGR.CheckOneCondition( Dimension, x -> ( IsFunction( x ) and x( info.dim ) ) or info.dim = x, cond ) and AGR.CheckOneCondition( Ring, R -> ( IsFunction( R ) and R( info.ring ) ) or ( IsRing( R ) and IsZmodnZObjNonprimeCollection( R ) and ModulusOfZmodnZObj( One( R ) ) = Size( info.ring ) ), cond ) and AGR.CheckOneCondition( Identifier, x -> ( IsFunction( x ) and x( info.id ) = true ) or info.id = x, cond ) and IsEmpty( cond ); end, DisplayGroup := function( r ) if AGR.ShowOnlyASCII() then return Concatenation( "G <= GL(",String( r.dim ), r.id, ",Z/", String( r.identifier[4] ),"Z)" ); else return Concatenation( "G ≤ GL(",String( r.dim ), r.id, ",ℤ/", String( r.identifier[4] ),"ℤ)" ); fi; end, TestFileHeaders := function( tocid, groupname, entry, type ) return AGR.TestFileHeadersDefault( tocid, groupname, entry, type, entry[3], function( entry, mats, filename ) if not IsZmodnZObjNonprimeCollCollColl( mats ) then return Concatenation( "matrices in `", filename, "' are not over a residue class ring" ); elif ModulusOfZmodnZObj( mats[1][1][1] ) <> entry[2] then return Concatenation( "matrices in `", filename, "' are not over Z/", entry[2], "Z" ); fi; return true; end ); end, # Matrix representations over residue class rings are sorted according # to modulus, dimension, and identification string. SortTOCEntries := entry -> entry{ [ 2 .. 4 ] }, ReadAndInterpretDefault := path -> AtlasDataGAPFormatFile( path ).generators, ) ); ############################################################################# ## #D Quaternionic matrix representations ## ## <#GAPDoc Label="type:quat:format"> ## groupnameGi-HrdimidBm.g ## ## a &GAP; readable file ## containing all generators of a matrix representation ## over a quaternion algebra over an algebraic number field, ## of dimension dim. ## An example is 2A6G1-Hr2aB0.g. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "rep", "quat", rec( # `G-HrB.g' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "Hr", IsDigitChar, AGR.IsLowerAlphaOrDigitChar, "B", IsDigitChar, ".g" ] ], [ ParseBackwards, ParseForwards ] ], AddDescribingComponents := function( record, type ) local parsed, info; parsed:= AGR.ParseFilenameFormat( record.identifier[2], type[2].FilenameFormat ); record.dim:= Int( parsed[5] ); record.id:= parsed[6]; info:= record.identifier[2]; info:= info{ [ 1 .. Position( info, '.' )-1 ] }; info:= First( AtlasOfGroupRepresentationsInfo.ringinfo, x -> x[1] = info ); if info <> fail then record.ring:= info[3]; fi; end, # `[ , , , , ]' AddFileInfo := function( list, entry, name ) if 0 < entry[5] then Add( list, Concatenation( entry{ [ 3, 5, 6, 8 ] }, [ name ] ) ); return true; fi; return false; end, AccessGroupCondition := function( info, cond ) return AGR.CheckOneCondition( IsMatrixGroup, x -> x = true, cond ) and AGR.CheckOneCondition( IsMatrixGroup, cond ) and AGR.CheckOneCondition( IsPermGroup, x -> x = false, cond ) and AGR.CheckOneCondition( Characteristic, p -> p = 0 or ( IsFunction( p ) and p( 0 ) = true ), cond ) and AGR.CheckOneCondition( Dimension, x -> ( IsFunction( x ) and x( info.dim ) = true ) or info.dim = x, cond ) and AGR.CheckOneCondition( Ring, x -> IsBound( info.ring ) and ( ( IsFunction( x ) and x( info.ring ) = true ) or ( IsRing( x ) and IsQuaternionCollection( x ) and IsSubset( x, info.ring ) ) ), cond ) and AGR.CheckOneCondition( Identifier, x -> ( IsFunction( x ) and x( info.id ) = true ) or info.id = x, cond ) and IsEmpty( cond ); end, TestFileHeaders := function( tocid, groupname, entry, type ) return AGR.TestFileHeadersDefault( tocid, groupname, entry, type, entry[2], function( entry, mats, filename ) local info; if not ForAll( mats, IsQuaternionCollColl ) then return Concatenation( "matrices in `",filename, "' are not over the quaternions" ); fi; filename:= filename{ [ 1 .. Position( filename, '.' )-1 ] }; info:= First( AtlasOfGroupRepresentationsInfo.ringinfo, triple -> triple[1] = filename ); if info = fail then return Concatenation( "field info for `",filename, "' missing" ); elif Field( Flat( List( Flat( mats ), ExtRepOfObj ) ) ) <> EvalString( Concatenation( "Field", info[2]{ [ Position( info[2], '(' ) .. Length( info[2] ) ] } ) ) then return Concatenation( "field info for `", filename, "' should involve ", Field( Flat( List( Flat( mats ), ExtRepOfObj ) ) ) ); fi; return true; end ); end, DisplayGroup := function( r ) local fld; fld:= r.identifier[2]; fld:= fld{ [ 1 .. Length( fld )-2 ] }; fld:= First( AtlasOfGroupRepresentationsInfo.ringinfo, p -> p[1] = fld ); if AGR.ShowOnlyASCII() then if fld = fail then fld:= "QuaternionAlgebra(C)"; else fld:= fld[2]; fi; return Concatenation( "G <= GL(", String( r.dim ), r.id, ",", fld, ")" ); else if fld = fail then fld:= "QuaternionAlgebra(ℂ)"; else fld:= fld[2]; fi; return Concatenation( "G ≤ GL(", String( r.dim ), r.id, ",", fld, ")" ); fi; end, # Matrix representations over the quaternions are sorted according to # dimension and identification string. SortTOCEntries := entry -> entry{ [ 2, 3 ] }, ReadAndInterpretDefault := path -> AtlasDataGAPFormatFile( path ).generators, ) ); ############################################################################# ## #D Straight line programs for generators of maximal subgroups ## ## <#GAPDoc Label="type:maxes:format"> ## groupnameGi-maxkWn ## ## In this case, the file contains a straight line program that takes ## generators of G w.r.t. the i-th set of standard ## generators, ## and returns a list of generators ## (in general not standard generators) ## for a subgroup U in the k-th class of maximal subgroups ## of G. ## An example is J1G1-max7W1. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "prg", "maxes", rec( # `G-maxW' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "max", IsDigitChar, "W", IsDigitChar ] ], [ ParseBackwards, ParseForwards ] ], # `[ , , ]' AddFileInfo := function( list, entry, name ) if 0 < entry[5] then Add( list, Concatenation( entry{ [ 3, 5 ] }, [ name ] ) ); return true; fi; return false; end, DisplayOverviewInfo := [ "maxes", "r", function( conditions ) local groupname, tocs, std, value, private, toc, record, comp, new; groupname:= conditions[1][2]; tocs:= AGR.TablesOfContents( conditions ); if Length( conditions ) = 1 or not ( IsInt( conditions[2] ) or IsList( conditions[2] ) ) then std:= true; else std:= conditions[2]; if IsInt( std ) then std:= [ std ]; fi; fi; value:= []; private:= false; for toc in tocs do if IsBound( toc.( groupname ) ) then record:= toc.( groupname ); for comp in [ "maxes", "maxext" ] do if IsBound( record.( comp ) ) then new:= List( Filtered( record.( comp ), x -> std = true or x[1] in std ), x -> x[2] ); if IsBound( toc.diridPrivate ) and not IsEmpty( new ) then private:= true; fi; UniteSet( value, new ); fi; od; fi; od; if IsEmpty( value ) then value:= ""; else value:= String( Length( value ) ); fi; return [ value, private ]; end ], DisplayPRG := function( tocs, name, std, stdavail ) local maxes, maxstd, maxprv, j, toc, record, comp, i, private, pos, pi, result, entry, line, width; maxes := []; maxstd := []; maxprv := []; for toc in tocs do if IsBound( toc.( name ) ) then record:= toc.( name ); for comp in [ "maxes", "maxext" ] do if IsBound( record.( comp ) ) then for i in record.( comp ) do if std = true or i[1] in std then if IsBound( toc.diridPrivate ) then private:= AtlasOfGroupRepresentationsInfo.markprivate; else private := ""; fi; if i[2] in maxes then pos:= Position( maxes, i[2] ); Add( maxstd[ pos ], i[1] ); Add( maxprv[ pos ], private ); else Add( maxes, i[2] ); Add( maxstd, [ i[1] ] ); Add( maxprv, [ private ] ); fi; fi; od; fi; od; fi; od; pi:= Sortex( maxes ); maxstd:= Permuted( maxstd, pi ); maxprv:= Permuted( maxprv, pi ); result:= []; if not IsEmpty( maxes ) then entry:= First( AtlasOfGroupRepresentationsInfo.GAPnames, x -> x[2] = name ); if IsBound( entry[3].nrMaxes ) then line:= "maxes ("; if Length( Set( maxes ) ) = entry[3].nrMaxes then Append( line, "all " ); else Append( line, String( Length( Set( maxes ) ) ) ); Append( line, " out of " ); fi; Append( line, String( entry[3].nrMaxes ) ); Append( line, ")" ); else line:= "maxes"; fi; Add( result, line ); width:= Length( String( maxes[ Length( maxes ) ] ) ); for i in [ 1 .. Length( maxes ) ] do if 1 < Length( stdavail ) then for j in [ 1 .. Length( maxstd[i] ) ] do line:= ""; Append( line, String( maxes[i], width ) ); Append( line, " (w.r.t. std. gen. " ); Append( line, String( maxstd[i][j] ) ); Append( line, maxprv[i][j] ); Append( line, ")" ); Add( result, line ); od; else line:= ""; Append( line, String( maxes[i], width ) ); Append( line, maxprv[i][1] ); if IsBound( entry[3].structureMaxes ) and IsBound( entry[3].structureMaxes[ maxes[i] ] ) then Append( line, ": " ); Append( line, entry[3].structureMaxes[ maxes[i] ] ); fi; Add( result, line ); fi; od; fi; return result; end, # Create the program info from the identifier. AtlasProgramInfo := function( type, identifier, prefix, groupname ) local i, result, gapname; i:= identifier[2]; if not IsString( i ) then i:= i[1]; fi; i:= AGR.ParseFilenameFormat( i, type[2].FilenameFormat ); if i = fail then return fail; fi; i:= i[5]; result:= rec( standardization := identifier[3], identifier := identifier ); # Set the size if available. gapname:= First( AtlasOfGroupRepresentationsInfo.GAPnames, pair -> pair[2] = groupname ); if IsBound( gapname[3].sizesMaxes ) and IsBound( gapname[3].sizesMaxes[i] ) then result.size:= gapname[3].sizesMaxes[i]; fi; if IsBound( gapname[3].structureMaxes ) and IsBound( gapname[3].structureMaxes[i] ) then result.subgroupname:= gapname[3].structureMaxes[i]; fi; return result; end, # Create the program from the identifier. AtlasProgram := function( type, identifier, prefix, groupname ) local i, prog, info, entry, result, gapname; i:= identifier[2]; if not IsString( i ) then i:= i[1]; fi; i:= AGR.ParseFilenameFormat( i, type[2].FilenameFormat ); if i = fail then return fail; fi; i:= i[5]; # The second entry is either a filename or a filename plus info about # additional generators. if ForAll( identifier[2], IsString ) then # One program for a factor group and some kernel generators # must be integrated. prog:= AGR.FileContents( prefix, groupname, identifier[2][1], type ); if prog = fail then return fail; fi; prog:= [ prog.program ]; info:= AGR.InfoForName( identifier[1] ); if IsBound( info[3].kernelPrograms ) then for entry in info[3].kernelPrograms do if entry[1] = identifier[3] and entry[2] = identifier[2][2] then Add( prog, StraightLineProgram( entry[3], NrInputsOfStraightLineProgram( prog[1] ) ) ); break; fi; od; fi; if Length( prog ) = 1 then return fail; fi; prog:= IntegratedStraightLineProgramExt( prog ); result:= rec( program := prog, standardization := identifier[3], identifier := identifier ); else result:= AtlasProgramDefault( type, identifier, prefix, groupname ); fi; # Set subgroup size and subgroup name if available. if result <> fail then gapname:= First( AtlasOfGroupRepresentationsInfo.GAPnames, pair -> pair[2] = groupname ); if IsBound( gapname[3].sizesMaxes ) and IsBound( gapname[3].sizesMaxes[i] ) then result.size:= gapname[3].sizesMaxes[i]; fi; if IsBound( gapname[3].structureMaxes ) and IsBound( gapname[3].structureMaxes[i] ) then result.subgroupname:= gapname[3].structureMaxes[i]; fi; fi; return result; end, # entry: `[ , , ]', # conditions: `[ "maxes", ]' AccessPRG := function( record, std, conditions ) local entry; if Length( conditions ) = 2 and conditions[1] = "maxes" and IsPosInt( conditions[2] ) then if IsBound( record.maxes ) then for entry in record.maxes do if ( std = true or entry[1] in std ) and entry[2] = conditions[2] then return entry{ [ 3, 1 ] }; fi; od; fi; if IsBound( record.maxext ) then for entry in record.maxext do if ( std = true or entry[1] in std ) and entry[2] = conditions[2] then if Length( entry[3] ) = 1 then return [ entry[3][1], entry[1] ]; else return entry{ [ 3, 1 ] }; fi; fi; od; fi; fi; return fail; end, # Maxes are sorted according to their natural position. SortTOCEntries := entry -> entry[2], # In addition to the tests in `AGR.TestWordsSLPDefault', # compute the images in a representation if available, # and compare the group order with that stored in the # GAP Character Table Library (if available). TestWords:= function( tocid, name, file, type, verbose ) local prog, prg, gens, pos, pos2, maxnr, gapname, storedsize, tbl, subname, subtbl, std, grp, size; # Read the program. if tocid = "local" then tocid:= "dataword"; fi; prog:= AGR.FileContents( tocid, name, file, type ); if prog = fail then Print( "#E file `", file, "' is corrupted\n" ); return false; fi; # Check consistency. if prog = fail or not IsInternallyConsistent( prog.program ) then Print( "#E program `", file, "' not internally consistent\n" ); return false; fi; prg:= prog.program; # Create a list of trivial generators. gens:= ListWithIdenticalEntries( NrInputsOfStraightLineProgram( prg ), () ); # Run the program. gens:= ResultOfStraightLineProgram( prg, gens ); # Compute the position in the `Maxes' list. pos:= PositionSublist( file, "-max" ); pos2:= pos + 4; while file[ pos2 ] <> 'W' do pos2:= pos2 + 1; od; maxnr:= Int( file{ [ pos+4 .. pos2-1 ] } ); # Fetch a perhaps stored value. gapname:= First( AtlasOfGroupRepresentationsInfo.GAPnames, pair -> name = pair[2] ); if gapname = fail then Print( "#E problem: no GAP name for `", name, "'\n" ); return false; fi; storedsize:= fail; if IsBound( gapname[4] ) and IsBound( gapname[4][ maxnr ] ) then storedsize:= gapname[4][ maxnr ]; fi; # Identify the group in the GAP Character Table Library. tbl:= CharacterTable( gapname[1] ); if tbl = fail and storedsize = fail then if verbose then Print( "#I no character table for `", gapname[1], "', no check for `", file, "'\n" ); fi; return true; fi; # Identify the subgroup in the GAP Character Table Library. if tbl <> fail then if HasMaxes( tbl ) then if Length( Maxes( tbl ) ) < maxnr then Print( "#E program `", file, "' contradicts `Maxes( ", tbl, " )'\n" ); return false; fi; subname:= Maxes( tbl )[ maxnr ]; else subname:= Concatenation( Identifier( tbl ), "M", String( maxnr ) ); fi; subtbl:= CharacterTable( subname ); if IsCharacterTable( subtbl ) then if storedsize <> fail and storedsize <> Size( subtbl ) then Print( "#E program `", file, "' contradicts stored subgroup order'\n" ); return false; elif storedsize = fail then storedsize:= Size( subtbl ); fi; elif storedsize = fail then if verbose then Print( "#I no character table for `", subname, "', no check for `", file, "'\n" ); fi; return true; fi; fi; if storedsize = fail then return true; fi; # Compute the standardization. pos2:= pos - 1; while file[ pos2 ] <> 'G' do pos2:= pos2-1; od; std:= Int( file{ [ pos2+1 .. pos-1 ] } ); # Get a representation if available, and map the generators. gapname:= gapname[1]; gens:= OneAtlasGeneratingSetInfo( gapname, std, NrMovedPoints, [ 2 .. AGR.Test.MaxTestDegree ] ); if gens = fail then if verbose then Print( "#I no perm. repres. for `", gapname, "', no check for `", file, "'\n" ); fi; else gens:= AtlasGenerators( gens ); grp:= Group( gens.generators ); if tbl <> fail then if IsBound( gens.size ) and gens.size <> Size( tbl ) then Print( "#E wrong size for group`", gapname, "'\n" ); return false; fi; SetSize( grp, Size( tbl ) ); fi; gens:= ResultOfStraightLineProgram( prg, gens.generators ); size:= Size( SubgroupNC( grp, gens ) ); if size <> storedsize then Print( "#E program `", file, "' for group of order ", size, " not ", storedsize, "\n" ); if subtbl <> fail then Print( "#E (contradicts character table of `", Identifier( subtbl ), "')\n" ); fi; return false; fi; fi; # No more tests are available. return true; end, ReadAndInterpretDefault := ScanStraightLineProgram, ) ); ############################################################################# ## #D Straight line programs for class representatives ## ## <#GAPDoc Label="type:classes:format"> ## groupnameGi-cclsWn ## ## In this case, the file contains a straight line program that returns ## a list of conjugacy class representatives of G. ## An example is RuG1-cclsW1. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "prg", "classes", rec( # `G-cclsW' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "cclsW", IsDigitChar ] ], [ ParseBackwards, ParseForwards ] ], # `[ , ]' AddFileInfo := function( list, entry, name ) Add( list, Concatenation( entry{ [ 3 ] }, [ name ] ) ); return true; end, DisplayOverviewInfo := [ "cl", "c", function( conditions ) local groupname, tocs, std, value, private, toc, record, i, pos, rel; groupname:= conditions[1][2]; tocs:= AGR.TablesOfContents( conditions ); if Length( conditions ) = 1 or not ( IsInt( conditions[2] ) or IsList( conditions[2] ) ) then std:= true; else std:= conditions[2]; if IsInt( std ) then std:= [ std ]; fi; fi; value:= false; private:= false; for toc in tocs do if IsBound( toc.( groupname ) ) then record:= toc.( groupname ); if IsBound( record.classes ) and ( ( std = true and not IsEmpty( record.classes ) ) or ForAny( record.classes, l -> l[1] in std ) ) then value:= true; elif IsBound( record.cyc2ccl ) and IsBound( record.cyclic ) then for i in record.cyc2ccl do # Check that for scripts of the form # `GcycW-cclsW', # a script of the form `G-cycW' is available. pos:= PositionSublist( i[2], "cycW" ); rel:= Concatenation( i[2]{ [ 1 .. pos-1 ] }, "-", i[2]{ [ pos .. Position( i[2], '-' ) - 1 ] } ); if ( std = true or i[1] in std ) and ForAny( record.cyclic, x -> x[2] = rel and ( std = true or x[1] in std ) ) then value:= true; break; fi; od; fi; if value then if IsBound( toc.diridPrivate ) then private:= true; fi; break; fi; fi; od; if value then value:= "+"; else value:= ""; fi; return [ value, private ]; end ], DisplayPRG := function( tocs, name, std, stdavail ) local ccl, c2c, cyc, private, toc, record, i, pos, rel; # (The information can be stored either directly or via two scripts # in `cyclic' and `cyc2ccl'.) ccl:= []; c2c:= []; cyc:= []; private:= ""; for toc in tocs do if IsBound( toc.( name ) ) then record:= toc.( name ); if IsBound( record.classes ) then for i in record.classes do if std = true or i[1] in std then if IsBound( toc.diridPrivate ) then private:= AtlasOfGroupRepresentationsInfo.markprivate; fi; Add( ccl, i ); fi; od; fi; if IsBound( record.cyc2ccl ) then for i in record.cyc2ccl do if std = true or i[1] in std then if IsBound( toc.diridPrivate ) then private:= AtlasOfGroupRepresentationsInfo.markprivate; fi; Add( c2c, i ); fi; od; fi; if IsBound( record.cyclic ) then for i in record.cyclic do if std = true or i[1] in std then if IsBound( toc.diridPrivate ) then private:= AtlasOfGroupRepresentationsInfo.markprivate; fi; Add( cyc, i ); fi; od; fi; fi; od; for i in c2c do # Check if for scripts of the form `GcycW-cclsW', # a script of the form `G-cycW' is available. pos:= PositionSublist( i[2], "cycW" ); rel:= Concatenation( i[2]{ [ 1 .. pos-1 ] }, "-", i[2]{ [ pos .. Position( i[2], '-' ) - 1 ] } ); if ForAny( cyc, x -> x[2] = rel ) then Add( ccl, i ); fi; od; if IsEmpty( ccl ) then return []; elif 1 < Length( stdavail ) then return [ Concatenation( "class repres.", " for std. generators ", String( Set( List( ccl, x -> x[1] ) ) ), private ) ]; else return [ Concatenation( "class repres.", private ) ]; fi; end, # entry: `[ , ]', # conditions: `[ "classes" ]' AccessPRG := function( record, std, conditions ) local entry, pos, rel, entry2; if not ( Length( conditions ) = 1 and conditions[1] = "classes" ) then return fail; elif IsBound( record.classes ) then for entry in record.classes do if std = true or entry[1] in std then return entry{ [ 2, 1 ] }; fi; od; fi; if IsBound( record.cyclic ) and IsBound( record.cyc2ccl ) then for entry in record.cyc2ccl do if std = true or entry[1] in std then # Check if for scripts of the form # `GcycW-cclsW', # a script of the form `G-cycW' is available. pos:= PositionSublist( entry[2], "cycW" ); rel:= Concatenation( entry[2]{ [ 1 .. pos-1 ] }, "-", entry[2]{ [ pos .. Position( entry[2], '-' ) - 1 ] } ); for entry2 in record.cyclic do if entry2[2] = rel and ( std = true or entry2[1] in std ) then return [ [ entry[2], entry2[2] ], entry[1] ]; fi; od; fi; od; fi; return fail; end, # Create the program info from the identifier. AtlasProgramInfo := function( type, identifier, prefix, groupname ) # The second entry is either a filename or a pair of filenames. if ForAll( identifier[2], IsString ) then return rec( standardization := identifier[3], identifier := identifier ); elif IsString( identifier[2] ) then return AtlasProgramInfoDefault( type, identifier, prefix, groupname ); fi; return fail; end, # Create the program from the identifier. AtlasProgram := function( type, identifier, prefix, groupname ) local progs, prog, i, result; # The second entry is either a filename or a pair of filenames. if ForAll( identifier[2], IsString ) then # Two programs have to be composed. progs:= List( identifier[2], name -> AGR.FileContents( prefix, groupname, name, type ) ); if fail in progs then return fail; fi; prog:= progs[1].program; for i in [ 2 .. Length( progs ) ] do prog:= CompositionOfStraightLinePrograms( prog, progs[i].program ); if prog = fail then return fail; fi; od; result:= rec( program := prog, standardization := identifier[3], identifier := identifier ); if IsBound( progs[1].outputs ) then # Take the outputs of the last program in the composition. result.outputs:= progs[1].outputs; fi; return result; elif IsString( identifier[2] ) then return AtlasProgramDefault( type, identifier, prefix, groupname ); fi; return fail; end, TestWords := function( tocid, name, file, type, verbose ) return AGR.TestWordsSLPDefault( tocid, name, file, type, true, verbose ); end, ReadAndInterpretDefault := ScanStraightLineProgram, ) ); ############################################################################# ## #D Straight line programs for representatives of cyclic subgroups ## ## <#GAPDoc Label="type:cyclic:format"> ## groupnameGi-cycWn ## ## In this case, the file contains a straight line program that returns ## a list of representatives of generators ## of maximally cyclic subgroups of G. ## An example is Co1G1-cycW1. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "prg", "cyclic", rec( # `G-cycW' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "cycW", IsDigitChar ] ], [ ParseBackwards, ParseForwards ] ], # `[ , ]' AddFileInfo := function( list, entry, name ) Add( list, Concatenation( entry{ [ 3 ] }, [ name ] ) ); return true; end, DisplayOverviewInfo := AGR.DisplayOverviewInfoDefault( "cyc", "c", "cyclic" ), DisplayPRG := function( tocs, name, std, stdavail ) local cyc, private, toc, record, i; cyc:= []; private:= ""; for toc in tocs do if IsBound( toc.( name ) ) then record:= toc.( name ); if IsBound( record.cyclic ) then for i in record.cyclic do if std = true or i[1] in std then if IsBound( toc.diridPrivate ) then private:= AtlasOfGroupRepresentationsInfo.markprivate; fi; Add( cyc, i[2] ); fi; od; fi; fi; od; if IsEmpty( cyc ) then return []; elif 1 < Length( stdavail ) then return [ Concatenation( "repr. cyc. subg.", " for std. generators ", String( Set( List( cyc, x -> x[1] ) ) ), private ) ]; else return [ Concatenation( "repr. cyc. subg.", private ) ]; fi; end, # entry: `[ , ]', # conditions: `[ "cyclic" ]' AccessPRG := function( record, std, conditions ) local entry; if Length( conditions ) = 1 and conditions[1] = "cyclic" and IsBound( record.cyclic ) then for entry in record.cyclic do if std = true or entry[1] in std then return entry{ [ 2, 1 ] }; fi; od; fi; return fail; end, TestWords := function( tocid, name, file, type, verbose ) return AGR.TestWordsSLPDefault( tocid, name, file, type, true, verbose ); end, ReadAndInterpretDefault := ScanStraightLineProgram, ) ); ############################################################################# ## #D Straight line programs for computing class representatives from #D representatives of cyclic subgroups ## ## <#GAPDoc Label="type:cyc2ccls:format"> ## groupnameGicycWn-cclsWm ## ## In this case, the file contains a straight line program that takes ## the return value of the program in the file ## groupnameGi-cycWn ## (see above), ## and returns a list of conjugacy class representatives of G. ## An example is M11G1cycW1-cclsW1. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "prg", "cyc2ccl", rec( # `GcycW-cclsW' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar, "cycW", IsDigitChar ], [ "cclsW", IsDigitChar ] ], [ ParseBackwards, ParseForwards ] ], # `[ , ]' AddFileInfo := function( list, entry, name ) Add( list, Concatenation( entry{ [ 3 ] }, [ name ] ) ); return true; end, # entry: `[ , ]', # conditions: `[ "cyc2ccl" ]' AccessPRG := function( record, std, conditions ) local entry; if Length( conditions ) = 1 and conditions[1] = "cyc2ccl" and IsBound( record.cyc2ccl ) then for entry in record.cyc2ccl do if std = true or entry[1] in std then return entry{ [ 2, 1 ] }; fi; od; fi; return fail; end, TestWords := function( tocid, name, file, type, verbose ) return AGR.TestWordsSLPDefault( tocid, name, file, type, true, verbose ); end, ReadAndInterpretDefault := ScanStraightLineProgram, ) ); ############################################################################# ## #D Straight line programs for computing standard generators of #D maximal subgroups ## ## <#GAPDoc Label="type:maxstd:format"> ## groupnameGimaxkWn-subgroupnameGjWm ## ## In this case, the file contains a straight line program that takes ## the return value of the program in the file ## groupnameGi-maxkWn ## (see above), ## which are generators for a group U, say; ## subgroupname is a name for U, ## and the return value is a list of standard generators for U, ## w.r.t. the j-th set of standard generators. ## (Of course this implies that the groups in the k-th class of ## maximal subgroups of G are isomorphic to the group with name ## subgroupname.) ## An example is J1G1max1W1-L211G1W1; ## the first class of maximal subgroups of the Janko group J_1 ## consists of groups isomorphic to the linear group L_2(11), ## for which standard generators are defined. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "prg", "maxstd", rec( # `GmaxW-GW' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar, "max", IsDigitChar, "W", IsDigitChar ], [ IsChar, "G", IsDigitChar, "W", IsDigitChar ] ], [ ParseBackwards, ParseBackwards ] ], # `[ , , , , ]' AddFileInfo := function( list, entry, name ) Add( list, Concatenation( entry{ [ 3, 5, 8, 10 ] }, [ name ] ) ); return true; end, PostprocessFileInfo := function( toc, record ) local list, i; list:= record.maxstd; for i in [ 1 .. Length( list ) ] do if not IsBound( toc.( list[i][3] ) ) then Info( InfoAtlasRep, 3, "t.o.c. construction: ignoring name `", list[i][5], "'" ); Unbind( list[i] ); fi; od; if not IsDenseList( list ) then record.maxstd:= Compacted( list ); fi; end, TestWords := function( tocid, name, file, type, verbose ) return AGR.TestWordsSLPDefault( tocid, name, file, type, false, verbose ); end, ReadAndInterpretDefault := ScanStraightLineProgram, ) ); ############################################################################# ## #D Straight line programs for computing images of standard generators #D under outer automorphisms ## ## <#GAPDoc Label="type:out:format"> ## groupnameGi-aoutnameWn ## ## In this case, the file contains a straight line program that takes ## generators of G w.r.t. the i-th set of standard ## generators, ## and returns the list of their images ## under the outer automorphism \alpha of G ## given by the name outname; ## if this name is empty then \alpha is the unique nontrivial ## outer automorphism of G; ## if it is a positive integer k then \alpha is a ## generator of the unique cyclic order k subgroup of the outer ## automorphism group of G; ## if it is of the form 2_1 or 2a, ## 4_2 or 4b, 3_3 or 3c ## \ldots then \alpha ## generates the cyclic group of automorphisms induced on G by ## G.2_1, G.4_2, G.3_3 \ldots; ## finally, if it is of the form kpd, ## with k one of the above forms and d an integer then ## d denotes the number of dashes ## appended to the automorphism described by k; ## if d = 1 then d can be omitted. ## Examples are A5G1-aW1, L34G1-a2_1W1, ## U43G1-a2_3pW1, and O8p3G1-a2_2p5W1; ## these file names describe the outer order 2 automorphism of ## A_5 (induced by the action of S_5) ## and the order 2 automorphisms of ## L_3(4), U_4(3), and O_8^+(3) ## induced by the actions of ## L_3(4).2_1, U_4(3).2_2^{\prime}, ## and O_8^+(3).2_2^{{\prime\prime\prime\prime\prime}}, ## respectively. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "prg", "out", rec( # `G-aW' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "a", IsChar, "W", IsDigitChar ] ], [ ParseBackwards, ParseBackwardsWithPrefix ] ], # `[ , , ]' AddFileInfo := function( list, entry, name ) local std, descr, pos, dashes, order, index; std:= entry[3]; descr:= entry[5]; pos:= Position( descr, 'p' ); if pos = fail then dashes:= ""; pos:= Length( descr ) + 1; elif pos = Length( descr ) then dashes:= "'"; else dashes:= Int( descr{ [ pos+1 .. Length( descr ) ] } ); if dashes = fail then return false; fi; dashes:= ListWithIdenticalEntries( dashes, '\'' ); fi; descr:= descr{ [ 1 .. pos-1 ] }; pos:= Position( descr, '_' ); if pos = fail then order:= descr; index:= ""; else order:= descr{ [ 1 .. pos-1 ] }; index:= descr{ [ pos+1 .. Length( descr ) ] }; fi; if Int( order ) = fail or Int( index ) = fail then return false; elif order = "" then order:= "2"; fi; if index <> "" then order:= Concatenation( order, "_", index ); fi; order:= Concatenation( order, dashes ); Add( list, [ std, order, name ] ); return true; end, DisplayOverviewInfo := [ "out", "r", function( conditions ) local groupname, tocs, std, value, private, toc, record, new; groupname:= conditions[1][2]; tocs:= AGR.TablesOfContents( conditions ); if Length( conditions ) = 1 or not ( IsInt( conditions[2] ) or IsList( conditions[2] ) ) then std:= true; else std:= conditions[2]; if IsInt( std ) then std:= [ std ]; fi; fi; value:= [];; private:= false; for toc in tocs do if IsBound( toc.( groupname ) ) then record:= toc.( groupname ); if IsBound( record.out ) then new:= Set( List( Filtered( record.out, x -> std = true or x[1] in std ), x -> x[2] ) ); if IsBound( toc.diridPrivate ) and not IsEmpty( new ) then private:= true; fi; UniteSet( value, new ); fi; fi; od; value:= JoinStringsWithSeparator( value, "," ); return [ value, private ]; end ], DisplayPRG := function( tocs, name, std, stdavail ) local out, private, toc, record, i; out:= []; private:= AtlasOfGroupRepresentationsInfo.markprivate; for toc in tocs do if IsBound( toc.( name ) ) then record:= toc.( name ); if IsBound( record.out ) then for i in record.out do if std = true or i[1] in std then if IsBound( toc.diridPrivate ) then Add( out, Concatenation( i[2], private ) ); else Add( out, i[2] ); fi; fi; od; fi; fi; od; if not IsEmpty( out ) then out:= Concatenation( [ "automorphisms" ], out ); fi; return out; end, # entry: `[ , , ]', # conditions: `[ "automorphism", ]' AccessPRG := function( record, std, conditions ) local entry; if Length( conditions ) = 2 and conditions[1] = "automorphism" and IsBound( record.out ) then for entry in record.out do if ( std = true or entry[1] in std ) and entry[2] = conditions[2] then return entry{ [ 3, 2 ] }; fi; od; fi; return fail; end, # It would be good to check whether the order of the automorphism # fits to the name of the script, but the scripts do not describe # automorphisms of minimal possible order. # (So the power given by the name of the script is an inner # automorphism; how could we check this with reasonable effort?) # Thus we check just whether the name fits to the structure of the # outer automorphism group and to the order of the automorphism. # (We copy the relevant part of the code of `AGR.TestWordsSLPDefault' # into this function.) TestWords := function( tocid, name, file, type, verbose ) local filename, prog, prg, gens, gapname, pos, claimedorder, tbl, outinfo, bound, imgs, order; # Read the program. if tocid = "local" then tocid:= "dataword"; fi; prog:= AGR.FileContents( tocid, name, file, type ); if prog = fail then Print( "#E file `", file, "' is corrupted\n" ); return false; fi; # Check consistency. if prog = fail or not IsInternallyConsistent( prog.program ) then Print( "#E program `", file, "' not internally consistent\n" ); return false; fi; prg:= prog.program; # Create the list of (trivial) generators. gens:= ListWithIdenticalEntries( NrInputsOfStraightLineProgram( prg ), () ); # Run the program. gens:= ResultOfStraightLineProgram( prg, gens ); # Get the GAP name of `name'. gapname:= First( AtlasOfGroupRepresentationsInfo.GAPnames, pair -> name = pair[2] ); if gapname = fail then Print( "#E problem: no GAP name for `", name, "'\n" ); return false; fi; gapname:= gapname[1]; # Get the order of the automorphism from the filename. pos:= PositionSublist( file, "-a" ); claimedorder:= file{ [ pos+2 .. Length( file ) ] }; pos:= Position( claimedorder, 'W' ); claimedorder:= claimedorder{ [ 1 .. pos-1 ] }; pos:= Position( claimedorder, 'p' ); if pos <> fail then if not ForAll( claimedorder{ [ pos+1 .. Length( claimedorder ) ] }, IsDigitChar ) then Print( "#E wrong number of dashes in `", file, "'\n" ); return false; elif claimedorder{ [ pos+1 .. Length( claimedorder ) ] } = "0" then Print( "#E wrong name `", file, "'\n" ); return false; fi; claimedorder:= claimedorder{ [ 1 .. pos-1 ] }; fi; pos:= Position( claimedorder, '_' ); if pos <> fail then claimedorder:= claimedorder{ [ 1 .. pos-1 ] }; fi; if not ForAll( claimedorder, IsDigitChar ) then Print( "#E wrong name `", file, "'\n" ); return false; fi; claimedorder:= Int( claimedorder ); # Get the structure of the automorphism group. # If this group is cyclic then we compare orders. tbl:= CharacterTable( gapname ); if tbl <> fail and IsBound( AGR.HasExtensionInfoCharacterTable ) and AGR.HasExtensionInfoCharacterTable( tbl ) then outinfo:= AGR.ExtensionInfoCharacterTable( tbl )[2]; if outinfo = "" then Print( "#E automorphism `", file, "' for group without outer automorphisms\n" ); return false; elif outinfo <> "2" and claimedorder = 0 then Print( "#E automorphism `", file, "' but the outer automorphism is not unique\n" ); return false; elif Int( outinfo ) <> fail and claimedorder <> 0 and Int( outinfo ) mod claimedorder <> 0 then Print( "#E automorphism `", file, "' for outer automorphism group ", outinfo, "\n" ); return false; fi; fi; if claimedorder = 0 then claimedorder:= 2; fi; # Get generators of the group in question. gens:= OneAtlasGeneratingSetInfo( gapname ); if gens <> fail and tbl <> fail then gens:= AtlasGenerators( gens ); if gens <> fail then gens:= gens.generators; bound:= Exponent( tbl ) * claimedorder; # Compute the order of the automorphism. imgs:= ResultOfStraightLineProgram( prg, gens ); order:= 1; while order < bound and imgs <> gens do imgs:= ResultOfStraightLineProgram( prg, imgs ); order:= order + 1; od; if imgs <> gens then Print( "#E order ", order, " of automorphism `", file, "' is larger than ", bound, "\n" ); return false; elif order mod claimedorder <> 0 then Print( "#E order ", order, " of automorphism `", file, "' not divisible by ", claimedorder, "\n" ); return false; fi; fi; fi; return true; end, ReadAndInterpretDefault := ScanStraightLineProgram, ) ); ############################################################################# ## #D Straight line programs for switching between different standardizations ## ## <#GAPDoc Label="type:switch:format"> ## groupnameGi-GjWn ## ## In this case, the file contains a straight line program that takes ## generators of G w.r.t. the i-th set of standard ## generators, and returns standard generators of G ## w.r.t. the j-th set of standard generators. ## An example is L35G1-G2W1. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "prg", "switch", rec( # `G-GW' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "G", IsDigitChar, "W", IsDigitChar ] ], [ ParseBackwards, ParseForwards ] ], # `[ , , ]' AddFileInfo := function( list, entry, name ) Add( list, [ entry[3], entry[5], name ] ); return true; end, DisplayPRG := function( tocs, name, std, stdavail ) local switch, private, toc, record, i; switch:= []; private:= AtlasOfGroupRepresentationsInfo.markprivate; for toc in tocs do if IsBound( toc.( name ) ) then record:= toc.( name ); if IsBound( record.switch ) then for i in record.switch do if std = true or i[1] in std then if IsBound( toc.diridPrivate ) then Add( switch, Concatenation( String( i[1] ), " -> ", String( i[2] ), private ) ); else Add( switch, Concatenation( String( i[1] ), " -> ", String( i[2] ) ) ); fi; fi; od; fi; fi; od; if not IsEmpty( switch ) then switch:= Concatenation( [ "restandardizations" ], switch ); fi; return switch; end, # entry: `[ , , ]', # conditions: `[ "restandardize", ]' AccessPRG := function( record, std, conditions ) local entry; if Length( conditions ) = 2 and conditions[1] = "restandardize" and IsBound( record.switch ) then for entry in record.switch do if ( std = true or entry[1] in std ) and conditions[2] = entry[2] then return entry{ [ 3, 1, 2 ] }; fi; od; fi; return fail; end, TestWords := function( tocid, name, file, type, verbose ) return AGR.TestWordsSLPDefault( tocid, name, file, type, false, verbose ); end, ReadAndInterpretDefault := ScanStraightLineProgram, ) ); ############################################################################# ## #D Black box programs for finding standard generators ## ## <#GAPDoc Label="type:find:format"> ## groupnameGi-findn ## ## black box program ## ## In this case, the file contains a black box program that takes ## a group, and returns (if it is successful) a set of standard generators ## for G, w.r.t. the i-th standardization. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "prg", "find", rec( # `G-find' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "find", IsDigitChar ] ], [ ParseBackwards, ParseBackwardsWithPrefix ] ], # `[ , , ]' AddFileInfo := function( list, entry, name ) Add( list, [ entry[3], entry[5], name ] ); return true; end, DisplayOverviewInfo := AGR.DisplayOverviewInfoDefault( "fnd", "c", "find" ), DisplayPRG := function( tocs, name, std, stdavail ) local find, private, toc, record, i; find:= []; private:= ""; for toc in tocs do if IsBound( toc.( name ) ) then record:= toc.( name ); if IsBound( record.find ) then for i in record.find do if std = true or i[1] in std then if IsBound( toc.diridPrivate ) then private:= AtlasOfGroupRepresentationsInfo.markprivate; fi; AddSet( find, String( i[1] ) ); fi; od; fi; fi; od; if IsEmpty( find ) then return []; elif 1 < Length( stdavail ) then return [ Concatenation( "std. gen. finder", " for std. generators ", JoinStringsWithSeparator( find, ", " ), private ) ]; else return [ Concatenation( "std. gen. finder", private ) ]; fi; end, # entry: `[ , , ]', # conditions: `[ "find" ]' AccessPRG := function( record, std, conditions ) local entry; if Length( conditions ) = 1 and conditions[1] = "find" and IsBound( record.find ) then for entry in record.find do if std = true or entry[1] in std then # the part of the identifier return entry{ [ 3, 1, 2 ] }; fi; od; fi; return fail; end, ReadAndInterpretDefault := path -> ScanBBoxProgram( StringFile( path ) ), # If there is a representation for this group (independent of the # standardization) then we apply the script, and check whether at least # the whole group is generated by the result; if also a `check' script # is available for this standardization then we run it on the result. TestWords := function( tocid, name, file, type, verbose ) local prog, prg, gapname, gens, G, res, pos, pos2, std, check; # Read the program. if tocid = "local" then tocid:= "dataword"; fi; prog:= AGR.FileContents( tocid, name, file, type ); if prog = fail then Print( "#E file `", file, "' is corrupted\n" ); return false; fi; prg:= prog.program; # Get the GAP name of `name'. gapname:= First( AtlasOfGroupRepresentationsInfo.GAPnames, pair -> name = pair[2] ); if gapname = fail then Print( "#E problem: no GAP name for `", name, "'\n" ); return false; fi; # Get generators of the group in question. gens:= OneAtlasGeneratingSetInfo( gapname[1] ); if gens <> fail then gens:= AtlasGenerators( gens ); if gens <> fail then gens:= gens.generators; G:= Group( gens ); if IsBound( gapname[3].size ) then SetSize( G, gapname[3].size ); fi; res:= ResultOfBBoxProgram( prg, G ); if IsList( res ) and not IsString( res ) then # Compute the standardization. pos:= Position( file, '-' ); pos2:= pos - 1; while file[ pos2 ] <> 'G' do pos2:= pos2-1; od; std:= Int( file{ [ pos2+1 .. pos-1 ] } ); check:= AtlasProgram( gapname[1], std, "check" ); if check <> fail then if not ResultOfStraightLineDecision( check.program, res ) then Print( "#E return values of `", file, "' do not fit to the check file\n" ); return false; fi; fi; # Check the group order only for permutation groups. if IsPermGroup( G ) then if not IsSubset( G, res ) then Print( "#E return values of `", file, "' do not lie in the group\n" ); return false; elif Size( SubgroupNC( G, res ) ) <> Size( G ) then Print( "#E return values of `", file, "' do not generate the group\n" ); return false; fi; fi; fi; fi; fi; return true; end, ) ); ############################################################################# ## #D Straight line programs for checking standard generators ## ## <#GAPDoc Label="type:check:format"> ## groupnameGi-checkn ## ## semi-presentation ## In this case, the file contains a straight line decision that takes ## generators of G, and returns true if these generators are ## standard generators w.r.t. the i-th standardization, ## and false otherwise. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "prg", "check", rec( # `G-check' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "check", IsDigitChar ] ], [ ParseBackwards, ParseBackwardsWithPrefix ] ], # `[ , , ]' AddFileInfo := function( list, entry, name ) Add( list, [ entry[3], entry[5], name ] ); return true; end, DisplayOverviewInfo := [ "chk", "c", function( conditions ) local groupname, tocs, std, value, private, toc, record; groupname:= conditions[1][2]; tocs:= AGR.TablesOfContents( conditions ); if Length( conditions ) = 1 or not ( IsInt( conditions[2] ) or IsList( conditions[2] ) ) then std:= true; else std:= conditions[2]; if IsInt( std ) then std:= [ std ]; fi; fi; value:= ""; private:= false; for toc in tocs do if IsBound( toc.( groupname ) ) then record:= toc.( groupname ); if ( IsBound( record.check ) and ForAny( record.check, x -> std = true or x[1] in std ) ) or ( IsBound( record.pres ) and ForAny( record.pres, x -> std = true or x[1] in std ) ) then value:= "+"; if IsBound( toc.diridPrivate ) then private:= true; fi; break; fi; fi; od; return [ value, private ]; end ], DisplayPRG := function( tocs, name, std, stdavail ) local check, private, toc, record, comp, i; check:= []; private:= AtlasOfGroupRepresentationsInfo.markprivate; for toc in tocs do if IsBound( toc.( name ) ) then record:= toc.( name ); for comp in [ "check", "pres" ] do if IsBound( record.( comp ) ) then for i in record.( comp ) do if std = true or i[1] in std then if IsBound( toc.diridPrivate ) then AddSet( check, Concatenation( i[1], private ) ); else AddSet( check, i[1] ); fi; fi; od; fi; od; fi; od; if IsEmpty( check ) then return []; elif 1 < Length( stdavail ) then return [ Concatenation( "std. gen. checker", " for std. generators ", JoinStringsWithSeparator( check, ", " ) ) ]; else return [ "std. gen. checker" ]; fi; end, # entry: `[ , , ]', # conditions: `[ "check" ]' AccessPRG := function( record, std, conditions ) local entry, comp; if Length( conditions ) = 1 and conditions[1] = "check" then for comp in [ "check", "pres" ] do if IsBound( record.( comp ) ) then for entry in record.( comp ) do if std = true or entry[1] in std then # the part of the identifier return entry{ [ 3, 1, 2 ] }; fi; od; fi; od; fi; return fail; end, TestWords := function( tocid, name, file, type, verbose ) return AGR.TestWordsSLDDefault( tocid, name, file, type, [ IsChar, "G", IsDigitChar, "-check", IsDigitChar ], verbose ); end, ReadAndInterpretDefault := path -> ScanStraightLineDecision( StringFile( path ) ), ) ); ############################################################################# ## #D BBox programs representing presentations ## ## <#GAPDoc Label="type:pres:format"> ## groupnameGi-Pn ## ## presentation ## In this case, the file contains a straight line decision that takes ## some group elements, and returns true if these elements are ## standard generators for G, ## w.r.t. the i-th standardization, ## and false otherwise. ## ## <#/GAPDoc> ## AGR.DeclareDataType( "prg", "pres", rec( # `G-P' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "P", IsDigitChar ] ], [ ParseBackwards, ParseBackwardsWithPrefix ] ], # `[ , , ]' AddFileInfo := function( list, entry, name ) Add( list, [ entry[3], entry[5], name ] ); return true; end, DisplayOverviewInfo := AGR.DisplayOverviewInfoDefault( "prs", "c", "pres" ), DisplayPRG := function( tocs, name, std, stdavail ) local pres, private, toc, record, i; pres:= []; private:= AtlasOfGroupRepresentationsInfo.markprivate; for toc in tocs do if IsBound( toc.( name ) ) then record:= toc.( name ); if IsBound( record.pres ) then for i in record.pres do if std = true or i[1] in std then if IsBound( toc.diridPrivate ) then AddSet( pres, Concatenation( String( i[1] ), private ) ); else AddSet( pres, String( i[1] ) ); fi; fi; od; fi; fi; od; if IsEmpty( pres ) then return []; elif 1 < Length( stdavail ) then return [ Concatenation( "presentation", " for std. generators ", JoinStringsWithSeparator( pres, ", " ) ) ]; else return [ "presentation" ]; fi; end, # entry: `[ , , ]', # conditions: `[ "presentation" ]' AccessPRG := function( record, std, conditions ) local entry; if Length( conditions ) = 1 and conditions[1] = "presentation" and IsBound( record.pres ) then for entry in record.pres do if std = true or entry[1] in std then # the part of the identifier return entry{ [ 3, 1, 2 ] }; fi; od; fi; return fail; end, TestWords := function( tocid, name, file, type, verbose ) return AGR.TestWordsSLDDefault( tocid, name, file, type, [ IsChar, "G", IsDigitChar, "-P", IsDigitChar ], verbose ); end, ReadAndInterpretDefault := path -> ScanStraightLineDecision( StringFile( path ) ), ) ); ############################################################################# ## #D Other straight line programs ## ## <#GAPDoc Label="type:otherscripts:format"> ## groupnameGi-XdescrWn ## ## In this case, the file contains a straight line program that takes ## generators of G w.r.t. the i-th set of standard ## generators, and whose return value corresponds to descr. ## This format is used only in private extensions ## (see Chapter ), ## such a script can be accessed with descr as the third argument ## of . ## ## <#/GAPDoc> ## AGR.DeclareDataType( "prg", "otherscripts", rec( # `G-XW' FilenameFormat := [ [ [ IsChar, "G", IsDigitChar ], [ "X", IsChar, "W", IsDigitChar ] ], [ ParseBackwards, ParseBackwardsWithPrefix ] ], # `[ , , ]' AddFileInfo := function( list, entry, name ) Add( list, Concatenation( entry{ [ 3, 5 ] }, [ name ] ) ); return true; end, DisplayPRG := function( tocs, name, std, stdavail ) local result, other, private, toc, record, i; other:= []; private:= AtlasOfGroupRepresentationsInfo.markprivate; for toc in tocs do if IsBound( toc.( name ) ) then record:= toc.( name ); if IsBound( record.otherscripts ) then for i in record.otherscripts do if std = true or i[1] in std then if IsBound( toc.diridPrivate ) then Add( other, Concatenation( "\"", i[2], "\"", private ) ); else Add( other, Concatenation( "\"", i[2], "\"" ) ); fi; fi; od; fi; fi; od; if not IsEmpty( other ) then other:= Concatenation( [ "other scripts" ], other ); fi; return other; end, # entry: `[ , , ]', # conditions: `[ "other", ]' AccessPRG := function( record, std, conditions ) local entry; if Length( conditions ) = 2 and conditions[1] = "other" and IsBound( record.otherscripts ) then for entry in record.otherscripts do if ( std = true or entry[1] in std ) and entry[2] = conditions[2] then return entry{ [ 3, 1 ] }; fi; od; fi; return fail; end, TestWords := function( tocid, name, file, type, verbose ) return AGR.TestWordsSLPDefault( tocid, name, file, type, false, verbose ); end, ReadAndInterpretDefault := ScanStraightLineProgram, ) ); ############################################################################# ## ## Read the server's table of contents. ## Preferably a user file is taken because it might be a more recent version, ## otherwise the file that was distributed with the package is read. ## ## Note that the file types.g is notified with ## DeclareAutoreadableVariables, ## in order to delay the evaluation of the data. ## ## <#GAPDoc Label="ATLASREP_TOCFILE"> ## Alternatively, one can add a line to the user's gaprc file ## (see ), ## which assigns the filename of the current gap/atlasprm.g file ## (as an absolute path or relative to the user's home directory, ## cf. ) ## to the global variable ATLASREP_TOCFILE; ## ATLASREP_TOCFILE ## in this case, this file is read instead of the one from the package ## distribution when the package is loaded. ## <#/GAPDoc> ## if IsBound( ATLASREP_TOCFILE ) then if not IsReadableFile( ATLASREP_TOCFILE ) then Error( "the file for the global `ATLASREP_TOCFILE' is not readable" ); elif not READ( ATLASREP_TOCFILE ) then Error( "problem reading the file for the global `ATLASREP_TOCFILE'" ); fi; else ReadPackage( "atlasrep", "gap/atlasprm.g" ); fi; ############################################################################# ## #E atlasrep/gap/types.gi0000644000175000017500000003376612700303460013261 0ustar samsam############################################################################# ## #W types.gi GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains implementations of the functions for administrating ## the data types used in the ATLAS of Group Representations. ## ############################################################################# ## #F TOCEntryStringDefault( , ) ## BindGlobal( "TOCEntryStringDefault", function( typename, entry ) return Concatenation( [ "AGR.TOC(\"", typename, "\",\"", entry[ Length( entry ) ], "\",", ReplacedString( String( [ First( AtlasOfGroupRepresentationsInfo.filenames, p -> p[1] = entry[ Length( entry ) ] )[2] ] ), " ", "" ), ");\n" ] ); end ); ############################################################################# ## #F AGR.DisplayOverviewInfoDefault( , , ) ## AGR.DisplayOverviewInfoDefault:= function( dispname, align, compname ) return [ dispname, align, function( conditions ) local groupname, tocs, std, value, private, toc, record, new; groupname:= conditions[1][2]; tocs:= AGR.TablesOfContents( conditions ); if Length( conditions ) = 1 or not ( IsInt( conditions[2] ) or IsList( conditions[2] ) ) then std:= true; else std:= conditions[2]; if IsInt( std ) then std:= [ std ]; fi; fi; value:= false; private:= false; for toc in tocs do if IsBound( toc.( groupname ) ) then record:= toc.( groupname ); if IsBound( record.( compname ) ) then new:= ForAny( record.( compname ), x -> std = true or x[1] in std ); if IsBound( toc.diridPrivate ) and new then private:= true; fi; value:= value or new; fi; fi; od; if value then value:= "+"; else value:= ""; fi; return [ value, private ]; end ]; end; ############################################################################# ## #F AGR.TestWordsSLPDefault( , , , , , #F ) ## ## For the straight line program that is returned by ## when this is called ## with the first four arguments, ## it is checked that it is internally consistent and that it can be ## evaluated at the right number of arguments. ## If the argument outputs is true then it is additionally ## checked that the result record has a component outputs, ## a list whose length equals the number of outputs of the program. ## (The argument verbose is currently not used, ## in other TestWords functions the value true triggers that ## more statements may be printed than just error messages. ## AGR.TestWordsSLPDefault:= function( tocid, name, file, type, outputs, verbose ) local filename, prog, prg, gens; # Read the program. if tocid = "local" then tocid:= "dataword"; fi; prog:= AGR.FileContents( tocid, name, file, type ); if prog = fail then Print( "#E file `", file, "' is corrupted\n" ); return false; fi; # Check consistency. if prog = fail or not IsInternallyConsistent( prog.program ) then Print( "#E program `", file, "' not internally consistent\n" ); return false; fi; prg:= prog.program; # Create the list of (trivial) generators. gens:= ListWithIdenticalEntries( NrInputsOfStraightLineProgram( prg ), () ); # Run the program. gens:= ResultOfStraightLineProgram( prg, gens ); # If the script computes class representatives then # check whether there is an `outputs' component of the right length. if outputs = true then if not IsBound( prog.outputs ) then Print( "#E program `", file, "' without component `outputs'\n" ); return false; elif Length( prog.outputs ) <> Length( gens ) then Print( "#E program `", file, "' with wrong number of `outputs'\n" ); return false; fi; fi; return true; end; ############################################################################# ## #F AGR.TestWordsSLDDefault( , , , , , #F ) ## ## For the straight line decision that is returned by ## when this is called ## with the same arguments, ## it is checked that it is internally consistent and that it can be ## evaluated in all relevant representations. ## AGR.TestWordsSLDDefault:= function( tocid, name, file, type, format, verbose ) local filename, prog, result, gapname, orderfunc, std, entry, gens; # Read the program. if tocid = "local" then tocid:= "dataword"; fi; prog:= AGR.FileContents( tocid, name, file, type ); if prog = fail then Print( "#E file `", file, "' is corrupted\n" ); return false; fi; # Check consistency. if not IsInternallyConsistent( prog.program ) then Print( "#E program `", file, "' not internally consistent\n" ); return false; fi; prog:= prog.program; # Evaluate the program in *all* relevant representations. result:= true; gapname:= First( AtlasOfGroupRepresentationsInfo.GAPnames, pair -> name = pair[2] ); if gapname = fail then Print( "#E problem: no GAP name for `", name, "'\n" ); return false; fi; gapname:= gapname[1]; orderfunc:= function( g ) if IsMatrix( g ) then return OrderMatTrial( g, 10000 ); else return Order( g ); fi; end; std:= ParseBackwards( file, format ); std:= std[3]; for entry in AllAtlasGeneratingSetInfos( gapname, std ) do gens:= AtlasGenerators( entry.identifier ); if gens <> fail then if not ResultOfStraightLineDecision( prog, gens.generators, orderfunc ) then Print( "#E program `", file, "' does not fit to\n#E `", entry.identifier, "'\n" ); result:= false; fi; fi; od; return result; end; ############################################################################# ## #F AGR.TestFileHeadersDefault( , , , , , #F ) ## AGR.TestFileHeadersDefault:= function( tocid, groupname, entry, type, dim, special ) local filename, name, mats; # Try to read the file. if tocid = "local" then tocid:= "datagens"; fi; dim:= [ dim, dim ]; filename:= entry[ Length( entry ) ]; mats:= AGR.FileContents( tocid, groupname, filename, type ); # Check that the file contains a list of matrices of the right dimension. if mats = fail then Print( "#E filename `", filename, "' not found\n" ); return false; elif not ( IsList( mats ) and ForAll( mats, IsMatrix ) ) then Print( "#E file `", filename, "' does not contain a list of matrices\n" ); return false; elif ForAny( mats, mat -> DimensionsMat( mat ) <> dim ) then Print( "#E matrices in `",filename,"' have wrong dimensions\n" ); return false; fi; # Check the entries. special:= special( entry, mats, filename ); if IsString( special ) then Print( "#E ", special, "\n" ); return false; fi; return true; end; ############################################################################# ## #F AGRTestFilesMTX( , , , ) ## AGR.TestFilesMTX:= function( tocid, groupname, entry, type ) local result; if tocid = "local" then tocid:= "datagens"; fi; # Read the file(s). result:= AGR.FileContents( tocid, groupname, entry[ Length( entry ) ], type ) <> fail; if not result then Print( "#E file(s) `", entry[ Length( entry ) ], "' corrupted\n" ); fi; return result; end; ############################################################################# ## #F AtlasProgramInfoDefault( , , , ) ## BindGlobal( "AtlasProgramInfoDefault", function( type, identifier, prefix, groupname ) local prog, result; if IsString( identifier[2] ) and AGR.ParseFilenameFormat( identifier[2], type[2].FilenameFormat ) <> fail then return rec( standardization := identifier[3], identifier := identifier ); fi; return fail; end ); ############################################################################# ## #F AtlasProgramDefault( , , , ) ## BindGlobal( "AtlasProgramDefault", function( type, identifier, prefix, groupname ) local prog, result; if IsString( identifier[2] ) and AGR.ParseFilenameFormat( identifier[2], type[2].FilenameFormat ) <> fail then prog:= AGR.FileContents( prefix, groupname, identifier[2], type ); if prog <> fail then result:= rec( program := prog.program, standardization := identifier[3], identifier := identifier ); if IsBound( prog.outputs ) then result.outputs:= prog.outputs; fi; return result; fi; fi; return fail; end ); ############################################################################# ## #F AGR.CheckOneCondition( [, ], ) ## ## This function always returns `true'; it changes in place. ## AGR.CheckOneCondition:= function( arg ) local func, detect, condlist, pos, val; func:= arg[1]; if Length( arg ) = 2 then condlist:= arg[2]; else detect:= arg[2]; condlist:= arg[3]; fi; pos:= Position( condlist, func ); if pos = fail then # The function does not occur as a condition. return true; fi; while pos <> fail do if Length( arg ) = 2 then # Support `IsPermGroup' etc. *without* subsequent `true'. Unbind( condlist[ pos ] ); else if pos = Length( condlist ) then # Keep `condlist' unchanged. # If there is a call without then it will remove the entry. return true; fi; val:= condlist[ pos+1 ]; if ( IsString( val ) and detect( val ) ) or ( not IsList( val ) and detect( val ) ) or ( IsList( val ) and ForAny( val, detect ) ) then Unbind( condlist[ pos ] ); Unbind( condlist[ pos+1 ] ); fi; fi; pos:= Position( condlist, func, pos ); od; return true; end; ############################################################################# ## #F AGR.DeclareDataType( , , ) ## ## Check that the necessary components are bound, ## and add default values if necessary. ## AGR.DeclareDataType:= function( kind, name, record ) local types, nam; # Check that the type does not yet exist. types:= AtlasOfGroupRepresentationsInfo.TableOfContents.types; if ForAny( types.( kind ), x -> x[1] = name ) then Error( "data type exists already" ); fi; record:= ShallowCopy( record ); # Check mandatory components. for nam in [ "FilenameFormat", "AddFileInfo", "ReadAndInterpretDefault" ] do if not IsBound( record.( nam ) ) then Error( "the component `", nam, "' must be bound in " ); fi; od; # Add default components. if not IsBound( record.DisplayOverviewInfo ) then record.DisplayOverviewInfo:= fail; fi; if not IsBound( record.TOCEntryString ) then record.TOCEntryString := TOCEntryStringDefault; fi; if not IsBound( record.PostprocessFileInfo ) then record.PostprocessFileInfo := Ignore; fi; if kind = "rep" then for nam in [ "DisplayGroup", "AddDescribingComponents" ] do if not IsBound( record.( nam ) ) then Error( "the component `", nam, "' must be bound in " ); fi; od; if not IsBound( record.AccessGroupCondition ) then record.AccessGroupCondition := ReturnFalse; fi; if not IsBound( record.TestFileHeaders ) then record.TestFileHeaders := ReturnTrue; fi; if not IsBound( record.TestFiles ) then record.TestFiles := ReturnTrue; fi; elif kind = "prg" then if not IsBound( record.DisplayPRG ) then record.DisplayPRG := function( tocs, name, std, stdavail ) return []; end; fi; if not IsBound( record.AccessPRG ) then record.AccessPRG := function( record, std, conditions ) return fail; end; fi; if not IsBound( record.AtlasProgram ) then record.AtlasProgram := AtlasProgramDefault; fi; if not IsBound( record.AtlasProgramInfo ) then record.AtlasProgramInfo := AtlasProgramInfoDefault; fi; else Error( " must be one of \"rep\", \"prg\"" ); fi; # Add the pair. Add( types.( kind ), [ name, record, kind ] ); # Clear the cache. types.cache:= []; end; ############################################################################# ## #F AGR.DataTypes( [, ] ) ## ## returns the list of pairs [ name, record ] ## as declared for the kinds in question. AGR.DataTypes:= function( arg ) local types, result, kind; types:= AtlasOfGroupRepresentationsInfo.TableOfContents.types; result:= First( types.cache, x -> x[1] = arg ); if result = fail then result:= []; for kind in arg do if IsBound( types.( kind ) ) then Append( result, types.( kind ) ); fi; od; result:= [ arg, result ]; Add( types.cache, result ); fi; return result[2]; end; ############################################################################# ## #E atlasrep/gap/brmindeg.g0000644000175000017500000003414211605511702013523 0ustar samsam############################################################################# ## #W brmindeg.g GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2007, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains a Browse application for showing the minimal degree ## data in a table. ## ############################################################################# ## #F BrowseMinimalDegrees( [] ) ## ## <#GAPDoc Label="BrowseMinimalDegrees"> ## ## ## ## ## the list of info records for the clicked representations. ## ## ## If the &GAP; package Browse (see ) ## is loaded then this function is available. ## It opens a browse table whose rows correspond to the groups for which the ## ATLAS of Group Representations contains ## some information about minimal degrees, ## whose columns correspond to the characteristics that occur, ## and whose entries are the known minimal degrees. ##

## if IsBound( BrowseMinimalDegrees ) then ## > down:= NCurses.keys.DOWN;; DOWN:= NCurses.keys.NPAGE;; ## > right:= NCurses.keys.RIGHT;; END:= NCurses.keys.END;; ## > enter:= NCurses.keys.ENTER;; nop:= [ 14, 14, 14 ];; ## > # just scroll in the table ## > BrowseData.SetReplay( Concatenation( [ DOWN, DOWN, DOWN, ## > right, right, right ], "sedddrrrddd", nop, nop, "Q" ) ); ## > BrowseMinimalDegrees();; ## > # restrict the table to the groups with minimal ordinary degree 6 ## > BrowseData.SetReplay( Concatenation( "scf6", ## > [ down, down, right, enter, enter ] , nop, nop, "Q" ) ); ## > BrowseMinimalDegrees();; ## > BrowseData.SetReplay( false ); ## > fi; ## ]]> ##

## If an argument groupnames is given then it must be a list of ## group names of the ATLAS of Group Representations; ## the browse table is then restricted to the rows corresponding to these ## group names and to the columns that are relevant for these groups. ## A perhaps interesting example is the subtable with the data concerning ## sporadic simple groups and their covering groups, ## which has been published in . ## This table can be shown as follows. ##

## if IsBound( BrowseMinimalDegrees ) then ## > # just scroll in the table ## > BrowseData.SetReplay( Concatenation( [ DOWN, DOWN, DOWN, END ], ## > "rrrrrrrrrrrrrr", nop, nop, "Q" ) ); ## > BrowseMinimalDegrees( BibliographySporadicSimple.groupNamesJan05 );; ## > fi; ## ]]> ##

## The browse table does not contain rows for the groups ## 6.M_{22}, 12.M_{22}, 6.Fi_{22}. ## Note that in spite of the title of , the entries in ## Table 1 of this paper are in fact the minimal degrees of faithful ## irreducible representations, and in the above three cases, ## these degrees are larger than the minimal degrees of faithful ## representations. ## The underlying data of the browse table is about the minimal faithful ## (but not necessarily irreducible) degrees. ##

## The return value of is the list of ## values for those representations ## that have been clicked in visual mode. ##

## The variant without arguments of this function is also available ## in the menu shown by . ## ## ## <#/GAPDoc> ## BindGlobal( "BrowseMinimalDegrees", function( arg ) local data, name, char, lastj, labelsrow, mat, src, i, entry, pos, j, perm, info, file, parse, keys, modes, newactions, showaction, mode, table, result; if Length( arg ) = 0 then data:= MinimalRepresentationInfoData.datalist; elif Length( arg ) = 1 and IsList( arg[1] ) then data:= []; for name in arg[1] do Append( data, Filtered( MinimalRepresentationInfoData.datalist, x -> x[1] = name ) ); od; if IsEmpty( data ) then return []; fi; else Error( "usage: BrowseMinimalDegrees( [] )" ); fi; char:= Set( List( Filtered( data, x -> x[2][1] = "Characteristic" ), x -> x[2][2] ) ); lastj:= Length( char ) + 1; labelsrow:= []; mat:= []; src:= []; for i in [ 1 .. Length( data ) ] do entry:= data[i]; pos:= Position( labelsrow, entry[1] ); if pos = fail then pos:= Length( labelsrow ) + 1; labelsrow[ pos ]:= entry[1]; mat[ pos ]:= []; src[ pos ]:= []; fi; if entry[2][1] = "Characteristic" and IsInt( entry[3] ) then j:= Position( char, entry[2][2] ); if OneAtlasGeneratingSetInfo( labelsrow[ pos ], Characteristic, entry[2][2], Dimension, entry[3] ) = fail then mat[ pos ][j]:= String( entry[3] ); else mat[ pos ][j]:= rec( rows:= [ [ NCurses.attrs.BOLD, true, NCurses.ColorAttr( "blue", -1 ), true, String( entry[3] ) ] ], align:= "r" ); fi; if not IsBound( src[ pos ][j] ) then src[ pos ][j]:= []; fi; AddSet( src[ pos ][j], entry[4] ); elif entry[2] = "NrMovedPoints" then if OneAtlasGeneratingSetInfo( labelsrow[ pos ], NrMovedPoints, entry[3] ) = fail then mat[ pos ][ lastj ]:= String( entry[3] ); else mat[ pos ][ lastj ]:= rec( rows:= [ [ NCurses.attrs.BOLD, true, NCurses.ColorAttr( "blue", -1 ), true, String( entry[3] ) ] ], align:= "r" ); fi; if not IsBound( src[ pos ][ lastj ] ) then src[ pos ][ lastj ]:= []; fi; AddSet( src[ pos ][ lastj ], entry[4] ); fi; od; if Length( arg ) = 0 then # Sort the rows. perm:= Sortex( List( labelsrow, BrowseData.SplitStringIntoNumbersAndNonnumbers ) ); #T really better than BrowseData.CompareAsNumbersAndNonnumbers? labelsrow:= Permuted( labelsrow, perm ); mat:= Permuted( mat, perm ); src:= Permuted( src, perm ); fi; # Fill missing entries with a question mark. for i in [ 1 .. Length( mat ) ] do info:= First( AtlasOfGroupRepresentationsInfo.GAPnames, x -> x[1] = labelsrow[i] ); for j in [ 1 .. Length( char ) ] do if not IsBound( mat[i][j] ) then if char[j] = 0 or ( IsList( info ) and IsBound( info[3].size ) and info[3].size mod char[j] = 0 ) then mat[i][j]:= "?"; fi; fi; od; # perm. degree if not IsBound( mat[i][ lastj ] ) then mat[i][ lastj ]:= "?"; fi; od; # Load the bibliographic data. file:= Filename( DirectoriesPackageLibrary( "atlasrep", "bibl" ), "mindegbib.xml" ); parse:= ParseBibXMLextFiles( file ); keys:= List( parse.entries, e -> RecBibXMLEntry( e, "Text", parse.strings ).Label ); # Construct the extended modes if necessary. if not IsBound( BrowseData.defaults.work.customizedModes.brmindeg ) then # Create a shallow copy of each default mode for `Browse', and add # new actions to those modes where an entry is selected: # - vb: Show BibTeX format of the selected entry in a pager # - vh: Show HTML format of the selected entry in a pager # - vt: Show text format of the selected entry in a pager modes:= List( BrowseData.defaults.work.availableModes, BrowseData.ShallowCopyMode ); BrowseData.defaults.work.customizedModes.brmindeg:= modes; newactions:= [ [ "vb", "BibTeX" ], [ "vh", "HTML" ], [ "vt", "Text" ] ]; showaction:= pair -> [ [ pair[1] ], rec( helplines:= [ Concatenation( "show ", pair[2], " format of bibl. info" ), "for the selected entry in a pager" ], action:= function( t ) local row, col, disp, i, pos; if t.dynamic.selectedEntry <> [ 0, 0 ] then row:= t.dynamic.indexRow[ t.dynamic.selectedEntry[1] ] / 2; col:= t.dynamic.indexCol[ t.dynamic.selectedEntry[2] ] / 2; if IsBound( src[ row ][ col ] ) then disp:= []; for i in src[ row ][ col ] do pos:= Position( keys, i ); if pos <> fail then Add( disp, parse.entries[ pos ] ); fi; od; if not IsEmpty( disp ) then NCurses.hide_panel( t.dynamic.statuspanel ); NCurses.Pager( JoinStringsWithSeparator( List( disp, e -> BrowseData.SimplifiedString( StringBibXMLEntry( e, pair[2], parse.strings ) ) ), "\n" ) ); NCurses.show_panel( t.dynamic.statuspanel ); fi; fi; fi; t.dynamic.changed:= true; end ) ]; newactions:= List( newactions, showaction ); for mode in modes do if mode.name in [ "select_entry", "select_row_and_entry", "select_column_and_entry" ] then BrowseData.SetActions( mode, newactions ); fi; od; else modes:= BrowseData.defaults.work.customizedModes.brmindeg; fi; # Construct the browse table. table:= rec( work:= rec( availableModes:= modes, align:= "ct", header:= t -> BrowseData.HeaderWithRowCounter( t, "Minimal Degrees of Representations", Length( mat ) ), footer:= rec( # Show the sources of the data. select_entry:= function( t ) local entry, e, pos; entry:= ""; if t.dynamic.selectedEntry <> [ 0, 0 ] then e:= src[ t.dynamic.indexRow[ t.dynamic.selectedEntry[1] ] / 2 ]; pos:= t.dynamic.indexCol[ t.dynamic.selectedEntry[2] ] / 2; if IsBound( e[ pos ] ) and not IsEmpty( e[ pos ] ) then entry:= Concatenation( "source: ", JoinStringsWithSeparator( e[ pos ], ", " ) ); fi; fi; return [ entry ]; end ), footerLength:= rec( select_entry:= 1 ), CategoryValues:= function( t, i, j ) local val; val:= t.work.main[ i/2 ][ j/2 ]; if NCurses.IsAttributeLine( val ) then val:= NCurses.SimpleString( val ); else val:= Concatenation( List( val.rows, NCurses.SimpleString ) ); fi; if 2 * Length( char ) < j then return [ Concatenation( "min. perm. degree = ", val ) ]; else return [ Concatenation( "char. ", String( char[ j/2 ] ), ": ", val ) ]; fi; end, main:= mat, labelsRow:= List( labelsrow, x -> [ rec( rows:= [ x ], align:= "l" ) ] ), labelsCol:= [ Concatenation( List( char, x -> rec( rows:= [ String( x ) ], align:= "r" ) ), [ "perm. degree" ] ) ], sepLabelsRow:= "|", sepLabelsCol:= "|", sepRow:= "-", sepCol:= Concatenation( [ "| " ], List( [ 1 .. Length( char ) ], x -> " | " ), [ " |" ] ), SpecialGrid:= BrowseData.SpecialGridLineDraw, Click:= rec( select_entry:= rec( helplines:= [ "add the representation to the result list" ], action:= function( t ) local i, j, entry; if t.dynamic.selectedEntry <> [ 0, 0 ] then i:= t.dynamic.indexRow[ t.dynamic.selectedEntry[1] ] / 2; j:= t.dynamic.indexCol[ t.dynamic.selectedEntry[2] ] / 2; if IsBound( mat[i][j] ) then entry:= mat[i][j]; if IsRecord( entry ) then entry:= First( entry.rows[1], IsString ); fi; if j <= Length( char ) then info:= OneAtlasGeneratingSetInfo( labelsrow[i], Characteristic, char[j], Dimension, Int( entry ) ); else info:= OneAtlasGeneratingSetInfo( labelsrow[i], NrMovedPoints, Int( entry ) ); fi; if not info in t.dynamic.Return then Add( t.dynamic.Return, info ); fi; fi; fi; end ), ), ), dynamic:= rec( sortFunctionsForColumns:= List( [ 0 .. Length( char ) ], x -> BrowseData.CompareLenLex ), Return:= [], activeModes:= [ First( modes, x -> x.name = "browse" ) ], ), ); # Show the browse table. result:= NCurses.BrowseGeneric( table ); # Construct the return value. return result; end ); ############################################################################# ## ## Add the Browse application to the list shown by `BrowseGapData'. ## BrowseGapDataAdd( "Minimal Degrees of Representations", BrowseMinimalDegrees, true, "\ the list of known minimal degrees for the groups of the \ Atlas of Group Representations, \ shown in a browse table with one column for each characteristic \ plus a column for the minimal permutation degree; \ available representations are shown in boldface blue, \ clicking on the table cell of such a representation adds the \ info record for it to the result list; \ the inputs vb, vh, vt open a pager showing the bibliographic sources \ of the selected entry if available; \ try ?BrowseMinimalDegrees for details" ); ############################################################################# ## #E atlasrep/gap/userpref.g0000644000175000017500000001254312701204553013571 0ustar samsam############################################################################# ## #W userpref.g GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2014, Lehrstuhl D für Mathematik, RWTH Aachen, Germany ## ## This file contains the declarations of the user preferences for the ## AtlasRep package. ## ############################################################################# ## #U AtlasRepDataDirectory ## ## <#GAPDoc Label="AtlasRepDataDirectory"> ## ## User preference AtlasRepDataDirectory ## ## The value must be a string that is the filename of a directory ## (in the sense of ) ## that contains the directories datagens and dataword ## in which downloaded data will be stored. ## The default is the installation path of the ## AtlasRep package (including a trailing slash symbol). ## ## <#/GAPDoc> ## DeclareUserPreference( rec( name:= "AtlasRepDataDirectory", description:= [ "The value must be a string that is the filename of a directory \ (in the sense of 'IsDirectoryPath') \ that contains the directories 'datagens' and 'dataword' \ in which those data will be stored that have to be downloaded. \ The default is the installation path of the AtlasRep package \ (including a trailing slash symbol)." ], default:= Filename( DirectoriesPackageLibrary( "atlasrep", "" ), "" ), package:= "AtlasRep", check:= function( val ) local name; if not ( IsString( val ) and IsDirectoryPath( val ) ) then Info( InfoWarning, 1, "the value of the preference 'AtlasRepDataDirectory' must be ", "a directory path" ); return false; elif val[ Length( val ) ] <> '/' then Info( InfoWarning, 1, "the value of the preference 'AtlasRepDataDirectory' must end ", "with '/'" ); return false; fi; for name in [ "datagens", "dataword" ] do if not IsDirectoryPath( Concatenation( val, name ) ) then Info( InfoWarning, 1, "the directory given by the preference ", "'AtlasRepDataDirectory'\n", "#I must contain subdirectories 'datagens' and 'dataword'" ); return false; fi; od; return true; end, ) ); ############################################################################# ## #U WriteMeatAxeFilesOfMode2 ## ## <#GAPDoc Label="WriteMeatAxeFilesOfMode2"> ## ## User preference WriteMeatAxeFilesOfMode2 ## ## The value true means that the function ## will encode permutation matrices via mode 2 descriptions, that is, ## the first entry in the header line is 2, and the following lines contain ## the positions of the nonzero entries. ## If the value is false (the default) then ## encodes permutation matrices ## via mode 1 or mode 6 descriptions, that is, ## the lines contain the matrix entries. ## ## <#/GAPDoc> ## DeclareUserPreference( rec( name:= "WriteMeatAxeFilesOfMode2", description:= [ "The value 'true' means that the function 'MeatAxeString' \ will encode permutation matrices via mode 2 descriptions, that is, \ the first entry in the header line is 2, and the following lines contain \ the positions of the nonzero entries. \ If the value is 'false' (the default) then 'MeatAxeString' encodes \ permutation matrices via mode 1 or mode 6 descriptions, that is, \ the lines contain the matrix entries." ], default:= false, values:= [ true, false ], multi:= false, package:= "AtlasRep", ) ); ############################################################################# ## #U BaseOfMeatAxePermutation ## ## <#GAPDoc Label="BaseOfMeatAxePermutation"> ## ## User preference BaseOfMeatAxePermutation ## ## The value 0 means that the function ## writes zero-based permutations, ## that is, permutations acting on the points from 0 to the ## degree minus one; this is achieved by shifting down all images of the ## &GAP; permutation by one. ## The value 1 (the default) means that the permutation stored in the ## binary file acts on the points from 1 to the degree. ##

## Up to version 2.3 of the C-&MeatAxe;, permutations in ## binary files were always one-based. ## Zero-based permutations were introduced in version 2.4, ## which still is able to read files containing one-based permutations. ## ## <#/GAPDoc> ## DeclareUserPreference( rec( name:= "BaseOfMeatAxePermutation", description:= [ "The value 0 means that the function 'CMtxBinaryFFMatOrPerm' \ writes zero-based permutations, \ that is, permutations acting on the points from 0 to the \ degree minus one; this is achieved by shifting down all images of the \ GAP permutation by one. \ The value 1 (the default) means that the permutation stored in the \ binary file acts on the points from 1 to the degree." ], default:= 1, values:= [ 0, 1 ], multi:= false, package:= "AtlasRep", ) ); ############################################################################# ## #E atlasrep/gap/interfac.gd0000644000175000017500000016223212676704200013703 0ustar samsam############################################################################# ## #W interfac.gd GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains the declaration part of the ``high level'' GAP ## interface to the ATLAS of Group Representations. ## ############################################################################# ## #F DisplayAtlasInfo( [][,][][,]["contents", ] #F [, IsPermGroup[, true]] #F [, NrMovedPoints, ] #F [, IsMatrixGroup[, true]] #F [, Characteristic,

][, Dimension, ] #F [, Position, ] #F [, Character, ] #F [, Identifier, ] ) #F DisplayAtlasInfo( [, ][, "contents", ] #F [, IsPermGroup[, true]] #F [, NrMovedPoints, ] #F [, IsMatrixGroup[, true]] #F [, Characteristic,

][, Dimension, ] #F [, Position, ] #F [, Character, ] #F [, Identifier, ] #F [, IsStraightLineProgram[, true]] ) ## ## <#GAPDoc Label="DisplayAtlasInfo"> ## ## ## ## ## ## This function lists the information available via the ## AtlasRep package, for the given input. ## Depending on whether remote access to data is enabled ## (see Section ), ## all the data provided by the &ATLAS; of Group Representations ## or only those in the local installation are considered. ##

## An interactive alternative to is the ## function , ## see . ##

## Called without arguments, prints an ## overview what information the &ATLAS; of Group Representations provides. ## One line is printed for each group G, with the following columns. ##

## ## group ## ## the &GAP; name of G (see ## Section ), ## ## # ## ## the number of faithful representations stored for G ## that satisfy the additional conditions given (see below), ## ## maxes ## ## the number of available straight line programs ## straight line program ## for computing generators of maximal subgroups of G, ## ## cl ## ## a + sign if at least one program for computing representatives ## of conjugacy classes of elements of G is stored, ## ## cyc ## ## a + sign if at least one program for computing representatives ## of classes of maximally cyclic subgroups of G is stored, ## ## out ## ## descriptions of outer automorphisms of G for which at least ## one program is stored, ## ## fnd ## ## a + sign if at least one program is available for finding ## standard generators, ## ## chk ## ## a + sign if at least one program is available for checking ## whether a set of generators is a set of standard generators, ## and ## ## prs ## ## a + sign if at least one program is available that encodes a ## presentation. ## ## ##

## (The list can be printed to the screen or can be fed into a pager, ## see Section .) ##

## Called with a list listofnames of strings that are &GAP; names for ## a group from the &ATLAS; of Group Representations, ## prints the overview described above ## but restricted to the groups in this list. ##

## In addition to or instead of listofnames, ## the string "contents" and a description sources of the ## data may be given about which the overview is formed. ## See below for admissible values of sources. ##

## Called with a string gapname that is a &GAP; name for a group from ## the &ATLAS; of Group Representations, ## prints an overview of the information ## that is available for this group. ## One line is printed for each faithful representation, ## showing the number of this representation ## (which can be used in calls of ), ## and a string of one of the following forms; ## in both cases, id is a (possibly empty) string. ##

## ## G <= Sym(nid) ## ## denotes a permutation representation of degree n, ## for example G <= Sym(40a) and G <= Sym(40b) ## denote two (nonequivalent) representations of degree 40. ## ## G <= GL(nid,descr) ## ## denotes a matrix representation of dimension n over a ## coefficient ring described by descr, ## which can be a prime power, ## (denoting the ring of integers), ## a description of an algebraic extension field, ## (denoting an unspecified algebraic extension field), or ## ℤ/m for an integer m ## (denoting the ring of residues mod m); ## for example, G <= GL(2a,4) and G <= GL(2b,4) ## denote two (nonequivalent) representations of dimension 2 over ## the field with four elements. ## ## ##

## After the representations, ## the programs available for gapname are listed. ##

## The following optional arguments can be used to restrict the overviews. ##

## ## std ## ## must be a positive integer or a list of positive integers; ## if it is given then only those representations are considered ## that refer to the std-th set of standard generators or the ## i-th set of standard generators, for i in std ## (see ## Section ), ## ## "contents" and sources ## ## for a string or a list of strings sources, ## restrict the data about which the overview is formed; ## if sources is the string "public" then only non-private ## data ## (see Chapter ) ## are considered, ## if sources is a string that denotes a private extension in the ## sense of a dirid argument of ## then ## only the data that belong to this private extension are considered; ## also a list of such strings may be given, then the union of these ## data is considered, ## ## Identifier and id ## ## restrict to representations with identifier component in the ## list id (note that this component is itself a list, entering ## this list is not admissible), ## or satisfying the function id, ## ## IsPermGroup and true ## ## restrict to permutation representations, ## ## NrMovedPoints and n ## ## for a positive integer, a list of positive integers, ## or a property n, ## restrict to permutation representations of degree equal to n, ## or in the list n, or satisfying the function n, ## ## NrMovedPoints and the string "minimal" ## ## restrict to faithful permutation representations of minimal degree ## (if this information is available), ## ## IsTransitive and true or false ## ## restrict to transitive or intransitive permutation representations ## (if this information is available), ## ## IsPrimitive and true or false ## ## restrict to primitive or imprimitive permutation representations ## (if this information is available), ## ## Transitivity and n ## ## for a nonnegative integer, a list of nonnegative integers, ## or a property n, ## restrict to permutation representations of transitivity equal to ## n, or in the list n, or satisfying the function n ## (if this information is available), ## ## RankAction and n ## ## for a nonnegative integer, a list of nonnegative integers, ## or a property n, ## restrict to permutation representations of rank equal to ## n, or in the list n, or satisfying the function n ## (if this information is available), ## ## IsMatrixGroup and true ## ## restrict to matrix representations, ## ## Characteristic and p ## ## for a prime integer, a list of prime integers, or a property p, ## restrict to matrix representations over fields of characteristic equal ## to p, or in the list p, ## or satisfying the function p ## (representations over residue class rings that are not fields can be ## addressed by entering fail as the value of p), ## ## Dimension and n ## ## for a positive integer, a list of positive integers, ## or a property n, ## restrict to matrix representations of dimension equal to n, ## or in the list n, or satisfying the function n, ## ## Characteristic, p, Dimension, ## and the string "minimal" ## ## for a prime integer p, ## restrict to faithful matrix representations over fields ## of characteristic p that have minimal dimension ## (if this information is available), ## ## Ring and R ## ## for a ring or a property R, ## restrict to matrix representations over this ring ## or satisfying this function ## (note that the representation might be defined over a proper subring ## of R), ## ## Ring, R, Dimension, ## and the string "minimal" ## ## for a ring R, restrict to faithful matrix representations ## over this ring that have minimal dimension ## (if this information is available), ## ## Character and chi ## ## for a class function or a list of class functions chi, ## restrict to matrix representations with these characters ## (note that the underlying characteristic of the class function, ## see Section , ## determines the characteristic of the matrices), ## and ## ## IsStraightLineProgram and true ## ## restrict to straight line programs, ## straight line decisions ## (see Section ), ## and black box programs ## (see Section ). ## ## ##

## Note that the above conditions refer only to the information that is ## available without accessing the representations. ## For example, if it is not stored in the table of contents whether a ## permutation representation is primitive then this representation does not ## match an IsPrimitive condition in . ##

## If minimality information is requested and no available ## representation matches this condition then either no minimal ## representation is available or the information about the minimality ## is missing. ## See for checking whether the ## minimality information is available for the group in question. ## Note that in the cases where the string "minimal" occurs as an ## argument, is called with third ## argument "lookup"; ## this is because the stored information was precomputed just for ## the groups in the &ATLAS; of Group Representations, ## so trying to compute non-stored minimality information (using other ## available databases) will hardly be successful. ##

## The representations are ordered as follows. ## Permutation representations come first (ordered according to their ## degrees), ## followed by matrix representations over finite fields ## (ordered first according to the field size and second according to ## the dimension), matrix representations over the integers, ## and then matrix representations over algebraic extension fields ## (both kinds ordered according to the dimension), ## the last representations are matrix representations over residue class ## rings (ordered first according to the modulus and second according to the ## dimension). ##

## The maximal subgroups are ordered according to decreasing group order. ## For an extension G.p of a simple group G by an outer ## automorphism of prime order p, ## this means that G is the first maximal subgroup ## and then come the extensions of the maximal subgroups of G and the ## novelties; ## so the n-th maximal subgroup of G and the n-th ## maximal subgroup of G.p are in general not related. ## (This coincides with the numbering used for the ## attribute for character tables.) ##

## DisplayAtlasInfo( [ "M11", "A5" ] ); ## group | # | maxes | cl | cyc | out | fnd | chk | prs ## ------+----+-------+----+-----+-----+-----+-----+---- ## M11 | 42 | 5 | + | + | | + | + | + ## A5 | 18 | 3 | | | | | + | + ## ]]> ##

## The above output means that the &ATLAS; of Group Representations contains ## 42 representations of the Mathieu group M_{11}, ## straight line programs for computing generators of representatives ## of all five classes of maximal subgroups, ## for computing representatives of the conjugacy classes of elements ## and of generators of maximally cyclic subgroups, ## contains no straight line program for applying outer automorphisms ## (well, in fact M_{11} admits no nontrivial outer automorphism), ## and contains straight line decisions that check a set of generators ## or a set of group elements for being a set of standard generators. ## Analogously, ## 18 representations of the alternating group A_5 are ## available, straight line programs for computing generators of ## representatives of all three classes of maximal subgroups, ## and no straight line programs for computing representatives ## of the conjugacy classes of elements, ## of generators of maximally cyclic subgroups, ## and no for computing images under outer automorphisms; ## straight line decisions for checking the standardization of generators ## or group elements are available. ##

## DisplayAtlasInfo( "A5", IsPermGroup, true ); ## Representations for G = A5: (all refer to std. generators 1) ## --------------------------- ## 1: G <= Sym(5) 3-trans., on cosets of A4 (1st max.) ## 2: G <= Sym(6) 2-trans., on cosets of D10 (2nd max.) ## 3: G <= Sym(10) rank 3, on cosets of S3 (3rd max.) ## gap> DisplayAtlasInfo( "A5", NrMovedPoints, [ 4 .. 9 ] ); ## Representations for G = A5: (all refer to std. generators 1) ## --------------------------- ## 1: G <= Sym(5) 3-trans., on cosets of A4 (1st max.) ## 2: G <= Sym(6) 2-trans., on cosets of D10 (2nd max.) ## ]]> ##

## The first three representations stored for A_5 are ## (in fact primitive) permutation representations. ##

## DisplayAtlasInfo( "A5", Dimension, [ 1 .. 3 ] ); ## Representations for G = A5: (all refer to std. generators 1) ## --------------------------- ## 8: G <= GL(2a,4) ## 9: G <= GL(2b,4) ## 10: G <= GL(3,5) ## 12: G <= GL(3a,9) ## 13: G <= GL(3b,9) ## 17: G <= GL(3a,Field([Sqrt(5)])) ## 18: G <= GL(3b,Field([Sqrt(5)])) ## gap> DisplayAtlasInfo( "A5", Characteristic, 0 ); ## Representations for G = A5: (all refer to std. generators 1) ## --------------------------- ## 14: G <= GL(4,Z) ## 15: G <= GL(5,Z) ## 16: G <= GL(6,Z) ## 17: G <= GL(3a,Field([Sqrt(5)])) ## 18: G <= GL(3b,Field([Sqrt(5)])) ## ]]> ##

## The representations with number between 4 and 13 are ## (in fact irreducible) matrix representations over various finite fields, ## those with numbers 14 to 16 are integral matrix ## representations, ## and the last two are matrix representations over the field generated by ## \sqrt{{5}} over the rational number field. ##

## DisplayAtlasInfo( "A5", Identifier, "a" ); ## Representations for G = A5: (all refer to std. generators 1) ## --------------------------- ## 4: G <= GL(4a,2) ## 8: G <= GL(2a,4) ## 12: G <= GL(3a,9) ## 17: G <= GL(3a,Field([Sqrt(5)])) ## ]]> ##

## Each of the representations with the numbers 4, 8, 12, ## and 17 is labeled with the distinguishing letter a. ##

## DisplayAtlasInfo( "A5", NrMovedPoints, IsPrimeInt ); ## Representations for G = A5: (all refer to std. generators 1) ## --------------------------- ## 1: G <= Sym(5) 3-trans., on cosets of A4 (1st max.) ## gap> DisplayAtlasInfo( "A5", Characteristic, IsOddInt ); ## Representations for G = A5: (all refer to std. generators 1) ## --------------------------- ## 6: G <= GL(4,3) ## 7: G <= GL(6,3) ## 10: G <= GL(3,5) ## 11: G <= GL(5,5) ## 12: G <= GL(3a,9) ## 13: G <= GL(3b,9) ## gap> DisplayAtlasInfo( "A5", Dimension, IsPrimeInt ); ## Representations for G = A5: (all refer to std. generators 1) ## --------------------------- ## 8: G <= GL(2a,4) ## 9: G <= GL(2b,4) ## 10: G <= GL(3,5) ## 11: G <= GL(5,5) ## 12: G <= GL(3a,9) ## 13: G <= GL(3b,9) ## 15: G <= GL(5,Z) ## 17: G <= GL(3a,Field([Sqrt(5)])) ## 18: G <= GL(3b,Field([Sqrt(5)])) ## gap> DisplayAtlasInfo( "A5", Ring, IsFinite and IsPrimeField ); ## Representations for G = A5: (all refer to std. generators 1) ## --------------------------- ## 4: G <= GL(4a,2) ## 5: G <= GL(4b,2) ## 6: G <= GL(4,3) ## 7: G <= GL(6,3) ## 10: G <= GL(3,5) ## 11: G <= GL(5,5) ## ]]> ##

## The above examples show how the output can be restricted using a property ## (a unary function that returns either true or false) ## that follows , ## , ## , ## or ## in the argument list of . ##

## DisplayAtlasInfo( "A5", IsStraightLineProgram, true ); ## Programs for G = A5: (all refer to std. generators 1) ## -------------------- ## presentation ## std. gen. checker ## maxes (all 3): ## 1: A4 ## 2: D10 ## 3: S3 ## ]]> ##

## Straight line programs are available for computing generators of ## representatives of the three classes of maximal subgroups of A_5, ## and a straight line decision for checking whether given generators are ## in fact standard generators is available as well as a presentation ## in terms of standard generators, ## see . ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "DisplayAtlasInfo" ); ############################################################################# ## #F AtlasGenerators( , [, ] ) #F AtlasGenerators( ) ## ## <#GAPDoc Label="AtlasGenerators"> ## ## ## ## ## ## a record containing generators for a representation, or fail. ## ## ## In the first form, gapname must be a string denoting a &GAP; name ## (see ## Section ) ## of a group, and repnr a positive integer. ## If the &ATLAS; of Group Representations contains at least repnr ## representations for the group with &GAP; name gapname then ## , ## when called with gapname and repnr, ## returns an immutable record describing the repnr-th ## representation; ## otherwise fail is returned. ## If a third argument maxnr, a positive integer, ## is given then an immutable record describing the restriction of the ## repnr-th representation to the maxnr-th maximal subgroup is ## returned. ##

## The result record has at least the following components. ##

## ## generators ## ## a list of generators for the group, ## ## groupname ## ## the &GAP; name of the group (see ## Section ), ## ## identifier ## ## a &GAP; object (a list of filenames plus additional information) ## that uniquely determines the representation; ## the value can be used as identifier argument of ## . ## ## repnr ## ## the number of the representation in the current session, ## equal to the argument repnr if this is given. ## ## standardization ## ## the positive integer denoting the underlying standard generators, ## ## ##

## Additionally, the group order may be stored in the component size, ## and describing components may be available that depend on the data type ## of the representation: ## For permutation representations, these are p for the number of ## moved points, id for the distinguishing string as described for ## , and information about primitivity, ## point stabilizers etc. if available; ## for matrix representations, these are dim for the dimension of the ## matrices, ring (if known) for the ring generated by the matrix ## entries, id for the distinguishing string, and information about ## the character if available. ##

## It should be noted that the number repnr refers to the number ## shown by in the current session; ## it may be that after the addition of new representations, ## repnr refers to another representation. ##

## The alternative form of , ## with only argument identifier, ## can be used to fetch the result record with identifier value equal ## to identifier. ## The purpose of this variant is to access the same representation ## also in different &GAP; sessions. ##

## gens1:= AtlasGenerators( "A5", 1 ); ## rec( generators := [ (1,2)(3,4), (1,3,5) ], groupname := "A5", ## id := "", ## identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], ## isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, ## repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", ## standardization := 1, transitivity := 3, type := "perm" ) ## gap> gens8:= AtlasGenerators( "A5", 8 ); ## rec( dim := 2, ## generators := [ [ [ Z(2)^0, 0*Z(2) ], [ Z(2^2), Z(2)^0 ] ], ## [ [ 0*Z(2), Z(2)^0 ], [ Z(2)^0, Z(2)^0 ] ] ], groupname := "A5", ## id := "a", ## identifier := [ "A5", [ "A5G1-f4r2aB0.m1", "A5G1-f4r2aB0.m2" ], 1, ## 4 ], repname := "A5G1-f4r2aB0", repnr := 8, ring := GF(2^2), ## size := 60, standardization := 1, type := "matff" ) ## gap> gens17:= AtlasGenerators( "A5", 17 ); ## rec( dim := 3, ## generators := ## [ [ [ -1, 0, 0 ], [ 0, -1, 0 ], [ -E(5)-E(5)^4, -E(5)-E(5)^4, 1 ] ## ], [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ], ## groupname := "A5", id := "a", ## identifier := [ "A5", "A5G1-Ar3aB0.g", 1, 3 ], ## repname := "A5G1-Ar3aB0", repnr := 17, ring := NF(5,[ 1, 4 ]), ## size := 60, standardization := 1, type := "matalg" ) ## ]]> ##

## Each of the above pairs of elements generates a group isomorphic to ## A_5. ##

## gens1max2:= AtlasGenerators( "A5", 1, 2 ); ## rec( generators := [ (1,2)(3,4), (2,3)(4,5) ], groupname := "D10", ## identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5, 2 ], ## repnr := 1, size := 10, standardization := 1 ) ## gap> id:= gens1max2.identifier;; ## gap> gens1max2 = AtlasGenerators( id ); ## true ## gap> max2:= Group( gens1max2.generators );; ## gap> Size( max2 ); ## 10 ## gap> IdGroup( max2 ) = IdGroup( DihedralGroup( 10 ) ); ## true ## ]]> ##

## The elements stored in gens1max2.generators describe the ## restriction of the first representation of A_5 to a group in the ## second class of maximal subgroups of A_5 according to the list in ## the &ATLAS; of Finite Groups ; ## this subgroup is isomorphic to the dihedral group D_{10}. ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasGenerators" ); ############################################################################# ## #F AtlasProgramInfo( [, ][, "maxes"], ) #F AtlasProgramInfo( [, ], "classes" ) #F AtlasProgramInfo( [, ], "cyclic" ) #F AtlasProgramInfo( [, ], "automorphism", ) #F AtlasProgramInfo( [, ], "check" ) #F AtlasProgramInfo( [, ], "pres" ) #F AtlasProgramInfo( [, ], "find" ) #F AtlasProgramInfo( , , "restandardize", ) #F AtlasProgramInfo( [, ], "other", ) ## ## <#GAPDoc Label="AtlasProgramInfo"> ## ## ## ## ## a record describing a program, or fail. ## ## ## takes the same arguments as ## , and returns a similar result. ## The only difference is that the records returned by ## have no components program and ## outputs. ## The idea is that one can use for ## testing whether the program in question is available at all, ## but without transferring it from a remote server. ## The identifier component of the result of ## can then be used to fetch the program ## with . ## ## AtlasProgramInfo( "J1", "cyclic" ); ## rec( groupname := "J1", identifier := [ "J1", "J1G1-cycW1", 1 ], ## standardization := 1 ) ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasProgramInfo" ); ############################################################################# ## #F AtlasProgram( [, ][, "maxes"], ) #F AtlasProgram( [, ], "classes" ) #F AtlasProgram( [, ], "cyclic" ) #F AtlasProgram( [, ], "automorphism", ) #F AtlasProgram( [, ], "check" ) #F AtlasProgram( [, ], "presentation" ) #F AtlasProgram( [, ], "find" ) #F AtlasProgram( , , "restandardize", ) #F AtlasProgram( [, ], "other", ) #F AtlasProgram( ) ## ## <#GAPDoc Label="AtlasProgram"> ## ## ## ## ## ## a record containing a program, or fail. ## ## ## In the first form, gapname must be a string denoting a &GAP; name ## (see Section ##  ) ## of a group G, say. ## If the &ATLAS; of Group Representations contains a straight line program ## (see Section ) ## or straight line decision ## (see Section ) ## or black box program ## (see Section ) ## as described by the remaining arguments (see below) then ## returns an immutable record ## containing this program. ## Otherwise fail is returned. ##

## If the optional argument std is given, only those straight line ## programs/decisions are considered ## that take generators from the std-th set ## of standard generators of G as input, ## see Section . ##

## The result record has the following components. ##

## ## program ## ## the required straight line program/decision, or black box program, ## ## standardization ## ## the positive integer denoting the underlying standard generators of ## G, ## ## identifier ## ## a &GAP; object (a list of filenames plus additional information) ## that uniquely determines the program; ## the value can be used as identifier argument of ## (see below). ## ## ##

## In the first form, the last arguments must be as follows. ##

## ## (the string "maxes" and) a positive integer maxnr ## ## ## the required program computes generators of the maxnr-th ## maximal subgroup of the group with &GAP; name gapname. ## straight line program ## maximal subgroups ##

## In this case, the result record of also ## may contain a component size, ## whose value is the order of the maximal subgroup in question. ## ## one of the strings "classes" or "cyclic" ## ## the required program computes representatives of conjugacy classes ## of elements or representatives of generators of maximally cyclic ## subgroups of G, respectively. ## straight line program ## class representatives ## ## straight line program ## cyclic subgroups ## maximally cyclic subgroups ##

## See  and  ## for the background concerning these straight line programs. ## In these cases, the result record of ## also contains a component outputs, ## whose value is a list of class names of the outputs, ## as described in ## Section . ## ## the strings "automorphism" and autname ## ## straight line program ## automorphisms ## the required program computes images of standard generators under ## the outer automorphism of G that is given by this string. ##

## Note that a value "2" of autname means that the square of ## the automorphism is an inner automorphism of G (not necessarily ## the identity mapping) but the automorphism itself is not. ## ## the string "check" ## ## straight line decision ## ## the required result is a straight line decision that ## takes a list of generators for G ## and returns true if these generators are standard generators of ## G w.r.t. the standardization std, ## and false otherwise. ## ## the string "presentation" ## ## straight line decision ## ## the required result is a straight line decision that ## takes a list of group elements ## and returns true if these elements are standard generators of ## G w.r.t. the standardization std, ## and false otherwise. ##

## See for an ## example how to derive defining relators for G in terms of the ## standard generators from such a straight line decision. ## ## the string "find" ## ## black box program ## ## the required result is a black box program that takes G ## and returns a list of standard generators of G, ## w.r.t. the standardization std. ## ## the string "restandardize" and an integer std2 ## ## straight line program ## the required result is a straight line program that computes ## standard generators of G w.r.t. the std2-th set ## of standard generators of G; ## in this case, the argument std must be given. ## ## the strings "other" and descr ## ## straight line program ## the required program is described by descr. ## ## ##

## The second form of , ## with only argument the list identifier, ## can be used to fetch the result record with identifier value equal ## to identifier. ## prog:= AtlasProgram( "A5", 2 ); ## rec( groupname := "A5", identifier := [ "A5", "A5G1-max2W1", 1 ], ## program := , size := 10, ## standardization := 1, subgroupname := "D10" ) ## gap> StringOfResultOfStraightLineProgram( prog.program, [ "a", "b" ] ); ## "[ a, bbab ]" ## gap> gens1:= AtlasGenerators( "A5", 1 ); ## rec( generators := [ (1,2)(3,4), (1,3,5) ], groupname := "A5", ## id := "", ## identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], ## isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, ## repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", ## standardization := 1, transitivity := 3, type := "perm" ) ## gap> maxgens:= ResultOfStraightLineProgram( prog.program, gens1.generators ); ## [ (1,2)(3,4), (2,3)(4,5) ] ## gap> maxgens = gens1max2.generators; ## true ## ]]> ##

## The above example shows that for restricting representations given by ## standard generators to a maximal subgroup of A_5, ## we can also fetch and apply the appropriate straight line program. ## Such a program ## (see ) ## takes standard generators of a group --in this example A_5-- ## as its input, and returns a list of elements in this group ## --in this example generators of the D_{10} subgroup we had met ## above-- ## which are computed essentially by evaluating structured words in terms of ## the standard generators. ##

## prog:= AtlasProgram( "J1", "cyclic" ); ## rec( groupname := "J1", identifier := [ "J1", "J1G1-cycW1", 1 ], ## outputs := [ "6A", "7A", "10B", "11A", "15B", "19A" ], ## program := , standardization := 1 ) ## gap> gens:= GeneratorsOfGroup( FreeGroup( "x", "y" ) );; ## gap> ResultOfStraightLineProgram( prog.program, gens ); ## [ (x*y)^2*((y*x)^2*y^2*x)^2*y^2, x*y, (x*(y*x*y)^2)^2*y, ## (x*y*x*(y*x*y)^3*x*y^2)^2*x*y*x*(y*x*y)^2*y, x*y*x*(y*x*y)^2*y, ## (x*y)^2*y ] ## ]]> ##

## The above example shows how to fetch and use straight line programs for ## computing generators of representatives of maximally cyclic subgroups ## of a given group. ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasProgram" ); ############################################################################# ## #F OneAtlasGeneratingSetInfo( [][, ] ) #F OneAtlasGeneratingSetInfo( [][, ], IsPermGroup[, true] ) #F OneAtlasGeneratingSetInfo( [][, ], NrMovedPoints, ) #F OneAtlasGeneratingSetInfo( [][, ], IsMatrixGroup[, true] ) #F OneAtlasGeneratingSetInfo( [][, ][, Characteristic,

] #F [, Dimension, ] ) #F OneAtlasGeneratingSetInfo( [][, ][, Ring, ] #F [, Dimension, ] ) #F OneAtlasGeneratingSetInfo( [,][ ,] Position, ) ## ## <#GAPDoc Label="OneAtlasGeneratingSetInfo"> ## ## ## ## ## a record describing a representation that satisfies the conditions, ## or fail. ## ## ## Let gapname be a string denoting a &GAP; name (see Section ##  ) ## of a group G, say. ## If the &ATLAS; of Group Representations contains at least one ## representation for G with the required properties ## then returns a record r ## whose components are the same as those of the records returned by ## , ## except that the component generators is not contained; ## the component identifier of r can be used as input for ## in order to fetch the generators. ## If no representation satisfying the given conditions is available ## then fail is returned. ##

## If the argument std is given then it must be a positive integer ## or a list of positive integers, denoting the sets of standard generators ## w.r.t. which the representation shall be given (see ## Section ). ##

## The argument gapname can be missing (then all available groups are ## considered), or a list of group names can be given instead. ##

## Further restrictions can be entered as arguments, with the same meaning ## as described for . ## The result of describes the first ## generating set for G that matches the restrictions, ## in the ordering shown by . ##

## Note that even in the case that the user parameter remote ## has the value true ## (see Section ), ## does not attempt ## to transfer remote data files, ## just the table of contents is evaluated. ## So this function (as well as ) ## can be used to check for the availability of certain representations, ## and afterwards one can call for those ## representations one wants to work with. ##

## In the following example, we try to access information about ## permutation representations for the alternating group A_5. ##

## info:= OneAtlasGeneratingSetInfo( "A5" ); ## rec( groupname := "A5", id := "", ## identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], ## isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, ## repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", ## standardization := 1, transitivity := 3, type := "perm" ) ## gap> gens:= AtlasGenerators( info.identifier ); ## rec( generators := [ (1,2)(3,4), (1,3,5) ], groupname := "A5", ## id := "", ## identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], ## isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, ## repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", ## standardization := 1, transitivity := 3, type := "perm" ) ## gap> info = OneAtlasGeneratingSetInfo( "A5", IsPermGroup, true ); ## true ## gap> info = OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, "minimal" ); ## true ## gap> info = OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, [ 1 .. 10 ] ); ## true ## gap> OneAtlasGeneratingSetInfo( "A5", NrMovedPoints, 20 ); ## fail ## ]]> ##

## Note that a permutation representation of degree 20 could be ## obtained by taking twice the primitive representation on 10 points; ## however, the &ATLAS; of Group Representations does not store this ## imprimitive representation (cf. ## Section ). ##

## We continue this example a little. ## Next we access matrix representations of A_5. ##

## info:= OneAtlasGeneratingSetInfo( "A5", IsMatrixGroup, true ); ## rec( dim := 4, groupname := "A5", id := "a", ## identifier := [ "A5", [ "A5G1-f2r4aB0.m1", "A5G1-f2r4aB0.m2" ], 1, ## 2 ], repname := "A5G1-f2r4aB0", repnr := 4, ring := GF(2), ## size := 60, standardization := 1, type := "matff" ) ## gap> gens:= AtlasGenerators( info.identifier ); ## rec( dim := 4, ## generators := [ , ## ], groupname := "A5", ## id := "a", ## identifier := [ "A5", [ "A5G1-f2r4aB0.m1", "A5G1-f2r4aB0.m2" ], 1, ## 2 ], repname := "A5G1-f2r4aB0", repnr := 4, ring := GF(2), ## size := 60, standardization := 1, type := "matff" ) ## gap> info = OneAtlasGeneratingSetInfo( "A5", Dimension, 4 ); ## true ## gap> info = OneAtlasGeneratingSetInfo( "A5", Characteristic, 2 ); ## true ## gap> info = OneAtlasGeneratingSetInfo( "A5", Ring, GF(2) ); ## true ## gap> OneAtlasGeneratingSetInfo( "A5", Characteristic, [2,5], Dimension, 2 ); ## rec( dim := 2, groupname := "A5", id := "a", ## identifier := [ "A5", [ "A5G1-f4r2aB0.m1", "A5G1-f4r2aB0.m2" ], 1, ## 4 ], repname := "A5G1-f4r2aB0", repnr := 8, ring := GF(2^2), ## size := 60, standardization := 1, type := "matff" ) ## gap> OneAtlasGeneratingSetInfo( "A5", Characteristic, [2,5], Dimension, 1 ); ## fail ## gap> info:= OneAtlasGeneratingSetInfo( "A5", Characteristic, 0, Dimension, 4 ); ## rec( dim := 4, groupname := "A5", id := "", ## identifier := [ "A5", "A5G1-Zr4B0.g", 1, 4 ], ## repname := "A5G1-Zr4B0", repnr := 14, ring := Integers, size := 60, ## standardization := 1, type := "matint" ) ## gap> gens:= AtlasGenerators( info.identifier ); ## rec( dim := 4, ## generators := ## [ ## [ [ 1, 0, 0, 0 ], [ 0, 0, 1, 0 ], [ 0, 1, 0, 0 ], ## [ -1, -1, -1, -1 ] ], ## [ [ 0, 1, 0, 0 ], [ 0, 0, 0, 1 ], [ 0, 0, 1, 0 ], ## [ 1, 0, 0, 0 ] ] ], groupname := "A5", id := "", ## identifier := [ "A5", "A5G1-Zr4B0.g", 1, 4 ], ## repname := "A5G1-Zr4B0", repnr := 14, ring := Integers, size := 60, ## standardization := 1, type := "matint" ) ## gap> info = OneAtlasGeneratingSetInfo( "A5", Ring, Integers ); ## true ## gap> info = OneAtlasGeneratingSetInfo( "A5", Ring, CF(37) ); ## true ## gap> OneAtlasGeneratingSetInfo( "A5", Ring, Integers mod 77 ); ## fail ## gap> info:= OneAtlasGeneratingSetInfo( "A5", Ring, CF(5), Dimension, 3 ); ## rec( dim := 3, groupname := "A5", id := "a", ## identifier := [ "A5", "A5G1-Ar3aB0.g", 1, 3 ], ## repname := "A5G1-Ar3aB0", repnr := 17, ring := NF(5,[ 1, 4 ]), ## size := 60, standardization := 1, type := "matalg" ) ## gap> gens:= AtlasGenerators( info.identifier ); ## rec( dim := 3, ## generators := ## [ [ [ -1, 0, 0 ], [ 0, -1, 0 ], [ -E(5)-E(5)^4, -E(5)-E(5)^4, 1 ] ## ], [ [ 0, 1, 0 ], [ 0, 0, 1 ], [ 1, 0, 0 ] ] ], ## groupname := "A5", id := "a", ## identifier := [ "A5", "A5G1-Ar3aB0.g", 1, 3 ], ## repname := "A5G1-Ar3aB0", repnr := 17, ring := NF(5,[ 1, 4 ]), ## size := 60, standardization := 1, type := "matalg" ) ## gap> OneAtlasGeneratingSetInfo( "A5", Ring, GF(17) ); ## fail ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "OneAtlasGeneratingSetInfo" ); ############################################################################# ## #F AllAtlasGeneratingSetInfos( [][, ] ) #F AllAtlasGeneratingSetInfos( [][, ], IsPermGroup[, true] ) #F AllAtlasGeneratingSetInfos( [][, ], NrMovedPoints, ) #F AllAtlasGeneratingSetInfos( [][, ], IsMatrixGroup[, true] ) #F AllAtlasGeneratingSetInfos( [][, ][, Characteristic,

] #F [, Dimension, ] ) #F AllAtlasGeneratingSetInfos( [][, ][, Ring, ] #F [, Dimension, ] ) ## ## <#GAPDoc Label="AllAtlasGeneratingSetInfos"> ## ## ## ## ## the list of all records describing representations that satisfy ## the conditions. ## ## ## is similar to ## . ## The difference is that the list of all records describing ## the available representations with the given properties is returned ## instead of just one such component. ## In particular an empty list is returned if no such representation is ## available. ##

## AllAtlasGeneratingSetInfos( "A5", IsPermGroup, true ); ## [ rec( groupname := "A5", id := "", ## identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ] ## , isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, ## repname := "A5G1-p5B0", repnr := 1, size := 60, ## stabilizer := "A4", standardization := 1, transitivity := 3, ## type := "perm" ), ## rec( groupname := "A5", id := "", ## identifier := [ "A5", [ "A5G1-p6B0.m1", "A5G1-p6B0.m2" ], 1, 6 ] ## , isPrimitive := true, maxnr := 2, p := 6, rankAction := 2, ## repname := "A5G1-p6B0", repnr := 2, size := 60, ## stabilizer := "D10", standardization := 1, transitivity := 2, ## type := "perm" ), ## rec( groupname := "A5", id := "", ## identifier := [ "A5", [ "A5G1-p10B0.m1", "A5G1-p10B0.m2" ], 1, ## 10 ], isPrimitive := true, maxnr := 3, p := 10, ## rankAction := 3, repname := "A5G1-p10B0", repnr := 3, ## size := 60, stabilizer := "S3", standardization := 1, ## transitivity := 1, type := "perm" ) ] ## ]]> ##

## Note that a matrix representation in any characteristic can be obtained by ## reducing a permutation representation or an integral matrix representation; ## however, the &ATLAS; of Group Representations does not store such a ## representation ## (cf. Section ). ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AllAtlasGeneratingSetInfos" ); ############################################################################# ## #A AtlasRepInfoRecord( ) ## ## <#GAPDoc Label="AtlasRepInfoRecord"> ## ## ## ## the record stored in the group G when this was constructed ## with . ## ## ## For a group G that has been constructed with ## , ## the value of this attribute is the info record that describes G, ## in the sense that this record was the first argument of the call to ## , or it is the ## result of the call to with the ## conditions that were listed in the call to ## . ##

## AtlasRepInfoRecord( AtlasGroup( "A5" ) ); ## rec( groupname := "A5", id := "", ## identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], ## isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, ## repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", ## standardization := 1, transitivity := 3, type := "perm" ) ## ]]> ## ## ## <#/GAPDoc> ## DeclareAttribute( "AtlasRepInfoRecord", IsGroup ); ############################################################################# ## #F AtlasGroup( [[, ]] ) #F AtlasGroup( [[, ]], IsPermGroup[, true] ) #F AtlasGroup( [[, ]], NrMovedPoints, ) #F AtlasGroup( [[, ]], IsMatrixGroup[, true] ) #F AtlasGroup( [[, ]][, Characteristic,

] #F [, Dimension, ] ) #F AtlasGroup( [[, ]][, Ring, ][, Dimension, ] ) #F AtlasGroup( ) ## ## <#GAPDoc Label="AtlasGroup"> ## ## AtlasGroup ## ## ## ## ## a group that satisfies the conditions, or fail. ## ## ## takes the same ## arguments as , ## and returns the group generated by the generators component ## of the record that is returned by ## with these arguments; ## if returns fail then also ## returns ## fail. ##

## g:= AtlasGroup( "A5" ); ## Group([ (1,2)(3,4), (1,3,5) ]) ## ]]> ##

## Alternatively, it is possible to enter exactly one argument, ## a record identifier as returned by ## or ## , ## or the identifier component of such a record. ##

## info:= OneAtlasGeneratingSetInfo( "A5" ); ## rec( groupname := "A5", id := "", ## identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], ## isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, ## repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", ## standardization := 1, transitivity := 3, type := "perm" ) ## gap> AtlasGroup( info ); ## Group([ (1,2)(3,4), (1,3,5) ]) ## gap> AtlasGroup( info.identifier ); ## Group([ (1,2)(3,4), (1,3,5) ]) ## ]]> ##

## In the groups returned by ## , ## the value of the attribute is set. ## This information is used for example by ## ## when this function is called with second argument a group created by ## . ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasGroup" ); ############################################################################# ## #F AtlasSubgroup( [, ], ) #F AtlasSubgroup( [, ], IsPermGroup[, true], ) #F AtlasSubgroup( [, ], NrMovedPoints, , ) #F AtlasSubgroup( [, ], IsMatrixGroup[, true], ) #F AtlasSubgroup( [, ][, Characteristic,

] #F [, Dimension, ], ) #F AtlasSubgroup( [, ][, Ring, ] #F [, Dimension, ], ) #F AtlasSubgroup( , ) #F AtlasSubgroup( , ) ## ## <#GAPDoc Label="AtlasSubgroup"> ## ## AtlasSubgroup ## ## ## ## ## ## a group that satisfies the conditions, or fail. ## ## ## The arguments of ## , ## except the last argument maxn, are the same as for ## . ## If the &ATLAS; of Group Representations provides a straight line program ## for restricting representations of the group with name gapname ## (given w.r.t. the std-th standard generators) ## to the maxnr-th maximal subgroup ## and if a representation with the required properties is available, ## in the sense that calling ## with the same ## arguments except maxnr yields a group, then ## ## returns the restriction of this representation to the maxnr-th ## maximal subgroup. ##

## In all other cases, fail is returned. ##

## Note that the conditions refer to the group and not to the subgroup. ## It may happen that in the restriction of a permutation representation ## to a subgroup, fewer points are moved, ## or that the restriction of a matrix representation turns out to be ## defined over a smaller ring. ## Here is an example. ##

## g:= AtlasSubgroup( "A5", NrMovedPoints, 5, 1 ); ## Group([ (1,5)(2,3), (1,3,5) ]) ## gap> NrMovedPoints( g ); ## 4 ## ]]> ##

## Alternatively, it is possible to enter exactly two arguments, ## the first being a record identifier as returned by ## or ## , ## or the identifier component of such a record, ## or a group G constructed with ## . ##

## info:= OneAtlasGeneratingSetInfo( "A5" ); ## rec( groupname := "A5", id := "", ## identifier := [ "A5", [ "A5G1-p5B0.m1", "A5G1-p5B0.m2" ], 1, 5 ], ## isPrimitive := true, maxnr := 1, p := 5, rankAction := 2, ## repname := "A5G1-p5B0", repnr := 1, size := 60, stabilizer := "A4", ## standardization := 1, transitivity := 3, type := "perm" ) ## gap> AtlasSubgroup( info, 1 ); ## Group([ (1,5)(2,3), (1,3,5) ]) ## gap> AtlasSubgroup( info.identifier, 1 ); ## Group([ (1,5)(2,3), (1,3,5) ]) ## gap> AtlasSubgroup( AtlasGroup( "A5" ), 1 ); ## Group([ (1,5)(2,3), (1,3,5) ]) ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasSubgroup" ); ############################################################################# ## #F AtlasOfGroupRepresentationsUserParameters() ## ## <#GAPDoc Label="AtlasOfGroupRepresentationsShowUserParameters"> ## ## ## ## ## This function returns a string that describes an overview of the current ## values of the user parameters introduced in this section. ## One can use or ## for showing the overview. ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasOfGroupRepresentationsUserParameters" ); ############################################################################# ## #E atlasrep/gap/interfac.gi0000644000175000017500000013776312677273366013742 0ustar samsam############################################################################# ## #W interfac.gi GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains the implementation part of the ``high level'' GAP ## interface to the ATLAS of Group Representations. ## ############################################################################# ## #F AGR.Pager( ) ## ## Simply calling `Pager' is not good enough, because GAP introduces ## line breaks in too long lines, and GAP does not compute the printable ## length of the line but the length as a string. ## ## If is empty then the builtin pager runs into an error, ## therefore we catch this case. ## AGR.Pager:= function( string ) if string <> "" then Pager( rec( lines:= string, formatted:= true ) ); fi; end; ############################################################################# ## #F AGR.ShowOnlyASCII() ## ## Show nicer grids and symbols such as ℤ if the terminal admits this. ## Currently we do not do this if `Print' is used to show the data, ## because of the automatically inserted line breaks. ## AGR.ShowOnlyASCII:= function() return IsIdenticalObj( AtlasOfGroupRepresentationsInfo.displayFunction, Print ) or GAPInfo.TermEncoding <> "UTF-8"; end; ############################################################################# ## #F AGR.StringAtlasInfoOverview( , ) ## AGR.StringAtlasInfoOverview:= function( gapnames, conditions ) local columns, type, i, widths, width, fstring, result, mid; # Consider only those names for which actually information is available. # (The ordering shall be the same as in the input.) if gapnames = "all" then gapnames:= AtlasOfGroupRepresentationsInfo.GAPnamesSortDisp; else gapnames:= Filtered( List( gapnames, AGR.InfoForName ), x -> x <> fail ); fi; if IsEmpty( gapnames ) then return; fi; # Compute the data of the columns. columns:= [ [ "group", "l", List( gapnames, x -> [ x[1], false ] ) ] ]; for type in AGR.DataTypes( "rep", "prg" ) do if type[2].DisplayOverviewInfo <> fail then Add( columns, [ type[2].DisplayOverviewInfo[1], type[2].DisplayOverviewInfo[2], List( gapnames, n -> type[2].DisplayOverviewInfo[3]( Concatenation( [ n ], conditions ) ) ) ] ); fi; od; # Evaluate the privacy flag. for i in [ 1 .. Length( gapnames ) ] do if ForAny( columns, x -> x[3][i][2] ) then columns[1][3][i][1]:= Concatenation( columns[1][3][i][1], AtlasOfGroupRepresentationsInfo.markprivate ); fi; od; # Compute the appropriate column widths. widths:= []; for i in columns do width:= Maximum( Length( i[1] ), # the header string shall fit Maximum( List( i[3], y -> Length( y[1] ) ) ) ); Add( widths, [ width, i[2] ] ); od; fstring:= function( string, width ) local strwidth, n, n1, n2; strwidth:= WidthUTF8String( string ); if width[1] <= strwidth then return string; elif width[2] = "l" then return Concatenation( string, RepeatedString( ' ', width[1] - strwidth ) ); elif width[2] = "r" then return Concatenation( RepeatedString( ' ', width[1] - strwidth ), string ); else n:= RepeatedString( ' ', width[1] - strwidth ); n1:= n{ [ QuoInt( Length( n ), 2 ) + 1 .. Length( n ) ] }; n2:= n{ [ 1 .. QuoInt( Length( n ), 2 ) ] }; return Concatenation( n1, string, n2 ); fi; end; result:= []; # Add the header line. if AGR.ShowOnlyASCII() then mid:= " | "; else mid:= " │ "; fi; Add( result, JoinStringsWithSeparator( List( [ 1 .. Length( columns ) ], j -> fstring( columns[j][1], widths[j] ) ), mid ) ); if AGR.ShowOnlyASCII() then Add( result, JoinStringsWithSeparator( List( [ 1 .. Length( columns ) ], j -> RepeatedString( "-", widths[j][1] ) ), "-+-" ) ); else Add( result, JoinStringsWithSeparator( List( [ 1 .. Length( columns ) ], j -> RepeatedUTF8String( "─", widths[j][1] ) ), "─┼─" ) ); fi; # Add the information for each group. for i in [ 1 .. Length( gapnames ) ] do if ForAny( [ 2 .. Length( columns ) ], j -> columns[j][3][i][1] <> "" ) then Add( result, JoinStringsWithSeparator( List( [ 1 .. Length( columns ) ], j -> fstring( columns[j][3][i][1], widths[j] ) ), mid ) ); fi; od; return result; end; ############################################################################# ## #F AGR.InfoPrgs( ) ## AGR.InfoPrgs:= function( conditions ) local groupname, name, tocs, std, argpos, stdavail, toc, record, type, list, header, nams, sort, info, pi; groupname:= AGR.InfoForName( conditions[1] ); if groupname = fail then return rec( list:= [] ); fi; conditions:= conditions{ [ 2 .. Length( conditions ) ] }; name:= groupname[2]; tocs:= AGR.TablesOfContents( conditions ); if Length( conditions ) = 0 or not ( IsInt( conditions[1] ) or IsList( conditions[1] ) ) then std:= true; argpos:= 1; else std:= conditions[1]; if IsInt( std ) then std:= [ std ]; fi; argpos:= 2; fi; # If the standardization is prescribed then do not mention it. # Otherwise if all information refers to the same standardization then # print just one line. # Otherwise print the standardization for each entry. stdavail:= []; if std = true or 1 < Length( std ) then for toc in tocs do if IsBound( toc.( name ) ) then record:= toc.( name ); for type in AGR.DataTypes( "prg" ) do if IsBound( record.( type[1] ) ) then for list in record.( type[1] ) do if std = true or list[1] in std then AddSet( stdavail, list[1] ); fi; od; fi; od; fi; od; fi; # Create the header line. # (Because of `AtlasRepCreateHTMLInfoForGroup', # `gapname' must occur as an entry of its own .) header:= [ "Programs for G = ", groupname[1], ":" ]; if Length( stdavail ) = 1 then Append( header, [ " (all refer to std. generators ", String( stdavail[1] ), ")" ] ); fi; # Collect the info lines for the scripts. list:= []; nams:= []; sort:= []; if ( Length( conditions ) = argpos and conditions[ argpos ] = IsStraightLineProgram ) or ( Length( conditions ) = argpos + 1 and conditions[ argpos ] = IsStraightLineProgram and conditions[ argpos + 1 ] = true ) or Length( conditions ) < argpos then for type in AGR.DataTypes( "prg" ) do info:= type[2].DisplayPRG( tocs, name, std, stdavail ); Add( list, info ); if IsEmpty( info ) then Add( sort, [ 0 ] ); elif Length( info ) = 1 then Add( sort, [ 0, info[1] ] ); else Add( sort, [ 1, info[1] ] ); fi; Add( nams, type[1] ); od; fi; # Sort the information such that those come first for which a single # line is given. # (This is because `BrowseAtlasInfo' turns the parts with more than # one line into a subcategory which is created from the first line.) # Inside this ordering of entries, sort the information alphabetically. pi:= Sortex( sort ); return rec( header := header, list := Permuted( list, pi ), nams := Permuted( nams, pi ) ); end; ############################################################################# ## #F AGR.EvaluateMinimalityCondition( , ) ## ## Evaluate conditions involving `"minimal"': ## Replace the string `"minimal"' by the number in question if known, ## return `true' in this case and `false' otherwise. ## (In the `false' case, an info message is printed.) ## AGR.EvaluateMinimalityCondition:= function( gapname, conditions ) local pos, info, pos2; pos:= Position( conditions, "minimal" ); if pos <> fail and pos <> 1 then if IsIdenticalObj( conditions[ pos-1 ], NrMovedPoints ) then # ..., NrMovedPoints, "minimal", ... info:= MinimalRepresentationInfo( gapname, NrMovedPoints ); if info = fail then Info( InfoAtlasRep, 1, "minimal perm. repr. of `", gapname, "' not known" ); return false; fi; conditions[ pos ]:= info.value; elif IsIdenticalObj( conditions[ pos-1 ], Dimension ) then pos2:= Position( conditions, Characteristic ); if pos2 <> fail and pos2 < Length( conditions ) then # ..., Characteristic,

, ..., Dimension, "minimal", ... info:= MinimalRepresentationInfo( gapname, Characteristic, conditions[ pos2+1 ] ); if info = fail then Info( InfoAtlasRep, 1, "minimal matrix repr. of `", gapname, "' in characteristic ", conditions[ pos2+1 ], " not known" ); return false; fi; conditions[ pos ]:= info.value; else pos2:= Position( conditions, Ring ); if pos2 <> fail and pos2 < Length( conditions ) and IsField( conditions[ pos2+1 ] ) and IsFinite( conditions[ pos2+1 ] ) then # ..., Ring, , ..., Dimension, "minimal", ... info:= MinimalRepresentationInfo( gapname, Size, Size( conditions[ pos2+1 ] ) ); if info = fail then Info( InfoAtlasRep, 1, "minimal matrix repr. of `", gapname, "' over `", conditions[ pos2+1 ], "' not known" ); return false; fi; conditions[ pos ]:= info.value; fi; fi; fi; fi; return true; end; ############################################################################# ## #F AGR.InfoReps( ) ## ## This function is used by `AGR.DisplayAtlasInfoGroup' and ## `BrowseData.AtlasRepGroupInfoTable'. ## AGR.InfoReps:= function( conditions ) local info, stdavail, header, list, types, r, type, entry; info:= CallFuncList( AllAtlasGeneratingSetInfos, conditions ); # If all information refers to the same standardization then # print just one line. # Otherwise print the standardization for each entry. stdavail:= Set( List( info, x -> x.standardization ) ); # Construct the header line. # (Because of `AtlasRepCreateHTMLInfoForGroup', # `gapname' must occur as an entry of its own .) header:= [ "Representations for G = ", AGR.GAPName( conditions[1] ), ":" ]; if Length( stdavail ) = 1 then Add( header, Concatenation( " (all refer to std. generators ", String( stdavail[1] ), ")" ) ); fi; list:= []; types:= AGR.DataTypes( "rep" ); for r in info do type:= First( types, t -> t[1] = r.type ); entry:= type[2].DisplayGroup( r ); if IsString( entry ) then entry:= [ entry ]; fi; entry:= [ [ String( r.repnr ), ":" ], [ entry[1], "" ], entry{ [ 2 .. Length( entry ) ] } ]; if not IsString( r.identifier[1] ) then entry[2][2]:= AtlasOfGroupRepresentationsInfo.markprivate; fi; if 1 < Length( stdavail ) then Add( entry, [ ", w.r.t. std. gen. ", String( r.standardization ) ] ); fi; Add( list, entry ); od; return rec( header := header, list := list ); end; ############################################################################# ## #F AGR.StringAtlasInfoGroup( ) ## ## Deal with the detailed overview for one group. ## AGR.StringAtlasInfoGroup:= function( conditions ) local result, screenwidth, inforeps, list, line, len1, len2, indent, underline, i, prefix, entry, infoprgs, j; result:= []; screenwidth:= SizeScreen()[1] - 1; # `DisplayAtlasInfo( [, ][, ] )' inforeps:= AGR.InfoReps( conditions ); if not IsEmpty( inforeps.list ) then list:= List( inforeps.list, line -> Concatenation( [ Concatenation( line[1] ), Concatenation( line[2] ) ], Concatenation( line{ [ 3 .. Length( line ) ] } ) ) ); len1:= Maximum( List( list, x -> WidthUTF8String( x[1] ) ) ); len2:= Maximum( List( list, x -> WidthUTF8String( x[2] ) ) ); indent:= 0; line:= Concatenation( inforeps.header{ [ 1 .. 3 ] } ); if AGR.ShowOnlyASCII() then underline:= RepeatedString( "-", Sum( List( inforeps.header{ [ 1 .. 3 ] }, Length ) ) ); else underline:= RepeatedUTF8String( "─", Sum( List( inforeps.header{ [ 1 .. 3 ] }, Length ) ) ); fi; for i in [ 4 .. Length( inforeps.header ) ] do if WidthUTF8String( line ) + WidthUTF8String( inforeps.header[i] ) >= screenwidth and WidthUTF8String( line ) <> indent then Add( result, line ); Add( result, underline ); underline:= ""; line:= ""; fi; Append( line, inforeps.header[i] ); od; if line <> "" then Add( result, line ); fi; if underline <> "" then Add( result, underline ); fi; indent:= len1 + len2 + 2; if indent >= screenwidth then indent:= 1; fi; prefix:= RepeatedString( " ", indent ); for entry in list do # right-aligned number, left-aligned description line:= Concatenation( String( entry[1], len1 ), " ", entry[2], RepeatedString( " ", len2 - WidthUTF8String( entry[2] ) ), " " ); for i in [ 3 .. Length( entry ) ] do if WidthUTF8String( line ) + WidthUTF8String( entry[i] ) >= screenwidth and Length( line ) <> indent then Add( result, line ); line:= ShallowCopy( prefix ); fi; Append( line, entry[i] ); od; Add( result, line ); od; fi; # `DisplayAtlasInfo( [, ][, IsStraightLineProgram] )' infoprgs:= AGR.InfoPrgs( conditions ); if ForAny( infoprgs.list, x -> not IsEmpty( x ) ) then if IsBound( inforeps ) and not IsEmpty( inforeps.list ) then Add( result, "" ); fi; indent:= 0; line:= Concatenation( infoprgs.header{ [ 1 .. 3 ] } ); if AGR.ShowOnlyASCII() then underline:= RepeatedString( "-", Sum( List( infoprgs.header{ [ 1 .. 3 ] }, Length ) ) ); else underline:= RepeatedUTF8String( "─", Sum( List( infoprgs.header{ [ 1 .. 3 ] }, Length ) ) ); fi; for i in [ 4 .. Length( infoprgs.header ) ] do if WidthUTF8String( line ) + WidthUTF8String( infoprgs.header[i] ) >= screenwidth and WidthUTF8String( line ) <> indent then Add( result, line ); Add( result, underline ); underline:= ""; line:= ""; fi; Append( line, infoprgs.header[i] ); od; if line <> "" then Add( result, line ); fi; if underline <> "" then Add( result, underline ); fi; for i in infoprgs.list do if not IsEmpty( i ) then if Length( i ) = 1 then Add( result, i[1] ); else Add( result, Concatenation( i[1], ":" ) ); for j in [ 2 .. Length( i ) ] do Add( result, Concatenation( " ", i[j] ) ); od; fi; fi; od; fi; return result; end; ############################################################################# ## #F DisplayAtlasInfo( [][,][][,]["contents", ] #F [, IsPermGroup[, true]] #F [, NrMovedPoints, ] #F [, IsMatrixGroup[, true]] #F [, Characteristic,

][, Dimension, ] #F [, Position, ] #F [, Character, ] #F [, Identifier, ] ) #F DisplayAtlasInfo( [, ][, "contents", ] #F [, IsPermGroup[, true]] #F [, NrMovedPoints, ] #F [, IsMatrixGroup[, true]] #F [, Characteristic,

][, Dimension, ] #F [, Position, ] #F [, Character, ] #F [, Identifier, ] #F [, IsStraightLineProgram[, true]] ) ## InstallGlobalFunction( DisplayAtlasInfo, function( arg ) local result, width; # Distinguish the summary overview for at least one group # from the detailed overview for exactly one group. if Length( arg ) = 0 then result:= AGR.StringAtlasInfoOverview( "all", arg ); elif IsList( arg[1] ) and ForAll( arg[1], IsString ) then result:= AGR.StringAtlasInfoOverview( arg[1], arg{ [ 2 .. Length( arg ) ] } ); elif not IsString( arg[1] ) or arg[1] = "contents" then result:= AGR.StringAtlasInfoOverview( "all", arg ); else result:= AGR.StringAtlasInfoGroup( arg ); fi; width:= SizeScreen()[1] - 2; result:= List( result, l -> InitialSubstringUTF8StringWithSuffix( l, width, "*" ) ); Add( result, "" ); AtlasOfGroupRepresentationsInfo.displayFunction( JoinStringsWithSeparator( result, "\n" ) ); end ); ############################################################################# ## #F AtlasGenerators( , [, ] ) #F AtlasGenerators( ) ## ## is a list containing at the first position the string ## , ## at the second position a string or a list of strings ## (describing filenames), ## at the third position a positive integer denoting the standardization of ## the representation, ## at the fourth position a positive integer describing the common ring of ## the generators, ## and at the fifth position, if bound, a positive integer denoting the ## number of the maximal subgroup to which the representation is restricted. ## InstallGlobalFunction( AtlasGenerators, function( arg ) local tocs, identifier, gapname, prefix, groupname, maxnr, file, repnr, res, type, j, toc, record, pos, try, gens, name, gen, result, prog, repname; tocs:= AGR.TablesOfContents( "all" ); if Length( arg ) = 1 then # `AtlasGenerators( )' identifier:= arg[1]; if IsRecord( identifier ) and IsBound( identifier.identifier ) then identifier:= identifier.identifier; fi; gapname:= identifier[1]; if Length( gapname ) = 2 and IsString( gapname[1] ) then # file in a private directory prefix:= gapname[1]; gapname:= gapname[2]; else prefix:= "datagens"; fi; groupname:= AGR.InfoForName( gapname ); if IsBound( identifier[5] ) then maxnr:= identifier[5]; fi; file:= identifier[2]; if not IsString( file ) then file:= file[1]; fi; # Compute the type, and the current number of the representation. repnr:= 0; res:= false; for type in AGR.DataTypes( "rep" ) do for toc in tocs do if IsBound( toc.( groupname[2] ) ) then record:= toc.( groupname[2] ); if IsBound( record.( type[1] ) ) then pos:= PositionProperty( record.( type[1] ), entry -> entry[ Length( entry ) ] = identifier[2] ); if pos = fail then repnr:= repnr + Length( record.( type[1] ) ); else repnr:= repnr + pos; res:= true; break; fi; fi; fi; od; if res then break; fi; od; if not res then return fail; fi; elif ( Length( arg ) = 2 and IsString( arg[1] ) and IsPosInt( arg[2] ) ) or ( Length( arg ) = 3 and IsString( arg[1] ) and IsPosInt( arg[2] ) and IsPosInt( arg[3] ) ) then # `AtlasGenerators( , [, ] )' gapname:= arg[1]; groupname:= AGR.InfoForName( gapname ); if groupname = fail then Info( InfoAtlasRep, 1, "AtlasGenerators: no group with GAP name `", gapname, "'" ); return fail; fi; try:= function( repnr, type ) local j, toc, record; for j in [ 1 .. Length( tocs ) ] do toc:= tocs[j]; if IsBound( toc.( groupname[2] ) ) then record:= toc.( groupname[2] ); if IsBound( record.( type ) ) then if repnr <= Length( record.( type ) ) then return [ j, record.( type )[ repnr ] ]; fi; repnr:= repnr - Length( record.( type ) ); fi; fi; od; return repnr; end; repnr:= arg[2]; res:= repnr; for type in AGR.DataTypes( "rep" ) do res:= try( res, type[1] ); if not IsInt( res ) then break; fi; od; if IsInt( res ) then return fail; fi; if res[1] = 1 then prefix:= "datagens"; else prefix:= AtlasOfGroupRepresentationsInfo.private[ res[1]-1 ][2]; fi; res:= res[2]; identifier:= [ gapname, res[ Length( res) ], res[1], res[2] ]; if prefix <> "datagens" then identifier[1]:= [ prefix, gapname ]; fi; if IsBound( arg[3] ) then maxnr:= arg[3]; identifier[5]:= maxnr; fi; else Error( "usage: AtlasGenerators( ,[,] ) or\n", " AtlasGenerators( )" ); fi; # Access the data file(s). gens:= AGR.FileContents( prefix, groupname[2], identifier[2], type ); if gens = fail then return fail; fi; result:= rec( generators := gens, standardization := identifier[3], repnr := repnr, identifier := identifier ); if IsBound( maxnr ) then # Compute the straight line program for the restriction # (w.r.t. the correct standardization). prog:= AtlasProgram( gapname, identifier[3], maxnr ); if prog = fail then return fail; fi; # Evaluate the straight line program. result.generators:= ResultOfStraightLineProgram( prog.program, gens ); # Add info. if IsBound( groupname[3].sizesMaxes ) and IsBound( groupname[3].sizesMaxes[ maxnr ] ) then result.size:= groupname[3].sizesMaxes[ maxnr ]; fi; if IsBound( groupname[3].structureMaxes ) and IsBound( groupname[3].structureMaxes[ maxnr ] ) then result.groupname:= groupname[3].structureMaxes[ maxnr ]; fi; else # Add info. repname:= identifier[2]; if not IsString( repname ) then repname:= repname[1]; fi; repname:= repname{ [ 1 .. Position( repname, '.' )-1 ] }; result.groupname:= gapname; result.repname:= repname; result.type:= type[1]; type[2].AddDescribingComponents( result, type ); if IsBound( groupname[3].size ) then result.size:= groupname[3].size; fi; fi; # Return the result. return Immutable( result ); end ); ############################################################################# ## #F AGR.MergedTableOfContents( , ) ## ## `AGR.MergedTableOfContents' returns a list of the known representations ## for the group with name . ## This list is sorted by types and for each type by its `SortTOCEntries' ## function. ## The list is cached in the component of the global record ## `AtlasOfGroupRepresentationsInfo.TableOfContents.merged'. ## When a new table of contents is notified with ## `AtlasOfGroupRepresentationsNotifyPrivateDirectory' then the cache is ## cleared. ## AGR.MergedTableOfContents:= function( tocid, gapname ) local merged, label, groupname, result, tocs, type, typeresult, sortkeys, toc, record, id, i, repname, oneresult; merged:= AtlasOfGroupRepresentationsInfo.TableOfContents.merged; label:= Concatenation( tocid, "|", gapname ); if not IsBound( merged.( label ) ) then groupname:= AGR.InfoForName( gapname ); if groupname = fail then return []; fi; result:= []; # Loop over the relevant representations, sort them for each type. tocs:= AGR.TablesOfContents( [ "contents", tocid ] ); for type in AGR.DataTypes( "rep" ) do typeresult:= []; sortkeys:= []; for toc in tocs do if IsBound( toc.( groupname[2] ) ) then record:= toc.( groupname[2] ); if IsBound( record.( type[1] ) ) then if not IsBound( toc.diridPrivate ) then id:= gapname; else id:= [ toc.diridPrivate, gapname ]; fi; for i in record.( type[1] ) do repname:= i[ Length(i) ]; if not IsString( repname ) then repname:= repname[1]; fi; repname:= repname{ [ 1 .. Position( repname, '.' )-1 ] }; oneresult:= rec( groupname := gapname, identifier := [ id, i[ Length(i) ], i[1], i[2] ], repname := repname, standardization := i[1], type := type[1] ); type[2].AddDescribingComponents( oneresult, type ); Add( typeresult, oneresult ); Add( sortkeys, type[2].SortTOCEntries( i ) ); od; fi; fi; od; SortParallel( sortkeys, typeresult ); Append( result, typeresult ); od; if IsBound( groupname[3].size ) then for i in result do i.size:= groupname[3].size; od; fi; for i in [ 1 .. Length( result ) ] do result[i].repnr:= i; od; merged.( label ):= result; fi; return merged.( label ); end; ############################################################################# ## #F AGR.EvaluateCharacterCondition( , , ) ## ## Evaluate conditions involving `Character'. ## The list is changed in place. ## The return value is a copy of in which one occurrence of ## `Character' is replaced by the corresponding `Identifier' condition ## if this is known, ## or a nonempty string describing an info message otherwise. ## AGR.EvaluateCharacterCondition:= function( gapname, conditions, reps ) local pos, chi, len, i, map, tbl, p, dec, list, j, repname, newreps; # If `Character' does not occur then we need not work. pos:= Position( conditions, Character ); if pos = fail then return reps; elif pos = Length( conditions ) then return []; fi; map:= AtlasOfGroupRepresentationsInfo.characterinfo; if not IsBound( map.( gapname ) ) then Info( InfoAtlasRep, 1, "no character information for ", gapname, " known" ); return []; fi; map:= map.( gapname ); tbl:= CharacterTable( gapname ); if tbl = fail then Info( InfoAtlasRep, 1, "no character table for ", gapname, " known" ); return []; fi; chi:= conditions[ pos+1 ]; # Remove the entries from `conditions'. len:= Length( conditions ); for i in [ pos .. Length( conditions )-2 ] do conditions[i]:= conditions[ i+2 ]; od; Unbind( conditions[ len ] ); Unbind( conditions[ len-1 ] ); # Check whether `Characteristic' is specified. pos:= Position( conditions, Characteristic ); if pos = fail then p:= "?"; elif pos = Length( conditions ) then return []; else p:= conditions[ pos+1 ]; if not ( p = 0 or IsPosInt( p ) ) then return []; fi; fi; # Interpret the character. if IsClassFunction( chi ) then # the character is explicitly given if p = "?" then p:= UnderlyingCharacteristic( UnderlyingCharacterTable( chi ) ); elif p <> UnderlyingCharacteristic( UnderlyingCharacterTable( chi ) ) then return []; elif p <> 0 then tbl:= tbl mod p; fi; else if p = "?" then p:= 0; elif p <> 0 then tbl:= tbl mod p; fi; if IsPosInt( chi ) and chi <= NrConjugacyClasses( tbl ) then # the `chi'-th irreducible character in characteristic `p' chi:= Irr( tbl )[ chi ]; elif IsString( chi ) then # the character is irreducible and specified by its name, # as defined by `AtlasCharacterNames'. chi:= Position( AtlasCharacterNames( tbl ), chi ); if chi = fail then return []; fi; chi:= Irr( tbl )[ chi ]; else return []; fi; fi; if Identifier( UnderlyingCharacterTable( chi ) ) <> Identifier( tbl ) then return []; fi; # Check whether character information for the given type is stored. if p = 0 and IsBound( map[1] ) then map:= map[1]; elif IsPosInt( p ) and IsBound( map[p] ) then if tbl = fail then Info( InfoAtlasRep, 1, "no ", p, "-modular character table for ", gapname, " known" ); return []; fi; map:= map[p]; else Info( InfoAtlasRep, 1, "no character information for ", gapname, " in characteristic ", p, " known" ); return []; fi; # Look for the character. if p = 0 then dec:= MatScalarProducts( tbl, Irr( tbl ), [ chi ] )[1]; else dec:= Decomposition( Irr( tbl ), [ chi ], "nonnegative" )[1]; fi; if dec = fail or not ForAll( dec, x -> IsInt( x ) and 0 <= x ) then Info( InfoAtlasRep, 1, "character does not decompose properly" ); return []; fi; list:= []; for i in [ 1 .. Length( dec ) ] do if dec[i] = 1 then Add( list, i ); elif 1 < dec[i] then Add( list, [ i, dec[i] ] ); fi; od; if Length( list ) = 1 then list:= list[1]; fi; pos:= Position( map[1], list ); if pos = fail then Info( InfoAtlasRep, 1, "character not found" ); return []; fi; # We have found the character. repname:= map[2][ pos ]; return Filtered( reps, r -> r.repname = repname ); end; ############################################################################# ## #F AGR.AtlasGeneratingSetInfo( , "one" ) #F AGR.AtlasGeneratingSetInfo( , "all" ) #F AGR.AtlasGeneratingSetInfo( , ) ## ## This function does the work for `OneAtlasGeneratingSetInfo', ## `AllAtlasGeneratingSetInfos', and `AGR.InfoReps'. ## The first entry in can be a group name ## or a list of group names. ## AGR.AtlasGeneratingSetInfo:= function( conditions, mode ) local pos, tocid, gapnames, types, std, position, result, gapname, reps, cond, info, type; pos:= Position( conditions, "contents" ); if pos <> fail then tocid:= conditions[ pos+1 ]; conditions:= Concatenation( conditions{ [ 1 .. pos-1 ] }, conditions{ [ pos+2 .. Length( conditions ) ] } ); else tocid:= "all"; fi; # The first argument (if there is one) is a group name, # or a list of group names, # or an integer (denoting a standardization), # or a function (denoting the first condition). if Length( conditions ) = 0 or IsInt( conditions[1] ) or IsFunction( conditions[1] ) then # The group is not restricted. gapnames:= List( AtlasOfGroupRepresentationsInfo.GAPnamesSortDisp, pair -> pair[1] ); elif IsString( conditions[1] ) then # Only one group is considered. gapnames:= [ AGR.GAPName( conditions[1] ) ]; conditions:= conditions{ [ 2 .. Length( conditions ) ] }; elif IsList( conditions[1] ) and ForAll( conditions[1], IsString ) then # A list of group names is prescribed. gapnames:= List( conditions[1], AGR.GAPName ); conditions:= conditions{ [ 2 .. Length( conditions ) ] }; else Error( "invalid first argument ", conditions[1] ); fi; types:= AGR.DataTypes( "rep" ); # Deal with a prescribed standardization. if 1 <= Length( conditions ) and ( IsPosInt( conditions[1] ) or IsList( conditions[1] ) ) then std:= conditions[1]; if IsPosInt( std ) then std:= [ std ]; fi; conditions:= conditions{ [ 2 .. Length( conditions ) ] }; else std:= true; fi; # Deal with a prescribed representation number. pos:= Position( conditions, Position ); if pos <> fail then if pos = Length( conditions ) or not IsPosInt( conditions[ pos+1 ] ) then Error( "condition `Position' must be followed by a pos. integer" ); fi; position:= conditions[ pos+1 ]; conditions:= Concatenation( conditions{ [ 1 .. pos-1 ] }, conditions{ [ pos+2 .. Length( conditions ) ] } ); fi; result:= []; for gapname in gapnames do reps:= AGR.MergedTableOfContents( tocid, gapname ); # Evaluate the `Position' condition. if pos <> fail then if position <= Length( reps ) then reps:= [ reps[ position ] ]; else reps:= []; fi; fi; cond:= ShallowCopy( conditions ); # Evaluate conditions involving `"minimal"' (modify `cond' in place). if AGR.EvaluateMinimalityCondition( gapname, cond ) then # Evaluate the `Character' condition. if Character in cond then reps:= AGR.EvaluateCharacterCondition( gapname, cond, reps ); fi; # Loop over the relevant representations. for info in reps do type:= First( types, t -> t[1] = info.type ); if ( std = true or info.standardization in std ) and type[2].AccessGroupCondition( info, ShallowCopy( cond ) ) then if mode = "one" then return info; else Add( result, info ); fi; fi; od; fi; od; # We have checked all available representations. if mode = "one" then return fail; else return result; fi; end; ############################################################################# ## #F OneAtlasGeneratingSetInfo( [][, ] ) #F OneAtlasGeneratingSetInfo( [][, ], IsPermGroup[, true] ) #F OneAtlasGeneratingSetInfo( [][, ], NrMovedPoints, ) #F OneAtlasGeneratingSetInfo( [][, ], IsMatrixGroup[, true] ) #F OneAtlasGeneratingSetInfo( [][, ][, Characteristic,

] #F [, Dimension, ] ) #F OneAtlasGeneratingSetInfo( [][, ][, Ring, ] #F [, Dimension, ] ) #F OneAtlasGeneratingSetInfo( [,][ ,] Position, ) ## InstallGlobalFunction( OneAtlasGeneratingSetInfo, function( arg ) return AGR.AtlasGeneratingSetInfo( arg, "one" ); end ); ############################################################################# ## #F AllAtlasGeneratingSetInfos( [][, ] ) #F AllAtlasGeneratingSetInfos( [][, ], IsPermGroup[, true] ) #F AllAtlasGeneratingSetInfos( [][, ], NrMovedPoints, ) #F AllAtlasGeneratingSetInfos( [][, ], IsMatrixGroup[, true] ) #F AllAtlasGeneratingSetInfos( [][, ][, Characteristic,

] #F [, Dimension, ] ) #F AllAtlasGeneratingSetInfos( [][, ][, Ring, ] #F [, Dimension, ] ) ## InstallGlobalFunction( AllAtlasGeneratingSetInfos, function( arg ) return AGR.AtlasGeneratingSetInfo( arg, "all" ); end ); ############################################################################# ## #F AtlasGroup( [[, ]] ) #F AtlasGroup( [[, ]], IsPermGroup[, true] ) #F AtlasGroup( [[, ]], NrMovedPoints, ) #F AtlasGroup( [[, ]], IsMatrixGroup[, true] ) #F AtlasGroup( [[, ]][, Characteristic,

] #F [, Dimension, ] ) #F AtlasGroup( [[, ]][, Ring, ][, Dimension, ] ) #F AtlasGroup( [[, ]], Position, ) #F AtlasGroup( ) ## InstallGlobalFunction( AtlasGroup, function( arg ) local info, gens, result; if Length( arg ) = 1 and IsRecord( arg[1] ) then info:= arg[1]; elif Length( arg ) = 1 and IsList( arg[1] ) and not IsString( arg[1] ) then info:= rec( identifier:= arg[1] ); else info:= CallFuncList( OneAtlasGeneratingSetInfo, arg ); fi; if info <> fail then gens:= AtlasGenerators( info.identifier ); if gens <> fail then result:= GroupWithGenerators( gens.generators ); if IsBound( gens.size ) then SetSize( result, gens.size ); SetAtlasRepInfoRecord( result, info ); fi; return result; fi; fi; return fail; end ); ############################################################################# ## #F AtlasSubgroup( [, ], ) #F AtlasSubgroup( [, ], IsPermGroup[, true], ) #F AtlasSubgroup( [, ], NrMovedPoints, , ) #F AtlasSubgroup( [, ], IsMatrixGroup[, true], ) #F AtlasSubgroup( [, ][, Characteristic,

] #F [, Dimension, ], ) #F AtlasSubgroup( [, ][, Ring, ] #F [, Dimension, ], ) #F AtlasSubgroup( [, ], Position, , ) #F AtlasSubgroup( , ) #F AtlasSubgroup( , ) ## InstallGlobalFunction( AtlasSubgroup, function( arg ) local maxnr, info, groupname, std, prog, result, inforec; maxnr:= arg[ Length( arg ) ]; if not IsPosInt( maxnr ) then Error( " must be a positive integer" ); fi; if Length( arg ) = 2 and IsRecord( arg[1] ) then info:= arg[1]; groupname:= info.groupname; elif Length( arg ) = 2 and IsGroup( arg[1] ) then if not HasAtlasRepInfoRecord( arg[1] ) then Error( "the `AtlasRepInfoRecord' value is not set for the group" ); fi; info:= AtlasRepInfoRecord( arg[1] ); groupname:= info.groupname; elif Length( arg ) = 2 and IsList( arg[1] ) and not IsString( arg[1] ) then info:= rec( identifier:= arg[1], standardization:= arg[1][3] ); groupname:= arg[1][1]; elif 1 < Length( arg ) then info:= CallFuncList( OneAtlasGeneratingSetInfo, arg{ [ 1 .. Length( arg ) - 1 ] } ); groupname:= arg[1]; else info:= fail; fi; if info = fail then return fail; fi; std:= info.standardization; prog:= AtlasProgram( groupname, std, "maxes", maxnr ); if prog = fail then return fail; fi; if Length( arg ) = 2 and IsGroup( arg[1] ) then # We need not load the generators from files. result:= GroupWithGenerators( ResultOfStraightLineProgram( prog.program, GeneratorsOfGroup( arg[1] ) ) ); else result:= AtlasGenerators( info.identifier ); if result = fail then return fail; fi; result:= GroupWithGenerators( ResultOfStraightLineProgram( prog.program, result.generators ) ); fi; if IsBound( prog.size ) then SetSize( result, prog.size ); fi; inforec:= rec( identifier:= Concatenation( info.identifier, [ maxnr ] ), standardization:= info.standardization ); if IsBound( info.repnr ) then inforec.repnr:= info.repnr; fi; if IsBound( prog.subgroupname ) then inforec.groupname:= prog.subgroupname; fi; if IsBound( prog.size ) then inforec.size:= prog.size; fi; SetAtlasRepInfoRecord( result, inforec ); return result; end ); ############################################################################# ## #F AtlasProgramInfo( [, ][, "maxes"], ) #F AtlasProgramInfo( [, ], "classes" ) #F AtlasProgramInfo( [, ], "cyclic" ) #F AtlasProgramInfo( [, ], "automorphism", ) #F AtlasProgramInfo( [, ], "check" ) #F AtlasProgramInfo( [, ], "pres" ) #F AtlasProgramInfo( [, ], "find" ) #F AtlasProgramInfo( , , "restandardize", ) #F AtlasProgramInfo( [, ], "other", ) ## ## (Also the argument pair [, "contents", ] is supported.) ## InstallGlobalFunction( AtlasProgramInfo, function( arg ) local identifier, gapname, prefix, groupname, type, result, std, argpos, conditions, tocs, toc, record, id; if Length( arg ) = 1 then # `AtlasProgramInfo( )' identifier:= arg[1]; gapname:= identifier[1]; if Length( gapname ) = 2 and IsString( gapname[1] ) then prefix:= gapname[1]; gapname:= gapname[2]; else prefix:= "dataword"; fi; groupname:= AGR.InfoForName( gapname ); if groupname = fail then return fail; fi; for type in AGR.DataTypes( "prg" ) do result:= type[2].AtlasProgramInfo( type, identifier, prefix, groupname[2] ); if result <> fail then result.groupname:= gapname; return Immutable( result ); fi; od; return fail; elif Length( arg ) = 0 or not IsString( arg[1] ) then Error( "the first argument must be the GAP name of a group" ); fi; # Now handle the cases of more than one argument. gapname:= arg[1]; groupname:= AGR.InfoForName( gapname ); if groupname = fail then Info( InfoAtlasRep, 1, "AtlasProgramInfo: no group with GAP name `", gapname, "'" ); return fail; fi; if IsInt( arg[2] ) and 2 < Length( arg ) then std:= [ arg[2] ]; argpos:= 3; else std:= true; argpos:= 2; fi; conditions:= arg{ [ argpos .. Length( arg ) ] }; # Restrict to a prescribed selection of tables of contents. tocs:= AGR.TablesOfContents( conditions ); # `AtlasProgramInfo( [, ][, "maxes"], )' if Length( conditions ) = 1 and IsInt( conditions[1] ) then conditions:= [ "maxes", conditions[1] ]; fi; for toc in tocs do if IsBound( toc.( groupname[2] ) ) then record:= toc.( groupname[2] ); for type in AGR.DataTypes( "prg" ) do id:= type[2].AccessPRG( record, std, conditions ); if id <> fail then # The table of contents provides a program as is required. if not IsBound( toc.diridPrivate ) then id:= Concatenation( [ groupname[1] ], id ); else id:= Concatenation( [ [ toc.diridPrivate, groupname[1] ] ], id ); fi; return AtlasProgramInfo( id ); fi; od; fi; od; # No program was found. Info( InfoAtlasRep, 2, "no program for conditions ", conditions, "\n", "#I of the group with GAP name `", groupname[1], "'" ); return fail; end ); ############################################################################# ## #F AtlasProgram( [, ][, "maxes"], ) #F AtlasProgram( [, ], "classes" ) #F AtlasProgram( [, ], "cyclic" ) #F AtlasProgram( [, ], "automorphism", ) #F AtlasProgram( [, ], "check" ) #F AtlasProgram( [, ], "pres" ) #F AtlasProgram( [, ], "find" ) #F AtlasProgram( , , "restandardize", ) #F AtlasProgram( [, ], "other", ) #F AtlasProgram( ) ## ## is a list containing at the first position the string ## , ## at the second position a string or a list of strings ## (describing the filenames involved), ## and at the third position a positive integer denoting the standardization ## of the program. ## InstallGlobalFunction( AtlasProgram, function( arg ) local identifier, gapname, prefix, groupname, type, result, info; if Length( arg ) = 1 then # `AtlasProgram( )' identifier:= arg[1]; gapname:= identifier[1]; if Length( gapname ) = 2 and IsString( gapname[1] ) then prefix:= gapname[1]; gapname:= gapname[2]; else prefix:= "dataword"; fi; groupname:= AGR.InfoForName( gapname ); if groupname = fail then return fail; fi; for type in AGR.DataTypes( "prg" ) do result:= type[2].AtlasProgram( type, identifier, prefix, groupname[2] ); if result <> fail then result.groupname:= groupname[1]; return Immutable( result ); fi; od; return fail; elif Length( arg ) = 0 or not IsString( arg[1] ) then Error( "the first argument must be the GAP name of a group" ); fi; # Now handle the cases of more than one argument. info:= CallFuncList( AtlasProgramInfo, arg ); if info = fail then return fail; fi; return AtlasProgram( info.identifier ); end ); ############################################################################# ## #F AtlasOfGroupRepresentationsUserParameters() ## InstallGlobalFunction( AtlasOfGroupRepresentationsUserParameters, function() local str, prefix, pair, r; str:= "access to remote data: "; if AtlasOfGroupRepresentationsInfo.remote then Append( str, "yes\n" ); else Append( str, "no\n" ); fi; prefix:= "servers: "; for pair in AtlasOfGroupRepresentationsInfo.servers do Append( str, prefix ); prefix:= " "; Append( str, pair[1] ); Append( str, "/" ); Append( str, pair[2] ); Append( str, "\n" ); od; Append( str, "access remote data: " ); if not IsBound( AtlasOfGroupRepresentationsInfo.wget ) or not AtlasOfGroupRepresentationsInfo.wget in [ true, false ] then Append( str, "via the IO package (preferred) or wget\n" ); elif AtlasOfGroupRepresentationsInfo.wget = true then Append( str, "only via wget\n" ); else Append( str, "only via the IO package\n" ); fi; Append( str, "compress data files: " ); if AtlasOfGroupRepresentationsInfo.compress then Append( str, "yes\n" ); else Append( str, "no\n" ); fi; Append( str, "display overviews via: " ); Append( str, NameFunction( AtlasOfGroupRepresentationsInfo.displayFunction ) ); Append( str, "\n" ); prefix:= "access functions: "; for r in Reversed( AtlasOfGroupRepresentationsInfo.accessFunctions ) do Append( str, prefix ); prefix:= " "; Append( str, r.description ); if r.active = true then Append( str, " [enabled]\n" ); else Append( str, " [disabled]\n" ); fi; od; Append( str, "read MeatAxe text files: " ); if IsBound( CMeatAxe.FastRead ) and CMeatAxe.FastRead = true then Append( str, "fast\n" ); else Append( str, "minimizing the space\n" ); fi; return str; end ); ############################################################################# ## #E atlasrep/gap/mindeg.gd0000644000175000017500000004073212701176707013357 0ustar samsam############################################################################# ## #W mindeg.gd GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2007, Lehrstuhl D fr Mathematik, RWTH Aachen, Germany ## ## This file contains declarations for dealing with information about ## permutation and matrix representations of minimal degree ## for selected groups. ## ############################################################################# ## ## <#GAPDoc Label="subsect:minimality-criteria"> ## ## Criteria Used to Compute Minimality Information ## ## The information about the minimal degree of a faithful matrix ## representation of G in a given characteristic or over a given ## field in positive characteristic is derived from the relevant (ordinary ## or modular) character table of G, ## except in a few cases where this table itself is not known but enough ## information about the degrees is available in and ## . ##

## The following criteria are used for deriving the minimal degree of a ## faithful permutation representation of G ## from the information in the &GAP; libraries of character tables and of ## tables of marks. ##

## ## ## If the name of G has the form "An" or ## "An.2" ## (denoting alternating and symmetric groups, respectively) ## then the minimal degree is n, except if n is smaller than ## 3 or 2, respectively. ## ## ## If the name of G has the form "L2(q)" ## (denoting projective special linear groups in dimension two) ## then the minimal degree is q + 1, ## except if q \in \{ 2, 3, 5, 7, 9, 11 \}, ## see . ## ## ## If the largest maximal subgroup of G is core-free ## then the index of this subgroup is the minimal degree. ## (This is used when the two character tables in question and the class ## fusion are available in &GAP;'s Character Table Library ## (); ## this happens for many character tables of simple groups.) ## ## ## If G has a unique minimal normal subgroup then each minimal ## faithful permutation representation is transitive. ##

## In this case, the minimal degree can be computed directly from the ## information in the table of marks of G if this is available in ## &GAP;'s Library of Tables of Marks (). ##

## Suppose that the largest maximal subgroup of G is not core-free ## but simple and normal in G, and that the other maximal subgroups ## of G are core-free. ## In this case, we take the minimum of the indices of the core-free ## maximal subgroups and of the product of index and minimal degree of ## the normal maximal subgroup. ## (This suffices since no core-free subgroup of the whole group can ## contain a nontrivial normal subgroup of a normal maximal subgroup.) ##

## Let N be the unique minimal normal subgroup of G, ## and assume that G/N is simple and has minimal degree n, ## say. ## If there is a subgroup U of index n \cdot |N| in G ## that intersects N trivially ## then the minimal degree of G is n \cdot |N|. ## (This is used for the case that N is central in G ## and N \times U occurs as a subgroup of G.) ## ## ## If we know a subgroup of G whose minimal degree is n, ## say, and if we know either (a class fusion from) a core-free subgroup ## of index n in G or a faithful permutation representation ## of degree n for G ## then n is the minimal degree for G. ## (This happens often for tables of almost simple groups.) ## ## ## ## <#/GAPDoc> ## ############################################################################# ## #F MinimalPermutationRepresentationInfo( ) ## DeclareGlobalFunction( "MinimalPermutationRepresentationInfo" ); ############################################################################# ## #F MinimalRepresentationInfo( , NrMovedPoints[, ] ) #F MinimalRepresentationInfo( , Characteristic,

[, ] ) #F MinimalRepresentationInfo( , Size, [, ] ) ## ## <#GAPDoc Label="MinimalRepresentationInfo"> ## ## ## ## ## a record with the components value and source, ## or fail ## ## ## Let grpname be the &GAP; name of a group G, say. ## If the information described by conditions about minimal ## representations of this group can be computed or is stored ## then returns a record with the ## components value and source, ## otherwise fail is returned. ##

## The following values for conditions are supported. ##

## ## ## If conditions is ## then value, if known, is the degree of a minimal faithful ## (not necessarily transitive) permutation representation for G. ## ## ## If conditions consists of ## and a prime integer ## p then value, if known, is the dimension of a minimal ## faithful (not necessarily irreducible) matrix representation ## in characteristic p for G. ## ## ## If conditions consists of and ## a prime power q then value, if known, is the dimension ## of a minimal faithful (not necessarily irreducible) ## matrix representation over the field of size q for G. ## ## ##

## In all cases, the value of the component source is a list of ## strings that describe sources of the information, ## which can be the ordinary or modular character table of G ## (see , , ), ## the table of marks of G, or . ## For an overview of minimal degrees of faithful matrix representations for ## sporadic simple groups and their covering groups, see also ##

## http://www.math.rwth-aachen.de/~MOC/mindeg/. ##

## Note that cannot provide any ## information about minimal representations over prescribed fields in ## characteristic zero. ##

## Information about groups that occur in the AtlasRep ## package is precomputed in , ## so the packages CTblLib and TomLib ## are not needed when is called for ## these groups. ## (The only case that is not covered by this list is that one asks for the ## minimal degree of matrix representations over a prescribed field in ## characteristic coprime to the group order.) ##

## One of the following strings can be given as an additional last argument. ##

## ## "cache" ## ## means that the function tries to compute (and then store) values that ## are not stored in , ## but stored values are preferred; this is also the default. ## ## "lookup" ## ## means that stored values are returned but the function ## does not attempt to compute values that are not stored in ## . ## ## "recompute" ## ## means that the function always tries to compute the ## desired value, and checks the result against stored values. ## ## ##

## MinimalRepresentationInfo( "A5", NrMovedPoints ); ## rec( ## source := [ "computed (alternating group)", ## "computed (char. table)", "computed (subgroup tables)", ## "computed (subgroup tables, known repres.)", ## "computed (table of marks)" ], value := 5 ) ## gap> MinimalRepresentationInfo( "A5", Characteristic, 2 ); ## rec( source := [ "computed (char. table)" ], value := 2 ) ## gap> MinimalRepresentationInfo( "A5", Size, 2 ); ## rec( source := [ "computed (char. table)" ], value := 4 ) ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "MinimalRepresentationInfo" ); ############################################################################# ## #V MinimalRepresentationInfoData ## ## <#GAPDoc Label="MinimalRepresentationInfoData"> ## ## ## ## ## This is a record whose components are &GAP; names of groups for which ## information about minimal permutation and matrix representations were ## known in advance or have been computed in the current &GAP; session. ## The value for the group G, say, ## is a record with the following components. ##

## ## NrMovedPoints ## ## a record with the components value (the degree of a smallest ## faithful permutation representation of G) ## and source (a string describing the source of this information). ## ## Characteristic ## ## a record whose components are at most 0 and strings ## corresponding to prime integers, each bound to a record with the ## components value (the degree of a smallest faithful matrix ## representation of G in this characteristic) ## and source (a string describing the source of this information). ## ## CharacteristicAndSize ## ## a record whose components are strings corresponding ## to prime integers p, each bound to a record with the components ## sizes (a list of powers q of p), ## dimensions (the corresponding list of minimal dimensions of ## faithful matrix representations of G over a field of size ## q), ## sources (the corresponding list of strings describing the source ## of this information), and ## complete (a record with the components val ## (true if the minimal dimension over any finite field in ## characteristic p can be derived from the values in the record, ## and false otherwise) and source (a string describing the ## source of this information)). ## ## ##

## The values are set by . ## ## ## <#/GAPDoc> ## ## We want to delay reading the data until they are actually accessed. ## DeclareAutoreadableVariables( "atlasrep", "gap/mindeg.g", [ "MinimalRepresentationInfoData" ] ); ############################################################################# ## #F SetMinimalRepresentationInfo( , , , ) ## ## <#GAPDoc Label="SetMinimalRepresentationInfo"> ## ## ## ## ## true if the values were successfully set, ## false if stored values contradict the given ones. ## ## ## This function sets an entry in ## for the group G, say, with &GAP; name grpname. ##

## Supported values for op are ##

## ## ## "NrMovedPoints" ## (see ), ## which means that value is the degree of minimal faithful ## (not necessarily transitive) permutation representations of G, ## ## ## a list of length two with first entry ## "Characteristic" ## (see ) ## and second entry char either zero or a prime integer, ## which means that value is the dimension of minimal faithful ## (not necessarily irreducible) matrix representations of G ## in characteristic char, ## ## ## a list of length two with first entry ## "Size" ## (see ) ## and second entry a prime power q, ## which means that value is the dimension of minimal faithful ## (not necessarily irreducible) matrix representations of G ## over the field with q elements, and ## ## ## a list of length three with first entry ## "Characteristic" ## (see ), ## second entry a prime integer p, ## and third entry the string "complete", ## which means that the information stored for characteristic p ## is complete in the sense that for any given power q of p, ## the minimal faithful degree over the field with q elements ## equals that for the largest stored field size of which q is a ## power. ## ## ##

## In each case, ## source is a string describing the source of the data; ## computed values are detected from the prefix "comp" ## of source. ##

## If the intended value is already stored and differs from value ## then an error message is printed. ##

## SetMinimalRepresentationInfo( "A5", "NrMovedPoints", 5, ## > "computed (alternating group)" ); ## true ## gap> SetMinimalRepresentationInfo( "A5", [ "Characteristic", 0 ], 3, ## > "computed (char. table)" ); ## true ## gap> SetMinimalRepresentationInfo( "A5", [ "Characteristic", 2 ], 2, ## > "computed (char. table)" ); ## true ## gap> SetMinimalRepresentationInfo( "A5", [ "Size", 2 ], 4, ## > "computed (char. table)" ); ## true ## gap> SetMinimalRepresentationInfo( "A5", [ "Size", 4 ], 2, ## > "computed (char. table)" ); ## true ## gap> SetMinimalRepresentationInfo( "A5", [ "Characteristic", 3 ], 3, ## > "computed (char. table)" ); ## true ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "SetMinimalRepresentationInfo" ); ############################################################################# ## #F ComputedMinimalRepresentationInfo() ## ## ## ## ## ## a records in the format of ## . ## ## ## For the groups listed in the GAPnames component of ## , ## is called with the last argument ## "recompute", and with the relevant conditions. ## The completeness info is set for a characteristic if the Brauer table ## of the group proves that all relevant values are known. ##

## A record with the recomputed values is returned, ## the variable itself is not ## changed. ##

## Information is printed about differences between the stored and the ## computed value. ## ## ## DeclareGlobalFunction( "ComputedMinimalRepresentationInfo" ); ############################################################################# ## #F StringOfMinimalRepresentationInfoData( ) ## ## ## ## ## ## a string that describes the contents of record. ## ## ## Let record be a record in the format of ## . ## This function returns a string that contains the assignments of values ## with , ## as given in the package's file gap/mindeg.g. ## ## ## DeclareGlobalFunction( "StringOfMinimalRepresentationInfoData" ); ############################################################################# ## #E atlasrep/gap/scanmtx.gd0000644000175000017500000006623312675750505013601 0ustar samsam############################################################################# ## #W scanmtx.gd GAP 4 packages AtlasRep and MeatAxe Thomas Breuer #W Frank Lübeck ## #Y Copyright (C) 2001, Lehrstuhl D für Mathematik, RWTH Aachen, Germany ## ## Whenever this file is changed in one of the packages ## AtlasRep or `meataxe', ## do not forget to update the corresponding file in the other package! ## ## This file contains the implementation part of the interface routines for ## reading and writing C-&MeatAxe; text and binary format, ## and straight line programs used in the &ATLAS; of Group Representations. ## ## The functions and ## were contributed by Frank Lübeck. ## ############################################################################ ## #V CMeatAxe ## ## ## ## ## ## is a record containing relevant information about the usage of MeatAxe ## under &GAP;. ## Currently there are the following components. ## ## ## gennames ## ## the list of strings that are used as generator names in ## abstract components of C-&MeatAxe; matrices, ## ## alpha ## ## alphabet ober which gennames entries are formed. ## ## ##

## Besides these, some components will be intermediately bound ## when C-&MeatAxe; output files are read. ## ## ## DeclareGlobalVariable( "CMeatAxe" ); ############################################################################# ## #V InfoCMeatAxe ## ## <#GAPDoc Label="InfoCMeatAxe"> ## ## ## ## ## If the info level of is at least 1 ## then information about fail results of C-&MeatAxe; ## functions is printed. ## The default level is zero, no information is printed on this level. ## ## ## <#/GAPDoc> ## DeclareInfoClass( "InfoCMeatAxe" ); ############################################################################# ## #F FFList( ) #V FFLists ## ## <#GAPDoc Label="FFList"> ## ## ## ## a list of elements in the given finite field. ## ## ## ## ## is a utility program for the conversion of vectors ## and matrices from &MeatAxe; format to &GAP; format and vice versa. ## It is used by ## and . ##

## For a finite field F, returns a list l ## giving the correspondence between the &MeatAxe; numbering and the &GAP; ## numbering of the elements in F. ##

## The element of F corresponding to &MeatAxe; number n is ## l[ n+1 ], ## and the &MeatAxe; number of the field element z is ## Position( l, z ) - 1. ##

## The global variable is used to store the information ## about F once it has been computed. ##

## FFList( GF(4) ); ## [ 0*Z(2), Z(2)^0, Z(2^2), Z(2^2)^2 ] ## gap> IsBound( FFLists[4] ); ## true ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "FFList" ); DeclareGlobalVariable( "FFLists", "list of info to translate FFE orderings between GAP and MeatAxe" ); ############################################################################# ## #F FFLogList( ) #V FFLogLists ## ## ## ## ## ## ## ## ## DeclareGlobalFunction( "FFLogList" ); DeclareGlobalVariable( "FFLogLists", "list of info to translate FFE orderings between GAP and MeatAxe" ); ############################################################################# ## #V NONNEG_INTEGERS_STRINGS ## ## ## ## ## ## ## ## DeclareGlobalVariable( "NONNEG_INTEGERS_STRINGS", "list of strings for nonnegative integers" ); ############################################################################# ## #F IntegerStrings( ) ## ## ## ## ## ## ## ## DeclareGlobalFunction( "IntegerStrings" ); ############################################################################# ## #F CMeatAxeFileHeaderInfo( ) ## ## ## ## ## ## ## ## DeclareGlobalFunction( "CMeatAxeFileHeaderInfo" ); ############################################################################# ## #V SMFSTRING ## ## ## ## ## ## This global variable is needed because ## (for a string) is executed in the main environment ## not inside the function. ## ## ## SMFSTRING := ""; ############################################################################# ## #F ScanMeatAxeFile( [, ] ) #F ScanMeatAxeFile( [, ], "string" ) ## ## <#GAPDoc Label="ScanMeatAxeFile"> ## ## ## ## ## the matrix or list of permutations stored in the file or encoded by the ## string. ## ## ## Let filename be the name of a &GAP; readable file ## (see ) ## that contains a matrix or a permutation or a list of permutations in ## &MeatAxe; text format (see the section about the program ## zcv zcv ## in the C-&MeatAxe; documentation ), ## and let q be a prime power. ## returns the corresponding &GAP; matrix ## or list of permutations, respectively. ##

## If the file contains a matrix then the way how it is read by ## depends on the ## value of the global variable . ##

## If the parameter q is given then the result matrix is represented ## over the field with q elements, ## the default for q is the field size stored in the file. ##

## If the file contains a list of permutations then it is read with ## ; ## the parameter q, if given, is ignored in this case. ##

## If the string "string" is entered as the third argument then ## the first argument must be a string as obtained by reading ## a file in &MeatAxe; text format as a text stream ## (see ). ## Also in this case, returns ## the corresponding &GAP; matrix or list of permutations, respectively. ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "ScanMeatAxeFile" ); ############################################################################# ## #O MeatAxeString( , ) #O MeatAxeString( , ) #O MeatAxeString( , , ) ## ## <#GAPDoc Label="MeatAxeString"> ## ## ## ## ## ## ## a string encoding the &GAP; objects given as input in &MeatAxe; format. ## ## ## In the first form, for a matrix mat whose entries lie in the ## finite field with q elements, ## returns a string that encodes mat ## as a matrix over GF(q), in &MeatAxe; text format. ##

## In the second form, for a nonempty list perms of permutations that ## move only points up to the positive integer degree, ## returns a string that encodes perms as ## permutations of degree degree, ## in C-&MeatAxe; text format (see ). ##

## In the third form, for a permutation perm with largest moved point ## n, say, a prime power q, and a list dims of length ## two containing two positive integers larger than or equal to ## n, ## returns a string that encodes perm ## as a matrix over GF(q), of dimensions dims, ## whose first n rows and columns describe the permutation matrix ## corresponding to perm, ## and the remaining rows and columns are zero. ##

## When strings are printed to files ## using ## or ## then line breaks are inserted whenever lines exceed the number of ## characters given by the second entry of the list returned by ## , ## see . ## This behaviour is not desirable for creating data files. ## So the recommended functions for printing the result of ## to a file ## are ## and . ##

## mat:= [ [ 1, -1 ], [ 0, 1 ] ] * Z(3)^0;; ## gap> str:= MeatAxeString( mat, 3 ); ## "1 3 2 2\n12\n01\n" ## gap> mat = ScanMeatAxeFile( str, "string" ); ## true ## gap> str:= MeatAxeString( mat, 9 ); ## "1 9 2 2\n12\n01\n" ## gap> mat = ScanMeatAxeFile( str, "string" ); ## true ## gap> perms:= [ (1,2,3)(5,6) ];; ## gap> str:= MeatAxeString( perms, 6 ); ## "12 1 6 1\n2\n3\n1\n4\n6\n5\n" ## gap> perms = ScanMeatAxeFile( str, "string" ); ## true ## gap> str:= MeatAxeString( perms, 8 ); ## "12 1 8 1\n2\n3\n1\n4\n6\n5\n7\n8\n" ## gap> perms = ScanMeatAxeFile( str, "string" ); ## true ## ]]> ##

## Note that the output of in the case of ## permutation matrices depends on the ## user preference WriteMeatAxeFilesOfMode2. ##

## perm:= (1,2,4);; ## gap> str:= MeatAxeString( perm, 3, [ 5, 6 ] ); ## "2 3 5 6\n2\n4\n3\n1\n5\n" ## gap> mat:= ScanMeatAxeFile( str, "string" );; Print( mat, "\n" ); ## [ [ 0*Z(3), Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ], ## [ 0*Z(3), 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3), 0*Z(3) ], ## [ 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3) ], ## [ Z(3)^0, 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3) ], ## [ 0*Z(3), 0*Z(3), 0*Z(3), 0*Z(3), Z(3)^0, 0*Z(3) ] ] ## gap> pref:= UserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2" );; ## gap> SetUserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2", true ); ## gap> MeatAxeString( mat, 3 ) = str; ## true ## gap> SetUserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2", false ); ## gap> MeatAxeString( mat, 3 ); ## "1 3 5 6\n010000\n000100\n001000\n100000\n000010\n" ## gap> SetUserPreference( "AtlasRep", "WriteMeatAxeFilesOfMode2", pref ); ## ]]> ## ## ## <#/GAPDoc> ## DeclareOperation( "MeatAxeString", [ IsTable, IsPosInt ] ); DeclareOperation( "MeatAxeString", [ IsPermCollection and IsList, IsPosInt ] ); DeclareOperation( "MeatAxeString", [ IsPerm, IsPosInt, IsList ] ); ############################################################################# ## #F CMtxBinaryFFMatOrPerm( , , ) #F CMtxBinaryFFMatOrPerm( , , [, ] ) ## ## <#GAPDoc Label="CMtxBinaryFFMatOrPerm"> ## ## ## ## ## Let the pair (elm, def) be either of the form ## (M, q) where M is a matrix over a finite field F, ## say, with q \leq 256 elements, ## or of the form (\pi, n) where \pi is a permutation with ## largest moved point at most n. ## Let outfile be a string. ## writes ## the C-&MeatAxe; binary format of M, viewed as a matrix ## over F, ## or of \pi, viewed as a permutation on the points up to n, ## to the file with name outfile. ##

## In the case of a permutation \pi, ## the optional argument base prescribes whether the binary file ## contains the points from 0 to deg - 1 ## (base = 0, ## supported by version 2.4 of the C-&MeatAxe;) ## or the points from 1 to deg ## (base = 1, ## supported by older versions of the C-&MeatAxe;). ## The default for base is given by the ## value of the user preference BaseOfMeatAxePermutation, ## see Section . ##

## (The binary format is described ## in the C-&MeatAxe; manual .) ##

## tmpdir:= DirectoryTemporary();; ## gap> mat:= Filename( tmpdir, "mat" );; ## gap> q:= 4;; ## gap> mats:= GeneratorsOfGroup( GL(10,q) );; ## gap> CMtxBinaryFFMatOrPerm( mats[1], q, Concatenation( mat, "1" ) ); ## gap> CMtxBinaryFFMatOrPerm( mats[2], q, Concatenation( mat, "2" ) ); ## gap> prm:= Filename( tmpdir, "prm" );; ## gap> n:= 200;; ## gap> perms:= GeneratorsOfGroup( SymmetricGroup( n ) );; ## gap> CMtxBinaryFFMatOrPerm( perms[1], n, Concatenation( prm, "1" ) ); ## gap> CMtxBinaryFFMatOrPerm( perms[2], n, Concatenation( prm, "2" ) ); ## gap> CMtxBinaryFFMatOrPerm( perms[1], n, Concatenation( prm, "1a" ), 0 ); ## gap> CMtxBinaryFFMatOrPerm( perms[2], n, Concatenation( prm, "2b" ), 1 ); ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "CMtxBinaryFFMatOrPerm" ); ############################################################################# ## #F FFMatOrPermCMtxBinary( ) ## ## <#GAPDoc Label="FFMatOrPermCMtxBinary"> ## ## ## ## ## the matrix or permutation stored in the file. ## ## ## Let fname be the name of a file that contains the ## C-&MeatAxe; binary format of a matrix over a finite field ## or of a permutation, ## as is described in . ## returns the corresponding ## &GAP; matrix or permutation. ##

## FFMatOrPermCMtxBinary( Concatenation( mat, "1" ) ) = mats[1]; ## true ## gap> FFMatOrPermCMtxBinary( Concatenation( mat, "2" ) ) = mats[2]; ## true ## gap> FFMatOrPermCMtxBinary( Concatenation( prm, "1" ) ) = perms[1]; ## true ## gap> FFMatOrPermCMtxBinary( Concatenation( prm, "2" ) ) = perms[2]; ## true ## gap> FFMatOrPermCMtxBinary( Concatenation( prm, "1a" ) ) = perms[1]; ## true ## gap> FFMatOrPermCMtxBinary( Concatenation( prm, "2b" ) ) = perms[2]; ## true ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "FFMatOrPermCMtxBinary" ); ############################################################################# ## #F ScanStraightLineProgram( ) #F ScanStraightLineProgram( , "string" ) ## ## <#GAPDoc Label="ScanStraightLineProgram"> ## ## ## ## ## a record containing the straight line program. ## ## ## Let filename be the name of a file that contains a straight line ## program in the sense that it consists only of lines in the following ## form. ## ## #anything ## ## lines starting with a hash sign # are ignored, ## ## echo anything ## ## lines starting with echo are ignored for the program ## component of the result record (see below), ## they are used to set up the bijection between the labels used in ## the program and conjugacy class names in the case that the program ## computes dedicated class representatives, ## ## inp n ## ## means that there are n inputs, referred to via the labels ## 1, 2, \ldots, n, ## ## inp k a1 a2 ... ak ## ## means that the next k inputs are referred to via the labels ## a1, a2, ..., ak, ## ## cjr a b ## ## means that a is replaced by ## b^(-1) * a * b, ## ## cj a b c ## ## means that c is defined as ## b^(-1) * a * b, ## ## com a b c ## ## means that c is defined as ## a^(-1) * b^(-1) * a * b, ## ## iv a b ## ## means that b is defined as a^(-1), ## ## mu a b c ## ## means that c is defined as a * b, ## ## pwr a b c ## ## means that c is defined as ## b^a, ## ## cp a b ## ## means that b is defined as a copy of a, ## ## oup l ## ## means that there are l outputs, stored in the labels ## 1, 2, \ldots, l, and ## ## oup l b1 b2 ... bl ## ## means that the next l outputs are stored in the labels ## b1, b2, ... bl. ## ## ##

## Each of the labels a, b, c can be any nonempty ## sequence of digits and alphabet characters, ## except that the first argument of pwr must denote an integer. ##

## If the inp or oup statements are missing then the input or ## output, respectively, is assumed to be given by the labels 1 and ## 2. ## There can be multiple inp lines at the beginning of the program ## and multiple oup lines at the end of the program. ## Only the first inp or oup line may omit the names of the ## elements. ## For example, an empty file filename or an empty string ## string ## represent a straight line program with two inputs that are returned as ## outputs. ##

## No command except cjr may overwrite its own input. ## For example, the line mu a b a is not legal. ## (This is not checked.) ##

## returns a record containing as the ## value of its component program the corresponding &GAP; straight ## line program ## (see ) ## if the input string satisfies the syntax rules stated above, ## and returns fail otherwise. ## In the latter case, information about the first corrupted line of the ## program is printed if the info level of ## is at least 1. ##

## If the string "string" is entered as the second argument then ## the first argument must be a string as obtained by reading ## a file in &MeatAxe; text format as a text stream ## (see ). ## Also in this case, returns either ## a record with the corresponding &GAP; straight line program ## or fail. ##

## If the input describes a straight line program that computes certain ## class representatives of the group in question then the result record ## also contains the component outputs. ## Its value is a list of strings, the entry at position i denoting ## the name of the class in which the i output of the straight line ## program lies; see ## Section  ## for the definition of the class names that occur. ##

## Such straight line programs must end with a sequence of output ## specifications of the following form. ##

## ##

## This example means that the list of outputs of the program contains ## elements of the classes 1A, 2A, 3A, 5A, ## and 5B (in this order), ## and that inside the program, these elements are referred to by the five ## names 3, 1, 2, 4, and 5. ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "ScanStraightLineProgram" ); ############################################################################# ## #F ScanStraightLineDecision( ) ## ## <#GAPDoc Label="ScanStraightLineDecision"> ## ## ## ## ## a record containing the straight line decision, or fail. ## ## ## Let string be a string that encodes a straight line decision in ## the sense that it consists of the lines listed for ## , except that oup lines are ## not allowed, and instead lines of the following form may occur. ##

## ## chor a b ## ## means that it is checked whether the order of the element at label ## a is b. ## ## ##

## returns a record containing as the ## value of its component program the corresponding &GAP; straight ## line decision (see ) ## if the input string satisfies the syntax rules stated above, ## and returns fail otherwise. ## In the latter case, information about the first corrupted line of the ## program is printed if the info level of ## is at least 1. ##

## str:= "inp 2\nchor 1 2\nchor 2 3\nmu 1 2 3\nchor 3 5";; ## gap> prg:= ScanStraightLineDecision( str ); ## rec( program := ) ## gap> prg:= prg.program;; ## gap> Display( prg ); ## # input: ## r:= [ g1, g2 ]; ## # program: ## if Order( r[1] ) <> 2 then return false; fi; ## if Order( r[2] ) <> 3 then return false; fi; ## r[3]:= r[1]*r[2]; ## if Order( r[3] ) <> 5 then return false; fi; ## # return value: ## true ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "ScanStraightLineDecision" ); ############################################################################# ## #F AtlasStringOfProgram( [, [, ]] ) #F AtlasStringOfProgram( [, [, ]] ) ## ## <#GAPDoc Label="AtlasStringOfProgram"> ## ## ## ## ## ## a string encoding the straight line program/decision in the format used ## in &ATLAS; files. ## ## ## For a straight line program or straight line decision prog ## (see  and ## ), ## this function returns a string describing the input format of an ## equivalent straight line program or straight line decision ## as used in the &ATLAS; of Group Representations, that is, ## the lines are of the form described ## in . ##

## A list of strings that is given as the optional second argument ## outputnames is interpreted as the class names corresponding to the ## outputs; this argument has the effect that appropriate echo ## statements appear in the result string. ##

## If the string "mtx" is given as the second argument then the ## result has the format used in the C-&MeatAxe; ## (see ) ## rather than the format described in ## Section . ## (Note that the C-&MeatAxe; format does not make sense if the ## argument outputnames is given, and that this format does not ## support inp and oup statements.) ##

## The argument prog must not be a black box program ## (see ). ##

## str:= "inp 2\nmu 1 2 3\nmu 3 1 2\niv 2 1\noup 2 1 2";; ## gap> prg:= ScanStraightLineProgram( str, "string" ); ## rec( program := ) ## gap> prg:= prg.program;; ## gap> Display( prg ); ## # input: ## r:= [ g1, g2 ]; ## # program: ## r[3]:= r[1]*r[2]; ## r[2]:= r[3]*r[1]; ## r[1]:= r[2]^-1; ## # return values: ## [ r[1], r[2] ] ## gap> StringOfResultOfStraightLineProgram( prg, [ "a", "b" ] ); ## "[ (aba)^-1, aba ]" ## gap> AtlasStringOfProgram( prg ); ## "inp 2\nmu 1 2 3\nmu 3 1 2\niv 2 1\noup 2\n" ## gap> prg:= StraightLineProgram( "(a^2b^3)^-1", [ "a", "b" ] ); ## ## gap> Print( AtlasStringOfProgram( prg ) ); ## inp 2 ## pwr 2 1 4 ## pwr 3 2 5 ## mu 4 5 3 ## iv 3 4 ## oup 1 4 ## gap> prg:= StraightLineProgram( [ [2,3], [ [3,1,1,4], [1,2,3,1] ] ], 2 ); ## ## gap> Print( AtlasStringOfProgram( prg ) ); ## inp 2 ## pwr 3 2 3 ## pwr 4 1 5 ## mu 3 5 4 ## pwr 2 1 6 ## mu 6 3 5 ## oup 2 4 5 ## gap> Print( AtlasStringOfProgram( prg, "mtx" ) ); ## # inputs are expected in 1 2 ## zsm pwr3 2 3 ## zsm pwr4 1 5 ## zmu 3 5 4 ## zsm pwr2 1 6 ## zmu 6 3 5 ## echo "outputs are in 4 5" ## gap> str:= "inp 2\nchor 1 2\nchor 2 3\nmu 1 2 3\nchor 3 5";; ## gap> prg:= ScanStraightLineDecision( str );; ## gap> AtlasStringOfProgram( prg.program ); ## "inp 2\nchor 1 2\nchor 2 3\nmu 1 2 3\nchor 3 5\n" ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasStringOfProgram" ); ############################################################################# ## #F AtlasStringOfStraightLineProgram( ... ) ## ## This was the documented name before version 1.3 of the package, ## when no straight line decisions and black box programs were available. ## We keep it for backwards compatibility reasons, ## but leave it undocumented. ## DeclareSynonym( "AtlasStringOfStraightLineProgram", AtlasStringOfProgram ); ############################################################################# ## #E atlasrep/gap/utils.gd0000644000175000017500000003722012677265630013260 0ustar samsam############################################################################# ## #W utils.gd GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains the declarations of utility functions for the ## &ATLAS; of Group Representations. ## if not IsBound( InitialSubstringUTF8StringWithSuffix ) then ############################################################################# ## #F InitialSubstringUTF8StringWithSuffix( , , ) ## ## If the string string can be printed in at most n visible ## columns then string is returned. ## Otherwise the concatenation of the longest prefix of string ## and suffix (a string of visible length 1) is returned ## such that the result fits into exactly n visible columns. ## InitialSubstringUTF8StringWithSuffix:= "2b defined"; fi; ############################################################################# ## ## Class Names Used in the AtlasRep Package ## ## <#GAPDoc Label="classnames"> ## ## Definition of &ATLAS; Class Names ## ## For the definition of class names of an almost simple group, ## we assume that the ordinary character tables of all nontrivial normal ## subgroups are shown in ## the &ATLAS; of Finite Groups . ##

## Each class name is a string consisting of the element order of the class ## in question followed by a combination of capital letters, digits, and ## the characters ' and - (starting with a capital letter). ## For example, 1A, 12A1, and 3B' denote ## the class that contains the identity element, ## a class of element order 12, ## and a class of element order 3, respectively. ##

## ## ## For the table of a simple group, the class names are the same ## as returned by the two argument version of the &GAP; function ## , ## cf. : ## The classes are arranged w.r.t. increasing element order and for ## each element order w.r.t. decreasing centralizer order, ## the conjugacy classes that contain elements of order n ## are named nA, nB, nC, ## \ldots; ## the alphabet used here is potentially infinite, and reads ## A, B, C, \ldots, Z, A1, ## B1, \ldots, A2, B2, \ldots. ##

## For example, the classes of the alternating group A_5 have the ## names 1A, 2A, 3A, 5A, and 5B. ## ## ## Next we consider the case of an upward extension G.A ## of a simple group G by a cyclic group of order ## A. ## The &ATLAS; defines class names for each element g of ## G.A only w.r.t. the group G.a, say, ## that is generated by G and g; ## namely, there is a power of g (with the exponent coprime to ## the order of g) for which the class has a name of the same ## form as the class names for simple groups, ## and the name of the class of g w.r.t. G.a is then ## obtained from this name by appending a suitable number of ## dashes '. ## So dashed class names refer exactly to those classes that are not ## printed in the &ATLAS;. ##

## For example, those classes of the symmetric group S_5 that do ## not lie in A_5 have the names 2B, 4A, ## and 6A. ## The outer classes of the group L_2(8).3 have the names ## 3B, 6A, 9D, and 3B', 6A', ## 9D'. ## The outer elements of order 5 in the group Sz(32).5 ## lie in the classes with names 5B, 5B', 5B'', ## and 5B'''. ##

## In the group G.A, the class of g may fuse with other ## classes. ## The name of the class of g in G.A is obtained from the ## names of the involved classes of G.a by concatenating their ## names after removing the element order part from all of them except ## the first one. ##

## For example, the elements of order 9 in the group ## L_2(27).6 are contained in the subgroup L_2(27).3 ## but not in L_2(27). ## In L_2(27).3, they lie in the classes 9A, 9A', ## 9B, and 9B'; ## in L_2(27).6, these classes fuse to 9AB and ## 9A'B'. ## ## ## Now we define class names for general upward extensions ## G.A of a simple group G. ## Each element g of such a group lies in an upward extension ## G.a by a cyclic group, and the class names ## w.r.t. G.a are already defined. ## The name of the class of g in G.A is obtained by ## concatenating the names of the classes in the orbit of G.A on ## the classes of cyclic upward extensions of G, ## after ordering the names lexicographically and removing the element ## order part from all of them except the first one. ## An exception is the situation where dashed and non-dashed ## class names appear in an orbit; ## in this case, the dashed names are omitted. ##

## For example, the classes 21A and 21B of the group ## U_3(5).3 fuse in U_3(5).S_3 to the class 21AB, ## and the class 2B of U_3(5).2 fuses with the involution ## classes 2B', 2B'' in the groups ## U_3(5).2^{\prime} and U_3(5).2^{{\prime\prime}} ## to the class 2B of U_3(5).S_3. ##

## It may happen that some names in the outputs component of a ## record returned by ## do not uniquely determine the classes of the corresponding elements. ## For example, the (algebraically conjugate) classes 39A and ## 39B of the group Co_1 have not been distinguished yet. ## In such cases, the names used contain a minus sign -, ## and mean one of the classes in the range described by the name ## before and the name after the minus sign; ## the element order part of the name does not appear after the minus ## sign. ## So the name 39A-B for the group Co_1 means ## 39A or 39B, ## and the name 20A-B''' for the group Sz(32).5 means ## one of the classes of element order 20 in this group ## (these classes lie outside the simple group Sz). ## ## ## For a downward extension m.G.A of an almost simple ## group G.A by a cyclic group of order m, ## let \pi denote the natural epimorphism from m.G.A ## onto G.A. ## Each class name of m.G.A has the form nX_0, ## nX_1 etc., ## where nX is the class name of the image under \pi, ## and the indices 0, 1 etc. are chosen according to the ## position of the class in the lifting order rows for G, ## see ). ##

## For example, if m = 6 then 1A_1 and 1A_5 denote ## the classes containing the generators of the kernel of \pi, ## that is, central elements of order 6. ## ## ## ## ## <#/GAPDoc> ## #T missing: #T general central downward extensions (2^2, 2 \times 4, ...) ## ############################################################################# ## #F AtlasClassNames( ) ## ## <#GAPDoc Label="AtlasClassNames"> ## ## ## ## ## a list of class names. ## ## ## Let tbl be the ordinary or modular character table of a group ## G, say, that is almost simple or a downward extension of an ## almost simple group and such that tbl is an &ATLAS; table ## from the &GAP; Character Table Library, ## according to its value. ## Then returns the list of class names for ## G, as defined ## in Section . ## The ordering of class names is the same as the ordering of the columns ## of tbl. ##

## (The function may work also for character tables that are not ## &ATLAS; tables, ## but then clearly the class names returned are somewhat arbitrary.) ##

## AtlasClassNames( CharacterTable( "L3(4).3" ) ); ## [ "1A", "2A", "3A", "4ABC", "5A", "5B", "7A", "7B", "3B", "3B'", ## "3C", "3C'", "6B", "6B'", "15A", "15A'", "15B", "15B'", "21A", ## "21A'", "21B", "21B'" ] ## gap> AtlasClassNames( CharacterTable( "U3(5).2" ) ); ## [ "1A", "2A", "3A", "4A", "5A", "5B", "5CD", "6A", "7AB", "8AB", ## "10A", "2B", "4B", "6D", "8C", "10B", "12B", "20A", "20B" ] ## gap> AtlasClassNames( CharacterTable( "L2(27).6" ) ); ## [ "1A", "2A", "3AB", "7ABC", "13ABC", "13DEF", "14ABC", "2B", "4A", ## "26ABC", "26DEF", "28ABC", "28DEF", "3C", "3C'", "6A", "6A'", ## "9AB", "9A'B'", "6B", "6B'", "12A", "12A'" ] ## gap> AtlasClassNames( CharacterTable( "L3(4).3.2_2" ) ); ## [ "1A", "2A", "3A", "4ABC", "5AB", "7A", "7B", "3B", "3C", "6B", ## "15A", "15B", "21A", "21B", "2C", "4E", "6E", "8D", "14A", "14B" ] ## gap> AtlasClassNames( CharacterTable( "3.A6" ) ); ## [ "1A_0", "1A_1", "1A_2", "2A_0", "2A_1", "2A_2", "3A_0", "3B_0", ## "4A_0", "4A_1", "4A_2", "5A_0", "5A_1", "5A_2", "5B_0", "5B_1", ## "5B_2" ] ## gap> AtlasClassNames( CharacterTable( "2.A5.2" ) ); ## [ "1A_0", "1A_1", "2A_0", "3A_0", "3A_1", "5AB_0", "5AB_1", "2B_0", ## "4A_0", "4A_1", "6A_0", "6A_1" ] ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasClassNames" ); ############################################################################# ## #V AtlasClassNamesOffsetInfo ## ## ## ## ## ## This global variable describes the cyclic upwards extensions of those ## simple groups whose ordinary character tables are contained in the ## &ATLAS; of Finite Groups and for which the outer automorphism groups ## are noncyclic. ## ## ## DeclareGlobalVariable( "AtlasClassNamesOffsetInfo" ); ############################################################################# ## #F AtlasCharacterNames( ) ## ## <#GAPDoc Label="AtlasCharacterNames"> ## ## ## ## ## a list of character names. ## ## ## Let tbl be the ordinary or modular character table of a simple ## group. ## returns a list of strings, ## the i-th entry being the name of the i-th irreducible ## character of tbl; ## this name consists of the degree of this character followed by ## distinguishing lowercase letters. ##

## AtlasCharacterNames( CharacterTable( "A5" ) ); ## [ "1a", "3a", "3b", "4a", "5a" ] ## ]]> ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasCharacterNames" ); ############################################################################# ## #F StringOfAtlasProgramCycToCcls( , , ) ## ## ## ## ## ## The purpose of this utility program is to construct a straight line ## program for computing conjugacy class representatives of a group G ## from a straight line program for computing representatives of classes ## of maximally cyclic subgroups of G; ## the latter program is assumed to be given by the string prgstring. ## The second argument tbl must be the ordinary character table of ## G. ## The third argument mode must be one of the strings "names" ## or "numbers"; in the former case, the labels used are class names, ## in the latter case they are numbers. ## (Note that the labels used for the inputs are the outputs of the program ## given by prgstring, which may be names even if "numbers" is ## chosen for mode.) ##

## G must be an &ATLAS; group, and the classes of tbl must be ## sorted compatibly with the ## &ATLAS; of Finite Groups , ## ## ## DeclareGlobalFunction( "StringOfAtlasProgramCycToCcls" ); ############################################################################# ## #F CurrentDateTimeString( [] ) ## ## ## ## ## ## If the system function date is available then the return value is ## a string that describes the current date and time, ## otherwise the string "unknown" is returned. ##

## If the argument options is given it must be a list of options for ## date; ## for example an empty list means the local time, ## and the value [ "-u" ] means Greenwich mean time (UTC). ##

## If no argument is given then the format of the result refers to Greenwich ## mean time and is compatible with ## and ; ## in this case the option +%s is used. ## ## ## DeclareGlobalFunction( "CurrentDateTimeString" ); ############################################################################# ## #F SendMail( , , , ) ## ## ## ## ## ## Let sendto and copyto be lists of email addresses, ## and subject and text be strings. ## sends email messages with subject subject ## and body text to the addresses in sendto and copyto. ## ## ## DeclareGlobalFunction( "SendMail" ); ############################################################################# ## #F ParseBackwards( , ) #F ParseBackwardsWithPrefix( , ) #F ParseForwards( , ) #F ParseForwardsWithSuffix( , ) ## ## ## ## ## ## ## ## ## ## ## ## DeclareGlobalFunction( "ParseBackwards" ); DeclareGlobalFunction( "ParseBackwardsWithPrefix" ); DeclareGlobalFunction( "ParseForwards" ); DeclareGlobalFunction( "ParseForwardsWithSuffix" ); ############################################################################# ## #E atlasrep/gap/atlasprm.g0000644000175000017500000234404412675260061013575 0ustar samsam############################################################################# ## #W atlasprm.g GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file is the primary file of the GAP interface for the ## Atlas of Group Representations. ## It contains the data that is needed to access the representations and ## straight line programs. ## ## This file is the only one in the AtlasRep package that must be changed ## when new information is added to the database. ## ############################################################################# ## ## Establish the bijection between the group names used in the filenames of ## the ATLAS database and the names used to access the groups in GAP. ## # names that are not really supported (but we want to avoid error messages) # alternating and related groups AGR.GNAN("A5","A5"); AGR.GNAN("A5.2","S5"); AGR.GNAN("2.A5","2A5"); AGR.GNAN("2.A5.2","2S5"); AGR.GNAN("Isoclinic(2.A5.2)","2S5i"); AGR.GNAN("A6","A6"); AGR.GNAN("2.A6","2A6"); AGR.GNAN("3.A6","3A6"); AGR.GNAN("6.A6","6A6"); AGR.GNAN("A6.2_1","S6"); AGR.GNAN("A6.2_2","PGL29"); AGR.GNAN("A6.2_3","M10"); AGR.GNAN("A6.2^2","A6V4"); AGR.GNAN("2.A6.2_1","2S6"); AGR.GNAN("3.A6.2_1","3S6"); AGR.GNAN("6.A6.2_1","6S6"); AGR.GNAN("A7","A7"); AGR.GNAN("A7.2","S7"); AGR.GNAN("2.A7","2A7"); AGR.GNAN("2.A7.2","2S7"); AGR.GNAN("Isoclinic(2.A7.2)","2S7i"); AGR.GNAN("3.A7","3A7"); AGR.GNAN("3.A7.2","3S7"); AGR.GNAN("6.A7","6A7"); AGR.GNAN("6.A7.2","6S7"); AGR.GNAN("A8","A8"); AGR.GNAN("A8.2","S8"); AGR.GNAN("2.A8","2A8"); AGR.GNAN("2.A8.2","2S8"); AGR.GNAN("Isoclinic(2.A8.2)","2S8i"); AGR.GNAN("A9","A9"); AGR.GNAN("A9.2","S9"); AGR.GNAN("2.A9","2A9"); AGR.GNAN("2.A9.2","2S9"); AGR.GNAN("A10","A10"); AGR.GNAN("A10.2","S10"); AGR.GNAN("2.A10","2A10"); AGR.GNAN("2.A10.2","2S10"); AGR.GNAN("A11","A11"); AGR.GNAN("A11.2","S11"); AGR.GNAN("2.A11","2A11"); AGR.GNAN("2.A11.2","2S11"); AGR.GNAN("A12","A12"); AGR.GNAN("A12.2","S12"); AGR.GNAN("2.A12","2A12"); AGR.GNAN("2.A12.2","2S12"); AGR.GNAN("A13","A13"); AGR.GNAN("A13.2","S13"); AGR.GNAN("2.A13","2A13"); AGR.GNAN("2.A13.2","2S13"); AGR.GNAN("A14","A14"); AGR.GNAN("A14.2","S14"); AGR.GNAN("2.A14","2A14"); AGR.GNAN("2.A14.2","2S14"); AGR.GNAN("Isoclinic(2.A14.2)","2S14i"); AGR.GNAN("A15","A15"); AGR.GNAN("A15.2","S15"); AGR.GNAN("A16","A16"); AGR.GNAN("A16.2","S16"); AGR.GNAN("A17","A17"); AGR.GNAN("A17.2","S17"); AGR.GNAN("A18","A18"); AGR.GNAN("A18.2","S18"); AGR.GNAN("A19","A19"); AGR.GNAN("A19.2","S19"); AGR.GNAN("A20","A20"); AGR.GNAN("A20.2","S20"); AGR.GNAN("A21","A21"); AGR.GNAN("A21.2","S21"); AGR.GNAN("A22","A22"); AGR.GNAN("A22.2","S22"); AGR.GNAN("A23","A23"); AGR.GNAN("A23.2","S23"); AGR.GNAN("M20","M20"); AGR.GNAN("2aM20","2aM20"); AGR.GNAN("2bM20","2bM20"); AGR.GNAN("2cM20","2cM20"); AGR.GNAN("4bM20","4bM20"); # symplectic and related groups AGR.GNAN("S4(4)","S44"); AGR.GNAN("S4(4).2","S44d2"); AGR.GNAN("S4(4).4","S44d4"); AGR.GNAN("S4(5)","S45"); AGR.GNAN("S4(5).2","S45d2"); AGR.GNAN("2.S4(5)","2S45"); AGR.GNAN("S4(7)","S47"); AGR.GNAN("S4(7).2","S47d2"); AGR.GNAN("2.S4(7)","2S47"); AGR.GNAN("2.S4(7).2","2S47d2"); AGR.GNAN("S4(9)","S49"); AGR.GNAN("2.S4(9)","2S49"); AGR.GNAN("S4(11)","S411"); AGR.GNAN("2.S4(11)","2S411"); AGR.GNAN("S4(13)","S413"); AGR.GNAN("2.S4(13)","2S413"); AGR.GNAN("S4(17)","S417"); AGR.GNAN("2.S4(17)","2S417"); AGR.GNAN("S4(19)","S419"); AGR.GNAN("2.S4(19)","2S419"); AGR.GNAN("S6(2)","S62"); AGR.GNAN("2.S6(2)","2S62"); AGR.GNAN("S6(3)","S63"); AGR.GNAN("S6(3).2","S63d2"); AGR.GNAN("2.S6(3)","2S63"); AGR.GNAN("2.S6(3).2","2S63d2"); AGR.GNAN("S6(5)","S65"); AGR.GNAN("S8(2)","S82"); AGR.GNAN("S8(3)","S83"); AGR.GNAN("S10(2)","S102"); # orthogonal and related groups AGR.GNAN("O7(3)","O73"); AGR.GNAN("O7(3).2","O73d2"); AGR.GNAN("2.O7(3)","2O73"); AGR.GNAN("2.O7(3).2","2O73d2"); AGR.GNAN("3.O7(3)","3O73"); AGR.GNAN("3.O7(3).2","3O73d2"); AGR.GNAN("6.O7(3)","6O73"); AGR.GNAN("6.O7(3).2","6O73d2"); AGR.GNAN("O8-(2)","O8m2"); AGR.GNAN("O8-(2).2","O8m2d2"); AGR.GNAN("O8+(2)","O8p2"); AGR.GNAN("O8+(2).2","O8p2d2"); AGR.GNAN("O8+(2).3","O8p2d3"); AGR.GNAN("2.O8+(2)","2O8p2"); AGR.GNAN("2.O8+(2).2","2O8p2d2"); AGR.GNAN("O8-(3)","O8m3"); AGR.GNAN("O8-(3).2_1","O8m3d2a"); AGR.GNAN("O8-(3).2_2","O8m3d2b"); AGR.GNAN("O8-(3).2_3","O8m3d2c"); AGR.GNAN("O8-(3).2^2","O8m3V4"); AGR.GNAN("O8-(3).D8","O8m3D8"); # a double cover of `O8-(3).2^2' AGR.GNAN("2.O8-(3)","2O8m3"); AGR.GNAN("2.O8-(3).2_1","2O8m3d2a"); AGR.GNAN("O8+(3)","O8p3"); AGR.GNAN("O8+(3).S4","O8p3S4"); AGR.GNAN("2.O8+(3)","2O8p3"); AGR.GNAN("2^2.O8+(3).S4","4O8p3S4"); AGR.GNAN("O9(3)","O93"); AGR.GNAN("O9(3).2","O93d2"); AGR.GNAN("2.O9(3)","2O93"); AGR.GNAN("2.O9(3).2","2O93d2"); AGR.GNAN("O10-(2)","O10m2"); AGR.GNAN("O10-(2).2","O10m2d2"); AGR.GNAN("O10+(2)","O10p2"); AGR.GNAN("O10+(2).2","O10p2d2"); # projective special unitary and related groups AGR.GNAN("U3(3)","U33"); AGR.GNAN("U3(3).2","U33d2"); AGR.GNAN("U3(4)","U34"); AGR.GNAN("U3(4).2","U34d2"); AGR.GNAN("U3(4).4","U34d4"); AGR.GNAN("U3(5)","U35"); AGR.GNAN("U3(5).2","U35d2"); AGR.GNAN("U3(5).3","U35d3"); AGR.GNAN("U3(7)","U37"); AGR.GNAN("U3(8)","U38"); AGR.GNAN("U3(8).2","U38d2"); AGR.GNAN("U3(8).3_1","U38d3a"); AGR.GNAN("U3(8).3_2","U38d3b"); AGR.GNAN("U3(8).3_3","U38d3c"); AGR.GNAN("U3(8).6","U38d6"); AGR.GNAN("U3(8).3^2","U38E9"); AGR.GNAN("U3(8).S3","U38S3"); AGR.GNAN("U3(8).(S3x3)","U38S3x3"); AGR.GNAN("3.U3(8)","3U38"); AGR.GNAN("U3(9)","U39"); AGR.GNAN("U3(11)","U311"); AGR.GNAN("U3(11).2","U311d2"); AGR.GNAN("3.U3(11)","3U311"); AGR.GNAN("3.U3(11).2","3U311d2"); AGR.GNAN("U3(13)","U313"); AGR.GNAN("U3(16)","U316"); AGR.GNAN("U4(2)","U42"); AGR.GNAN("U4(2).2","U42d2"); AGR.GNAN("2.U4(2)","2U42"); AGR.GNAN("2.U4(2).2","2U42d2"); AGR.GNAN("U4(3)","U43"); AGR.GNAN("U4(3).2_1","U43d21"); AGR.GNAN("U4(3).2_2","U43d22"); AGR.GNAN("U4(3).2_3","U43d23"); AGR.GNAN("U4(3).4","U43d4"); AGR.GNAN("U4(3).D8","U43D8"); AGR.GNAN("2.U4(3).D8","2U43D8"); AGR.GNAN("3^2.U4(3).D8","9U43D8"); AGR.GNAN("U4(4)","U44"); AGR.GNAN("U4(5)","U45"); AGR.GNAN("U5(2)","U52"); AGR.GNAN("U5(2).2","U52d2"); AGR.GNAN("U5(3)","U53"); AGR.GNAN("U5(4)","U54"); AGR.GNAN("U6(2)","U62"); AGR.GNAN("U6(2).2","U62d2"); AGR.GNAN("U6(2).3","U62d3"); AGR.GNAN("U6(2).S3","U62S3"); AGR.GNAN("2.U6(2)","2U62"); AGR.GNAN("3.U6(2)","3U62"); AGR.GNAN("6.U6(2)","6U62"); AGR.GNAN("2^2.U6(2)","4U62"); AGR.GNAN("(2^2x3).U6(2)","12U62"); AGR.GNAN("U6(3)","U63"); AGR.GNAN("U7(2)","U72"); AGR.GNAN("2^14.U7(2)","214U72"); AGR.GNAN("U8(2)","U82"); # exceptional and related groups AGR.GNAN("E6(2)","E62"); AGR.GNAN("E6(4)","E64"); AGR.GNAN("E6(4).2","E64d2"); AGR.GNAN("3.E6(4)","3E64"); AGR.GNAN("3.E6(4).2","3E64d2"); AGR.GNAN("E7(2)","E72"); AGR.GNAN("E7(4)","E74"); AGR.GNAN("E8(2)","E82"); AGR.GNAN("E8(5)","E85"); AGR.GNAN("F4(2)","F42"); AGR.GNAN("F4(2).2","F42d2"); AGR.GNAN("2.F4(2)","2F42"); AGR.GNAN("2.F4(2).2","2F42d2"); AGR.GNAN("2.(2xF4(2)).2","2F42d4i"); AGR.GNAN("G2(3)","G23"); AGR.GNAN("G2(3).2","G23d2"); AGR.GNAN("3.G2(3)","3G23"); AGR.GNAN("3.G2(3).2","3G23d2"); AGR.GNAN("G2(4)","G24"); AGR.GNAN("G2(4).2","G24d2"); AGR.GNAN("2.G2(4)","2G24"); AGR.GNAN("2.G2(4).2","2G24d2"); AGR.GNAN("Isoclinic(2.G2(4).2)","2G24d2i"); AGR.GNAN("G2(5)","G25"); AGR.GNAN("R(27)","R27"); AGR.GNAN("R(27).3","R27d3"); AGR.GNAN("Sz(32)","Sz32"); AGR.GNAN("Sz(32).5","Sz32d5"); AGR.GNAN("Sz(8)","Sz8"); AGR.GNAN("Sz(8).3","Sz8d3"); AGR.GNAN("2.Sz(8)","2Sz8"); AGR.GNAN("2^2.Sz(8).3","4Sz8d3"); # twisted and related groups AGR.GNAN("3D4(2)","TD42"); AGR.GNAN("3D4(2).3","TD42d3"); AGR.GNAN("3D4(3)","TD43"); AGR.GNAN("2E6(2)","TE62"); AGR.GNAN("2E6(2).2","TE62d2"); AGR.GNAN("2E6(2).3","TE62d3"); AGR.GNAN("2E6(2).S3","TE62S3"); AGR.GNAN("2.2E6(2)","2TE62"); AGR.GNAN("2.2E6(2).2","2TE62d2"); AGR.GNAN("2^2.2E6(2)","4TE62"); AGR.GNAN("3.2E6(2)","3TE62"); AGR.GNAN("3.2E6(2).2","3TE62d2"); AGR.GNAN("3.2E6(2).3","3TE62d3"); AGR.GNAN("3.2E6(2).S3","3TE62S3"); AGR.GNAN("2F4(2)'","TF42"); AGR.GNAN("2F4(2)'.2","TF42d2"); # projective special linear and related groups AGR.GNAN("L2(8)","L28"); AGR.GNAN("L2(8).3","L28d3"); AGR.GNAN("L2(11)","L211"); AGR.GNAN("L2(11).2","L211d2"); AGR.GNAN("2.L2(11)","2L211"); AGR.GNAN("L2(13)","L213"); AGR.GNAN("L2(13).2","L213d2"); AGR.GNAN("2.L2(13)","2L213"); AGR.GNAN("2.L2(13).2","2L213d2"); AGR.GNAN("L2(16)","L216"); AGR.GNAN("L2(16).2","L216d2"); AGR.GNAN("L2(16).4","L216d4"); AGR.GNAN("L2(17)","L217"); AGR.GNAN("L2(17).2","L217d2"); AGR.GNAN("2.L2(17)","2L217"); AGR.GNAN("2.L2(17).2","2L217d2"); AGR.GNAN("L2(19)","L219"); AGR.GNAN("L2(19).2","L219d2"); AGR.GNAN("2.L2(19)","2L219"); AGR.GNAN("Isoclinic(2.L2(19).2)","2L219d2i"); AGR.GNAN("L2(23)","L223"); AGR.GNAN("L2(23).2","L223d2"); AGR.GNAN("2.L2(23)","2L223"); AGR.GNAN("Isoclinic(2.L2(23).2)","2L223d2i"); AGR.GNAN("L2(25)","L225"); AGR.GNAN("L2(25).2_1","L225d21"); AGR.GNAN("L2(25).2_2","L225d22"); AGR.GNAN("L2(25).2_3","L225d23"); AGR.GNAN("2.L2(25)","2L225"); AGR.GNAN("L2(27)","L227"); AGR.GNAN("L2(27).2","L227d2"); AGR.GNAN("L2(27).3","L227d3"); AGR.GNAN("L2(27).6","L227d6"); AGR.GNAN("2.L2(27)","2L227"); AGR.GNAN("L2(29)","L229"); AGR.GNAN("L2(29).2","L229d2"); AGR.GNAN("2.L2(29)","2L229"); AGR.GNAN("L2(31)","L231"); AGR.GNAN("L2(31).2","L231d2"); AGR.GNAN("2.L2(31)","2L231"); AGR.GNAN("L2(32)","L232"); AGR.GNAN("L2(32).5","L232d5"); AGR.GNAN("L2(37)","L237"); AGR.GNAN("2.L2(37)","2L237"); AGR.GNAN("L2(41)","L241"); AGR.GNAN("2.L2(41)","2L241"); AGR.GNAN("L2(43)","L243"); AGR.GNAN("2.L2(43)","2L243"); AGR.GNAN("L2(47)","L247"); AGR.GNAN("2.L2(47)","2L247"); AGR.GNAN("L2(49)","L249"); AGR.GNAN("2.L2(49)","2L249"); AGR.GNAN("L2(53)","L253"); AGR.GNAN("2.L2(53)","2L253"); AGR.GNAN("L2(59)","L259"); AGR.GNAN("2.L2(59)","2L259"); AGR.GNAN("L2(61)","L261"); AGR.GNAN("2.L2(61)","2L261"); AGR.GNAN("L2(64)","L264"); AGR.GNAN("L2(67)","L267"); AGR.GNAN("2.L2(67)","2L267"); AGR.GNAN("L2(71)","L271"); AGR.GNAN("2.L2(71)","2L271"); AGR.GNAN("L2(73)","L273"); AGR.GNAN("2.L2(73)","2L273"); AGR.GNAN("L2(79)","L279"); AGR.GNAN("2.L2(79)","2L279"); AGR.GNAN("L2(81)","L281"); AGR.GNAN("L2(83)","L283"); AGR.GNAN("2.L2(83)","2L283"); AGR.GNAN("L2(89)","L289"); AGR.GNAN("2.L2(89)","2L289"); AGR.GNAN("L2(97)","L297"); AGR.GNAN("2.L2(97)","2L297"); AGR.GNAN("L2(101)","L2101"); AGR.GNAN("2.L2(101)","2L2101"); AGR.GNAN("L2(103)","L2103"); AGR.GNAN("2.L2(103)","2L2103"); AGR.GNAN("L2(107)","L2107"); AGR.GNAN("2.L2(107)","2L2107"); AGR.GNAN("L2(109)","L2109"); AGR.GNAN("2.L2(109)","2L2109"); AGR.GNAN("L2(113)","L2113"); AGR.GNAN("2.L2(113)","2L2113"); AGR.GNAN("L2(127)","L2127"); AGR.GNAN("2.L2(127)","2L2127"); AGR.GNAN("2.L2(131)","2L2131"); AGR.GNAN("L2(128)","L2128"); AGR.GNAN("L2(131)","L2131"); AGR.GNAN("L2(137)","L2137"); AGR.GNAN("2.L2(137)","2L2137"); AGR.GNAN("L2(139)","L2139"); AGR.GNAN("2.L2(139)","2L2139"); AGR.GNAN("L2(149)","L2149"); AGR.GNAN("2.L2(149)","2L2149"); AGR.GNAN("L2(151)","L2151"); AGR.GNAN("2.L2(151)","2L2151"); AGR.GNAN("L2(157)","L2157"); AGR.GNAN("2.L2(157)","2L2157"); AGR.GNAN("L2(163)","L2163"); AGR.GNAN("2.L2(163)","2L2163"); AGR.GNAN("L2(167)","L2167"); AGR.GNAN("2.L2(167)","2L2167"); AGR.GNAN("L2(173)","L2173"); AGR.GNAN("2.L2(173)","2L2173"); AGR.GNAN("L2(179)","L2179"); AGR.GNAN("2.L2(179)","2L2179"); AGR.GNAN("L2(181)","L2181"); AGR.GNAN("2.L2(181)","2L2181"); AGR.GNAN("L2(191)","L2191"); AGR.GNAN("2.L2(191)","2L2191"); AGR.GNAN("L2(193)","L2193"); AGR.GNAN("2.L2(193)","2L2193"); AGR.GNAN("L2(197)","L2197"); AGR.GNAN("2.L2(197)","2L2197"); AGR.GNAN("L2(199)","L2199"); AGR.GNAN("2.L2(199)","2L2199"); AGR.GNAN("L2(211)","L2211"); AGR.GNAN("2.L2(211)","2L2211"); AGR.GNAN("L2(223)","L2223"); AGR.GNAN("2.L2(223)","2L2223"); AGR.GNAN("L2(227)","L2227"); AGR.GNAN("2.L2(227)","2L2227"); AGR.GNAN("L2(229)","L2229"); AGR.GNAN("2.L2(229)","2L2229"); AGR.GNAN("L2(233)","L2233"); AGR.GNAN("2.L2(233)","2L2233"); AGR.GNAN("L2(239)","L2239"); AGR.GNAN("2.L2(239)","2L2239"); AGR.GNAN("L2(241)","L2241"); AGR.GNAN("2.L2(241)","2L2241"); AGR.GNAN("L3(2)","L27"); AGR.GNAN("L3(2).2","L27d2"); AGR.GNAN("2.L3(2)","2L27"); AGR.GNAN("2.L3(2).2","2L27d2"); AGR.GNAN("Isoclinic(2.L3(2).2)","2L27d2i"); AGR.GNAN("L3(3)","L33"); AGR.GNAN("L3(3).2","L33d2"); AGR.GNAN("L3(4)","L34"); AGR.GNAN("L3(4).2_1","L34d2a"); AGR.GNAN("L3(4).2_2","L34d2b"); AGR.GNAN("L3(4).2_3","L34d2c"); AGR.GNAN("L3(4).3","L34d3"); AGR.GNAN("L3(4).6","L34d6"); AGR.GNAN("L3(4).2^2","L34V4"); AGR.GNAN("L3(4).D12","L34D12"); AGR.GNAN("2.L3(4)","2L34"); AGR.GNAN("2.L3(4).2_1","2L34d2a"); AGR.GNAN("3.L3(4)","3L34"); AGR.GNAN("3.L3(4).2_1","3L34d2a"); AGR.GNAN("2^2.L3(4)","4L34"); AGR.GNAN("2^2.L3(4).2_2","4L34d2b"); AGR.GNAN("4_1.L3(4)","4aL34"); AGR.GNAN("4_1.L3(4).2_1","4aL34d2a"); AGR.GNAN("4_2.L3(4)","4bL34"); AGR.GNAN("4_2.L3(4).2_1","4bL34d2a"); AGR.GNAN("6.L3(4)","6L34"); AGR.GNAN("6.L3(4).2_1","6L34d2a"); AGR.GNAN("12_1.L3(4)","12aL34"); AGR.GNAN("12_1.L3(4).2_1","12aL34d2a"); AGR.GNAN("12_2.L3(4)","12bL34"); AGR.GNAN("12_2.L3(4).2_1","12bL34d2a"); AGR.GNAN("L3(5)","L35"); AGR.GNAN("L3(5).2","L35d2"); AGR.GNAN("L3(7)","L37"); AGR.GNAN("L3(7).2","L37d2"); AGR.GNAN("L3(7).3","L37d3"); AGR.GNAN("3.L3(7)","3L37"); AGR.GNAN("3.L3(7).2","3L37d2"); AGR.GNAN("L3(8)","L38"); AGR.GNAN("L3(8).2","L38d2"); AGR.GNAN("L3(8).3","L38d3"); AGR.GNAN("L3(8).6","L38d6"); AGR.GNAN("L3(9)","L39"); AGR.GNAN("L3(9).2_1","L39d21"); AGR.GNAN("L3(9).2_2","L39d22"); AGR.GNAN("L3(9).2_3","L39d23"); AGR.GNAN("L3(11)","L311"); AGR.GNAN("L3(13)","L313"); AGR.GNAN("L4(3)","L43"); AGR.GNAN("L4(3).2_1","L43d21"); AGR.GNAN("L4(3).2_2","L43d22"); AGR.GNAN("L4(3).2_3","L43d23"); AGR.GNAN("L4(4)","L44"); AGR.GNAN("L4(5)","L45"); AGR.GNAN("L5(2)","L52"); AGR.GNAN("L5(2).2","L52d2"); AGR.GNAN("L5(3)","L53"); AGR.GNAN("L6(2)","L62"); AGR.GNAN("L6(2).2","L62d2"); AGR.GNAN("L7(2)","L72"); AGR.GNAN("L7(2).2","L72d2"); AGR.GNAN("2^4.A8","24A8"); AGR.GNAN("2^5.L5(2)","25L52"); AGR.GNAN("5^3.L3(5)","53L35"); # sporadic simple and related groups AGR.GNAN("B","B"); AGR.GNAN("2.B","2B"); AGR.GNAN("Co1","Co1"); AGR.GNAN("2.Co1","2Co1"); AGR.GNAN("Co2","Co2"); AGR.GNAN("Co3","Co3"); AGR.GNAN("Fi22","F22"); AGR.GNAN("Fi22.2","F22d2"); AGR.GNAN("2.Fi22","2F22"); AGR.GNAN("2.Fi22.2","2F22d2"); AGR.GNAN("Isoclinic(2.Fi22.2)","2F22d2i"); AGR.GNAN("3.Fi22","3F22"); AGR.GNAN("3.Fi22.2","3F22d2"); AGR.GNAN("6.Fi22","6F22"); AGR.GNAN("6.Fi22.2","6F22d2"); AGR.GNAN("Isoclinic(6.Fi22.2)","6F22d2i"); AGR.GNAN("Fi23","F23"); AGR.GNAN("3.Fi24'","3F24"); AGR.GNAN("3.Fi24'.2","3F24d2"); AGR.GNAN("Fi24'","F24"); AGR.GNAN("Fi24'.2","F24d2"); AGR.GNAN("HN","HN"); AGR.GNAN("HN.2","HNd2"); AGR.GNAN("HS","HS"); AGR.GNAN("HS.2","HSd2"); AGR.GNAN("2.HS","2HS"); AGR.GNAN("2.HS.2","2HSd2"); AGR.GNAN("Isoclinic(2.HS.2)","2HSd2i"); AGR.GNAN("He","He"); AGR.GNAN("He.2","Hed2"); AGR.GNAN("J1","J1"); AGR.GNAN("J2","J2"); AGR.GNAN("J2.2","J2d2"); AGR.GNAN("2.J2","2J2"); AGR.GNAN("2.J2.2","2J2d2"); AGR.GNAN("Isoclinic(2.J2.2)","2J2d2i"); AGR.GNAN("J3","J3"); AGR.GNAN("J3.2","J3d2"); AGR.GNAN("3.J3","3J3"); AGR.GNAN("3.J3.2","3J3d2"); AGR.GNAN("J4","J4"); AGR.GNAN("Ly","Ly"); AGR.GNAN("M","M"); AGR.GNAN("M11","M11"); AGR.GNAN("M12","M12"); AGR.GNAN("M12.2","M12d2"); AGR.GNAN("2.M12","2M12"); AGR.GNAN("2.M12.2","2M12d2"); AGR.GNAN("Isoclinic(2.M12.2)","2M12d2i"); AGR.GNAN("M22","M22"); AGR.GNAN("M22.2","M22d2"); AGR.GNAN("2.M22","2M22"); AGR.GNAN("2.M22.2","2M22d2"); AGR.GNAN("Isoclinic(2.M22.2)","2M22d2i"); AGR.GNAN("3.M22","3M22"); AGR.GNAN("3.M22.2","3M22d2"); AGR.GNAN("4.M22","4M22"); AGR.GNAN("4.M22.2","4M22d2"); AGR.GNAN("Isoclinic(4.M22.2)","4M22d2i"); AGR.GNAN("6.M22","6M22"); AGR.GNAN("6.M22.2","6M22d2"); AGR.GNAN("Isoclinic(6.M22.2)","6M22d2i"); AGR.GNAN("12.M22","12M22"); AGR.GNAN("12.M22.2","12M22d2"); AGR.GNAN("Isoclinic(12.M22.2)","12M22d2i"); AGR.GNAN("M23","M23"); AGR.GNAN("M24","M24"); AGR.GNAN("McL","McL"); AGR.GNAN("McL.2","McLd2"); AGR.GNAN("3.McL","3McL"); AGR.GNAN("3.McL.2","3McLd2"); AGR.GNAN("ON","ON"); AGR.GNAN("ON.2","ONd2"); AGR.GNAN("ON.4","ONd4"); AGR.GNAN("3.ON","3ON"); AGR.GNAN("3.ON.2","3ONd2"); AGR.GNAN("Ru","Ru"); AGR.GNAN("2.Ru","2Ru"); AGR.GNAN("Suz","Suz"); AGR.GNAN("Suz.2","Suzd2"); AGR.GNAN("2.Suz","2Suz"); AGR.GNAN("2.Suz.2","2Suzd2"); AGR.GNAN("Isoclinic(2.Suz.2)","2Suzd2i"); AGR.GNAN("3.Suz","3Suz"); AGR.GNAN("3.Suz.2","3Suzd2"); AGR.GNAN("6.Suz","6Suz"); AGR.GNAN("6.Suz.2","6Suzd2"); AGR.GNAN("Isoclinic(6.Suz.2)","6Suzd2i"); AGR.GNAN("Th","Th"); # maximal subgroups of the Monster AGR.GNAN("2^(1+24).Co1","Mmax2"); AGR.GNAN("2^2.2E6(2).S3","Mmax4"); AGR.GNAN("2^(10+16).O10+(2)","Mmax5"); AGR.GNAN("2^(2+11+22).(M24xS3)","Mmax6"); AGR.GNAN("3^(1+12):6.Suz.2","M3max7"); AGR.GNAN("3^(1+12):2.Suz.2","Mmax7"); AGR.GNAN("2^(5+10+20).(S3xL5(2))","Mmax8"); AGR.GNAN("S3xTh","Mmax9"); AGR.GNAN("2^[39].(L3(2)x3.S6)","Mmax10"); AGR.GNAN("3^8.O8-(3).2_3","Mmax11"); AGR.GNAN("(D10xHN).2","Mmax12"); AGR.GNAN("(3^2:2xO8+(3)).S4","Mmax13"); AGR.GNAN("3^(2+5+10).(M11x2S4)","Mmax14"); AGR.GNAN("3^(3+2+6+6):(L3(3)xSD16)","Mmax15"); AGR.GNAN("3^(2+6+6):(L3(3)xSD16)","Mmax15q1"); AGR.GNAN("3^(6+6):(L3(3)xSD16)","Mmax15q2"); AGR.GNAN("3^6:(L3(3)xSD16)","Mmax15q3"); AGR.GNAN("5^(1+6):2.J2.4","Mmax16"); AGR.GNAN("(7:3xHe):2","Mmax17"); AGR.GNAN("(A5xA12):2","Mmax18"); AGR.GNAN("5^(3+3).(2xL3(5))","Mmax19"); AGR.GNAN("(A6xA6xA6).(2xS4)","Mmax20"); AGR.GNAN("(A5xU3(8):3):2","Mmax21"); AGR.GNAN("5^(2+2+4):(S3xGL2(5))","Mmax22"); AGR.GNAN("(L3(2)xS4(4):2).2","Mmax23"); AGR.GNAN("7^(1+4):(3x2.S7)","Mmax24"); AGR.GNAN("(5^2:[2^4]xU3(5)).S3","Mmax25"); AGR.GNAN("(L2(11)xM12):2","Mmax26"); AGR.GNAN("(A7x(A5xA5).4).2","Mmax27"); AGR.GNAN("5^4:(3x2.L2(25)).2","Mmax28"); AGR.GNAN("7^(2+1+2):GL2(7)","Mmax29"); AGR.GNAN("M11xA6.2^2","Mmax30"); AGR.GNAN("(S5xS5xS5):S3","Mmax31"); AGR.GNAN("(L2(11)xL2(11)):4","Mmax32"); AGR.GNAN("13^2:2.L2(13).4","Mmax33"); AGR.GNAN("(7^2:(3x2A4)xL2(7)).2","Mmax34"); AGR.GNAN("(13:6xL3(3)).2","Mmax35"); AGR.GNAN("13^(1+2):(3x4S4)","Mmax36"); AGR.GNAN("11^2:(5x2A5)","Mmax39"); AGR.GNAN("7^2:2.L2(7)","Mmax41"); AGR.GNAN("41:40","Mmax43"); # miscellaneous groups AGR.GNAN("W(F4)","WF4"); ############################################################################# ## ## Bind the list of names in display order. ## AGR.SetGAPnamesSortDisp(); ############################################################################# ## ## Store group orders. ## AGR.GRS("(13:6xL3(3)).2",876096); AGR.GRS("(2^2x3).U6(2)",110361968640); AGR.GRS("(3^2:2xO8+(3)).S4",2139341679820800); AGR.GRS("(5^2:[2^4]xU3(5)).S3",302400000); AGR.GRS("(7:3xHe):2",169276262400); AGR.GRS("(7^2:(3x2A4)xL2(7)).2",1185408); AGR.GRS("(A5xA12):2",28740096000); AGR.GRS("(A5xU3(8):3):2",1985679360); AGR.GRS("(A6xA6xA6).(2xS4)",2239488000); AGR.GRS("(A7x(A5xA5).4).2",72576000); AGR.GRS("(D10xHN).2",5460618240000000); AGR.GRS("(L2(11)xL2(11)):4",1742400); AGR.GRS("(L2(11)xM12):2",125452800); AGR.GRS("(L3(2)xS4(4):2).2",658022400); AGR.GRS("(S5xS5xS5):S3",10368000); AGR.GRS("11^2:(5x2A5)",72600); AGR.GRS("12.M22",5322240); AGR.GRS("12.M22.2",10644480); AGR.GRS("12_1.L3(4)",241920); AGR.GRS("12_1.L3(4).2_1",483840); AGR.GRS("12_2.L3(4)",241920); AGR.GRS("12_2.L3(4).2_1",483840); AGR.GRS("13^(1+2):(3x4S4)",632736); AGR.GRS("13^2:2.L2(13).4",1476384); AGR.GRS("2.(2xF4(2)).2",26489012826931200); AGR.GRS("2.2E6(2)",153064959367549707878400); AGR.GRS("2.2E6(2).2",306129918735099415756800); AGR.GRS("2.A10",3628800); AGR.GRS("2.A10.2",7257600); AGR.GRS("2.A11",39916800); AGR.GRS("2.A11.2",79833600); AGR.GRS("2.A12",479001600); AGR.GRS("2.A12.2",958003200); AGR.GRS("2.A13",6227020800); AGR.GRS("2.A13.2",12454041600); AGR.GRS("2.A14",87178291200); AGR.GRS("2.A14.2",174356582400); AGR.GRS("2.A5",120); AGR.GRS("2.A5.2",240); AGR.GRS("2.A6",720); AGR.GRS("2.A6.2_1",1440); AGR.GRS("2.A7",5040); AGR.GRS("2.A7.2",10080); AGR.GRS("2.A8",40320); AGR.GRS("2.A8.2",80640); AGR.GRS("2.A9",362880); AGR.GRS("2.A9.2",725760); AGR.GRS("2.B",8309562962452852382355161088000000); AGR.GRS("2.Co1",8315553613086720000); AGR.GRS("2.F4(2)",6622253206732800); AGR.GRS("2.F4(2).2",13244506413465600); AGR.GRS("2.Fi22",129123503308800); AGR.GRS("2.Fi22.2",258247006617600); AGR.GRS("2.G2(4)",503193600); AGR.GRS("2.G2(4).2",1006387200); AGR.GRS("2.HS",88704000); AGR.GRS("2.HS.2",177408000); AGR.GRS("2.J2",1209600); AGR.GRS("2.J2.2",2419200); AGR.GRS("2.L2(101)",1030200); AGR.GRS("2.L2(103)",1092624); AGR.GRS("2.L2(107)",1224936); AGR.GRS("2.L2(109)",1294920); AGR.GRS("2.L2(11)",1320); AGR.GRS("2.L2(113)",1442784); AGR.GRS("2.L2(127)",2048256); AGR.GRS("2.L2(13)",2184); AGR.GRS("2.L2(13).2",4368); AGR.GRS("2.L2(131)",2247960); AGR.GRS("2.L2(137)",2571216); AGR.GRS("2.L2(139)",2685480); AGR.GRS("2.L2(149)",3307800); AGR.GRS("2.L2(151)",3442800); AGR.GRS("2.L2(157)",3869736); AGR.GRS("2.L2(163)",4330584); AGR.GRS("2.L2(167)",4657296); AGR.GRS("2.L2(17)",4896); AGR.GRS("2.L2(17).2",9792); AGR.GRS("2.L2(173)",5177544); AGR.GRS("2.L2(179)",5735160); AGR.GRS("2.L2(181)",5929560); AGR.GRS("2.L2(19)",6840); AGR.GRS("2.L2(191)",6967680); AGR.GRS("2.L2(193)",7188864); AGR.GRS("2.L2(197)",7645176); AGR.GRS("2.L2(199)",7880400); AGR.GRS("2.L2(211)",9393720); AGR.GRS("2.L2(223)",11089344); AGR.GRS("2.L2(227)",11696856); AGR.GRS("2.L2(229)",12008760); AGR.GRS("2.L2(23)",12144); AGR.GRS("2.L2(233)",12649104); AGR.GRS("2.L2(239)",13651680); AGR.GRS("2.L2(241)",13997280); AGR.GRS("2.L2(25)",15600); AGR.GRS("2.L2(27)",19656); AGR.GRS("2.L2(29)",24360); AGR.GRS("2.L2(31)",29760); AGR.GRS("2.L2(37)",50616); AGR.GRS("2.L2(41)",68880); AGR.GRS("2.L2(43)",79464); AGR.GRS("2.L2(47)",103776); AGR.GRS("2.L2(49)",117600); AGR.GRS("2.L2(53)",148824); AGR.GRS("2.L2(59)",205320); AGR.GRS("2.L2(61)",226920); AGR.GRS("2.L2(67)",300696); AGR.GRS("2.L2(71)",357840); AGR.GRS("2.L2(73)",388944); AGR.GRS("2.L2(79)",492960); AGR.GRS("2.L2(83)",571704); AGR.GRS("2.L2(89)",704880); AGR.GRS("2.L2(97)",912576); AGR.GRS("2.L3(2)",336); AGR.GRS("2.L3(2).2",672); AGR.GRS("2.L3(4)",40320); AGR.GRS("2.L3(4).2_1",80640); AGR.GRS("2.M12",190080); AGR.GRS("2.M12.2",380160); AGR.GRS("2.M22",887040); AGR.GRS("2.M22.2",1774080); AGR.GRS("2.O7(3)",9170703360); AGR.GRS("2.O7(3).2",18341406720); AGR.GRS("2.O8+(2)",348364800); AGR.GRS("2.O8+(2).2",696729600); AGR.GRS("2.O8+(3)",9904359628800); AGR.GRS("2.O8-(3)",20303937239040); AGR.GRS("2.O8-(3).2_1",40607874478080); AGR.GRS("2.O9(3)",131569513308979200); AGR.GRS("2.O9(3).2",263139026617958400); AGR.GRS("2.Ru",291852288000); AGR.GRS("2.S4(11)",25721308800); AGR.GRS("2.S4(13)",137037962880); AGR.GRS("2.S4(17)",2008994088960); AGR.GRS("2.S4(19)",6114035779200); AGR.GRS("2.S4(5)",9360000); AGR.GRS("2.S4(7)",276595200); AGR.GRS("2.S4(7).2",553190400); AGR.GRS("2.S4(9)",3443212800); AGR.GRS("2.S6(2)",2903040); AGR.GRS("2.S6(3)",9170703360); AGR.GRS("2.S6(3).2",18341406720); AGR.GRS("2.Suz",896690995200); AGR.GRS("2.Suz.2",1793381990400); AGR.GRS("2.Sz(8)",58240); AGR.GRS("2.U4(2)",51840); AGR.GRS("2.U4(2).2",103680); AGR.GRS("2.U4(3).D8",52254720); AGR.GRS("2.U6(2)",18393661440); AGR.GRS("2E6(2)",76532479683774853939200); AGR.GRS("2E6(2).2",153064959367549707878400); AGR.GRS("2E6(2).3",229597439051324561817600); AGR.GRS("2E6(2).S3",459194878102649123635200); AGR.GRS("2F4(2)'",17971200); AGR.GRS("2F4(2)'.2",35942400); AGR.GRS("2^(1+24).Co1",139511839126336328171520000); AGR.GRS("2^(10+16).O10+(2)",1577011055923770163200); AGR.GRS("2^(2+11+22).(M24xS3)",50472333605150392320); AGR.GRS("2^(5+10+20).(S3xL5(2))",2061452360684666880); AGR.GRS("2^14.U7(2)",3732063900024176640); AGR.GRS("2^2.2E6(2)",306129918735099415756800); AGR.GRS("2^2.2E6(2).S3",1836779512410596494540800); AGR.GRS("2^2.L3(4)",80640); AGR.GRS("2^2.L3(4).2_2",161280); AGR.GRS("2^2.O8+(3).S4",475409262182400); AGR.GRS("2^2.Sz(8).3",349440); AGR.GRS("2^2.U6(2)",36787322880); AGR.GRS("2^4.A8",322560); AGR.GRS("2^5.L5(2)",319979520); AGR.GRS("2^[39].(L3(2)x3.S6)",199495389743677440); AGR.GRS("2aM20",1920); AGR.GRS("2bM20",1920); AGR.GRS("2cM20",1920); AGR.GRS("3.2E6(2)",229597439051324561817600); AGR.GRS("3.2E6(2).2",459194878102649123635200); AGR.GRS("3.2E6(2).3",688792317153973685452800); AGR.GRS("3.2E6(2).S3",1377584634307947370905600); AGR.GRS("3.A6",1080); AGR.GRS("3.A6.2_1",2160); AGR.GRS("3.A7",7560); AGR.GRS("3.A7.2",15120); AGR.GRS("3.E6(4)",85528710781342640103833619055142765466746880000); AGR.GRS("3.E6(4).2",171057421562685280207667238110285530933493760000); AGR.GRS("3.Fi22",193685254963200); AGR.GRS("3.Fi22.2",387370509926400); AGR.GRS("3.Fi24'",3765617127571985163878400); AGR.GRS("3.Fi24'.2",7531234255143970327756800); AGR.GRS("3.G2(3)",12737088); AGR.GRS("3.G2(3).2",25474176); AGR.GRS("3.J3",150698880); AGR.GRS("3.J3.2",301397760); AGR.GRS("3.L3(4)",60480); AGR.GRS("3.L3(4).2_1",120960); AGR.GRS("3.L3(7)",5630688); AGR.GRS("3.L3(7).2",11261376); AGR.GRS("3.M22",1330560); AGR.GRS("3.M22.2",2661120); AGR.GRS("3.McL",2694384000); AGR.GRS("3.McL.2",5388768000); AGR.GRS("3.O7(3)",13756055040); AGR.GRS("3.O7(3).2",27512110080); AGR.GRS("3.ON",1382446517760); AGR.GRS("3.ON.2",2764893035520); AGR.GRS("3.Suz",1345036492800); AGR.GRS("3.Suz.2",2690072985600); AGR.GRS("3.U3(11)",212747040); AGR.GRS("3.U3(11).2",425494080); AGR.GRS("3.U3(8)",16547328); AGR.GRS("3.U6(2)",27590492160); AGR.GRS("3D4(2)",211341312); AGR.GRS("3D4(2).3",634023936); AGR.GRS("3D4(3)",20560831566912); AGR.GRS("3^(1+12):2.Suz.2",2859230155080499200); AGR.GRS("3^(1+12):6.Suz.2",8577690465241497600); AGR.GRS("3^(2+5+10).(M11x2S4)",49093924366080); AGR.GRS("3^(2+6+6):(L3(3)xSD16)",429778462464); AGR.GRS("3^(3+2+6+6):(L3(3)xSD16)",11604018486528); AGR.GRS("3^(6+6):(L3(3)xSD16)",47753162496); AGR.GRS("3^2.U4(3).D8",235146240); AGR.GRS("3^6:(L3(3)xSD16)",65505024); AGR.GRS("3^8.O8-(3).2_3",133214132225341440); AGR.GRS("4.M22",1774080); AGR.GRS("4.M22.2",3548160); AGR.GRS("41:40",1640); AGR.GRS("4_1.L3(4)",80640); AGR.GRS("4_1.L3(4).2_1",161280); AGR.GRS("4_2.L3(4)",80640); AGR.GRS("4_2.L3(4).2_1",161280); AGR.GRS("4bM20",3840); AGR.GRS("5^(1+6):2.J2.4",378000000000); AGR.GRS("5^(2+2+4):(S3xGL2(5))",1125000000); AGR.GRS("5^(3+3).(2xL3(5))",11625000000); AGR.GRS("5^3.L3(5)",46500000); AGR.GRS("5^4:(3x2.L2(25)).2",58500000); AGR.GRS("6.A6",2160); AGR.GRS("6.A6.2_1",4320); AGR.GRS("6.A7",15120); AGR.GRS("6.A7.2",30240); AGR.GRS("6.Fi22",387370509926400); AGR.GRS("6.Fi22.2",774741019852800); AGR.GRS("6.L3(4)",120960); AGR.GRS("6.L3(4).2_1",241920); AGR.GRS("6.M22",2661120); AGR.GRS("6.M22.2",5322240); AGR.GRS("6.O7(3)",27512110080); AGR.GRS("6.O7(3).2",55024220160); AGR.GRS("6.Suz",2690072985600); AGR.GRS("6.Suz.2",5380145971200); AGR.GRS("6.U6(2)",55180984320); AGR.GRS("7^(1+4):(3x2.S7)",508243680); AGR.GRS("7^(2+1+2):GL2(7)",33882912); AGR.GRS("7^2:2.L2(7)",16464); AGR.GRS("A10",1814400); AGR.GRS("A10.2",3628800); AGR.GRS("A11",19958400); AGR.GRS("A11.2",39916800); AGR.GRS("A12",239500800); AGR.GRS("A12.2",479001600); AGR.GRS("A13",3113510400); AGR.GRS("A13.2",6227020800); AGR.GRS("A14",43589145600); AGR.GRS("A14.2",87178291200); AGR.GRS("A15",653837184000); AGR.GRS("A15.2",1307674368000); AGR.GRS("A16",10461394944000); AGR.GRS("A16.2",20922789888000); AGR.GRS("A17",177843714048000); AGR.GRS("A17.2",355687428096000); AGR.GRS("A18",3201186852864000); AGR.GRS("A18.2",6402373705728000); AGR.GRS("A19",60822550204416000); AGR.GRS("A19.2",121645100408832000); AGR.GRS("A20",1216451004088320000); AGR.GRS("A20.2",2432902008176640000); AGR.GRS("A21",25545471085854720000); AGR.GRS("A21.2",51090942171709440000); AGR.GRS("A22",562000363888803840000); AGR.GRS("A22.2",1124000727777607680000); AGR.GRS("A23",12926008369442488320000); AGR.GRS("A23.2",25852016738884976640000); AGR.GRS("A5",60); AGR.GRS("A5.2",120); AGR.GRS("A6",360); AGR.GRS("A6.2^2",1440); AGR.GRS("A6.2_1",720); AGR.GRS("A6.2_2",720); AGR.GRS("A6.2_3",720); AGR.GRS("A7",2520); AGR.GRS("A7.2",5040); AGR.GRS("A8",20160); AGR.GRS("A8.2",40320); AGR.GRS("A9",181440); AGR.GRS("A9.2",362880); AGR.GRS("B",4154781481226426191177580544000000); AGR.GRS("Co1",4157776806543360000); AGR.GRS("Co2",42305421312000); AGR.GRS("Co3",495766656000); AGR.GRS("E6(2)",214841575522005575270400); AGR.GRS("E6(4)",28509570260447546701277873018380921822248960000); AGR.GRS("E6(4).2",57019140520895093402555746036761843644497920000); AGR.GRS("E7(2)",337804753143634806261388190614085595079991692242467651576160959909068800000); AGR.GRS("E7(4)",191797292142671717754639757897512906421357507604216557533558287598236977154127870984484770345340348298409697395609822849492217656441474908160000000000); AGR.GRS("E8(2)",337804753143634806261388190614085595079991692242467651576160959909068800000); AGR.GRS("E8(5)",212241934165081789939135106539938909320143178249948373703932419194549992287718687106371625640393677463164945340423628294956870377063751220703125000000000000000000000000000000); AGR.GRS("F4(2)",3311126603366400); AGR.GRS("F4(2).2",6622253206732800); AGR.GRS("Fi22",64561751654400); AGR.GRS("Fi22.2",129123503308800); AGR.GRS("Fi23",4089470473293004800); AGR.GRS("Fi24'",1255205709190661721292800); AGR.GRS("Fi24'.2",2510411418381323442585600); AGR.GRS("G2(3)",4245696); AGR.GRS("G2(3).2",8491392); AGR.GRS("G2(4)",251596800); AGR.GRS("G2(4).2",503193600); AGR.GRS("G2(5)",5859000000); AGR.GRS("HN",273030912000000); AGR.GRS("HN.2",546061824000000); AGR.GRS("HS",44352000); AGR.GRS("HS.2",88704000); AGR.GRS("He",4030387200); AGR.GRS("He.2",8060774400); AGR.GRS("Isoclinic(12.M22.2)",10644480); AGR.GRS("Isoclinic(2.A14.2)",174356582400); AGR.GRS("Isoclinic(2.A5.2)",240); AGR.GRS("Isoclinic(2.A7.2)",10080); AGR.GRS("Isoclinic(2.A8.2)",80640); AGR.GRS("Isoclinic(2.Fi22.2)",258247006617600); AGR.GRS("Isoclinic(2.G2(4).2)",1006387200); AGR.GRS("Isoclinic(2.HS.2)",177408000); AGR.GRS("Isoclinic(2.J2.2)",2419200); AGR.GRS("Isoclinic(2.L2(19).2)",13680); AGR.GRS("Isoclinic(2.L2(23).2)",24288); AGR.GRS("Isoclinic(2.L3(2).2)",672); AGR.GRS("Isoclinic(2.M12.2)",380160); AGR.GRS("Isoclinic(2.M22.2)",1774080); AGR.GRS("Isoclinic(2.Suz.2)",1793381990400); AGR.GRS("Isoclinic(4.M22.2)",3548160); AGR.GRS("Isoclinic(6.Fi22.2)",774741019852800); AGR.GRS("Isoclinic(6.M22.2)",5322240); AGR.GRS("Isoclinic(6.Suz.2)",5380145971200); AGR.GRS("J1",175560); AGR.GRS("J2",604800); AGR.GRS("J2.2",1209600); AGR.GRS("J3",50232960); AGR.GRS("J3.2",100465920); AGR.GRS("J4",86775571046077562880); AGR.GRS("L2(101)",515100); AGR.GRS("L2(103)",546312); AGR.GRS("L2(107)",612468); AGR.GRS("L2(109)",647460); AGR.GRS("L2(11)",660); AGR.GRS("L2(11).2",1320); AGR.GRS("L2(113)",721392); AGR.GRS("L2(127)",1024128); AGR.GRS("L2(128)",2097024); AGR.GRS("L2(13)",1092); AGR.GRS("L2(13).2",2184); AGR.GRS("L2(131)",1123980); AGR.GRS("L2(137)",1285608); AGR.GRS("L2(139)",1342740); AGR.GRS("L2(149)",1653900); AGR.GRS("L2(151)",1721400); AGR.GRS("L2(157)",1934868); AGR.GRS("L2(16)",4080); AGR.GRS("L2(16).2",8160); AGR.GRS("L2(16).4",16320); AGR.GRS("L2(163)",2165292); AGR.GRS("L2(167)",2328648); AGR.GRS("L2(17)",2448); AGR.GRS("L2(17).2",4896); AGR.GRS("L2(173)",2588772); AGR.GRS("L2(179)",2867580); AGR.GRS("L2(181)",2964780); AGR.GRS("L2(19)",3420); AGR.GRS("L2(19).2",6840); AGR.GRS("L2(191)",3483840); AGR.GRS("L2(193)",3594432); AGR.GRS("L2(197)",3822588); AGR.GRS("L2(199)",3940200); AGR.GRS("L2(211)",4696860); AGR.GRS("L2(223)",5544672); AGR.GRS("L2(227)",5848428); AGR.GRS("L2(229)",6004380); AGR.GRS("L2(23)",6072); AGR.GRS("L2(23).2",12144); AGR.GRS("L2(233)",6324552); AGR.GRS("L2(239)",6825840); AGR.GRS("L2(241)",6998640); AGR.GRS("L2(25)",7800); AGR.GRS("L2(25).2_1",15600); AGR.GRS("L2(25).2_2",15600); AGR.GRS("L2(25).2_3",15600); AGR.GRS("L2(27)",9828); AGR.GRS("L2(27).2",19656); AGR.GRS("L2(27).3",29484); AGR.GRS("L2(27).6",58968); AGR.GRS("L2(29)",12180); AGR.GRS("L2(29).2",24360); AGR.GRS("L2(31)",14880); AGR.GRS("L2(31).2",29760); AGR.GRS("L2(32)",32736); AGR.GRS("L2(32).5",163680); AGR.GRS("L2(37)",25308); AGR.GRS("L2(41)",34440); AGR.GRS("L2(43)",39732); AGR.GRS("L2(47)",51888); AGR.GRS("L2(49)",58800); AGR.GRS("L2(53)",74412); AGR.GRS("L2(59)",102660); AGR.GRS("L2(61)",113460); AGR.GRS("L2(64)",262080); AGR.GRS("L2(67)",150348); AGR.GRS("L2(71)",178920); AGR.GRS("L2(73)",194472); AGR.GRS("L2(79)",246480); AGR.GRS("L2(8)",504); AGR.GRS("L2(8).3",1512); AGR.GRS("L2(81)",265680); AGR.GRS("L2(83)",285852); AGR.GRS("L2(89)",352440); AGR.GRS("L2(97)",456288); AGR.GRS("L3(11)",212427600); AGR.GRS("L3(13)",270178272); AGR.GRS("L3(2)",168); AGR.GRS("L3(2).2",336); AGR.GRS("L3(3)",5616); AGR.GRS("L3(3).2",11232); AGR.GRS("L3(4)",20160); AGR.GRS("L3(4).2^2",80640); AGR.GRS("L3(4).2_1",40320); AGR.GRS("L3(4).2_2",40320); AGR.GRS("L3(4).2_3",40320); AGR.GRS("L3(4).3",60480); AGR.GRS("L3(4).6",120960); AGR.GRS("L3(4).D12",241920); AGR.GRS("L3(5)",372000); AGR.GRS("L3(5).2",744000); AGR.GRS("L3(7)",1876896); AGR.GRS("L3(7).2",3753792); AGR.GRS("L3(7).3",5630688); AGR.GRS("L3(8)",16482816); AGR.GRS("L3(8).2",32965632); AGR.GRS("L3(8).3",49448448); AGR.GRS("L3(8).6",98896896); AGR.GRS("L3(9)",42456960); AGR.GRS("L3(9).2_1",84913920); AGR.GRS("L3(9).2_2",84913920); AGR.GRS("L3(9).2_3",84913920); AGR.GRS("L4(3)",6065280); AGR.GRS("L4(3).2_1",12130560); AGR.GRS("L4(3).2_2",12130560); AGR.GRS("L4(3).2_3",12130560); AGR.GRS("L4(4)",987033600); AGR.GRS("L4(5)",7254000000); AGR.GRS("L5(2)",9999360); AGR.GRS("L5(2).2",19998720); AGR.GRS("L5(3)",237783237120); AGR.GRS("L6(2)",20158709760); AGR.GRS("L6(2).2",40317419520); AGR.GRS("L7(2)",163849992929280); AGR.GRS("L7(2).2",327699985858560); AGR.GRS("Ly",51765179004000000); AGR.GRS("M",808017424794512875886459904961710757005754368000000000); AGR.GRS("M11",7920); AGR.GRS("M11xA6.2^2",11404800); AGR.GRS("M12",95040); AGR.GRS("M12.2",190080); AGR.GRS("M20",960); AGR.GRS("M22",443520); AGR.GRS("M22.2",887040); AGR.GRS("M23",10200960); AGR.GRS("M24",244823040); AGR.GRS("McL",898128000); AGR.GRS("McL.2",1796256000); AGR.GRS("O10+(2)",23499295948800); AGR.GRS("O10+(2).2",46998591897600); AGR.GRS("O10-(2)",25015379558400); AGR.GRS("O10-(2).2",50030759116800); AGR.GRS("O7(3)",4585351680); AGR.GRS("O7(3).2",9170703360); AGR.GRS("O8+(2)",174182400); AGR.GRS("O8+(2).2",348364800); AGR.GRS("O8+(2).3",522547200); AGR.GRS("O8+(3)",4952179814400); AGR.GRS("O8+(3).S4",118852315545600); AGR.GRS("O8-(2)",197406720); AGR.GRS("O8-(2).2",394813440); AGR.GRS("O8-(3)",10151968619520); AGR.GRS("O8-(3).2^2",40607874478080); AGR.GRS("O8-(3).2_1",20303937239040); AGR.GRS("O8-(3).2_2",20303937239040); AGR.GRS("O8-(3).2_3",20303937239040); AGR.GRS("O8-(3).D8",81215748956160); AGR.GRS("O9(3)",65784756654489600); AGR.GRS("O9(3).2",131569513308979200); AGR.GRS("ON",460815505920); AGR.GRS("ON.2",921631011840); AGR.GRS("ON.4",1843262023680); AGR.GRS("R(27)",10073444472); AGR.GRS("R(27).3",30220333416); AGR.GRS("Ru",145926144000); AGR.GRS("S10(2)",24815256521932800); AGR.GRS("S3xTh",544475663327232000); AGR.GRS("S4(11)",12860654400); AGR.GRS("S4(13)",68518981440); AGR.GRS("S4(17)",1004497044480); AGR.GRS("S4(19)",3057017889600); AGR.GRS("S4(4)",979200); AGR.GRS("S4(4).2",1958400); AGR.GRS("S4(4).4",3916800); AGR.GRS("S4(5)",4680000); AGR.GRS("S4(5).2",9360000); AGR.GRS("S4(7)",138297600); AGR.GRS("S4(7).2",276595200); AGR.GRS("S4(9)",1721606400); AGR.GRS("S6(2)",1451520); AGR.GRS("S6(3)",4585351680); AGR.GRS("S6(3).2",9170703360); AGR.GRS("S6(5)",228501000000000); AGR.GRS("S8(2)",47377612800); AGR.GRS("S8(3)",65784756654489600); AGR.GRS("Suz",448345497600); AGR.GRS("Suz.2",896690995200); AGR.GRS("Sz(32)",32537600); AGR.GRS("Sz(32).5",162688000); AGR.GRS("Sz(8)",29120); AGR.GRS("Sz(8).3",87360); AGR.GRS("Th",90745943887872000); AGR.GRS("U3(11)",70915680); AGR.GRS("U3(11).2",141831360); AGR.GRS("U3(13)",811273008); AGR.GRS("U3(16)",4279234560); AGR.GRS("U3(3)",6048); AGR.GRS("U3(3).2",12096); AGR.GRS("U3(4)",62400); AGR.GRS("U3(4).2",124800); AGR.GRS("U3(4).4",249600); AGR.GRS("U3(5)",126000); AGR.GRS("U3(5).2",252000); AGR.GRS("U3(5).3",378000); AGR.GRS("U3(7)",5663616); AGR.GRS("U3(8)",5515776); AGR.GRS("U3(8).(S3x3)",99283968); AGR.GRS("U3(8).2",11031552); AGR.GRS("U3(8).3^2",49641984); AGR.GRS("U3(8).3_1",16547328); AGR.GRS("U3(8).3_2",16547328); AGR.GRS("U3(8).3_3",16547328); AGR.GRS("U3(8).6",33094656); AGR.GRS("U3(8).S3",33094656); AGR.GRS("U3(9)",42573600); AGR.GRS("U4(2)",25920); AGR.GRS("U4(2).2",51840); AGR.GRS("U4(3)",3265920); AGR.GRS("U4(3).2_1",6531840); AGR.GRS("U4(3).2_2",6531840); AGR.GRS("U4(3).2_3",6531840); AGR.GRS("U4(3).4",13063680); AGR.GRS("U4(3).D8",26127360); AGR.GRS("U4(4)",1018368000); AGR.GRS("U4(5)",14742000000); AGR.GRS("U5(2)",13685760); AGR.GRS("U5(2).2",27371520); AGR.GRS("U5(3)",258190571520); AGR.GRS("U5(4)",53443952640000); AGR.GRS("U6(2)",9196830720); AGR.GRS("U6(2).2",18393661440); AGR.GRS("U6(2).3",27590492160); AGR.GRS("U6(2).S3",55180984320); AGR.GRS("U6(3)",22837472432087040); AGR.GRS("U7(2)",227787103272960); AGR.GRS("U8(2)",7434971050829414400); AGR.GRS("W(F4)",1152); ############################################################################# ## ## Store numbers of classes of maximal subgroups. ## AGR.MXN("(2^2x3).U6(2)",16); AGR.MXN("12.M22",8); AGR.MXN("12.M22.2",7); AGR.MXN("12_1.L3(4)",9); AGR.MXN("12_1.L3(4).2_1",10); AGR.MXN("12_2.L3(4)",9); AGR.MXN("12_2.L3(4).2_1",10); AGR.MXN("2.A10",7); AGR.MXN("2.A10.2",8); AGR.MXN("2.A11",7); AGR.MXN("2.A11.2",7); AGR.MXN("2.A12",11); AGR.MXN("2.A12.2",11); AGR.MXN("2.A13",9); AGR.MXN("2.A13.2",8); AGR.MXN("2.A5",3); AGR.MXN("2.A5.2",4); AGR.MXN("2.A6",5); AGR.MXN("2.A6.2_1",6); AGR.MXN("2.A7",5); AGR.MXN("2.A7.2",5); AGR.MXN("2.A8",6); AGR.MXN("2.A8.2",7); AGR.MXN("2.A9",8); AGR.MXN("2.A9.2",7); AGR.MXN("2.B",30); AGR.MXN("2.Co1",22); AGR.MXN("2.Fi22",14); AGR.MXN("2.Fi22.2",13); AGR.MXN("2.G2(4)",8); AGR.MXN("2.HS",12); AGR.MXN("2.HS.2",10); AGR.MXN("2.J2",9); AGR.MXN("2.J2.2",10); AGR.MXN("2.L2(11)",4); AGR.MXN("2.L2(13)",4); AGR.MXN("2.L2(13).2",5); AGR.MXN("2.L2(17)",5); AGR.MXN("2.L2(19)",5); AGR.MXN("2.L2(23)",5); AGR.MXN("2.L2(25)",5); AGR.MXN("2.L2(27)",4); AGR.MXN("2.L2(29)",5); AGR.MXN("2.L2(31)",7); AGR.MXN("2.L2(49)",7); AGR.MXN("2.L3(2)",3); AGR.MXN("2.L3(2).2",4); AGR.MXN("2.L3(4)",9); AGR.MXN("2.L3(4).2_1",10); AGR.MXN("2.M12",11); AGR.MXN("2.M12.2",9); AGR.MXN("2.M22",8); AGR.MXN("2.M22.2",7); AGR.MXN("2.O7(3)",15); AGR.MXN("2.O8+(2)",17); AGR.MXN("2.O8+(3)",27); AGR.MXN("2.Ru",15); AGR.MXN("2.S4(5)",8); AGR.MXN("2.S6(2)",8); AGR.MXN("2.S6(3)",11); AGR.MXN("2.Suz",17); AGR.MXN("2.Suz.2",16); AGR.MXN("2.Sz(8)",4); AGR.MXN("2.U4(2)",5); AGR.MXN("2.U4(2).2",6); AGR.MXN("2.U6(2)",16); AGR.MXN("2F4(2)'",8); AGR.MXN("2F4(2)'.2",7); AGR.MXN("2^2.L3(4)",9); AGR.MXN("2^2.L3(4).2_2",6); AGR.MXN("2^2.Sz(8).3",5); AGR.MXN("2^2.U6(2)",16); AGR.MXN("3.A6",5); AGR.MXN("3.A6.2_1",6); AGR.MXN("3.A7",5); AGR.MXN("3.A7.2",5); AGR.MXN("3.Fi22",14); AGR.MXN("3.Fi22.2",13); AGR.MXN("3.Fi24'",25); AGR.MXN("3.Fi24'.2",21); AGR.MXN("3.G2(3)",10); AGR.MXN("3.G2(3).2",6); AGR.MXN("3.J3",9); AGR.MXN("3.J3.2",9); AGR.MXN("3.L3(4)",9); AGR.MXN("3.L3(4).2_1",10); AGR.MXN("3.L3(7)",8); AGR.MXN("3.M22",8); AGR.MXN("3.M22.2",7); AGR.MXN("3.McL",12); AGR.MXN("3.McL.2",10); AGR.MXN("3.O7(3)",15); AGR.MXN("3.ON",13); AGR.MXN("3.ON.2",10); AGR.MXN("3.Suz",17); AGR.MXN("3.Suz.2",16); AGR.MXN("3.U3(11)",11); AGR.MXN("3.U3(8)",7); AGR.MXN("3.U6(2)",16); AGR.MXN("3D4(2)",9); AGR.MXN("4.M22",8); AGR.MXN("4.M22.2",7); AGR.MXN("4_1.L3(4)",9); AGR.MXN("4_1.L3(4).2_1",10); AGR.MXN("4_2.L3(4)",9); AGR.MXN("4_2.L3(4).2_1",10); AGR.MXN("6.A6",5); AGR.MXN("6.A6.2_1",6); AGR.MXN("6.A7",5); AGR.MXN("6.A7.2",5); AGR.MXN("6.Fi22",14); AGR.MXN("6.Fi22.2",13); AGR.MXN("6.L3(4)",9); AGR.MXN("6.L3(4).2_1",10); AGR.MXN("6.M22",8); AGR.MXN("6.M22.2",7); AGR.MXN("6.O7(3)",15); AGR.MXN("6.Suz",17); AGR.MXN("6.Suz.2",16); AGR.MXN("6.U6(2)",16); AGR.MXN("A10",7); AGR.MXN("A10.2",8); AGR.MXN("A11",7); AGR.MXN("A11.2",7); AGR.MXN("A12",11); AGR.MXN("A12.2",11); AGR.MXN("A13",9); AGR.MXN("A13.2",8); AGR.MXN("A5",3); AGR.MXN("A5.2",4); AGR.MXN("A6",5); AGR.MXN("A6.2^2",6); AGR.MXN("A6.2_1",6); AGR.MXN("A6.2_2",4); AGR.MXN("A6.2_3",4); AGR.MXN("A7",5); AGR.MXN("A7.2",5); AGR.MXN("A8",6); AGR.MXN("A8.2",7); AGR.MXN("A9",8); AGR.MXN("A9.2",7); AGR.MXN("B",30); AGR.MXN("Co1",22); AGR.MXN("Co2",11); AGR.MXN("Co3",14); AGR.MXN("Fi22",14); AGR.MXN("Fi22.2",13); AGR.MXN("Fi23",14); AGR.MXN("Fi24'",25); AGR.MXN("Fi24'.2",21); AGR.MXN("G2(3)",10); AGR.MXN("G2(3).2",6); AGR.MXN("G2(4)",8); AGR.MXN("HN",14); AGR.MXN("HN.2",13); AGR.MXN("HS",12); AGR.MXN("HS.2",10); AGR.MXN("He",11); AGR.MXN("He.2",12); AGR.MXN("Isoclinic(12.M22.2)",7); AGR.MXN("Isoclinic(2.A5.2)",4); AGR.MXN("Isoclinic(2.A7.2)",5); AGR.MXN("Isoclinic(2.A8.2)",7); AGR.MXN("Isoclinic(2.Fi22.2)",13); AGR.MXN("Isoclinic(2.HS.2)",10); AGR.MXN("Isoclinic(2.J2.2)",10); AGR.MXN("Isoclinic(2.L3(2).2)",4); AGR.MXN("Isoclinic(2.M12.2)",9); AGR.MXN("Isoclinic(2.M22.2)",7); AGR.MXN("Isoclinic(2.Suz.2)",16); AGR.MXN("Isoclinic(4.M22.2)",7); AGR.MXN("Isoclinic(6.Fi22.2)",13); AGR.MXN("Isoclinic(6.M22.2)",7); AGR.MXN("Isoclinic(6.Suz.2)",16); AGR.MXN("J1",7); AGR.MXN("J2",9); AGR.MXN("J2.2",10); AGR.MXN("J3",9); AGR.MXN("J3.2",9); AGR.MXN("J4",13); AGR.MXN("L2(101)",5); AGR.MXN("L2(103)",5); AGR.MXN("L2(107)",4); AGR.MXN("L2(109)",5); AGR.MXN("L2(11)",4); AGR.MXN("L2(11).2",5); AGR.MXN("L2(113)",5); AGR.MXN("L2(13)",4); AGR.MXN("L2(13).2",5); AGR.MXN("L2(16)",4); AGR.MXN("L2(16).2",5); AGR.MXN("L2(16).4",5); AGR.MXN("L2(17)",5); AGR.MXN("L2(19)",5); AGR.MXN("L2(23)",5); AGR.MXN("L2(25)",5); AGR.MXN("L2(25).2_2",6); AGR.MXN("L2(27)",4); AGR.MXN("L2(29)",5); AGR.MXN("L2(31)",7); AGR.MXN("L2(32)",3); AGR.MXN("L2(32).5",4); AGR.MXN("L2(37)",4); AGR.MXN("L2(41)",7); AGR.MXN("L2(43)",4); AGR.MXN("L2(47)",5); AGR.MXN("L2(49)",7); AGR.MXN("L2(53)",4); AGR.MXN("L2(59)",5); AGR.MXN("L2(61)",5); AGR.MXN("L2(64)",5); AGR.MXN("L2(67)",4); AGR.MXN("L2(71)",7); AGR.MXN("L2(73)",5); AGR.MXN("L2(79)",7); AGR.MXN("L2(8)",3); AGR.MXN("L2(8).3",4); AGR.MXN("L2(81)",5); AGR.MXN("L2(83)",4); AGR.MXN("L2(89)",7); AGR.MXN("L2(97)",5); AGR.MXN("L3(11)",6); AGR.MXN("L3(2)",3); AGR.MXN("L3(2).2",4); AGR.MXN("L3(3)",4); AGR.MXN("L3(3).2",5); AGR.MXN("L3(4)",9); AGR.MXN("L3(4).2^2",8); AGR.MXN("L3(4).2_1",10); AGR.MXN("L3(4).2_2",6); AGR.MXN("L3(4).2_3",6); AGR.MXN("L3(4).3",5); AGR.MXN("L3(4).6",6); AGR.MXN("L3(4).D12",8); AGR.MXN("L3(5)",5); AGR.MXN("L3(7)",8); AGR.MXN("L3(8)",5); AGR.MXN("L3(9)",7); AGR.MXN("L4(3)",8); AGR.MXN("L5(2)",5); AGR.MXN("Ly",9); AGR.MXN("M11",5); AGR.MXN("M12",11); AGR.MXN("M12.2",9); AGR.MXN("M22",8); AGR.MXN("M22.2",7); AGR.MXN("M23",7); AGR.MXN("M24",9); AGR.MXN("McL",12); AGR.MXN("McL.2",10); AGR.MXN("O7(3)",15); AGR.MXN("O8+(2)",17); AGR.MXN("O8+(3)",27); AGR.MXN("O8-(2)",8); AGR.MXN("ON",13); AGR.MXN("ON.2",10); AGR.MXN("Ru",15); AGR.MXN("S4(4)",7); AGR.MXN("S4(4).2",8); AGR.MXN("S4(5)",8); AGR.MXN("S6(2)",8); AGR.MXN("S6(3)",11); AGR.MXN("S8(2)",11); AGR.MXN("Suz",17); AGR.MXN("Suz.2",16); AGR.MXN("Sz(32)",4); AGR.MXN("Sz(8)",4); AGR.MXN("Sz(8).3",5); AGR.MXN("Th",16); AGR.MXN("U3(11)",11); AGR.MXN("U3(3)",4); AGR.MXN("U3(3).2",5); AGR.MXN("U3(4)",4); AGR.MXN("U3(4).2",5); AGR.MXN("U3(5)",8); AGR.MXN("U3(5).2",6); AGR.MXN("U3(5).3",6); AGR.MXN("U3(7)",5); AGR.MXN("U3(8)",7); AGR.MXN("U3(9)",5); AGR.MXN("U4(2)",5); AGR.MXN("U4(2).2",6); AGR.MXN("U4(3)",16); AGR.MXN("U4(3).2_1",13); AGR.MXN("U4(3).2_3",11); AGR.MXN("U5(2)",6); AGR.MXN("U6(2)",16); ############################################################################# ## ## Store orders of maximal subgroups. ## AGR.MXO("(2^2x3).U6(2)",[164229120,159252480,123863040,78382080,78382080,78382080,17694720,17418240,17418240,17418240,5322240,5322240,5322240,1866240,1119744,483840]); AGR.MXO("12.M22",[241920,69120,30240,30240,23040,16128,8640,7920]); AGR.MXO("12.M22.2",[5322240,483840,138240,46080,32256,17280,15840]); AGR.MXO("12_1.L3(4)",[11520,11520,4320,4320,4320,2016,2016,2016,864]); AGR.MXO("12_1.L3(4).2_1",[241920,8640,8640,8640,4608,4032,4032,4032,1728,1440]); AGR.MXO("12_2.L3(4)",[11520,11520,4320,4320,4320,2016,2016,2016,864]); AGR.MXO("12_2.L3(4).2_1",[241920,8640,8640,8640,4608,4032,4032,4032,1728,1440]); AGR.MXO("2.2E6(2)",[,,6622253206732800,6622253206732800,6622253206732800,,129123503308800,129123503308800,129123503308800]); AGR.MXO("2.A10",[362880,80640,30240,28800,17280,3840,1440]); AGR.MXO("2.A10.2",[3628800,725760,161280,60480,57600,34560,7680,2880]); AGR.MXO("2.A11",[3628800,725760,241920,120960,86400,15840,15840]); AGR.MXO("2.A11.2",[39916800,7257600,1451520,483840,241920,172800,220]); AGR.MXO("2.A12",[39916800,7257600,2177280,1036800,967680,604800,190080,190080,82944,46080,31104]); AGR.MXO("2.A12.2",[479001600,79833600,14515200,4354560,2073600,1935360,1209600,165888,92160,62208,2640]); AGR.MXO("2.A13",[479001600,79833600,21772800,8709120,4838400,3628800,11232,11232,156]); AGR.MXO("2.A13.2",[6227020800,958003200,159667200,43545600,17418240,9676800,7257600,312]); AGR.MXO("2.A14.2",[,12454041600]); AGR.MXO("2.A5",[24,20,12]); AGR.MXO("2.A5.2",[120,48,40,24]); AGR.MXO("2.A6",[120,120,72,48,48]); AGR.MXO("2.A6.2_1",[720,240,240,144,96,96]); AGR.MXO("2.A7",[720,336,336,240,144]); AGR.MXO("2.A7.2",[5040,1440,480,288,84]); AGR.MXO("2.A8",[5040,2688,2688,1440,1152,720]); AGR.MXO("2.A8.2",[40320,10080,2880,2304,1440,768,672]); AGR.MXO("2.A9",[40320,10080,4320,3024,3024,2880,1296,432]); AGR.MXO("2.A9.2",[362880,80640,20160,8640,5760,2592,864]); AGR.MXO("2.B",[612259837470198831513600,709767191322427392000,8178940946586009600,3179457774039859200,181491887775744000,52978025653862400,45717693482926080,21473462090465280,1549482039705600,1385384650997760,1092123648000000,237704631091200,261213880320,3762339840,3548160000,1725235200,408146688,212889600,116121600,93000000,48000000,4147200,576000,235200,29760,15840,11232,9792,2640,2162]); AGR.MXO("2.Co1",[84610842624000,5380145971200,1002795171840,991533312000,178362777600,110361968640,12076646400,3963617280,1698693120,470292480,277136640,145152000,50388480,8709120,5038848,2177280,1693440,288000,120000,120000,7056,6000]); AGR.MXO("2.F4(2)",[95126814720,95126814720,94755225600,94755225600]); AGR.MXO("2.Fi22",[36787322880,9170703360,9170703360,2090188800,908328960,185794560,106168320,78382080,35942400,35389440,10077696,7257600,7257600,190080]); AGR.MXO("2.Fi22.2",[129123503308800,73574645760,4180377600,1816657920,371589120,212336640,156764160,71884800,70778880,50388480,20155392,16982784,380160]); AGR.MXO("2.G2(4)",[1209600,368640,368640,249600,241920,24192,7200,2184]); AGR.MXO("2.G2(4).2",[503193600,2419200]); AGR.MXO("2.HS",[887040,504000,504000,80640,80640,23040,21504,15840,15840,15360,5760,2400]); AGR.MXO("2.HS.2",[88704000,1774080,161280,161280,46080,43008,30720,11520,8000,4800]); AGR.MXO("2.J2",[12096,4320,3840,2304,1440,1200,672,600,120]); AGR.MXO("2.J2.2",[1209600,24192,8640,7680,4608,2880,2400,1344,1200,240]); AGR.MXO("2.L2(11)",[120,120,110,24]); AGR.MXO("2.L2(13)",[156,28,24,24]); AGR.MXO("2.L2(13).2",[2184,312,56,48,48]); AGR.MXO("2.L2(17)",[272,48,48,36,32]); AGR.MXO("2.L2(17).2",[,544]); AGR.MXO("2.L2(19)",[342,120,120,40,36]); AGR.MXO("2.L2(23)",[506,48,48,48,44]); AGR.MXO("2.L2(25)",[600,240,240,52,48]); AGR.MXO("2.L2(27)",[702,56,52,24]); AGR.MXO("2.L2(29)",[812,120,120,60,56]); AGR.MXO("2.L2(31)",[930,120,120,64,60,48,48]); AGR.MXO("2.L2(49)",[2352,672,672,120,120,100,96]); AGR.MXO("2.L3(2)",[48,48,42]); AGR.MXO("2.L3(2).2",[336,84,32,24]); AGR.MXO("2.L3(4)",[1920,1920,720,720,720,336,336,336,144]); AGR.MXO("2.L3(4).2_1",[40320,1440,1440,1440,768,672,672,672,288,240]); AGR.MXO("2.M12",[15840,15840,2880,2880,1320,864,864,480,384,384,144]); AGR.MXO("2.M12.2",[190080,2640,2640,960,768,768,432,288,240]); AGR.MXO("2.M22",[40320,11520,5040,5040,3840,2688,1440,1320]); AGR.MXO("2.M22.2",[887040,80640,23040,7680,5376,2880,2640]); AGR.MXO("2.O7(3)",[26127360,25194240,24261120,8491392,8491392,8188128,2903040,2903040,2519424,725760,725760,414720,322560,34560,27648]); AGR.MXO("2.O8+(2)",[2903040,2903040,2903040,2580480,2580480,2580480,362880,362880,362880,311040,311040,311040,221184,31104,28800,28800,28800]); AGR.MXO("2.O8+(2).2",[,5806080]); AGR.MXO("2.O8+(3)",[9170703360,9170703360,9170703360,9170703360,9170703360,9170703360,8843178240,8843178240,8843178240,348364800,348364800,348364800,348364800,272097792,52254720,52254720,52254720,1244160,1244160,1244160,1244160,1244160,1244160,1036800,1036800,1036800,663552]); AGR.MXO("2.O8-(3)",[,18341406720,18341406720,,,,2488320,2488320,1062720]); AGR.MXO("2.Ru",[71884800,1548288,698880,688128,504000,491520,62400,40320,24360,24000,8640,8000,4368,2880,2400]); AGR.MXO("2.S4(5)",[60000,60000,31200,28800,1920,1440,960,720]); AGR.MXO("2.S6(2)",[103680,80640,46080,24192,21504,9216,8640,3024]); AGR.MXO("2.S6(3)",[25194240,8188128,2519424,1244160,82944,58968,48384,22464,2184,2184,120]); AGR.MXO("2.S6(3).2",[50388480]); AGR.MXO("2.Suz",[503193600,39191040,27371520,6635520,3849120,2419200,2211840,967680,737280,380160,279936,86400,51840,22464,22464,15600,5040]); AGR.MXO("2.Suz.2",[896690995200,1006387200,78382080,54743040,13271040,7698240,4838400,4423680,1935360,1474560,760320,559872,172800,103680,31200,10080]); AGR.MXO("2.Sz(8)",[896,104,40,28]); AGR.MXO("2.U4(2)",[1920,1440,1296,1296,1152]); AGR.MXO("2.U4(2).2",[51840,3840,2880,2592,2592,2304]); AGR.MXO("2.U6(2)",[27371520,26542080,20643840,13063680,13063680,13063680,2949120,2903040,2903040,2903040,887040,887040,887040,311040,186624,80640]); AGR.MXO("2E6(2)",[,,3311126603366400,3311126603366400,3311126603366400,,64561751654400,64561751654400,64561751654400]); AGR.MXO("2F4(2)'",[11232,11232,10240,7800,6144,1440,1440,1200]); AGR.MXO("2F4(2)'.2",[17971200,20480,15600,12288,2400,432,156]); AGR.MXO("2^2.2E6(2)",[,,13244506413465600,13244506413465600,13244506413465600,,258247006617600,258247006617600,258247006617600]); AGR.MXO("2^2.L3(4)",[3840,3840,1440,1440,1440,672,672,672,288]); AGR.MXO("2^2.L3(4).2_2",[80640,7680,7680,2880,1344,576]); AGR.MXO("2^2.Sz(8).3",[116480,5376,624,240,168]); AGR.MXO("2^2.U6(2)",[54743040,53084160,41287680,26127360,26127360,26127360,5898240,5806080,5806080,5806080,1774080,1774080,1774080,622080,373248,161280]); AGR.MXO("3.2E6(2)",[,,9933379810099200,9933379810099200,9933379810099200,,193685254963200,193685254963200,193685254963200]); AGR.MXO("3.A6",[180,180,108,72,72]); AGR.MXO("3.A6.2_1",[1080,360,360,216,144,144]); AGR.MXO("3.A7",[1080,504,504,360,216]); AGR.MXO("3.A7.2",[7560,2160,720,432,126]); AGR.MXO("3.Fi22",[55180984320,13756055040,13756055040,3135283200,1362493440,278691840,159252480,117573120,53913600,53084160,15116544,10886400,10886400,285120]); AGR.MXO("3.Fi22.2",[193685254963200,110361968640,6270566400,2724986880,557383680,318504960,235146240,107827200,106168320,75582720,30233088,25474176,570240]); AGR.MXO("3.Fi24'",[12268411419879014400,774741019852800,267417709977600,75046138675200,30084492372480,14546347960320,1504192757760,662171811840,481579499520,53722307808,41324852160,37623398400,24182323200,24182323200,5945425920,5945425920,458535168,65318400,1632960,317520,36288,36288,6552,6552,1218]); AGR.MXO("3.Fi24'.2",[3765617127571985163878400,24536822839758028800,1549482039705600,534835419955200,150092277350400,60168984744960,29092695920640,3008385515520,1324343623680,963158999040,107444615616,82649704320,75246796800,11890851840,11890851840,917070336,130636800,3265920,635040,74088,2436]); AGR.MXO("3.G2(3)",[36288,36288,34992,34992,33696,33696,4536,4032,3276,1728]); AGR.MXO("3.G2(3).2",[12737088,17496,9072,8064,6552,3456]); AGR.MXO("3.J3",[24480,10260,10260,8640,7344,6480,5832,5760,3456]); AGR.MXO("3.J3.2",[150698880,48960,17280,14688,12960,11664,11520,6912,1026]); AGR.MXO("3.L3(4)",[2880,2880,1080,1080,1080,504,504,504,216]); AGR.MXO("3.L3(4).2_1",[60480,2160,2160,2160,1152,1008,1008,1008,432,360]); AGR.MXO("3.L3(7)",[98784,98784,1008,1008,1008,216,216,171]); AGR.MXO("3.M22",[60480,17280,7560,7560,5760,4032,2160,1980]); AGR.MXO("3.M22.2",[1330560,120960,34560,11520,8064,4320,3960]); AGR.MXO("3.McL",[9797760,1330560,1330560,378000,174960,174960,120960,120960,120960,120960,23760,9000]); AGR.MXO("3.McL.2",[2694384000,19595520,756000,349920,349920,241920,241920,47520,18000,6912]); AGR.MXO("3.O7(3)",[39191040,37791360,36391680,12737088,12737088,12282192,4354560,4354560,3779136,1088640,1088640,622080,483840,51840,41472]); AGR.MXO("3.ON",[11261376,11261376,526680,483840,77760,77760,44640,44640,32256,23760,23760,7560,7560]); AGR.MXO("3.ON.2",[1382446517760,1053360,967680,155520,155520,64512,49392,2790,2160,1008]); AGR.MXO("3.Suz",[754790400,58786560,41057280,9953280,5773680,3628800,3317760,1451520,1105920,570240,419904,129600,77760,33696,33696,23400,7560]); AGR.MXO("3.Suz.2",[1345036492800,1509580800,117573120,82114560,19906560,11547360,7257600,6635520,2903040,2211840,1140480,839808,259200,155520,46800,15120]); AGR.MXO("3.U3(11)",[159720,15840,3960,3960,3960,1080,1080,1080,864,333,216]); AGR.MXO("3.U3(8)",[32256,4536,648,648,648,486,171]); AGR.MXO("3.U6(2)",[41057280,39813120,30965760,19595520,19595520,19595520,4423680,4354560,4354560,4354560,1330560,1330560,1330560,466560,279936,120960]); AGR.MXO("3D4(2)",[258048,86016,12096,3024,2352,1296,1176,216,52]); AGR.MXO("3D4(2).3",[211341312]); AGR.MXO("4.M22",[80640,23040,10080,10080,7680,5376,2880,2640]); AGR.MXO("4.M22.2",[1774080,161280,46080,15360,10752,5760,5280]); AGR.MXO("4_1.L3(4)",[3840,3840,1440,1440,1440,672,672,672,288]); AGR.MXO("4_1.L3(4).2_1",[80640,2880,2880,2880,1536,1344,1344,1344,576,480]); AGR.MXO("4_2.L3(4)",[3840,3840,1440,1440,1440,672,672,672,288]); AGR.MXO("4_2.L3(4).2_1",[80640,2880,2880,2880,1536,1344,1344,1344,576,480]); AGR.MXO("5^3.L3(5)",[]); AGR.MXO("6.A6",[360,360,216,144,144]); AGR.MXO("6.A6.2_1",[2160,720,720,432,288,288]); AGR.MXO("6.A7",[2160,1008,1008,720,432]); AGR.MXO("6.A7.2",[15120,4320,1440,864,252]); AGR.MXO("6.Fi22",[110361968640,27512110080,27512110080,6270566400,2724986880,557383680,318504960,235146240,107827200,106168320,30233088,21772800,21772800,570240]); AGR.MXO("6.Fi22.2",[387370509926400,220723937280,12541132800,5449973760,1114767360,637009920,470292480,215654400,212336640,151165440,60466176,50948352,1140480]); AGR.MXO("6.L3(4)",[5760,5760,2160,2160,2160,1008,1008,1008,432]); AGR.MXO("6.L3(4).2_1",[120960,4320,4320,4320,2304,2016,2016,2016,864,720]); AGR.MXO("6.M22",[120960,34560,15120,15120,11520,8064,4320,3960]); AGR.MXO("6.M22.2",[2661120,241920,69120,23040,16128,8640,7920]); AGR.MXO("6.O7(3)",[78382080,75582720,72783360,25474176,25474176,24564384,8709120,8709120,7558272,2177280,2177280,1244160,967680,103680,82944]); AGR.MXO("6.Suz",[1509580800,117573120,82114560,19906560,11547360,7257600,6635520,2903040,2211840,1140480,839808,259200,155520,67392,67392,46800,15120]); AGR.MXO("6.Suz.2",[2690072985600,3019161600,235146240,164229120,39813120,23094720,14515200,13271040,5806080,4423680,2280960,1679616,518400,311040,93600,30240]); AGR.MXO("6.U6(2)",[82114560,79626240,61931520,39191040,39191040,39191040,8847360,8709120,8709120,8709120,2661120,2661120,2661120,933120,559872,241920]); AGR.MXO("A10",[181440,40320,15120,14400,8640,1920,720]); AGR.MXO("A10.2",[1814400,362880,80640,30240,28800,17280,3840,1440]); AGR.MXO("A11",[1814400,362880,120960,60480,43200,7920,7920]); AGR.MXO("A11.2",[19958400,3628800,725760,241920,120960,86400,110]); AGR.MXO("A12",[19958400,3628800,1088640,518400,483840,302400,95040,95040,41472,23040,15552]); AGR.MXO("A12.2",[239500800,39916800,7257600,2177280,1036800,967680,604800,82944,46080,31104,1320]); AGR.MXO("A13",[239500800,39916800,10886400,4354560,2419200,1814400,5616,5616,78]); AGR.MXO("A13.2",[3113510400,479001600,79833600,21772800,8709120,4838400,3628800,156]); AGR.MXO("A14",[3113510400]); AGR.MXO("A14.2",[,6227020800]); AGR.MXO("A5",[12,10,6]); AGR.MXO("A5.2",[60,24,20,12]); AGR.MXO("A6",[60,60,36,24,24]); AGR.MXO("A6.2^2",[720,720,720,144,40,32]); AGR.MXO("A6.2_1",[360,120,120,72,48,48]); AGR.MXO("A6.2_2",[360,72,20,16]); AGR.MXO("A6.2_3",[360,72,20,16]); AGR.MXO("A7",[360,168,168,120,72]); AGR.MXO("A7.2",[2520,720,240,144,42]); AGR.MXO("A8",[2520,1344,1344,720,576,360]); AGR.MXO("A8.2",[20160,5040,1440,1152,720,384,336]); AGR.MXO("A9",[20160,5040,2160,1512,1512,1440,648,216]); AGR.MXO("A9.2",[181440,40320,10080,4320,2880,1296,432]); AGR.MXO("B",[306129918735099415756800,354883595661213696000,4089470473293004800,1589728887019929600,90745943887872000,26489012826931200,22858846741463040,10736731045232640,774741019852800,692692325498880,546061824000000,118852315545600,130606940160,1881169920,1774080000,862617600,204073344,106444800,58060800,46500000,24000000,2073600,288000,117600,14880,7920,5616,4896,1320,1081]); AGR.MXO("Co1",[42305421312000,2690072985600,501397585920,495766656000,89181388800,55180984320,6038323200,1981808640,849346560,235146240,138568320,72576000,25194240,4354560,2519424,1088640,846720,144000,60000,60000,3528,3000]); AGR.MXO("Co2",[18393661440,908328960,898128000,743178240,88704000,41287680,26127360,11796480,10200960,933120,12000]); AGR.MXO("Co3",[1796256000,44352000,13063680,10200960,3849120,2903040,756000,699840,322560,241920,190080,27648,9072,1440]); AGR.MXO("F4(2)",[47563407360,47563407360,47377612800,47377612800]); AGR.MXO("Fi22",[18393661440,4585351680,4585351680,1045094400,454164480,92897280,53084160,39191040,17971200,17694720,5038848,3628800,3628800,95040]); AGR.MXO("Fi22.2",[64561751654400,36787322880,2090188800,908328960,185794560,106168320,78382080,35942400,35389440,25194240,10077696,8491392,190080]); AGR.MXO("Fi23",[129123503308800,29713078886400,73574645760,47377612800,27512110080,20891566080,3265173504,663238368,479001600,318504960,247726080,34836480,3916800,6072]); AGR.MXO("Fi24'",[4089470473293004800,258247006617600,89139236659200,25015379558400,10028164124160,4848782653440,501397585920,220723937280,160526499840,17907435936,13774950720,12541132800,8060774400,8060774400,1981808640,1981808640,152845056,21772800,544320,105840,12096,12096,2184,2184,406]); AGR.MXO("Fi24'.2",[1255205709190661721292800,8178940946586009600,516494013235200,178278473318400,50030759116800,20056328248320,9697565306880,1002795171840,441447874560,321052999680,35814871872,27549901440,25082265600,3963617280,3963617280,305690112,43545600,1088640,211680,24696,812]); AGR.MXO("G2(3)",[12096,12096,11664,11664,11232,11232,1512,1344,1092,576]); AGR.MXO("G2(3).2",[4245696,5832,3024,2688,2184,1152]); AGR.MXO("G2(4)",[604800,184320,184320,124800,120960,12096,3600,1092]); AGR.MXO("G2(4).2",[251596800,1209600]); AGR.MXO("G2(5)",[1500000,1500000,756000,744000,14400,12096,1344]); AGR.MXO("HN",[239500800,177408000,16547328,3686400,2520000,2000000,1658880,1036800,1032192,750000,190080,190080,93312,58320]); AGR.MXO("HN.2",[273030912000000,479001600,354816000,33094656,7372800,5040000,4000000,3317760,2073600,2064384,1500000,186624,116640]); AGR.MXO("HS",[443520,252000,252000,40320,40320,11520,10752,7920,7920,7680,2880,1200]); AGR.MXO("HS.2",[44352000,887040,80640,80640,23040,21504,15360,5760,4000,2400]); AGR.MXO("He",[1958400,483840,138240,138240,21504,16464,15120,6174,4032,3528,1200]); AGR.MXO("He.2",[4030387200,3916800,967680,43008,32928,30240,28800,18432,12348,8064,7056,2400]); AGR.MXO("Isoclinic(12.M22.2)",[5322240,483840,138240,46080,32256,17280,15840]); AGR.MXO("Isoclinic(2.A14.2)",[,12454041600]); AGR.MXO("Isoclinic(2.A5.2)",[120,48,40,24]); AGR.MXO("Isoclinic(2.A7.2)",[5040,1440,480,288,84]); AGR.MXO("Isoclinic(2.A8.2)",[40320,10080,2880,2304,1440,768,672]); AGR.MXO("Isoclinic(2.Fi22.2)",[129123503308800,73574645760,4180377600,1816657920,371589120,212336640,156764160,71884800,70778880,50388480,20155392,16982784,380160]); AGR.MXO("Isoclinic(2.G2(4).2)",[503193600,2419200]); AGR.MXO("Isoclinic(2.HS.2)",[88704000,1774080,161280,161280,46080,43008,30720,11520,8000,4800]); AGR.MXO("Isoclinic(2.J2.2)",[1209600,24192,8640,7680,4608,2880,2400,1344,1200,240]); AGR.MXO("Isoclinic(2.L2(19).2)",[,684]); AGR.MXO("Isoclinic(2.L3(2).2)",[336,84,32,24]); AGR.MXO("Isoclinic(2.M12.2)",[190080,2640,2640,960,768,768,432,288,240]); AGR.MXO("Isoclinic(2.M22.2)",[887040,80640,23040,7680,5376,2880,2640]); AGR.MXO("Isoclinic(2.Suz.2)",[896690995200,1006387200,78382080,54743040,13271040,7698240,4838400,4423680,1935360,1474560,760320,559872,172800,103680,31200,10080]); AGR.MXO("Isoclinic(4.M22.2)",[1774080,161280,46080,15360,10752,5760,5280]); AGR.MXO("Isoclinic(6.Fi22.2)",[387370509926400,220723937280,12541132800,5449973760,1114767360,637009920,470292480,215654400,212336640,151165440,60466176,50948352,1140480]); AGR.MXO("Isoclinic(6.M22.2)",[2661120,241920,69120,23040,16128,8640,7920]); AGR.MXO("Isoclinic(6.Suz.2)",[2690072985600,3019161600,235146240,164229120,39813120,23094720,14515200,13271040,5806080,4423680,2280960,1679616,518400,311040,93600,30240]); AGR.MXO("J1",[660,168,120,114,110,60,42]); AGR.MXO("J2",[6048,2160,1920,1152,720,600,336,300,60]); AGR.MXO("J2.2",[604800,12096,4320,3840,2304,1440,1200,672,600,120]); AGR.MXO("J3",[8160,3420,3420,2880,2448,2160,1944,1920,1152]); AGR.MXO("J3.2",[50232960,16320,5760,4896,4320,3888,3840,2304,342]); AGR.MXO("J4",[501397585920,21799895040,10239344640,660602880,141831360,887040,319440,163680,12144,6048,812,602,444]); AGR.MXO("L2(101)",[5050,102,100,60,60]); AGR.MXO("L2(103)",[5253,104,102,24,24]); AGR.MXO("L2(107)",[5671,108,106,12]); AGR.MXO("L2(109)",[5886,110,108,60,60]); AGR.MXO("L2(11)",[60,60,55,12]); AGR.MXO("L2(11).2",[660,110,24,24,20]); AGR.MXO("L2(113)",[6328,114,112,24,24]); AGR.MXO("L2(13)",[78,14,12,12]); AGR.MXO("L2(13).2",[1092,156,28,24,24]); AGR.MXO("L2(16)",[240,60,34,30]); AGR.MXO("L2(16).2",[4080,480,120,68,60]); AGR.MXO("L2(16).4",[8160,960,240,136,120]); AGR.MXO("L2(17)",[136,24,24,18,16]); AGR.MXO("L2(17).2",[,272]); AGR.MXO("L2(19)",[171,60,60,20,18]); AGR.MXO("L2(19).2",[,342]); AGR.MXO("L2(23)",[253,24,24,24,22]); AGR.MXO("L2(25)",[300,120,120,26,24]); AGR.MXO("L2(25).2_2",[7800,600,240,240,52,48]); AGR.MXO("L2(27)",[351,28,26,12]); AGR.MXO("L2(29)",[406,60,60,30,28]); AGR.MXO("L2(29).2",[,812]); AGR.MXO("L2(31)",[465,60,60,32,30,24,24]); AGR.MXO("L2(32)",[992,66,62]); AGR.MXO("L2(32).5",[32736,4960,330,310]); AGR.MXO("L2(37)",[666,38,36,12]); AGR.MXO("L2(41)",[820,60,60,42,40,24,24]); AGR.MXO("L2(43)",[903,44,42,12]); AGR.MXO("L2(47)",[1081,48,46,24,24]); AGR.MXO("L2(49)",[1176,336,336,60,60,50,48]); AGR.MXO("L2(53)",[1378,54,52,12]); AGR.MXO("L2(59)",[1711,60,60,60,58]); AGR.MXO("L2(61)",[1830,62,60,60,60]); AGR.MXO("L2(64)",[4032,504,130,126,60]); AGR.MXO("L2(67)",[2211,68,66,12]); AGR.MXO("L2(71)",[2485,72,70,60,60,24,24]); AGR.MXO("L2(73)",[2628,74,72,24,24]); AGR.MXO("L2(79)",[3081,80,78,60,60,24,24]); AGR.MXO("L2(8)",[56,18,14]); AGR.MXO("L2(8).3",[504,168,54,42]); AGR.MXO("L2(81)",[3240,720,720,82,80]); AGR.MXO("L2(83)",[3403,84,82,12]); AGR.MXO("L2(89)",[3916,90,88,60,60,24,24]); AGR.MXO("L2(97)",[4656,98,96,24,24]); AGR.MXO("L3(11)",[1597200,1597200,1320,600,399,168]); AGR.MXO("L3(2)",[24,24,21]); AGR.MXO("L3(2).2",[168,42,16,12]); AGR.MXO("L3(3)",[432,432,39,24]); AGR.MXO("L3(3).2",[5616,216,96,78,48]); AGR.MXO("L3(4)",[960,960,360,360,360,168,168,168,72]); AGR.MXO("L3(4).2^2",[40320,40320,40320,1440,768,672,288,240]); AGR.MXO("L3(4).2_1",[20160,720,720,720,384,336,336,336,144,120]); AGR.MXO("L3(4).2_2",[20160,1920,1920,720,336,144]); AGR.MXO("L3(4).2_3",[20160,720,384,336,144,120]); AGR.MXO("L3(4).3",[20160,2880,2880,216,63]); AGR.MXO("L3(4).6",[60480,40320,1152,432,360,126]); AGR.MXO("L3(4).D12",[120960,120960,120960,80640,2304,864,720,252]); AGR.MXO("L3(5)",[12000,12000,120,96,93]); AGR.MXO("L3(5).2",[372000,4000,960,240,192,186]); AGR.MXO("L3(7)",[32928,32928,336,336,336,72,72,57]); AGR.MXO("L3(8)",[225792,225792,294,219,168]); AGR.MXO("L3(8).2",[16482816]); AGR.MXO("L3(8).3",[16482816,677376,677376,882,657,504]); AGR.MXO("L3(8).6",[49448448,32965632,150528,21168,1764,1314,1008]); AGR.MXO("L3(9)",[466560,466560,6048,5616,720,384,273]); AGR.MXO("L4(3)",[151632,151632,51840,51840,46656,2880,720,576]); AGR.MXO("L5(2)",[322560,322560,64512,64512,155]); AGR.MXO("L5(2).2",[9999360]); AGR.MXO("L7(2).2",[163849992929280]); AGR.MXO("Ly",[5859000000,5388768000,46500000,39916800,9000000,3849120,699840,1474,666]); AGR.MXO("M",[8309562962452852382355161088000000,139511839126336328171520000,7531234255143970327756800,1836779512410596494540800,,,,,544475663327232000,,,,,,,378000000000,,,,,,,,508243680,,,72576000,,,,,,,,,632736,,,72600,,,,1640]); AGR.MXO("M11",[720,660,144,120,48]); AGR.MXO("M12",[7920,7920,1440,1440,660,432,432,240,192,192,72]); AGR.MXO("M12.2",[95040,1320,1320,480,384,384,216,144,120]); AGR.MXO("M22",[20160,5760,2520,2520,1920,1344,720,660]); AGR.MXO("M22.2",[443520,40320,11520,3840,2688,1440,1320]); AGR.MXO("M23",[443520,40320,40320,20160,7920,5760,253]); AGR.MXO("M24",[10200960,887040,322560,190080,138240,120960,64512,6072,168]); AGR.MXO("McL",[3265920,443520,443520,126000,58320,58320,40320,40320,40320,40320,7920,3000]); AGR.MXO("McL.2",[898128000,6531840,252000,116640,116640,80640,80640,15840,6000,2304]); AGR.MXO("O10+(2)",[47377612800,44590694400,10239344640,10239344640]); AGR.MXO("O10-(2)",[50536120320]); AGR.MXO("O7(3)",[13063680,12597120,12130560,4245696,4245696,4094064,1451520,1451520,1259712,362880,362880,207360,161280,17280,13824]); AGR.MXO("O8+(2)",[1451520,1451520,1451520,1290240,1290240,1290240,181440,181440,181440,155520,155520,155520,110592,15552,14400,14400,14400]); AGR.MXO("O8+(2).2",[,2903040]); AGR.MXO("O8+(3)",[4585351680,4585351680,4585351680,4585351680,4585351680,4585351680,4421589120,4421589120,4421589120,174182400,174182400,174182400,174182400,136048896,26127360,26127360,26127360,622080,622080,622080,622080,622080,622080,518400,518400,518400,331776]); AGR.MXO("O8-(2)",[1658880,1451520,258048,184320,120960,8160,4320,168]); AGR.MXO("O8-(3)",[,9170703360,9170703360,,,,1244160,1244160,531360]); AGR.MXO("O8-(3).2_1",[,,18341406720,18341406720,,,97044480,,,1062720]); AGR.MXO("ON",[3753792,3753792,175560,161280,25920,25920,14880,14880,10752,7920,7920,2520,2520]); AGR.MXO("ON.2",[460815505920,351120,322560,51840,51840,21504,16464,930,720,336]); AGR.MXO("R(27)",[511758,19656,1512,222,168,114]); AGR.MXO("R(27).3",[10073444472,1535274,,,666,168]); AGR.MXO("Ru",[35942400,774144,349440,344064,252000,245760,31200,20160,12180,12000,4320,4000,2184,1440,1200]); AGR.MXO("S4(4)",[11520,11520,8160,8160,7200,7200,720]); AGR.MXO("S4(4).2",[979200,23040,23040,16320,16320,14400,14400,1440]); AGR.MXO("S4(5)",[30000,30000,15600,14400,960,720,480,360]); AGR.MXO("S6(2)",[51840,40320,23040,12096,10752,4608,4320,1512]); AGR.MXO("S6(3)",[12597120,4094064,1259712,622080,41472,29484,24192,11232,1092,1092,60]); AGR.MXO("S6(3).2",[25194240]); AGR.MXO("S8(2)",[394813440,348364800,185794560,20643840,8847360,8709120,4128768,3628800,1958400,1036800,2448]); AGR.MXO("Suz",[251596800,19595520,13685760,3317760,1924560,1209600,1105920,483840,368640,190080,139968,43200,25920,11232,11232,7800,2520]); AGR.MXO("Suz.2",[448345497600,503193600,39191040,27371520,6635520,3849120,2419200,2211840,967680,737280,380160,279936,86400,51840,15600,5040]); AGR.MXO("Sz(32)",[31744,164,100,62]); AGR.MXO("Sz(8)",[448,52,20,14]); AGR.MXO("Sz(8).3",[29120,1344,156,60,42]); AGR.MXO("Th",[634023936,319979520,92897280,33094656,25474176,944784,944784,349920,12000,12000,7056,6840,5616,720,465,120]); AGR.MXO("U3(11)",[53240,5280,1320,1320,1320,360,360,360,288,111,72]); AGR.MXO("U3(3)",[216,168,96,96]); AGR.MXO("U3(3).2",[6048,432,336,192,192]); AGR.MXO("U3(4)",[960,300,150,39]); AGR.MXO("U3(4).2",[62400,1920,600,300,78]); AGR.MXO("U3(4).4",[124800,3840,1200,600,156]); AGR.MXO("U3(5)",[2520,2520,2520,1000,720,720,720,240]); AGR.MXO("U3(5).2",[126000,5040,2000,1440,480,336]); AGR.MXO("U3(5).3",[126000,3000,720,216,216,63]); AGR.MXO("U3(7)",[16464,2688,384,336,129]); AGR.MXO("U3(8)",[10752,1512,216,216,216,162,57]); AGR.MXO("U3(9)",[58320,7200,720,600,219]); AGR.MXO("U4(2)",[960,720,648,648,576]); AGR.MXO("U4(2).2",[25920,1920,1440,1296,1296,1152]); AGR.MXO("U4(3)",[29160,25920,25920,20160,20160,11664,6048,5760,5760,2520,2520,2520,2520,1152,720,720]); AGR.MXO("U4(3).2_1",[3265920,58320,51840,51840,40320,40320,23328,12096,11520,11520,2304,1440,1440]); AGR.MXO("U4(3).2_3",[3265920,58320,40320,40320,23328,12096,2304,1440,1440,1440,768]); AGR.MXO("U5(2)",[82944,77760,46080,9720,3888,660]); AGR.MXO("U5(2).2",[13685760,165888,155520,92160,19440,,1320]); AGR.MXO("U6(2)",[13685760,13271040,10321920,6531840,6531840,6531840,1474560,1451520,1451520,1451520,443520,443520,443520,155520,93312,40320]); AGR.MXO("U6(2).2",[,27371520,,,,,,887040]); AGR.MXO("U7(2)",[84085309440,82771476480,,,,,3674160]); ############################################################################# ## ## Store structures of maximal subgroups. ## AGR.MXS("(2^2x3).U6(2)",[,,"2^10:6.L3(4)","2x6_1.U4(3).2_2","2x6_1.U4(3).2_2","2x6_1.U4(3).2_2",,"2^2x3xS6(2)","2^2x3xS6(2)","2^2x3xS6(2)","2x6.M22","2x6.M22","2x6.M22"]); AGR.MXS("12.M22",["12_1.L3(4)","2.2^5:3A6","2.(2x3.A7)","2.(2x3.A7)","3x2.(2^5:S5)","3x2.(2x2^3:L3(2))","(4x3.A6).2_3","3x2.(2xL2(11))"]); AGR.MXS("2.2E6(2)",[,,"2xF4(2)","2.F4(2)","2.F4(2)",,"2xFi22","2.Fi22","2.Fi22"]); AGR.MXS("2.A10",["2.A9","Isoclinic(2.A8.2)","(2.A7x3).2","2.(A5xA5).4","2.(A6xA4).2","2^(1+4).S5","M10x2"]); AGR.MXS("2.A11",["2.A10","Isoclinic(2.A9.2)","(2.A8x3).2","2.(A7xA4).2","2.(A6xA5).2","2xM11","2xM11"]); AGR.MXS("2.A12",[,,,,,,"2.M12","2.M12"]); AGR.MXS("2.A5",["2.L2(3)","2.D10","2.S3"]); AGR.MXS("2.A6",["2.A5","2.A5","3^2:8","2.S4","2.S4"]); AGR.MXS("2.A7",["2.A6","2.L3(2)","2.L3(2)","Isoclinic(2.A5.2)","(2.A4x3).2"]); AGR.MXS("2.A8",["2.A7","2^(1+3):L3(2)","2^(1+3):L3(2)","2.A6.2_1","2(A4xA4).2^2","(2.A5x3).2"]); AGR.MXS("2.A9",["2.A8","Isoclinic(2.A7.2)","(2.A6x3).2_1","2xL2(8).3","2xL2(8).3","2.(A5xA4).2","(2x3^3).S4","2x3^2:2A4"]); AGR.MXS("2.B",["2^2.2E6(2).2",,"2xFi23",,"2xTh",,,,"(S3x2.Fi22).2",,,,,,,,,,,,,,,,,"2xM11",,,,"2x47:23"]); AGR.MXS("2.Co1",[,,"2.2^11:M24"]); AGR.MXS("2.Fi22",[,"2xO7(3)","2xO7(3)","O8+(2):S3x2","2^11.M22",,,"S3x2.U4(3).2_2"]); AGR.MXS("2.G2(4)",["2.J2","2.2^(2+8).(3xA5)","2.2^(4+6).(A5x3)","Isoclinic(2xU3(4).2)","Isoclinic(6.L3(4).2_3)","Isoclinic(2xU3(3).2)","2.A5xA5","2.L2(13)"]); AGR.MXS("2.HS",["2.M22","Isoclinic(U3(5).2x2)","Isoclinic(U3(5).2x2)","Isoclinic(2.L3(4).2_1)","Isoclinic(S8x2)","2.2^4.S6","2.4^3.L3(2)","2xM11","2xM11","2.4.2^4.S5","2.(2xA6.2^2)","5:4x2.A5"]); AGR.MXS("2.HS.2",[,,,,,,,,"5^(1+2)_+:[2^6]"]); AGR.MXS("2.J2",["2xU3(3)","(2x3.A6).2","2^(1+4)_-:2A5","2^(3+4):(3xS3)","2A4xA5","2A5xD10","(2xL3(2)).2","2.(5^2:D12)","2.A5"]); AGR.MXS("2.J2.2",[,"Isoclinic(2xU3(3).2)",,,,,"(2.A5xD10).2"]); AGR.MXS("2.L2(11)",["2.A5","2.A5","2x11:5","2.(S3x2)"]); AGR.MXS("2.L2(13)",["(2x13).6","2.D14","2.D12","2.L2(3)"]); AGR.MXS("2.L2(17)",["(2x17).8","2.S4","2.S4","2.D18","2.D16"]); AGR.MXS("2.L2(19)",["2x19:9","2.A5","2.A5","2.D20","2.D18"]); AGR.MXS("2.L2(23)",["2x23:11","2.S4","2.S4","2.D24","2.D22"]); AGR.MXS("2.L2(25)",["(2x5^2).12","Isoclinic(2.A5.2)","Isoclinic(2.A5.2)","2.D26","2.D24"]); AGR.MXS("2.L2(27)",["2x3^3:13","2.D28","2.D26","2.L2(3)"]); AGR.MXS("2.L2(29)",["(2x29).14","2.A5","2.A5","2.D30","2.D28"]); AGR.MXS("2.L2(31)",["2x31:15","2.A5","2.A5","2.D32","2.D30","2.S4","2.S4"]); AGR.MXS("2.L3(2)",["2.S4","2.S4","2x7:3"]); AGR.MXS("2.L3(4)",["2^5:A5","2^5:A5","2xA6","2xA6","2xA6","2xL3(2)","2xL3(2)","2xL3(2)","Isoclinic(2x3^2:Q8)"]); AGR.MXS("2.M12",["2xM11","2xM11","A6.D8","A6.D8","2.L2(11)","2x3^2.2.S4","2x3^2.2.S4","4Y(2xA5):2","(2xQ8).S4","2.(4^2:D12)","2.A4xS3"]); AGR.MXS("2.M12.2",[,"2xL2(11).2"]); AGR.MXS("2.M22",["2.L3(4)","2^5:A6","2xA7","2xA7","2^5:S5","2x2^3:L3(2)","(2xA6).2_3","2xL2(11)"]); AGR.MXS("2.O7(3)",["4.U4(3).2_2","(2x3^5).U4(2).2","2.L4(3).2_2","2xG2(3)","2xG2(3)","2x3^(3+3):L3(3)","2.S6(2)","2.S6(2)","2.3^(1+6)_+.(2A4xA4).2","Isoclinic(2.A9.2)","Isoclinic(2.A9.2)","2.(2^2xU4(2)).2","2^(1+6)_+:A7","2.(S6xS4)","2.(A4x2(A4xA4).2).2"]); AGR.MXS("2.O8+(2)",["2xS6(2)","2.S6(2)","2.S6(2)","2^7.A8","2^(1+6)_+.A8","2^(1+6)_+.A8","2xA9","2.A9","2.A9","(6xU4(2)):2","(3x2.U4(2)):2","2.O8+(2)M11","2.2^(1+8)_+:(S3xS3xS3)","(2x3^4:2^3).S4","(A5xA5).(2x4)","2.(A5xA5).2^2","2.(A5xA5).2^2"]); AGR.MXS("2.Ru",["(2x2F4(2)').2","2.2^6:u3(3):2","2.(2^2xSz(8)):3","2.2^3+8:L3(2)",,"2.2.2^4+6:S5"]); AGR.MXS("2.S6(2)",["2.U4(2).2","Isoclinic(2.A8.2)","2.(2^5:S6)","2xU3(3).2","2.2^6.L3(2)","2^2.[2^6].(S3xS3)","2.(S3xS6)","L2(8):3x2"]); AGR.MXS("2.Suz",["2.G2(4)","Isoclinic(6_2.U4(3).2_3')","2xU5(2)","2.2^(1+6)_-.U4(2)","2x3^5:M11","2.J2.2","(2.2^4.2^6):3A6","2.(A4xL3(4)).2","2.(2^(2+8):(A5xS3))","Isoclinic(2.M12.2)","2.(3^(2+4):2(A4x2^2).2)","(A6x2.A5).2","(3^2:4x2.A6).2","(2xL3(3)).2","(2xL3(3)).2","2.L2(25)","2.A7"]); AGR.MXS("2.Sz(8)",["2.2^(3+3):7","2x13:4","2x5:4","2xD14"]); AGR.MXS("2.U4(2)",["2.(2^4:A5)","2.A6.2_1","2x3^(1+2)+:2A4","(2x3^3).S4","2.(2.(A4xA4).2)"]); AGR.MXS("2.U4(2).2",["2.U4(2)","2.(2^4:S5)","2.(S6x2)","2.(3^3:(S4x2))","2.(3^(1+2)+:2S4)","2.(2.(A4xA4).2.2)"]); AGR.MXS("2.U6(2)",["2xU5(2)","2.2^(1+8)_+:U4(2)","2^10:L3(4)","2xU4(3).2_2","2.U4(3).2_2","2.U4(3).2_2","2.2^(4+8):(S3xA5)","2xS6(2)","2xS6(2)","2xS6(2)","2xM22","2.M22","2.M22","2xS3xU4(2)","2.(3^(1+4).[2^7.3])","2.L3(4).2_1"]); AGR.MXS("2E6(2)",[,,"F4(2)","F4(2)","F4(2)",,"Fi22","Fi22","Fi22"]); AGR.MXS("2F4(2)'",["L3(3).2","L3(3).2","2.[2^8]:5:4","L2(25)","2^2.[2^8]:S3","A6.2^2","A6.2^2","5^2:4A4"]); AGR.MXS("2F4(2)'.2",["2F4(2)'","2.[2^9]:5:4","L2(25).2_3","2^2.[2^9]:S3","5^2:4S4","3^(1+2):SD16","13:12"]); AGR.MXS("2^2.2E6(2)",[,,"2x2.F4(2)","2x2.F4(2)","2x2.F4(2)",,"2x2.Fi22","2x2.Fi22","2x2.Fi22"]); AGR.MXS("2^2.L3(4)",["2^6.A5","2^6.A5","2^2xA6","2^2xA6","2^2xA6","2^2xL2(7)","2^2xL2(7)","2^2xL2(7)","2^2.(3^2:Q8)"]); AGR.MXS("2^2.L3(4).2_2",["2^2.L3(4)","2^2.2^4.S5","2^2.2^4.S5","2^2.S6","2^2.(L2(7)x2)","2^2.(3^2:Q8.2)"]); AGR.MXS("2^2.U6(2)",[,,"2^10:2.L3(4)","2x2.U4(3).2_2","2x2.U4(3).2_2","2x2.U4(3).2_2",,"2^2xS6(2)","2^2xS6(2)","2^2xS6(2)","2x2.M22","2x2.M22","2x2.M22"]); AGR.MXS("3.2E6(2)",[,,"3xF4(2)","3xF4(2)","3xF4(2)",,"3.Fi22","3.Fi22","3.Fi22"]); AGR.MXS("3.A6",["3xA5","3xA5","3^(1+2):4","3xS4","3xS4"]); AGR.MXS("3.A7",["3.A6","3xL3(2)","3xL3(2)","3xA5.2","3.(A4x3):2"]); AGR.MXS("3.Fi22",[,,,"3xO8+(2):S3","2^10:3M22"]); AGR.MXS("3.Fi24'",["3xFi23"]); AGR.MXS("3.Fi24'.2",[,,"(S3x2.Fi22).2"]); AGR.MXS("3.G2(3)",["3xU3(3).2","3xU3(3).2","3.(3^(1+2)+x3^2):2S4","3.(3^(1+2)+x3^2):2S4","3xL3(3).2","3xL3(3).2","3xL2(8).3","3x2^3.L3(2)","3xL2(13)","3.2^(1+4)+:3^2.2"]); AGR.MXS("3.J3",[,,,"3x2^4:(3xA5)"]); AGR.MXS("3.L3(4)",["3x2^4:A5","3x2^4:A5","3.A6","3.A6","3.A6","3xL3(2)","3xL3(2)","3xL3(2)","3^(1+2)_+:Q8"]); AGR.MXS("3.L3(7)",["3x7^2:2.L2(7).2","3x7^2:2.L2(7).2","3xL3(2).2","3xL3(2).2","3xL3(2).2","3.(A4x3):2","3^(1+2)_+:Q8","3x19:3"]); AGR.MXS("3.M22",["3.L3(4)","2^4:3A6","3.A7","3.A7","3x2^4:S5","3x2^3:L3(2)","3.A6.2_3","3xL2(11)"]); AGR.MXS("3.McL",["3_2.U4(3)","3.M22","3.M22","3.U3(5)","3.3^(1+4):2S5","3.3^4:M10","3xL3(4).2_2","3x2.A8","3.2^4:A7","3.2^4:A7","3xM11","3x5^(1+2):3:8"]); AGR.MXS("3.McL.2",[,,,"3.3^(1+4):4S5"]); AGR.MXS("3.O7(3)",["6_1.U4(3).2_2","3.3^5:U4(2):2","3xL4(3).2_2","3.G2(3)","3.G2(3)","3.(3^(3+3):L3(3))","3xS6(2)","3xS6(2)","3.3^(1+6)_+.(2A4xA4).2","3xS9","3xS9","3x(2^2xU4(2)):2","2^6:3A7","3xS6xS4","3.(A4x2(A4xA4).2).2"]); AGR.MXS("3.ON",[,,,,"3.(3^2:4xA6).2","3^(1+4)_+:2^(1+4)_-D10"]); AGR.MXS("3.Suz",["3xG2(4)","3^2.U4(3).2_3'","3xU5(2)","3x2^(1+6)_-.U4(2)","3^6.M11","3xJ2.2","3x2^(4+6).3A6","(A4x3.L3(4)).2","3x2^(2+8):(A5xS3)","3xM12.2","3.3^(2+4):2(A4x2^2).2","(3.A6xA5):2","(3^(1+2):4xA6).2","3xL3(3).2","3xL3(3).2","3xL2(25)","3.A7"]); AGR.MXS("3.Suz.2",["3.Suz","(3xG2(4)).2","3^2.U4(3).(2^2)_(133)","(3xU5(2)).2","(3x2^(1+6)_-.U4(2)).2","3^6:(M11x2)","S3xJ2.2","(3x2^(4+6):3A6).2","(A4x3.L3(4).2_3).2","(3x2^(2+8):(A5xS3)).2","S3xM12.2","3.3^(2+4):2(S4xD8)","(3.A6.2_2xA5):2","(3^(1+2):8xA6).2","(3xL2(25)).2_2","3.A7.2"]); AGR.MXS("3.U6(2)",["3xU5(2)","3x2^(1+8)_+:U4(2)","2^9:3.L3(4)","3_1.U4(3).2_2","3_1.U4(3).2_2","3_1.U4(3).2_2","3x2^(4+8):(S3xA5)","3xS6(2)","3xS6(2)","3xS6(2)","3.M22","3.M22","3.M22","3xS3xU4(2)","3.(3^(1+4).[2^7.3])","3.L3(4).2_1"]); AGR.MXS("3D4(2)",[,,"U3(3).2",,,,,,"13:4"]); AGR.MXS("3D4(2).3",["3D4(2)"]); AGR.MXS("4.M22",["4_1.L3(4)","2.2^5:A6","2.(2xA7)","2.(2xA7)","2.(2^5:S5)","2.(2x2^3:L3(2))","(4xA6).2_3","2.(2xL2(11))"]); AGR.MXS("6.A6",["3x2.A5","3x2.A5","3^(1+2)_+:8","3x2.S4","3x2.S4"]); AGR.MXS("6.A7",["6.A6","3x2.L3(2)","3x2.L3(2)","3xIsoclinic(2.A5.2)","6.(A4x3).2"]); AGR.MXS("6.Fi22",[,"2x3.O7(3)","2x3.O7(3)","6xO8+(2):S3","2^11.3M22"]); AGR.MXS("6.L3(4)",[,,,,,,"6xL3(2)","6xL3(2)"]); AGR.MXS("6.M22",["6.L3(4)","2^5:3A6","2x(3.A7)","2x(3.A7)","3x2^5:S5","6x2^3:L3(2)","(2x3.A6).2_3","6xL2(11)"]); AGR.MXS("6.M22.2",[,"6.L3(4).2_2"]); AGR.MXS("6.O7(3)",["12_1.U4(3).2_2","6.(3^5:U4(2):2)","3x2.L4(3).2_2","2x3.G2(3)","2x3.G2(3)","2x3.(3^(3+3):L3(3))","3x2.S6(2)","3x2.S6(2)","6.3^(1+6)_+.(2A4xA4).2","3xIsoclinic(2.A9.2)","3xIsoclinic(2.A9.2)","3x2.(2^2xU4(2)).2","2^(1+6)_+:3A7","3x2.(S6xS4)","6.(A4x2(A4xA4).2).2"]); AGR.MXS("6.Suz",["3x2.G2(4)","Isoclinic((3^2x2).U4(3).2_3')","6xU5(2)","3x2.2^(1+6)_-.U4(2)","2x3^6.M11","3x2.J2.2","3x(2.2^4.2^6):3A6","2.(A4x3.L3(4)).2","3x2.(2^(2+8):(A5xS3))","3xIsoclinic(2.M12.2)","6.(3^(2+4):2(A4x2^2).2)","(3.A6x2.A5).2","(3^(1+2):4x2.A6).2","3x(2xL3(3)).2","3x(2xL3(3)).2","3x2.L2(25)","6.A7"]); AGR.MXS("6.U6(2)",["6xU5(2)","3x2.2^(1+8)_+:U4(2)","2^10:3.L3(4)","2x3_1.U4(3).2_2","6_1.U4(3).2_2","6_1.U4(3).2_2","3x2.2^(4+8):(S3xA5)","6xS6(2)","6xS6(2)","6xS6(2)","2x3.M22","6.M22","6.M22","6xS3xU4(2)","6.(3^(1+4).[2^7.3])","6.L3(4).2_1"]); AGR.MXS("A10",["A9","A8.2","(A7x3).2","(A5xA5):4","(A6xA4).2","2^5:S5","A6.2_3"]); AGR.MXS("A10.2",["A10","A9.2","S8x2","S7xS3","(S5xS5):2","S6xS4","2^5:S5","A6.2^2"]); AGR.MXS("A11",["A10","A9.2","(A8x3).2","(A7xA4):2","(A6xA5):2","M11","M11"]); AGR.MXS("A11.2",["A11","A10.2","S9x2","S8xS3","S7xS4","S6xS5","11:10"]); AGR.MXS("A12",["A11","A10.2","(A9x3):2","(A6xA6):2^2","(A8xA4):2","(A7xA5):2","M12","M12","2^6:3^3:S4","2^5:S6","3^4:2^3.S4"]); AGR.MXS("A13",["A12","A11.2","(A10x3):2","(A9xA4):2","(A8xA5):2","(A7xA6):2","L3(3)","L3(3)","13:6"]); AGR.MXS("A13.2",["A13","A12.2","S11x2","S10xS3","S9xS4","S8xS5","S7xS6","13:12"]); AGR.MXS("A14",["A13"]); AGR.MXS("A14.2",[,"A13.2"]); AGR.MXS("A5",["A4","D10","S3"]); AGR.MXS("A5.2",["A5","S4","5:4","S3x2"]); AGR.MXS("A6",["A5","A5","3^2:4","S4","S4"]); AGR.MXS("A6.2_1",["A6","A5.2","A5.2","3^2:D8","2xS4","S4x2"]); AGR.MXS("A7",["A6","L3(2)","L3(2)","A5.2","(A4x3):2"]); AGR.MXS("A7.2",["A7","A6.2_1","2xS5","S4xS3","7:6"]); AGR.MXS("A8",["A7","2^3:L3(2)","2^3:L3(2)","A6.2_1","2^4:(S3xS3)","(A5x3):2"]); AGR.MXS("A8.2",["A8","A7.2","S6x2","(S4xS4):2","S5xS3","2^4:S4","L3(2).2"]); AGR.MXS("A9",["A8","A7.2","(3xA6).2_1","L2(8).3","L2(8).3","(A4xA5):2","3^3.S4","3^2:2A4"]); AGR.MXS("A9.2",["A9","A8.2","S7x2","S3xS6","S5xS4","3^3:(S4x2)","3^2.2.S4"]); AGR.MXS("B",["2.2E6(2).2","2^(1+22).Co2","Fi23","2^(9+16).S8(2)","Th","(2^2xF4(2)):2","2^(2+10+20).(M22.2xS3)","[2^30].L5(2)","S3xFi22.2","[2^35].(S5xL3(2))","HN.2","O8+(3).S4","3^(1+8).2^(1+6).U4(2).2","(3^2:D8xU4(3).2^2).2","5:4xHS.2","S4x2F4(2)'.2","3^2.3^3.3^6.(S4x2S4)","A5.2xM22.2","(S6xL3(4).2).2","5^3.L3(5)","5^(1+4).2^(1+4).A5.4","(S6xS6).4","5^2:4S4xS5","L2(49).2_3","L2(31)","M11","L3(3)","L2(17).2","L2(11).2","47:23"]); AGR.MXS("Co1",["Co2","3.Suz.2","2^11:M24","Co3","2^(1+8)+.O8+(2)","U6(2).3.2","(A4xG2(4)):2","2^(2+12):(A8xS3)","2^(4+12).(S3x3S6)","3^2.U4(3).D8","3^6:2M12","(A5xJ2):2","3^(1+4).2U4(2).2","(A6xU3(3)):2","3^(3+4):2(S4xS4)","A9xS3","(A7xL2(7)):2","(D10x(A5xA5).2).2","5^(1+2):GL2(5)","5^3:(4xA5).2","7^2:(3x2A4)","5^2:2A5"]); AGR.MXS("Co2",["U6(2).2","2^10:M22:2","McL","2^(1+8)_+:S6(2)","HS.2","(2^(1+6)_+x2^4).A8","U4(3).D8","2^(4+10)(S5xS3)","M23","3^(1+4)_+:2^(1+4)_-.S5","5^(1+2):4S4"]); AGR.MXS("Co3",["McL.2","HS","U4(3).(2^2)_(133)","M23","3^5:(2xM11)","2.S6(2)","U3(5).3.2","3^(1+4)_+:4S6","2^4.A8","L3(4).D12","2xM12","2^2.[2^7.3^2].S3","S3xL2(8).3","A4xS5"]); AGR.MXS("F4(2)",["(2^(1+8)x2^6):S6(2)","(2^(1+8)x2^6):S6(2)","S8(2)","S8(2)"]); AGR.MXS("Fi22",["2.U6(2)","O7(3)","O7(3)","O8+(2).3.2","2^10:M22","2^6:S6(2)","(2x2^(1+8)):U4(2):2","S3xU4(3).2_2","2F4(2)'","2^(5+8):(S3xA6)","3^(1+6):2^(3+4):3^2:2","A10.2","A10.2","M12"]); AGR.MXS("Fi22.2",["Fi22","2.U6(2).2","O8+(2):S3x2","2^10:M22:2","2^7:S6(2)","(2x2^(1+8)):(U4(2):2x2)","S3xU4(3).(2^2)_(122)","2F4(2)'.2","2^(5+8):(S3xS6)","3^5:(2xU4(2).2)","3^(1+6)_+:2^(3+4):(S3xS3)","G2(3).2","M12.2"]); AGR.MXS("Fi23",["2.Fi22","O8+(3).3.2","2^2.U6(2).2","S8(2)","S3xO7(3)","2^11.M23","3^(1+8).2^(1+6).3^(1+2).2S4","3^3.[3^7].(2xL3(3))","A12.2","(2^2x2^(1+8)).(3xU4(2)).2","2^(6+8):(A7xS3)","S4xS6(2)","S4(4).4","L2(23)"]); AGR.MXS("Fi24'",["Fi23","2.Fi22.2","(3xO8+(3):3):2","O10-(2)","3^7.O7(3)","3^(1+10):U5(2):2","2^11.M24","2^2.U6(2).3.2","2^(1+12).3_1.U4(3).2_2'","3^3.[3^10].GL3(3)","3^2.3^4.3^8.(A5x2A4).2","(A4xO8+(2).3).2","He.2","He.2","2^(3+12).(L3(2)xA6)","2^(6+8).(S3xA8)","(3^2:2xG2(3)).2","(A5xA9):2","A6xL2(8):3","7:6xA7","U3(3).2","U3(3).2","L2(13).2","L2(13).2","29:14"]); AGR.MXS("Fi24'.2",["F3+","2xFi23","2^2.Fi22.2","S3xO8+(3):S3","O10-(2).2","3^7.O7(3):2","3^(1+10):(2xU5(2):2)","2^12.M24","2^2.U6(2):S3x2","2^(1+12)_+.3_1.U4(3).2^2_(122)","3^3.[3^10].(L3(3)x2^2)","3^2.3^4.3^8.(S5x2S4)","S4xO8+(2):S3","2^(3+12).(L3(2)xS6)","2^(7+8).(S3xA8)","(S3xS3xG2(3)):2","S5xS9","S6xL2(8):3","7:6xS7","7^(1+2)_+:(6xS3).2","29:28"]); AGR.MXS("G2(3)",["U3(3).2","U3(3).2","(3^(1+2)+x3^2):2S4","(3^(1+2)+x3^2):2S4","L3(3).2","L3(3).2","L2(8).3","2^3.L3(2)","L2(13)","2^(1+4)+:3^2.2"]); AGR.MXS("G2(3).2",["G2(3)","3^2.(3x3^(1+2)+):D8","L2(8):3x2","2^3.L3(2):2","L2(13).2","2^(1+4)+.(S3xS3)"]); AGR.MXS("G2(4)",["J2","2^(2+8):(3xA5)","2^(4+6):(A5x3)","U3(4).2","3.L3(4).2_3","U3(3).2","A5xA5","L2(13)"]); AGR.MXS("G2(4).2",["G2(4)","J2.2"]); AGR.MXS("G2(5)",["5^(1+4):GL(2,5)",,"3.U3(5).2","L3(5).2","2.(A5xA5).2","U3(3).2","2^3.L3(2)"]); AGR.MXS("HN",["A12","2.HS.2","U3(8).3_1","2^(1+8).(A5xA5).2","(D10xU3(5)).2","5^(1+4):2^(1+4).5.4","2^6.U4(2)","(A6xA6).D8","2^3.2^2.2^6.(3xL3(2))","5^2.5.5^2.4A5","M12.2","M12.2","3^4:2(A4xA4).4","3^(1+4):4A5"]); AGR.MXS("HN.2",["HN","A12.2","4.HS.2","U3(8).6","2^(1+8)_+.(A5xA5).2^2","5:4xU3(5):2","5^(1+4)_+:(4Y2^(1+4)_-.5.4)","2^6.U4(2).2","(S6xS6).2^2","2^3.2^2.2^6.(S3xL3(2))","5^2.5.5^2.4S5","3^4:2(S4xS4).2","3^(1+4)_+:4S5"]); AGR.MXS("HS",["M22","U3(5).2","U3(5).2","L3(4).2_1","A8.2","2^4.S6","4^3:L3(2)","M11","M11","4.2^4.S5","2xA6.2^2","5:4xA5"]); AGR.MXS("HS.2",["HS","M22.2","L3(4).2^2","S8x2","2^5.S6","4^3:(L3(2)x2)","2^(1+6)_+:S5","(2xA6.2^2).2","5^(1+2)_+:[2^5]","5:4xS5"]); AGR.MXS("He",["S4(4).2","2^2.L3(4).S3","2^6:3.S6","2^6:3.S6","2^(1+6)_+.L3(2)","7^2:2L2(7)","3.A7.2","7^(1+2):(S3x3)","S4xL3(2)","7:3xL3(2)","5^2:4A4"]); AGR.MXS("He.2",["He","S4(4).4","2^2.L3(4).D12","2^(1+6)_+.L3(2).2","7^2:2.L2(7).2","3.S7x2","(S5xS5):2","2^(4+4).(S3xS3).2","7^(1+2):(S3x6)","S4xL3(2).2","7:6xL3(2)","5^2:4S4"]); AGR.MXS("J1",["L2(11)","2^3.7.3","2xA5","19:6","11:10","D6xD10","7:6"]); AGR.MXS("J2",["U3(3)","3.A6.2_2","2^(1+4)_-:A5","2^(2+4):(3xS3)","A4xA5","A5xD10","L3(2).2","5^2:D12","A5"]); AGR.MXS("J2.2",["J2","U3(3).2","3.A6.2^2","2^(1+4).S5","2^(2+4):(S3xS3)","(A4xA5):2","(A5xD10).2","L3(2).2x2","5^2:(4xS3)","A5.2"]); AGR.MXS("J3",["L2(16).2","L2(19)","L2(19)","2^4:(3xA5)","L2(17)","(3xA6):2_2","3^2.3^(1+2):8","2^(1+4)_-:A5","2^(2+4):(3xS3)"]); AGR.MXS("J3.2",["J3","L2(16).4","2^4:(3xA5).2","L2(17)x2","(3xM10):2","3^2.3^(1+2):8.2","2^(1+4).S5","2^(2+4):(S3xS3)","19:18"]); AGR.MXS("J4",["2^11:M24","2^(1+12)_+.3M22.2","2^10:L5(2)","2^(3+12).(S5xL3(2))","U3(11).2","M22.2","11+^(1+2):(5x2S4)","L2(32).5","L2(23).2","U3(3)","29:28","43:14","37:12"]); AGR.MXS("L2(109)",["109:54","D110","D108","A5","A5"]); AGR.MXS("L2(11)",["A5","A5","11:5","S3x2"]); AGR.MXS("L2(11).2",["L2(11)","11:10","D24","S4","D20"]); AGR.MXS("L2(113)",["113:56","D114","D112","S4","S4"]); AGR.MXS("L2(13)",["13:6","D14","S3x2","A4"]); AGR.MXS("L2(16).2",[,,,,"D6xD10"]); AGR.MXS("L2(17)",["17:8","S4","S4","D18","D16"]); AGR.MXS("L2(17).2",[,"17:16"]); AGR.MXS("L2(19)",["19:9","A5","A5","D20","D18"]); AGR.MXS("L2(19).2",[,"19:18"]); AGR.MXS("L2(23)",["23:11","S4","S4","D24","D22"]); AGR.MXS("L2(25)",["5^2:12","A5.2","A5.2","D26","D24"]); AGR.MXS("L2(27)",["3^3:13","D28","D26","A4"]); AGR.MXS("L2(29)",["29:14","A5","A5","D30","D28"]); AGR.MXS("L2(29).2",[,"29:28"]); AGR.MXS("L2(31)",["31:15","A5","A5","D32","D30","S4","S4"]); AGR.MXS("L3(11)",["11^2:(5x2L2(11).2)","11^2:(5x2L2(11).2)","L2(11).2","10^2:S3","133:3","L3(2)"]); AGR.MXS("L3(2)",["S4","S4","7:3"]); AGR.MXS("L3(3)",["3^2.2.S4","3^2.2.S4","13:3","S4"]); AGR.MXS("L3(4)",["2^4:A5","2^4:A5","A6","A6","A6","L3(2)","L3(2)","L3(2)","3^2:Q8"]); AGR.MXS("L3(4).D12",["L3(4).3.2_3","L3(4).6","L3(4).3.2_2","L3(4).2^2","2^(2+4):(S3xS3)","2x3^2.2.S4","S5xS3","S3x7:6"]); AGR.MXS("L3(5)",["5^2:4S5","5^2:4S5","A5.2","4^2:S3","31:3"]); AGR.MXS("L3(7)",["7^2:2.L2(7).2","7^2:2.L2(7).2","L3(2).2","L3(2).2","L3(2).2","(A4x3):2","3^2:Q8","19:3"]); AGR.MXS("L3(8)",["2^6:(7xL2(8))","2^6:(7xL2(8))","7^2:S3","73:3","L3(2)"]); AGR.MXS("L3(9)",["3^4:GL2(9)","3^4:GL2(9)","U3(3)","L3(3)","A6.2_2","8^2:S3","91:3"]); AGR.MXS("L4(3)",["3^3:L3(3)","3^3:L3(3)","U4(2).2","U4(2).2","3^4:2(A4xA4).2","(4xA6):2","A6.2_2","S4xS4"]); AGR.MXS("L5(2)",["2^4:A8","2^4:A8","2^6:(L3(2)xS3)","2^6:(L3(2)xS3)","31:5"]); AGR.MXS("L5(2).2",["L5(2)"]); AGR.MXS("L7(2).2",["L7(2)"]); AGR.MXS("Ly",["G2(5)","3.McL.2","5^3.L3(5)","2.A11","5^(1+4):4S6","3^5:(2xM11)","3^(2+4):2A5.D8","67:22","37:18"]); AGR.MXS("M",["2.B","2^(1+24).Co1","3.F3+.2","2^2.2E6(2).3.2",,,,,"S3xTh",,,,,,,"5^(1+6):2.J2.4",,,,,,,,"7^(1+4):(3x2.S7)",,,"(A7x(A5xA5):2^2):2",,,,,,,,,"13^(1+2):(3x4S4)",,,"11^2:(5x2.A5)",,,,"41:40"]); AGR.MXS("M11",["A6.2_3","L2(11)","3^2:Q8.2","A5.2","2.S4"]); AGR.MXS("M12",["M11","M11","A6.2^2","A6.2^2","L2(11)","3^2.2.S4","3^2.2.S4","2xS5","M8.S4","4^2:D12","A4xS3"]); AGR.MXS("M12.2",["M12","L2(11).2","L2(11).2","(2^2xA5):2","D8.(S4x2)","4^2:D12.2","3^(1+2):D8","S4xS3","A5.2"]); AGR.MXS("M22",["L3(4)","2^4:A6","A7","A7","2^4:S5","2^3:L3(2)","A6.2_3","L2(11)"]); AGR.MXS("M22.2",["M22","L3(4).2_2","2^4:S6","2^5:S5","2x2^3:L3(2)","A6.2^2","L2(11).2"]); AGR.MXS("M23",["M22","L3(4).2_2","2^4:A7","A8","M11","2^4:(3xA5).2","23:11"]); AGR.MXS("M24",["M23","M22.2","2^4:A8","M12.2","2^6:3.S6","L3(4).3.2_2","2^6:(L3(2)xS3)","L2(23)","L3(2)"]); AGR.MXS("McL",["U4(3)","M22","M22","U3(5)","3^(1+4):2S5","3^4:M10","L3(4).2_2","2.A8","2^4:A7","2^4:A7","M11","5^(1+2):3:8"]); AGR.MXS("McL.2",["McL","U4(3).2_3","U3(5).2","3^(1+4):4S5","3^4:(M10x2)","L3(4).2^2","Isoclinic(2.A8.2)","2xM11","5^(1+2):(24:2)","2^(2+4):(S3xS3)"]); AGR.MXS("O10+(2)",["S8(2)","2^8:O8+(2)","2^10:L5(2)"]); AGR.MXS("O10-(2)",["2^8:O8-(2)"]); AGR.MXS("O7(3)",["2.U4(3).2_2","3^5:U4(2):2","L4(3).2_2","G2(3)","G2(3)","3^(3+3):L3(3)","S6(2)","S6(2)","3^(1+6)_+:(2A4xA4).2","A9.2","A9.2","(2^2xU4(2)):2","2^6:A7","S6xS4","(A4x2(A4xA4).2).2"]); AGR.MXS("O8+(2)",["S6(2)","S6(2)","S6(2)","2^6:A8","2^6:A8","2^6:A8","A9","A9","A9","(3xU4(2)):2","(3xU4(2)):2","(3xU4(2)):2","2^(1+8)_+:(S3xS3xS3)","3^4:2^3.S4","(A5xA5):2^2","(A5xA5):2^2","(A5xA5):2^2"]); AGR.MXS("O8+(2).2",[,"2xS6(2)"]); AGR.MXS("O8+(3)",["O7(3)","O7(3)","O7(3)","O7(3)","O7(3)","O7(3)","3^6:L4(3)","3^6:L4(3)","3^6:L4(3)","O8+(2)","O8+(2)","O8+(2)","O8+(2)","3^(1+8)_+:2(A4xA4xA4).2","2.U4(3).(2^2)_(122)","2.U4(3).(2^2)_(122)","2.U4(3).(2^2)_(122)","(A4xU4(2)):2","(A4xU4(2)):2","(A4xU4(2)):2","(A4xU4(2)):2","(A4xU4(2)):2","(A4xU4(2)):2","(A6xA6):2^2","(A6xA6):2^2","(A6xA6):2^2","2((A4wr2^2):2)"]); AGR.MXS("O8-(2)",["2^6:U4(2)"]); AGR.MXS("O8-(3)",[,"O7(3).2","O7(3).2",,,,"S4xU4(2).2","S4xU4(2).2","L2(81).2_1"]); AGR.MXS("O8-(3).2_1",[,,"O7(3).2x2","O7(3).2x2",,,"D8xL4(3).2_2",,,"L2(81).4_1"]); AGR.MXS("ON",["L3(7).2","L3(7).2","J1","4_2.L3(4).2_1","(3^2:4xA6).2","3^4:2^(1+4)D10","L2(31)","L2(31)","4^3.L3(2)","M11","M11","A7","A7"]); AGR.MXS("ON.2",["ON","J1x2","4_2.L3(4).(2^2)_(12*3)","(3^2:4xA6).2^2","3^4:2^(1+4).(5:4)","4^3.(L3(2)x2)","7^(1+2)_+:(3xD16)","31:30","A6.2_2","L3(2).2"]); AGR.MXS("Ru",["2F4(2)'.2","(2^6:U3(3)):2","(2^2xSz(8)):3","2^3+8:L3(2)","U3(5).2","2.2^(4+6):S5","L2(25).2^2","A8","L2(29)","5^2:4S5","3.A6.2^2","5^1+2:(2^5)","L2(13).2","A6.2^2","5:4xA5"]); AGR.MXS("S4(4)",["2^6:(3xA5)","2^6:(3xA5)","L2(16).2","L2(16).2","(A5xA5):2","(A5xA5):2","A6.2_1"]); AGR.MXS("S4(4).2",["S4(4)","2^6:(3xA5):2","2^6:(3xA5):2","L2(16).4","L2(16).4","(A5xA5):2^2","(A5xA5):2^2","S6x2"]); AGR.MXS("S4(5)",["5^(1+2)+:4A5","5^3:(2xA5).2","L2(25).2_2","2.(A5xA5).2","2^4:A5","S5xS3","(2^2xA5):2","A6"]); AGR.MXS("S6(2)",["U4(2).2","A8.2","2^5:S6","U3(3).2","2^6:L3(2)","2.[2^6]:(S3xS3)","S3xS6","L2(8).3"]); AGR.MXS("S6(3)",["3^(1+4).2U4(2)","3^6:L3(3)","3^(3+4):2(S4xA4)","2.(A4xU4(2))","2^(2+6):3^3:S3","L2(27).3","2xU3(3).2","L3(3).2","L2(13)","L2(13)","A5"]); AGR.MXS("S6(3).2",["3^(1+4).2U4(2).2"]); AGR.MXS("S8(2)",["O8-(2).2","O8+(2).2","2^7:S6(2)","2^10.A8","2^(3+8):(S3xS6)","S3xS6(2)","2^(6+6):(S3xL3(2))","A10.2","S4(4).2","(S6xS6):2","L2(17)"]); AGR.MXS("Suz",["G2(4)","3_2.U4(3).2_3'","U5(2)","2^(1+6)_-.U4(2)","3^5:M11","J2.2","2^(4+6):3A6","(A4xL3(4)):2_1","2^(2+8):(A5xS3)","M12.2","3^(2+4):2(A4x2^2).2","(A6xA5).2","(3^2:4xA6).2","L3(3).2","L3(3).2","L2(25)","A7"]); AGR.MXS("Suz.2",["Suz","G2(4).2","3_2.U4(3).(2^2)_(133)","U5(2).2","2^(1+6)_-.U4(2).2","3^5:(M11x2)","J2.2x2","2^(4+6):3S6","(A4xL3(4):2_3):2","2^(2+8):(S5xS3)","M12.2x2","3^(2+4):2(S4xD8)","(A6:2_2xA5).2","(3^2:8xA6).2","L2(25).2_2","A7.2"]); AGR.MXS("Sz(32)",["2^(5+5):31","41:4","25:4","D62"]); AGR.MXS("Sz(8)",["2^(3+3):7","13:4","5:4","D14"]); AGR.MXS("Sz(8).3",["Sz(8)","2^(3+3):7:3","13:12","5:4x3","7:6"]); AGR.MXS("Th",["3D4(2).3","2^5.L5(2)","2^(1+8)_+.A9","U3(8).6","(3xG2(3)):2","[3^9].2S4","3^2.[3^7].2S4","3^5:2S6","5^(1+2):4S4","5^2:4S5","7^2:(3x2S4)","L2(19).2","L3(3)","A6.2_3","31:15","A5.2"]); AGR.MXS("U3(11)",["11^(1+2)+:40","2(L2(11)x2).2","L2(11).2","L2(11).2","L2(11).2","A6","A6","A6","(4^2x3):S3","37:3","3^2:Q8"]); AGR.MXS("U3(3).2",["U3(3)","3^(1+2):SD16","L3(2).2","2^(1+4).S3","4^2:D12"]); AGR.MXS("U3(4)",["2^(2+4):15","5xA5","5^2:S3","13:3"]); AGR.MXS("U3(4).2",["U3(4)","2^(2+4):(3xD10)","A5xD10","5^2:D12","13:6"]); AGR.MXS("U3(5)",["A7","A7","A7","5^(1+2)+:8","A6.2_3","A6.2_3","A6.2_3","2.A5.2"]); AGR.MXS("U3(5).2",["U3(5)","A7.2","5^(1+2):(8.2)","A6.2^2","2S5.2","L3(2).2"]); AGR.MXS("U3(5).3",["U3(5)","5^(1+2)+:24","3x2S5","3^2:2A4","6^2:S3","7:3x3"]); AGR.MXS("U3(7)",["7^(1+2):48","2(L2(7)x4).2","8^2:S3","L3(2).2","43:3"]); AGR.MXS("U3(8)",["2^(3+6):21","3xL2(8)","3^2:2A4","3^2:2A4","3^2:2A4","(9x3).S3","19:3"]); AGR.MXS("U3(9)",["3^(2+4):80","5xIsoclinic(2.A6.2_2)","A6.2_2","10^2:S3","73:3"]); AGR.MXS("U4(2)",["2^4:A5","A6.2_1","3^(1+2)+:2A4","3^3:S4","2.(A4xA4).2"]); AGR.MXS("U4(2).2",["U4(2)","2^5:S5","S6x2","3^(1+2)+:2S4","3^3:(S4x2)","W(F4)"]); AGR.MXS("U4(3)",["3^4:A6","U4(2)","U4(2)","L3(4)","L3(4)","3^(1+4)_+.2S4","U3(3)","2^4:A6","2^4:A6","A7","A7","A7","A7","2(A4xA4).2^2","A6.2_3","A6.2_3"]); AGR.MXS("U4(3).2_1",["U4(3)","3^4:(2xA6)","U4(2).2","U4(2).2","L3(4).2_2","L3(4).2_2","3^(1+4)+.4S4","2xU3(3)","2^4.S6","2^4.S6","4(A4xA4).4","A6.2^2","A6.2^2"]); AGR.MXS("U4(3).2_3",["U4(3)","3^4:M10","L3(4).2_3","L3(4).2_1","3^(1+4):4S4","U3(3).2","2(A4xA4).4.2","M10x2","A6.2^2","A6.2^2","(4^2x2)S4"]); AGR.MXS("U5(2)",["2^(1+6):3^(1+2):2A4","3xU4(2)","2^(4+4):(3xA5)","3^4:S5","S3x3^(1+2)+:2A4","L2(11)"]); AGR.MXS("U6(2)",["U5(2)","2^(1+8)_+:U4(2)","2^9.L3(4)","U4(3).2_2","U4(3).2_2","U4(3).2_2","2^(4+8):(S3xA5)","S6(2)","S6(2)","S6(2)","M22","M22","M22","S3xU4(2)","3^(1+4).2^(1+1+2+2).S3","L3(4).2_1"]); AGR.MXS("U6(2).2",[,"U5(2).2",,,,,,"M22.2"]); ############################################################################# ## ## Store information about generators of kernels. ## AGR.KERPRG("12.M22",[1,"M22",[[1,1,2,1],[3,1,3,1],[2,-1],[1,1,5,1],[4,1,6,1],[[7,5]]]]); AGR.KERPRG("12.M22.2",[1,"M22.2",[[1,1,2,1],[3,1,2,1],[1,-1,2,-1,1,1,2,1],[3,1,3,1],[4,1,4,1],[6,1,7,1],[[8,3],[5,4]]]]); AGR.KERPRG("12_1.L3(4)",[1,"L3(4)",[[1,1,2,1],[2,1,1,1],[1,1,4,1],[3,1,5,1],[2,2],[7,1,1,1],[2,-1],[9,1,3,1],[8,1,10,1],[6,1,11,1],[1,1,7,1],[3,1,13,1],[9,1,1,1],[1,1,15,1],[2,1,3,1],[16,1,17,1],[14,1,18,1],[12,1,19,1],[13,1,16,1],[17,1,13,1],[21,1,22,1],[1,1,9,1],[24,1,5,1],[4,1,7,1],[26,1,24,1],[25,1,27,1],[23,1,28,1],[[20,1,29,1]]]]); AGR.KERPRG("12_2.L3(4)",[1,"L3(4)",[[1,1,2,1],[2,1,1,1],[1,1,4,1],[3,1,5,1],[2,2],[7,1,1,1],[2,-1],[9,1,3,1],[8,1,10,1],[6,1,11,1],[1,1,7,1],[3,1,13,1],[9,1,1,1],[1,1,15,1],[2,1,3,1],[16,1,17,1],[14,1,18,1],[12,1,19,1],[13,1,16,1],[17,1,13,1],[21,1,22,1],[1,1,9,1],[24,1,5,1],[4,1,7,1],[26,1,24,1],[25,1,27,1],[23,1,28,1],[[20,1,29,1]]]]); AGR.KERPRG("2.A14.2",[1,"A14.2",[[2,1,1,1],[1,1,3,1],[3,2],[4,1,5,1],[1,1,2,1],[2,1,7,1],[7,2],[8,1,9,1],[6,1,10,1],[[11,2]]]]); AGR.KERPRG("2.A5",[1,"A5",[[[1,2]]]]); AGR.KERPRG("2.A5.2",[1,"A5.2",[[[2,4]]]]); AGR.KERPRG("2.A6",[1,"A6",[[[1,2]]]]); AGR.KERPRG("2.A6.2_1",[1,"A6.2_1",[[1,1,2,1],[[3,6]]]]); AGR.KERPRG("2.Fi22",[1,"Fi22",[[1,1,2,1],[3,1,2,1],[[4,21]]]]); AGR.KERPRG("2.Fi22.2",[1,"Fi22.2",[[1,-1,2,-1,1,1,2,1],[[3,3]]]]); AGR.KERPRG("2.HS",[1,"HS",[[1,1,2,1],[3,1,2,1],[[4,10]]]]); AGR.KERPRG("2.HS.2",[1,"HS.2",[[1,-1,2,-1,1,1,2,1],[[3,3]]]]); AGR.KERPRG("2.J2",[1,"J2",[[[1,2]]]]); AGR.KERPRG("2.L2(11)",[1,"L2(11)",[[[1,2]]]]); AGR.KERPRG("2.L3(2)",[1,"L3(2)",[[[1,2]]]]); AGR.KERPRG("2.L3(2).2",[1,"L3(2).2",[[[1,2]]]]); AGR.KERPRG("2.L3(4)",[1,"L3(4)",[[1,1,2,1],[2,1,1,1],[1,1,4,1],[3,1,5,1],[2,2],[7,1,1,1],[2,-1],[9,1,3,1],[8,1,10,1],[6,1,11,1],[1,1,7,1],[3,1,13,1],[9,1,1,1],[1,1,15,1],[2,1,3,1],[16,1,17,1],[14,1,18,1],[12,1,19,1],[13,1,16,1],[17,1,13,1],[21,1,22,1],[1,1,9,1],[24,1,5,1],[4,1,7,1],[26,1,24,1],[25,1,27,1],[23,1,28,1],[[20,1,29,1]]]]); AGR.KERPRG("2.M12",[1,"M12",[[[2,3]]]]); AGR.KERPRG("2.M12.2",[1,"M12.2",[[1,1,2,1],[[3,12]]]]); AGR.KERPRG("2.M22",[1,"M22",[[1,1,2,1],[3,1,3,1],[2,-1],[1,1,5,1],[4,1,6,1],[[7,5]]]]); AGR.KERPRG("2.M22.2",[1,"M22.2",[[1,1,2,1],[3,1,2,1],[3,1,3,1],[4,1,4,1],[5,1,6,1],[[7,3]]]]); AGR.KERPRG("2.S6(2)",[1,"S6(2)",[[[1,2]]]]); AGR.KERPRG("2.Sz(8)",[1,"Sz(8)",[[2,1,1,1],[1,1,3,1],[2,2],[5,1,1,1],[4,1,6,1],[2,-1],[1,1,2,1],[8,1,9,1],[6,1,10,1],[7,1,11,1],[1,1,5,1],[13,2],[8,1,1,1],[1,1,15,1],[3,1,5,1],[16,1,17,1],[14,1,18,1],[12,1,19,1],[13,1,16,1],[17,1,13,1],[21,1,22,1],[1,1,8,1],[13,1,24,1],[18,1,25,1],[23,1,26,1],[[20,1,27,1]]]]); AGR.KERPRG("2.U4(2)",[1,"U4(2)",[[1,-1],[2,-1],[3,1,4,1],[5,2],[1,1,2,1],[7,2],[6,1,8,1],[[9,2]]]]); AGR.KERPRG("2^2.Sz(8).3",[1,"Sz(8).3",[[1,-1],[3,1,2,1],[2,-1],[3,1,5,1],[4,1,6,1],[2,1,3,1],[3,1,8,1],[6,1,9,1],[7,1,10,1],[5,1,3,1],[12,2],[2,1,6,1],[8,1,14,1],[13,1,15,1],[11,1,16,1],[1,1,2,1],[1,1,5,1],[18,1,19,1],[2,1,1,1],[1,1,21,1],[19,1,22,1],[20,1,23,1],[5,1,1,1],[21,1,25,1],[2,1,19,1],[21,1,27,1],[26,1,28,1],[24,1,29,1],[17,1,30,1],[[1,1,2,1],3],[[2,1,1,1],4],[[1,1,4,1],5],[[3,1,5,1],6],[[2,1,3,1],7],[[7,1,5,1],8],[[6,1,8,1],9],[[2,-1],10],[[1,1,10,1],11],[[2,1,11,1],12],[[10,1,1,1],13],[[1,1,13,1],14],[[12,1,14,1],15],[[10,1,11,1],16],[[16,1,5,1],17],[[15,1,17,1],18],[[9,1,18,1],19],[[4,1,7,1],20],[[14,1,7,1],21],[[20,1,21,1],22],[[5,1,16,1],23],[[14,1,16,1],24],[[23,1,24,1],25],[[22,1,25,1],26],[[19,1,26,1],27],[[31,1],[27,1]]]]); AGR.KERPRG("3.A6",[1,"A6",[[1,1,2,1],[[3,5]]]]); AGR.KERPRG("3.A6.2_1",[1,"A6.2_1",[[1,1,2,1],[2,1,3,1],[1,-1,4,-1,1,1,4,1],[[5,2]]]]); AGR.KERPRG("3.Fi22",[1,"Fi22",[[1,1,2,1],[[3,11]]]]); AGR.KERPRG("3.Fi22.2",[1,"Fi22.2",[[1,1,2,1],[2,-1],[1,1,4,1],[5,1,4,1],[3,1,6,1],[7,1,4,1],[[8,8]]]]); AGR.KERPRG("3.G2(3)",[1,"G2(3)",[[1,1,2,1],[3,1,3,1],[3,3],[2,-1],[1,1,6,1],[5,1,7,1],[8,1,8,1],[9,1,4,1],[10,1,7,1],[11,1,7,1],[[12,2]]]]); AGR.KERPRG("3.J3",[1,"J3",[[1,1,2,1],[3,2],[2,1,1,1],[1,1,5,1],[3,1,6,1],[4,1,7,1],[2,1,3,1],[5,1,9,1],[10,1,7,1],[8,1,11,1],[5,2],[13,1,10,1],[7,1,10,1],[14,1,15,1],[[12,1,16,1]]]]); AGR.KERPRG("3.J3.2",[1,"J3.2",[[1,-1],[2,-1],[4,1,3,1],[3,1,5,1],[2,1,3,1],[7,2],[6,1,8,1],[3,1,4,1],[4,1,10,1],[10,2],[11,1,12,1],[9,1,13,1],[2,1,1,1],[1,1,15,1],[15,2],[16,1,17,1],[1,1,4,1],[2,1,19,1],[1,1,2,1],[19,1,21,1],[20,1,22,1],[18,1,23,1],[14,1,24,1],[[25,2]]]]); AGR.KERPRG("3.L3(4)",[1,"L3(4)",[[2,1,1,1],[1,1,3,1],[3,2],[4,1,5,1],[1,1,2,1],[2,1,7,1],[7,2],[8,1,9,1],[[6,1,10,1]]]]); AGR.KERPRG("3.M22",[1,"M22",[[1,1,2,1],[[3,11]]]]); AGR.KERPRG("3.M22.2",[1,"M22.2",[[1,-1,2,-1,1,1,2,1],[[3,4]]]]); AGR.KERPRG("3.McL",[1,"McL",[[1,1,2,1],[[3,11]]]]); AGR.KERPRG("3.McL.2",[1,"McL.2",[[1,1,2,1],[2,-1],[1,1,4,1],[3,1,5,1],[2,1,6,1],[7,1,1,1],[8,1,8,1],[9,1,2,1],[5,1,5,1],[10,1,11,1],[[1,-1,12,-1,1,1,12,1]]]]); AGR.KERPRG("3.U3(8)",[1,"U3(8)",[[1,1,2,1],[3,3],[2,-1],[1,1,5,1],[4,1,6,1],[7,3],[8,1,6,1],[9,1,3,1],[6,3],[10,1,11,1],[12,1,3,1],[13,1,6,1],[[14,1,6,1]]]]); AGR.KERPRG("4.M22",[1,"M22",[[1,1,2,1],[3,1,3,1],[2,-1],[1,1,5,1],[4,1,6,1],[[7,5]]]]); AGR.KERPRG("4.M22.2",[1,"M22.2",[[1,1,2,1],[3,1,2,1],[3,1,3,1],[4,1,4,1],[5,1,6,1],[[7,3]]]]); AGR.KERPRG("4_1.L3(4)",[1,"L3(4)",[[1,1,2,1],[2,1,1,1],[1,1,4,1],[3,1,5,1],[2,2],[7,1,1,1],[2,-1],[9,1,3,1],[8,1,10,1],[6,1,11,1],[1,1,7,1],[3,1,13,1],[9,1,1,1],[1,1,15,1],[2,1,3,1],[16,1,17,1],[14,1,18,1],[12,1,19,1],[13,1,16,1],[17,1,13,1],[21,1,22,1],[1,1,9,1],[24,1,5,1],[4,1,7,1],[26,1,24,1],[25,1,27,1],[23,1,28,1],[[20,1,29,1]]]]); AGR.KERPRG("4_2.L3(4)",[1,"L3(4)",[[1,1,2,1],[2,1,1,1],[1,1,4,1],[3,1,5,1],[2,2],[7,1,1,1],[2,-1],[9,1,3,1],[8,1,10,1],[6,1,11,1],[1,1,7,1],[3,1,13,1],[9,1,1,1],[1,1,15,1],[2,1,3,1],[16,1,17,1],[14,1,18,1],[12,1,19,1],[13,1,16,1],[17,1,13,1],[21,1,22,1],[1,1,9,1],[24,1,5,1],[4,1,7,1],[26,1,24,1],[25,1,27,1],[23,1,28,1],[[20,1,29,1]]]]); AGR.KERPRG("6.A6",[1,"A6",[[1,1,2,1],[[3,5],[1,2]]]]); AGR.KERPRG("6.A6.2_1",[1,"A6.2_1",[[1,1,2,1],[2,1,3,1],[1,-1,4,-1,1,1,4,1],[[5,2]]]]); AGR.KERPRG("6.Fi22",[1,"2.Fi22",[[1,1,2,1],[2,1,1,1],[1,1,4,1],[3,1,5,1],[2,1,3,1],[7,1,5,1],[6,1,8,1],[4,1,7,1],[5,1,7,1],[10,1,11,1],[[9,1,12,1]]]]); AGR.KERPRG("6.Fi22",[1,"Fi22",[[1,1,2,1],[3,1,2,1],[[3,11],[4,21]]]]); AGR.KERPRG("6.Fi22.2",[1,"3.Fi22.2",[[1,-1],[2,-1],[4,1,1,1],[3,1,5,1],[3,1,4,1],[2,1,7,1],[6,1,8,1],[2,1,3,1],[1,1,10,1],[1,1,2,1],[4,1,12,1],[11,1,13,1],[[9,1,14,1]]]]); AGR.KERPRG("6.Fi22.2",[1,"Fi22.2",[[1,1,2,1],[1,-1,2,-1,1,1,2,1],[2,-1],[1,1,5,1],[6,1,5,1],[3,1,7,1],[8,1,5,1],[[9,8],[4,3]]]]); AGR.KERPRG("6.L3(4)",[1,"L3(4)",[[1,1,2,1],[2,1,1,1],[1,1,4,1],[3,1,5,1],[2,2],[7,1,1,1],[2,-1],[9,1,3,1],[8,1,10,1],[6,1,11,1],[1,1,7,1],[3,1,13,1],[9,1,1,1],[1,1,15,1],[2,1,3,1],[16,1,17,1],[14,1,18,1],[12,1,19,1],[13,1,16,1],[17,1,13,1],[21,1,22,1],[1,1,9,1],[24,1,5,1],[4,1,7,1],[26,1,24,1],[25,1,27,1],[23,1,28,1],[[20,1,29,1]]]]); AGR.KERPRG("6.M22",[1,"M22",[[1,1,2,1],[3,1,3,1],[2,-1],[1,1,5,1],[4,1,6,1],[[7,5]]]]); AGR.KERPRG("6.M22.2",[1,"M22.2",[[1,1,2,1],[3,1,2,1],[1,-1,2,-1,1,1,2,1],[3,1,3,1],[4,1,4,1],[6,1,7,1],[[5,4],[8,3]]]]); AGR.KERPRG("Isoclinic(2.A14.2)",[1,"A14.2",[[[1,2]]]]); AGR.KERPRG("Isoclinic(2.A5.2)",[1,"A5.2",[[[1,2]]]]); AGR.KERPRG("Isoclinic(2.L3(2).2)",[1,"L3(2).2",[[1,1,2,1],[[3,8]]]]); AGR.KERPRG("Isoclinic(2.M12.2)",[1,"M12.2",[[[1,2]]]]); ############################################################################# ## ## In the following, the table of contents is built ## using `AGR.GRP' and `AGR.TOC'. ## This part of the file is created by the function ## `StringOfAtlasTableOfContents', ## do not edit below this line! ## # 2A10 AGR.GRP("alt","A10","2A10"); AGR.TOC("matff","2A10G1-f3r16B0.m",[133558569,7751303]); AGR.TOC("matff","2A10G1-f5r8B0.m",[-66877760,-10441825]); AGR.TOC("matff","2A10G1-f5r56B0.m",[106114504,-34223356]); AGR.TOC("matff","2A10G1-f7r16B0.m",[-17220168,-70753499]); # A10 AGR.GRP("alt","A10","A10"); AGR.TOC("perm","A10G1-p10B0.m",[-71915152,-73743375]); AGR.TOC("perm","A10G1-p45B0.m",[-93592591,-129651627]); AGR.TOC("perm","A10G1-p120B0.m",[-50460702,13210237]); AGR.TOC("perm","A10G1-p126B0.m",[106657390,2967288]); AGR.TOC("perm","A10G1-p210B0.m",[-16598970,-21414041]); AGR.TOC("perm","A10G1-p945B0.m",[-111054132,-8787620]); AGR.TOC("perm","A10G1-p2520B0.m",[-5920330,-5194892]); AGR.TOC("matff","A10G1-f2r8B0.m",[-61586491,-36854292]); AGR.TOC("matff","A10G1-f2r16B0.m",[120160813,-8096924]); AGR.TOC("matff","A10G1-f2r26B0.m",[-127808259,51214305]); AGR.TOC("matff","A10G1-f2r48B0.m",[-40159069,69033293]); AGR.TOC("matff","A10G1-f2r64aB0.m",[102693129,-74620347]); AGR.TOC("matff","A10G1-f2r64bB0.m",[-41003654,-56409287]); AGR.TOC("matff","A10G1-f2r160B0.m",[-108474931,53236873]); AGR.TOC("matff","A10G1-f2r198B0.m",[-105966471,-118468514]); AGR.TOC("matff","A10G1-f2r200B0.m",[-8656884,-35106257]); AGR.TOC("matff","A10G1-f3r9B0.m",[53453595,12047353]); AGR.TOC("matff","A10G1-f3r34B0.m",[116362581,125729281]); AGR.TOC("matff","A10G1-f3r36B0.m",[106455816,-64542057]); AGR.TOC("matff","A10G1-f3r41B0.m",[14653233,-29570979]); AGR.TOC("matff","A10G1-f3r84B0.m",[94415076,14658731]); AGR.TOC("matff","A10G1-f3r90B0.m",[78489388,-59686310]); AGR.TOC("matff","A10G1-f3r126B0.m",[-78356361,-85812365]); AGR.TOC("matff","A10G1-f3r224B0.m",[1648760,856544]); AGR.TOC("matff","A10G1-f3r279B0.m",[-116520136,28162794]); AGR.TOC("matff","A10G1-f3r567B0.m",[91011213,-74458450]); AGR.TOC("matff","A10G1-f4r384aB0.m",[-123207845,39275593]); AGR.TOC("matff","A10G1-f5r8B0.m",[27026655,56661990]); AGR.TOC("matff","A10G1-f5r28B0.m",[-90587278,80332445]); AGR.TOC("matff","A10G1-f5r34B0.m",[98789892,-75428680]); AGR.TOC("matff","A10G1-f5r35aB0.m",[-119474236,-52956779]); AGR.TOC("matff","A10G1-f5r35bB0.m",[-53484651,-10489273]); AGR.TOC("matff","A10G1-f5r35cB0.m",[11802060,-95818840]); AGR.TOC("matff","A10G1-f5r55B0.m",[82888492,-102206841]); AGR.TOC("matff","A10G1-f5r56B0.m",[114319833,-105781281]); AGR.TOC("matff","A10G1-f5r75B0.m",[81229174,-32299609]); AGR.TOC("matff","A10G1-f5r133aB0.m",[-70040930,-96735440]); AGR.TOC("matff","A10G1-f5r133bB0.m",[51493024,-129195790]); AGR.TOC("matff","A10G1-f5r155B0.m",[92717858,102394010]); AGR.TOC("matff","A10G1-f5r160B0.m",[49454731,-48474287]); AGR.TOC("matff","A10G1-f5r217B0.m",[-56235224,15247604]); AGR.TOC("matff","A10G1-f5r225B0.m",[-8190879,-97782454]); AGR.TOC("matff","A10G1-f5r300B0.m",[52787442,-91676435]); AGR.TOC("matff","A10G1-f5r350B0.m",[46749588,-77482077]); AGR.TOC("matff","A10G1-f5r450B0.m",[-117440006,132712395]); AGR.TOC("matff","A10G1-f5r525B0.m",[75956453,29937350]); AGR.TOC("matff","A10G1-f7r9B0.m",[65794752,-108123775]); AGR.TOC("matff","A10G1-f7r35B0.m",[68087422,-120300608]); AGR.TOC("matff","A10G1-f7r36B0.m",[-110628719,-116256108]); AGR.TOC("matff","A10G1-f7r66B0.m",[18002903,71997331]); AGR.TOC("matff","A10G1-f7r84B0.m",[6021581,68325023]); AGR.TOC("matff","A10G1-f7r89B0.m",[112847925,110296210]); AGR.TOC("matff","A10G1-f7r124B0.m",[100318150,-86258861]); AGR.TOC("matff","A10G1-f7r126B0.m",[6788301,77348841]); AGR.TOC("matff","A10G1-f7r315B0.m",[103282695,-131481983]); AGR.TOC("matint","A10G1-Zr9B0.g",[-98891693]); AGR.TOC("matint","A10G1-Zr35B0.g",[-32813966]); AGR.TOC("matint","A10G1-Zr36B0.g",[-96721693]); AGR.TOC("matint","A10G1-Zr42B0.g",[-42808704]); AGR.TOC("matint","A10G1-Zr75B0.g",[-39718615]); AGR.TOC("matint","A10G1-Zr84B0.g",[-72574348]); AGR.TOC("matint","A10G1-Zr90B0.g",[92280715]); AGR.TOC("matint","A10G1-Zr126B0.g",[-95054011]); AGR.TOC("matint","A10G1-Zr160B0.g",[130677506]); AGR.TOC("matint","A10G1-Zr210B0.g",[-50324182]); AGR.TOC("matint","A10G1-Zr224aB0.g",[14449435]); AGR.TOC("matint","A10G1-Zr224bB0.g",[9722007]); AGR.TOC("matint","A10G1-Zr225B0.g",[92776450]); AGR.TOC("check","A10G1-check1",[-65939754]); # S10 AGR.GRP("alt","A10","S10"); AGR.TOC("perm","S10G1-p10B0.m",[102663828,111534310]); # 2A11 AGR.GRP("alt","A11","2A11"); AGR.TOC("perm","2A11G1-p5040B0.m",[10338093,35097820]); AGR.TOC("matff","2A11G1-f3r16aB0.m",[123701682,33852482]); AGR.TOC("matff","2A11G1-f3r16bB0.m",[123701682,59228723]); AGR.TOC("matff","2A11G1-f3r144B0.m",[-116903691,64591009]); AGR.TOC("matff","2A11G1-f5r16aB0.m",[-32608610,80948254]); AGR.TOC("matff","2A11G1-f5r16bB0.m",[-32608610,-113956471]); AGR.TOC("matff","2A11G1-f5r56aB0.m",[-4539481,-34223356]); AGR.TOC("matff","2A11G1-f5r56bB0.m",[-118415370,-34223356]); AGR.TOC("matff","2A11G1-f7r32B0.m",[46215404,-49071614]); AGR.TOC("matff","2A11G1-f7r144B0.m",[30881969,-49107182]); AGR.TOC("matff","2A11G1-f11r16B0.m",[58396455,-65921882]); AGR.TOC("matff","2A11G1-f11r128B0.m",[114324617,-72745045]); AGR.TOC("matff","2A11G1-f49r16aB0.m",[11117236,19201506]); AGR.TOC("matff","2A11G1-f49r16bB0.m",[11117236,-96707409]); # 2S11 AGR.GRP("alt","A11","2S11"); AGR.TOC("matff","2S11G1-f3r32B0.m",[-49041992,-17616148]); AGR.TOC("matff","2S11G1-f5r32B0.m",[121729623,-29237387]); AGR.TOC("matff","2S11G1-f7r32B0.m",[52776906,-56309454]); AGR.TOC("matff","2S11G1-f11r16B0.m",[43570399,99053214]); # A11 AGR.GRP("alt","A11","A11"); AGR.TOC("perm","A11G1-p11B0.m",[-122422017,-50694995]); AGR.TOC("perm","A11G1-p55B0.m",[-57050664,-129624707]); AGR.TOC("perm","A11G1-p165B0.m",[-18343151,-94008167]); AGR.TOC("perm","A11G1-p330B0.m",[91822824,134140254]); AGR.TOC("perm","A11G1-p462B0.m",[-56401454,11231997]); AGR.TOC("perm","A11G1-p2520aB0.m",[105442601,37888423]); AGR.TOC("perm","A11G1-p2520bB0.m",[72615956,-84822869]); AGR.TOC("matff","A11G1-f2r10B0.m",[48163131,5174220]); AGR.TOC("matff","A11G1-f2r32B0.m",[117207733,-97550131]); AGR.TOC("matff","A11G1-f2r44B0.m",[-46914518,-72072210]); AGR.TOC("matff","A11G1-f2r100B0.m",[-128987094,-105207191]); AGR.TOC("matff","A11G1-f2r144B0.m",[-2485893,114401636]); AGR.TOC("matff","A11G1-f2r164B0.m",[-79537173,-81254819]); AGR.TOC("matff","A11G1-f2r186B0.m",[-52751286,111580947]); AGR.TOC("matff","A11G1-f2r198B0.m",[-2524017,-12277084]); AGR.TOC("matff","A11G1-f2r416B0.m",[-15467113,-22612587]); AGR.TOC("matff","A11G1-f2r848B0.m",[55633855,-13433644]); AGR.TOC("matff","A11G1-f3r10B0.m",[34106404,11555461]); AGR.TOC("matff","A11G1-f3r34B0.m",[61022628,95804131]); AGR.TOC("matff","A11G1-f3r45B0.m",[-130379009,62508909]); AGR.TOC("matff","A11G1-f3r109B0.m",[-41552477,63109273]); AGR.TOC("matff","A11G1-f3r120B0.m",[-9761398,-30517684]); AGR.TOC("matff","A11G1-f3r126aB0.m",[35299060,-55406114]); AGR.TOC("matff","A11G1-f3r126bB0.m",[78437011,-77493126]); AGR.TOC("matff","A11G1-f3r131B0.m",[84327974,84262247]); AGR.TOC("matff","A11G1-f4r16aB0.m",[18792134,-62212692]); AGR.TOC("matff","A11G1-f4r16bB0.m",[18792134,46533207]); AGR.TOC("matff","A11G1-f4r584aB0.m",[8633406,11959365]); AGR.TOC("matff","A11G1-f5r10B0.m",[-94207968,42329417]); AGR.TOC("matff","A11G1-f5r43B0.m",[34567817,73351777]); AGR.TOC("matff","A11G1-f5r45B0.m",[73321059,-120290804]); AGR.TOC("matff","A11G1-f5r55B0.m",[28166287,41124467]); AGR.TOC("matff","A11G1-f5r89B0.m",[86657222,-77993041]); AGR.TOC("matff","A11G1-f5r110B0.m",[-70012073,89366508]); AGR.TOC("matff","A11G1-f5r120B0.m",[-76119583,126633378]); AGR.TOC("matff","A11G1-f7r10B0.m",[39992086,112310009]); AGR.TOC("matff","A11G1-f7r44B0.m",[36269917,-84016762]); AGR.TOC("matff","A11G1-f7r45B0.m",[66954439,-20316453]); AGR.TOC("matff","A11G1-f7r66B0.m",[-108604335,-125185286]); AGR.TOC("matff","A11G1-f11r9B0.m",[112234857,49850484]); AGR.TOC("matff","A11G1-f11r36B0.m",[-20142313,14189331]); AGR.TOC("matff","A11G1-f11r44B0.m",[52850788,29978961]); AGR.TOC("matff","A11G1-f11r84B0.m",[36508214,39409034]); AGR.TOC("matint","A11G1-Zr10B0.g",[23979533]); AGR.TOC("matint","A11G1-Zr44B0.g",[-14246691]); AGR.TOC("matint","A11G1-Zr45B0.g",[29857511]); AGR.TOC("matint","A11G1-Zr110B0.g",[-52829325]); AGR.TOC("matint","A11G1-Zr120B0.g",[-23105539]); AGR.TOC("matint","A11G1-Zr132B0.g",[-67485169]); AGR.TOC("matint","A11G1-Zr165B0.g",[23994767]); AGR.TOC("matint","A11G1-Zr210B0.g",[-7633503]); AGR.TOC("matint","A11G1-Zr231B0.g",[128797722]); AGR.TOC("matint","A11G1-Zr252B0.g",[28693334]); AGR.TOC("check","A11G1-check1",[-31402064]); # S11 AGR.GRP("alt","A11","S11"); AGR.TOC("perm","S11G1-p11B0.m",[-62830795,90530455]); AGR.TOC("matff","S11G1-f2r32B0.m",[36065907,-112645797]); # 2A12 AGR.GRP("alt","A12","2A12"); AGR.TOC("matff","2A12G1-f3r16aB0.m",[-64225267,-54027246]); AGR.TOC("matff","2A12G1-f3r16bB0.m",[-86938792,-126991049]); AGR.TOC("matff","2A12G1-f5r32B0.m",[-61034870,62977689]); AGR.TOC("matff","2A12G1-f7r32B0.m",[-103270775,5956786]); AGR.TOC("matff","2A12G1-f11r32B0.m",[-109039991,95544775]); # A12 AGR.GRP("alt","A12","A12"); AGR.TOC("perm","A12G1-p12B0.m",[-123345274,-118831963]); AGR.TOC("perm","A12G1-p66B0.m",[-25246166,-18460354]); AGR.TOC("perm","A12G1-p220B0.m",[-102069043,-40443727]); AGR.TOC("perm","A12G1-p462B0.m",[-22764326,-42034140]); AGR.TOC("perm","A12G1-p495B0.m",[-90795333,9383447]); AGR.TOC("perm","A12G1-p792B0.m",[-26141474,90886507]); AGR.TOC("perm","A12G1-p2520B0.m",[48232624,-111485628]); AGR.TOC("matff","A12G1-f2r10B0.m",[-81984500,14420913]); AGR.TOC("matff","A12G1-f2r44B0.m",[32152614,60375361]); AGR.TOC("matff","A12G1-f2r100B0.m",[9829805,64944733]); AGR.TOC("matff","A12G1-f3r10B0.m",[16812218,79853924]); AGR.TOC("matff","A12G1-f3r45B0.m",[-45141217,110111869]); AGR.TOC("matff","A12G1-f3r54B0.m",[-84738990,37226419]); AGR.TOC("matff","A12G1-f4r16aB0.m",[76799659,-45499329]); AGR.TOC("matff","A12G1-f4r16bB0.m",[119703462,-105516986]); AGR.TOC("matff","A12G1-f5r11B0.m",[-67336691,-27340083]); AGR.TOC("matff","A12G1-f5r43B0.m",[-20910589,119812772]); AGR.TOC("matff","A12G1-f5r55B0.m",[-99652203,73739525]); AGR.TOC("matff","A12G1-f5r89B0.m",[-53617829,85057506]); AGR.TOC("matint","A12G1-Zr11B0.g",[125437313]); AGR.TOC("matint","A12G1-Zr54B0.g",[103173145]); AGR.TOC("matint","A12G1-Zr55B0.g",[12195196]); AGR.TOC("matint","A12G1-Zr132B0.g",[-36047765]); AGR.TOC("matint","A12G1-Zr154B0.g",[-52095196]); AGR.TOC("matint","A12G1-Zr165B0.g",[-131843682]); AGR.TOC("check","A12G1-check1",[-99479890]); # S12 AGR.GRP("alt","A12","S12"); AGR.TOC("perm","S12G1-p12B0.m",[-42350936,107123575]); AGR.TOC("perm","S12G1-p66B0.m",[40785526,93619813]); AGR.TOC("perm","S12G1-p220B0.m",[57884109,89270239]); AGR.TOC("perm","S12G1-p462B0.m",[-63147022,118662304]); AGR.TOC("perm","S12G1-p495B0.m",[-6958359,-14984501]); AGR.TOC("perm","S12G1-p792B0.m",[-24933435,65045476]); AGR.TOC("perm","S12G1-p5040B0.m",[54692524,99626862]); AGR.TOC("perm","S12G1-p5775B0.m",[-124106606,125652062]); AGR.TOC("perm","S12G1-p10395B0.m",[-51610573,116378558]); AGR.TOC("perm","S12G1-p15400B0.m",[-27006440,-21026234]); # 2A13 AGR.GRP("alt","A13","2A13"); AGR.TOC("matff","2A13G1-f3r32aB0.m",[-48438656,-25967573]); AGR.TOC("matff","2A13G1-f3r32bB0.m",[-72547795,-25967573]); AGR.TOC("matff","2A13G1-f5r64B0.m",[106073587,32410936]); AGR.TOC("matff","2A13G1-f7r64B0.m",[-25551508,44236352]); AGR.TOC("matff","2A13G1-f11r64B0.m",[-117015385,78148566]); AGR.TOC("matff","2A13G1-f13r32B0.m",[-58209584,-114347263]); AGR.TOC("matff","2A13G1-f25r32aB0.m",[33870497,-25996768]); AGR.TOC("matff","2A13G1-f25r32bB0.m",[-40107349,28570305]); AGR.TOC("matff","2A13G1-f49r32aB0.m",[76294439,-63889848]); AGR.TOC("matff","2A13G1-f49r32bB0.m",[35826406,-15518357]); AGR.TOC("matff","2A13G1-f121r32aB0.m",[50881057,-130550372]); AGR.TOC("matff","2A13G1-f121r32bB0.m",[50881057,-63982107]); # A13 AGR.GRP("alt","A13","A13"); AGR.TOC("perm","A13G1-p13B0.m",[-97296261,-13656475]); AGR.TOC("perm","A13G1-p78B0.m",[-25415461,119064830]); AGR.TOC("matff","A13G1-f2r64B0.m",[-47634882,-104269804]); AGR.TOC("matff","A13G1-f4r32aB0.m",[36325004,73236876]); AGR.TOC("matff","A13G1-f4r32bB0.m",[90761494,82555595]); AGR.TOC("matint","A13G1-Zr12B0.g",[120728346]); AGR.TOC("matint","A13G1-Zr65B0.g",[2800773]); AGR.TOC("matint","A13G1-Zr66B0.g",[28881576]); AGR.TOC("matint","A13G1-Zr208B0.g",[-107534939]); AGR.TOC("matint","A13G1-Zr220B0.g",[-88134109]); AGR.TOC("check","A13G1-check1",[-17573913]); # S13 AGR.GRP("alt","A13","S13"); AGR.TOC("perm","S13G1-p13B0.m",[-80071545,-100550140]); AGR.TOC("perm","S13G1-p78B0.m",[53059074,122538641]); # 2A14 AGR.GRP("alt","A14","2A14"); AGR.TOC("matff","2A14G1-f3r64B0.m",[-16434801,4266919]); AGR.TOC("matff","2A14G1-f5r64B0.m",[55006074,-121179705]); AGR.TOC("matff","2A14G1-f7r64B0.m",[35153212,-38253902]); AGR.TOC("matff","2A14G1-f11r64B0.m",[-131121960,126664026]); AGR.TOC("matff","2A14G1-f13r64B0.m",[53258278,-9137520]); AGR.TOC("matff","2A14G1-f49r32aB0.m",[125306939,129831096]); AGR.TOC("matff","2A14G1-f49r32bB0.m",[87690389,-48370874]); AGR.TOC("pres","2A14G1-P1",[-109066728]); # 2S14 AGR.GRP("alt","A14","2S14"); AGR.TOC("matff","2S14G1-f7r64B0.m",[-112425554,-57571696]); AGR.TOC("pres","2S14G1-P1",[-94902193]); # 2S14i AGR.GRP("alt","A14","2S14i"); AGR.TOC("matff","2S14iG1-f7r64B0.m",[-57982903,108923491]); AGR.TOC("pres","2S14iG1-P1",[-41871223]); # A14 AGR.GRP("alt","A14","A14"); AGR.TOC("perm","A14G1-p14B0.m",[-129399038,14924943]); AGR.TOC("perm","A14G1-p91B0.m",[-26777249,-82433735]); AGR.TOC("perm","A14G1-p364B0.m",[-114206197,47209148]); AGR.TOC("perm","A14G1-p1001B0.m",[-25420623,-45498004]); AGR.TOC("perm","A14G1-p1716B0.m",[90522554,-15099649]); AGR.TOC("perm","A14G1-p2002B0.m",[-88811657,80740978]); AGR.TOC("perm","A14G1-p3003B0.m",[-17346905,64146685]); AGR.TOC("matff","A14G1-f2r12B0.m",[90619692,-106206654]); AGR.TOC("matff","A14G1-f2r64aB0.m",[-108438381,132295344]); AGR.TOC("matff","A14G1-f2r64bB0.m",[-4604054,-42310637]); AGR.TOC("matff","A14G1-f3r13B0.m",[-62501190,-113003570]); AGR.TOC("matff","A14G1-f3r64B0.m",[-129854222,-101838416]); AGR.TOC("matff","A14G1-f3r78B0.m",[106153952,59090292]); AGR.TOC("matff","A14G1-f5r13B0.m",[-9447070,-22406909]); AGR.TOC("matff","A14G1-f5r77B0.m",[-52183881,86223200]); AGR.TOC("matff","A14G1-f5r78B0.m",[96776073,-98672972]); AGR.TOC("matff","A14G1-f7r12B0.m",[8322888,20382436]); AGR.TOC("matff","A14G1-f7r66B0.m",[-29578574,127399051]); AGR.TOC("matff","A14G1-f7r77B0.m",[-123136507,109828362]); AGR.TOC("matff","A14G1-f11r13B0.m",[-40579482,7070752]); AGR.TOC("matff","A14G1-f11r77B0.m",[66192550,-81887409]); AGR.TOC("matff","A14G1-f11r78B0.m",[-8359030,-83684564]); AGR.TOC("matff","A14G1-f13r13B0.m",[85339373,-51256802]); AGR.TOC("matff","A14G1-f13r76B0.m",[-50909455,-106745514]); AGR.TOC("matff","A14G1-f13r78B0.m",[-4870702,69045892]); AGR.TOC("matint","A14G1-Zr13B0.g",[-70843676]); AGR.TOC("matint","A14G1-Zr77B0.g",[-2326548]); AGR.TOC("matint","A14G1-Zr78B0.g",[89991440]); AGR.TOC("check","A14G1-check1",[-67998098]); AGR.TOC("pres","A14G1-P1",[86181627]); # S14 AGR.GRP("alt","A14","S14"); AGR.TOC("perm","S14G1-p14B0.m",[-2670655,14924943]); AGR.TOC("perm","S14G1-p91B0.m",[133786030,110984109]); AGR.TOC("perm","S14G1-p364B0.m",[-130142219,-94014842]); AGR.TOC("perm","S14G1-p1001B0.m",[-120548559,116913207]); AGR.TOC("perm","S14G1-p1716B0.m",[14478156,-103414251]); AGR.TOC("perm","S14G1-p2002B0.m",[-121582665,25702096]); AGR.TOC("perm","S14G1-p3003B0.m",[-72022249,4619522]); AGR.TOC("matff","S14G1-f2r12B0.m",[-40558018,-8180169]); AGR.TOC("matff","S14G1-f2r64aB0.m",[54153929,83763681]); AGR.TOC("matff","S14G1-f2r64bB0.m",[-117643475,-15897979]); AGR.TOC("matff","S14G1-f7r12B0.m",[-30708602,1214955]); AGR.TOC("pres","S14G1-P1",[14473659]); # A15 AGR.GRP("alt","A15","A15"); AGR.TOC("perm","A15G1-p15B0.m",[-71373987,-72340264]); AGR.TOC("perm","A15G1-p105B0.m",[13694315,27801421]); AGR.TOC("perm","A15G1-p455B0.m",[-133728447,14431303]); AGR.TOC("perm","A15G1-p1365B0.m",[19949471,-88212599]); AGR.TOC("matint","A15G1-Zr14B0.g",[134144892]); AGR.TOC("matint","A15G1-Zr90B0.g",[123203884]); AGR.TOC("matint","A15G1-Zr91B0.g",[-108993267]); AGR.TOC("matint","A15G1-Zr350B0.g",[-119131883]); AGR.TOC("matint","A15G1-Zr364B0.g",[60710542]); AGR.TOC("check","A15G1-check1",[24354086]); # S15 AGR.GRP("alt","A15","S15"); AGR.TOC("perm","S15G1-p15B0.m",[72860604,90003980]); AGR.TOC("perm","S15G1-p105B0.m",[-124686931,27357604]); AGR.TOC("perm","S15G1-p455B0.m",[54418637,-21074702]); AGR.TOC("perm","S15G1-p1365B0.m",[-32162156,93524484]); AGR.TOC("matint","S15G1-Zr14B0.g",[112766668]); AGR.TOC("matint","S15G1-Zr90B0.g",[128405560]); AGR.TOC("matint","S15G1-Zr91B0.g",[20728690]); AGR.TOC("matint","S15G1-Zr350B0.g",[72073042]); AGR.TOC("matint","S15G1-Zr364B0.g",[112379418]); # A16 AGR.GRP("alt","A16","A16"); AGR.TOC("perm","A16G1-p16B0.m",[122952804,-376850]); AGR.TOC("perm","A16G1-p120B0.m",[-90432449,36585236]); AGR.TOC("perm","A16G1-p560B0.m",[31215885,-80762672]); AGR.TOC("perm","A16G1-p1820B0.m",[35966948,-38081813]); AGR.TOC("matint","A16G1-Zr15B0.g",[115743485]); AGR.TOC("matint","A16G1-Zr104B0.g",[-131498831]); AGR.TOC("matint","A16G1-Zr105B0.g",[71513223]); AGR.TOC("matint","A16G1-Zr440B0.g",[-8453117]); AGR.TOC("matint","A16G1-Zr455B0.g",[55220984]); AGR.TOC("check","A16G1-check1",[-36113085]); # S16 AGR.GRP("alt","A16","S16"); AGR.TOC("perm","S16G1-p16B0.m",[-9052479,-376850]); AGR.TOC("perm","S16G1-p120B0.m",[102407611,36585236]); AGR.TOC("perm","S16G1-p560B0.m",[-63521346,-80762672]); AGR.TOC("perm","S16G1-p1820B0.m",[131083269,-38081813]); AGR.TOC("matint","S16G1-Zr15B0.g",[-13874193]); AGR.TOC("matint","S16G1-Zr104B0.g",[24464107]); AGR.TOC("matint","S16G1-Zr105B0.g",[39264249]); AGR.TOC("matint","S16G1-Zr440B0.g",[78269769]); AGR.TOC("matint","S16G1-Zr455B0.g",[-15698641]); # A17 AGR.GRP("alt","A17","A17"); AGR.TOC("perm","A17G1-p17B0.m",[55351626,60559978]); AGR.TOC("perm","A17G1-p136B0.m",[69276995,-78469100]); AGR.TOC("perm","A17G1-p680B0.m",[-59984195,4367016]); AGR.TOC("perm","A17G1-p2380B0.m",[-80483879,1460987]); AGR.TOC("matint","A17G1-Zr16B0.g",[-93582348]); AGR.TOC("matint","A17G1-Zr119B0.g",[69974062]); AGR.TOC("matint","A17G1-Zr120B0.g",[-78478323]); AGR.TOC("matint","A17G1-Zr544B0.g",[6475277]); AGR.TOC("matint","A17G1-Zr560B0.g",[99141318]); AGR.TOC("check","A17G1-check1",[70828487]); # S17 AGR.GRP("alt","A17","S17"); AGR.TOC("perm","S17G1-p17B0.m",[28856792,45464758]); AGR.TOC("perm","S17G1-p136B0.m",[131391594,583899]); AGR.TOC("perm","S17G1-p680B0.m",[-127764983,101324677]); AGR.TOC("perm","S17G1-p2380B0.m",[-91386534,105407015]); AGR.TOC("matint","S17G1-Zr16B0.g",[-73625956]); AGR.TOC("matint","S17G1-Zr119B0.g",[106578774]); AGR.TOC("matint","S17G1-Zr120B0.g",[-124042535]); AGR.TOC("matint","S17G1-Zr544B0.g",[68206623]); AGR.TOC("matint","S17G1-Zr560B0.g",[53861249]); # A18 AGR.GRP("alt","A18","A18"); AGR.TOC("perm","A18G1-p18B0.m",[-66217662,84223876]); AGR.TOC("perm","A18G1-p153B0.m",[46570468,20559424]); AGR.TOC("perm","A18G1-p816B0.m",[42103723,-82034077]); AGR.TOC("perm","A18G1-p3060B0.m",[-53262680,-88231425]); AGR.TOC("matint","A18G1-Zr17B0.g",[-34881287]); AGR.TOC("matint","A18G1-Zr135B0.g",[-51082799]); AGR.TOC("matint","A18G1-Zr136B0.g",[-93500730]); AGR.TOC("check","A18G1-check1",[49129175]); # S18 AGR.GRP("alt","A18","S18"); AGR.TOC("perm","S18G1-p18B0.m",[122696316,84223876]); AGR.TOC("perm","S18G1-p153B0.m",[-34063429,20559424]); AGR.TOC("perm","S18G1-p816B0.m",[16262271,-82034077]); AGR.TOC("perm","S18G1-p3060B0.m",[-32850440,-88231425]); AGR.TOC("matint","S18G1-Zr17B0.g",[99043014]); AGR.TOC("matint","S18G1-Zr135B0.g",[91940979]); AGR.TOC("matint","S18G1-Zr136B0.g",[83030198]); # A19 AGR.GRP("alt","A19","A19"); AGR.TOC("perm","A19G1-p19B0.m",[77980294,63481327]); AGR.TOC("perm","A19G1-p171B0.m",[104846560,83307267]); AGR.TOC("perm","A19G1-p969B0.m",[-23455783,105705335]); AGR.TOC("matint","A19G1-Zr18B0.g",[111598795]); AGR.TOC("matint","A19G1-Zr152B0.g",[-34032615]); AGR.TOC("matint","A19G1-Zr153B0.g",[-113410101]); AGR.TOC("check","A19G1-check1",[-132931747]); # S19 AGR.GRP("alt","A19","S19"); AGR.TOC("perm","S19G1-p19B0.m",[-133164478,84036778]); AGR.TOC("perm","S19G1-p171B0.m",[47420814,-126074704]); AGR.TOC("perm","S19G1-p969B0.m",[-64268110,117844450]); AGR.TOC("matint","S19G1-Zr18B0.g",[-86577001]); AGR.TOC("matint","S19G1-Zr152B0.g",[91970872]); AGR.TOC("matint","S19G1-Zr153B0.g",[-20026772]); # A20 AGR.GRP("alt","A20","A20"); AGR.TOC("perm","A20G1-p20B0.m",[48720353,-84131166]); AGR.TOC("perm","A20G1-p190B0.m",[-162219,37732335]); AGR.TOC("matint","A20G1-Zr19B0.g",[36852471]); AGR.TOC("matint","A20G1-Zr170B0.g",[-29615783]); AGR.TOC("matint","A20G1-Zr171B0.g",[-108958182]); AGR.TOC("check","A20G1-check1",[-64749125]); # S20 AGR.GRP("alt","A20","S20"); AGR.TOC("perm","S20G1-p20B0.m",[-22765070,-84131166]); AGR.TOC("perm","S20G1-p190B0.m",[108406054,37732335]); AGR.TOC("matint","S20G1-Zr19B0.g",[115694204]); AGR.TOC("matint","S20G1-Zr170B0.g",[-99115043]); AGR.TOC("matint","S20G1-Zr171B0.g",[-72088388]); # A21 AGR.GRP("alt","A21","A21"); AGR.TOC("perm","A21G1-p21B0.m",[-106243427,32500336]); AGR.TOC("perm","A21G1-p210B0.m",[-18096588,39181620]); AGR.TOC("matint","A21G1-Zr20B0.g",[-29256843]); AGR.TOC("matint","A21G1-Zr189B0.g",[115969211]); AGR.TOC("matint","A21G1-Zr190B0.g",[-17524123]); AGR.TOC("check","A21G1-check1",[-14702897]); # S21 AGR.GRP("alt","A21","S21"); AGR.TOC("perm","S21G1-p21B0.m",[-47866677,-64381325]); AGR.TOC("perm","S21G1-p210B0.m",[-47844635,127254386]); AGR.TOC("matint","S21G1-Zr20B0.g",[11337534]); AGR.TOC("matint","S21G1-Zr189B0.g",[-74240563]); AGR.TOC("matint","S21G1-Zr190B0.g",[26185586]); # A22 AGR.GRP("alt","A22","A22"); AGR.TOC("perm","A22G1-p22B0.m",[105416884,-75538739]); AGR.TOC("perm","A22G1-p231B0.m",[30814105,-26069360]); AGR.TOC("matint","A22G1-Zr21B0.g",[91357961]); AGR.TOC("matint","A22G1-Zr209B0.g",[115062681]); AGR.TOC("matint","A22G1-Zr210B0.g",[88330207]); AGR.TOC("check","A22G1-check1",[121099186]); # S22 AGR.GRP("alt","A22","S22"); AGR.TOC("perm","S22G1-p22B0.m",[91382033,-75538739]); AGR.TOC("perm","S22G1-p231B0.m",[-86852209,-26069360]); AGR.TOC("matint","S22G1-Zr21B0.g",[82882729]); AGR.TOC("matint","S22G1-Zr209B0.g",[38577085]); AGR.TOC("matint","S22G1-Zr210B0.g",[-50153160]); # A23 AGR.GRP("alt","A23","A23"); AGR.TOC("perm","A23G1-p23B0.m",[-26635344,-79765368]); AGR.TOC("perm","A23G1-p253B0.m",[-43572899,-9303116]); AGR.TOC("matint","A23G1-Zr22B0.g",[-48900386]); AGR.TOC("matint","A23G1-Zr230B0.g",[54170784]); AGR.TOC("matint","A23G1-Zr231B0.g",[-127813778]); AGR.TOC("check","A23G1-check1",[15692441]); # S23 AGR.GRP("alt","A23","S23"); AGR.TOC("perm","S23G1-p23B0.m",[-25964400,73432144]); AGR.TOC("perm","S23G1-p253B0.m",[-105428455,-96220929]); AGR.TOC("matint","S23G1-Zr22B0.g",[-70091375]); AGR.TOC("matint","S23G1-Zr230B0.g",[-116716590]); AGR.TOC("matint","S23G1-Zr231B0.g",[-20002267]); # 2A5 AGR.GRP("alt","A5","2A5"); AGR.TOC("perm","2A5G1-p24B0.m",[-30277832,64338760]); AGR.TOC("perm","2A5G1-p40B0.m",[103308845,13304977]); AGR.TOC("matff","2A5G1-f2r8B0.m",[-125765411,64897650]); AGR.TOC("matff","2A5G1-f2r9B0.m",[-29568269,132445224]); AGR.TOC("matff","2A5G1-f2r10B0.m",[47305319,-73484398]); AGR.TOC("matff","2A5G1-f3r4B0.m",[12103382,-106445221]); AGR.TOC("matff","2A5G1-f3r6B0.m",[75322658,103965206]); AGR.TOC("matff","2A5G1-f4r5aB0.m",[58242329,47190084]); AGR.TOC("matff","2A5G1-f4r5bB0.m",[-133306443,47190084]); AGR.TOC("matff","2A5G1-f5r2B0.m",[-71107343,23495800]); AGR.TOC("matff","2A5G1-f5r4B0.m",[-56856843,77384174]); AGR.TOC("matff","2A5G1-f7r4aB0.m",[21980736,46839911]); AGR.TOC("matff","2A5G1-f7r4bB0.m",[21980736,12748624]); AGR.TOC("matff","2A5G1-f7r6B0.m",[91729598,112748688]); AGR.TOC("matff","2A5G1-f9r2aB0.m",[19554613,-109536747]); AGR.TOC("matff","2A5G1-f9r2bB0.m",[25071709,-109536747]); AGR.TOC("matff","2A5G1-f49r2aB0.m",[38536789,3772828]); AGR.TOC("matff","2A5G1-f49r2bB0.m",[-41831557,120171565]); AGR.TOC("matint","2A5G1-Zr8bB0.g",[-67529844]); AGR.TOC("matint","2A5G1-Zr12B0.g",[-38359014]); AGR.TOC("matalg","2A5G1-Ar2aB0.g",[-114960339]); AGR.TOC("matalg","2A5G1-Ar4aB0.g",[-11066115]); AGR.TOC("matalg","2A5G1-Ar4aB2.g",[-73445728]); AGR.TOC("matalg","2A5G1-Ar6B0.g",[-47602621]); AGR.TOC("matalg","2A5G1-Ar6B1.g",[58558068]); AGR.TOC("quat","2A5G1-Hr1aB0.g",[-18010219]); AGR.TOC("pres","2A5G1-P1",[74027444]); # 2S5 AGR.GRP("alt","A5","2S5"); AGR.TOC("perm","2S5G1-p40aB0.m",[10665173,54144337]); AGR.TOC("perm","2S5G1-p40bB0.m",[-88101206,-46300861]); AGR.TOC("perm","2S5G1-p48B0.m",[-59922120,-99099063]); AGR.TOC("matff","2S5G1-f3r4B0.m",[-34606504,-58385427]); AGR.TOC("matff","2S5G1-f3r6B0.m",[16290966,-31658096]); AGR.TOC("matff","2S5G1-f5r4bB0.m",[-55819744,-5592801]); AGR.TOC("matff","2S5G1-f5r8B0.m",[36619933,-56080989]); AGR.TOC("matff","2S5G1-f25r2B0.m",[-62890617,123148176]); AGR.TOC("matff","2S5G1-f25r4aB0.m",[121947140,66663831]); AGR.TOC("matint","2S5G1-Zr8aB0.g",[-19513480]); AGR.TOC("matalg","2S5G1-Ar4bB0.g",[-69335290]); AGR.TOC("pres","2S5G1-P1",[31126296]); # 2S5i AGR.GRP("alt","A5","2S5i"); AGR.TOC("perm","2S5iG1-p48B0.m",[85389509,-85207509]); AGR.TOC("perm","2S5iG1-p80B0.m",[-14760622,-113949850]); AGR.TOC("matff","2S5iG1-f3r4B0.m",[12103382,-58183915]); AGR.TOC("matff","2S5iG1-f3r12B0.m",[-113956411,-27894887]); AGR.TOC("matff","2S5iG1-f5r4bB0.m",[-66889965,121965102]); AGR.TOC("matff","2S5iG1-f5r8B0.m",[-41209421,30862683]); AGR.TOC("matff","2S5iG1-f9r6B0.m",[-117080397,10693481]); AGR.TOC("matff","2S5iG1-f25r2B0.m",[-105183709,-122321201]); AGR.TOC("matff","2S5iG1-f25r4aB0.m",[80569340,-124369574]); AGR.TOC("matalg","2S5iG1-Ar4aB1.g",[-34484899]); AGR.TOC("matalg","2S5iG1-Ar4aB2.g",[-121430132]); AGR.TOC("pres","2S5iG1-P1",[-114755440]); # A5 AGR.GRP("alt","A5","A5"); AGR.TOC("perm","A5G1-p5B0.m",[105959871,-132194423]); AGR.TOC("perm","A5G1-p6B0.m",[61180058,-37293998]); AGR.TOC("perm","A5G1-p10B0.m",[87876035,-33658054]); AGR.TOC("matff","A5G1-f2r4aB0.m",[-59700458,75574133]); AGR.TOC("matff","A5G1-f2r4bB0.m",[132574147,-75334780]); AGR.TOC("matff","A5G1-f3r4B0.m",[-100741745,113839718]); AGR.TOC("matff","A5G1-f3r6B0.m",[-3808571,3567420]); AGR.TOC("matff","A5G1-f4r2aB0.m",[-3370782,9122982]); AGR.TOC("matff","A5G1-f4r2bB0.m",[-3099071,9122982]); AGR.TOC("matff","A5G1-f5r3B0.m",[-120405886,-65129013]); AGR.TOC("matff","A5G1-f5r5B0.m",[64884321,130032791]); AGR.TOC("matff","A5G1-f9r3aB0.m",[132629049,-68817283]); AGR.TOC("matff","A5G1-f9r3bB0.m",[-10391103,-68817283]); AGR.TOC("matint","A5G1-Zr4B0.g",[61808604]); AGR.TOC("matint","A5G1-Zr5B0.g",[-8793917]); AGR.TOC("matint","A5G1-Zr6B0.g",[-110398703]); AGR.TOC("matalg","A5G1-Ar3aB0.g",[-4330172]); AGR.TOC("matalg","A5G1-Ar3bB0.g",[35818313]); AGR.TOC("maxes","A5G1-max1W1",[109910985]); AGR.TOC("maxes","A5G1-max2W1",[98771752]); AGR.TOC("maxes","A5G1-max3W1",[-110887951]); AGR.TOC("check","A5G1-check1",[133214225]); AGR.TOC("pres","A5G1-P1",[133214225]); # S5 AGR.GRP("alt","A5","S5"); AGR.TOC("perm","S5G1-p5B0.m",[-3581724,115937465]); AGR.TOC("perm","S5G1-p6B0.m",[122731789,-79969449]); AGR.TOC("perm","S5G1-p10B0.m",[-78039502,-18399926]); AGR.TOC("matff","S5G1-f2r4aB0.m",[83842337,117840626]); AGR.TOC("matff","S5G1-f2r4bB0.m",[82015106,-40261038]); AGR.TOC("matff","S5G1-f3r4B0.m",[127122134,-89443331]); AGR.TOC("matff","S5G1-f3r6B0.m",[-83885626,-57029490]); AGR.TOC("matff","S5G1-f5r3B0.m",[-62063879,-111834091]); AGR.TOC("matff","S5G1-f5r5B0.m",[-22534346,-120846077]); AGR.TOC("maxes","S5G1-max1W1",[-18484748]); AGR.TOC("maxes","S5G1-max2W1",[31931707]); AGR.TOC("maxes","S5G1-max3W1",[53299536]); AGR.TOC("maxes","S5G1-max4W1",[-25589380]); AGR.TOC("pres","S5G1-P1",[-98868399]); # 2A6 AGR.GRP("alt","A6","2A6"); AGR.TOC("perm","2A6G1-p80B0.m",[102258790,74608568]); AGR.TOC("perm","2A6G1-p144B0.m",[-96347,125801886]); AGR.TOC("perm","2A6G1-p240aB0.m",[-79548168,126895587]); AGR.TOC("perm","2A6G1-p240bB0.m",[-106514159,-132986516]); AGR.TOC("matff","2A6G1-f3r4B0.m",[-4837021,-103499355]); AGR.TOC("matff","2A6G1-f3r12B0.m",[-22045868,1768922]); AGR.TOC("matff","2A6G1-f5r4aB0.m",[17900096,-96541165]); AGR.TOC("matff","2A6G1-f5r4bB0.m",[20381152,-96541165]); AGR.TOC("matff","2A6G1-f5r20B0.m",[120797580,2598400]); AGR.TOC("matff","2A6G1-f9r2aB0.m",[23246590,-65195923]); AGR.TOC("matff","2A6G1-f9r2bB0.m",[-56273788,114713757]); AGR.TOC("matff","2A6G1-f9r6aB0.m",[-117080397,-111824609]); AGR.TOC("matff","2A6G1-f9r6bB0.m",[-117080397,-20471860]); AGR.TOC("matff","2A6G1-f25r10aB0.m",[-106085167,-113549865]); AGR.TOC("matff","2A6G1-f25r10bB0.m",[98754305,120285871]); AGR.TOC("matalg","2A6G1-Ar4B0.g",[-48048172]); AGR.TOC("matalg","2A6G1-Ar4aB0.g",[-114223694]); AGR.TOC("quat","2A6G1-Hr2aB0.g",[14366986]); # 2S6 AGR.GRP("alt","A6","2S6"); AGR.TOC("perm","2S6G1-p80B0.m",[-1465137,-39728472]); AGR.TOC("perm","2S6G1-p240aB0.m",[-85923730,26420057]); AGR.TOC("perm","2S6G1-p288B0.m",[116924951,-58411499]); # 3A6 AGR.GRP("alt","A6","3A6"); AGR.TOC("perm","3A6G1-p18aB0.m",[-27169755,-63884696]); AGR.TOC("perm","3A6G1-p18bB0.m",[-70831422,109435138]); AGR.TOC("perm","3A6G1-p45aB0.m",[95875628,133741471]); AGR.TOC("perm","3A6G1-p45bB0.m",[31154063,-131269737]); AGR.TOC("matff","3A6G1-f2r6aB0.m",[35911271,-9468330]); AGR.TOC("matff","3A6G1-f2r6bB0.m",[128164886,-101302677]); AGR.TOC("matff","3A6G1-f2r18B0.m",[-83402555,103762049]); AGR.TOC("matff","3A6G1-f4r3aB0.m",[-61163955,62487747]); AGR.TOC("matff","3A6G1-f4r3bB0.m",[-61163955,-113407058]); AGR.TOC("matff","3A6G1-f4r9aB0.m",[26373939,-119266416]); AGR.TOC("matff","3A6G1-f5r6bB0.m",[-91892596,-21844883]); AGR.TOC("matff","3A6G1-f5r12B0.m",[132796687,9613992]); AGR.TOC("matff","3A6G1-f5r30B0.m",[90929713,-6591506]); AGR.TOC("matff","3A6G1-f25r3aB0.m",[-11515690,-123381946]); AGR.TOC("matff","3A6G1-f25r6aB0.m",[-30624642,-31855788]); AGR.TOC("matff","3A6G1-f25r15aB0.m",[8408375,84491105]); AGR.TOC("matalg","3A6G1-Ar3aB0.g",[98594020]); AGR.TOC("matalg","3A6G1-Ar6B0.g",[46743497]); AGR.TOC("matalg","3A6G1-Ar9B0.g",[19237101]); AGR.TOC("matalg","3A6G1-Ar15B0.g",[62264135]); # 3S6 AGR.GRP("alt","A6","3S6"); AGR.TOC("perm","3S6G1-p18aB0.m",[-90192914,58018384]); AGR.TOC("perm","3S6G1-p18bB0.m",[48380330,-74100289]); AGR.TOC("perm","3S6G1-p45aB0.m",[-36171649,-98566559]); AGR.TOC("perm","3S6G1-p45bB0.m",[-63653841,-22560631]); # 6A6 AGR.GRP("alt","A6","6A6"); AGR.TOC("perm","6A6G1-p432B0.m",[-70482918,5910727]); AGR.TOC("perm","6A6G1-p720aB0.m",[-117987490,78745458]); AGR.TOC("matff","6A6G1-f5r12aB0.m",[82266534,63801793]); AGR.TOC("matff","6A6G1-f5r12bB0.m",[-16318809,-103450023]); AGR.TOC("matff","6A6G1-f9r6aB0.m",[-117080397,10712547]); AGR.TOC("matff","6A6G1-f25r6aB0.m",[41241241,54241311]); AGR.TOC("matff","6A6G1-f25r6bB0.m",[114239719,-49023241]); AGR.TOC("matalg","6A6G1-Ar12B0.g",[-59710906]); # 6S6 AGR.GRP("alt","A6","6S6"); AGR.TOC("perm","6S6G1-p720aB0.m",[-101534071,-77411625]); # A6 AGR.GRP("alt","A6","A6"); AGR.TOC("perm","A6G1-p6aB0.m",[108706813,-115759144]); AGR.TOC("perm","A6G1-p6bB0.m",[108706813,57093098]); AGR.TOC("perm","A6G1-p10B0.m",[-27365038,76650249]); AGR.TOC("perm","A6G1-p15aB0.m",[-109444696,-87928583]); AGR.TOC("perm","A6G1-p15bB0.m",[-45631178,-128595033]); AGR.TOC("matff","A6G1-f2r4aB0.m",[63125127,-51233355]); AGR.TOC("matff","A6G1-f2r4bB0.m",[63125127,23017655]); AGR.TOC("matff","A6G1-f2r16B0.m",[130984727,-39278407]); AGR.TOC("matff","A6G1-f3r4B0.m",[25891732,-79587657]); AGR.TOC("matff","A6G1-f3r6B0.m",[-98179095,-67444461]); AGR.TOC("matff","A6G1-f3r9B0.m",[-66167021,-116095810]); AGR.TOC("matff","A6G1-f4r8aB0.m",[117735458,-32704661]); AGR.TOC("matff","A6G1-f4r8bB0.m",[-76667929,125393531]); AGR.TOC("matff","A6G1-f5r5aB0.m",[26341713,-58803941]); AGR.TOC("matff","A6G1-f5r5bB0.m",[-92415994,96195433]); AGR.TOC("matff","A6G1-f5r8B0.m",[-2848528,-41002382]); AGR.TOC("matff","A6G1-f5r10B0.m",[-103629574,30708049]); AGR.TOC("matff","A6G1-f9r3aB0.m",[44653245,-127453367]); AGR.TOC("matff","A6G1-f9r3bB0.m",[44653245,14779569]); AGR.TOC("matint","A6G1-Zr5aB0.g",[100719862]); AGR.TOC("matint","A6G1-Zr5bB0.g",[125657418]); AGR.TOC("matint","A6G1-Zr9B0.g",[133517606]); AGR.TOC("matint","A6G1-Zr10B0.g",[-74571095]); AGR.TOC("matint","A6G1-Zr16B0.g",[-116806540]); AGR.TOC("matalg","A6G1-Ar8aB0.g",[107672848]); AGR.TOC("matalg","A6G1-Ar8bB0.g",[30517665]); AGR.TOC("maxes","A6G1-max1W1",[-67607570]); AGR.TOC("maxes","A6G1-max2W1",[98771752]); AGR.TOC("maxes","A6G1-max3W1",[69578701]); AGR.TOC("maxes","A6G1-max4W1",[-45430912]); AGR.TOC("maxes","A6G1-max5W1",[42879257]); AGR.TOC("check","A6G1-check1",[-102434184]); AGR.TOC("pres","A6G1-P1",[-76021888]); # A6V4 AGR.GRP("alt","A6","A6V4"); AGR.TOC("perm","A6V4G1-p10B0.m",[6106500,-82871957]); AGR.TOC("pres","A6V4G1-P1",[-62980510]); # M10 AGR.GRP("alt","A6","M10"); AGR.TOC("perm","M10G1-p10B0.m",[-60216384,-124930269]); AGR.TOC("pres","M10G1-P1",[-14890401]); # PGL29 AGR.GRP("alt","A6","PGL29"); AGR.TOC("perm","PGL29G1-p10B0.m",[126537996,81841962]); AGR.TOC("pres","PGL29G1-P1",[-132346814]); # S6 AGR.GRP("alt","A6","S6"); AGR.TOC("perm","S6G1-p6aB0.m",[-20005392,79150440]); AGR.TOC("perm","S6G1-p6bB0.m",[-80081315,79150440]); AGR.TOC("perm","S6G1-p10B0.m",[-54706016,-57924782]); AGR.TOC("perm","S6G1-p15aB0.m",[86959444,-59558044]); AGR.TOC("perm","S6G1-p15bB0.m",[-94758333,-91650995]); AGR.TOC("maxes","S6G1-max1W1",[83513557]); AGR.TOC("maxes","S6G1-max2W1",[18748601]); AGR.TOC("maxes","S6G1-max3W1",[-115734862]); AGR.TOC("maxes","S6G1-max4W1",[-67607570]); AGR.TOC("maxes","S6G1-max5W1",[-9427421]); AGR.TOC("maxes","S6G1-max6W1",[-67032013]); AGR.TOC("pres","S6G1-P1",[-111049475]); # 2A7 AGR.GRP("alt","A7","2A7"); AGR.TOC("perm","2A7G1-p240B0.m",[-3292094,-27737806]); AGR.TOC("matff","2A7G1-f3r8B0.m",[115125557,-39989792]); AGR.TOC("matff","2A7G1-f3r12B0.m",[-51516234,122247886]); AGR.TOC("matff","2A7G1-f3r36B0.m",[-85449470,81866542]); AGR.TOC("matff","2A7G1-f5r8B0.m",[-30079117,-64273702]); AGR.TOC("matff","2A7G1-f5r20aB0.m",[-94735395,75374541]); AGR.TOC("matff","2A7G1-f5r20bB0.m",[-106463668,-19719920]); AGR.TOC("matff","2A7G1-f5r28B0.m",[106917999,91869630]); AGR.TOC("matff","2A7G1-f7r4B0.m",[-72947581,-67923820]); AGR.TOC("matff","2A7G1-f7r14aB0.m",[-59913607,-114720184]); AGR.TOC("matff","2A7G1-f7r14bB0.m",[98740750,32016585]); AGR.TOC("matff","2A7G1-f7r16B0.m",[75299246,-132793868]); AGR.TOC("matff","2A7G1-f7r20B0.m",[-47034929,87271692]); AGR.TOC("matff","2A7G1-f9r4aB0.m",[116086381,-66800019]); AGR.TOC("matff","2A7G1-f9r4bB0.m",[116086381,-100788072]); AGR.TOC("matff","2A7G1-f9r6aB0.m",[-48413873,-43569541]); AGR.TOC("matff","2A7G1-f9r6bB0.m",[-8353157,96784847]); AGR.TOC("matff","2A7G1-f25r4aB0.m",[-72664095,-38260269]); AGR.TOC("matff","2A7G1-f25r4bB0.m",[-72664095,14497210]); AGR.TOC("matff","2A7G1-f25r14aB0.m",[-31393230,46387995]); AGR.TOC("matff","2A7G1-f25r14bB0.m",[54681285,9308579]); AGR.TOC("matalg","2A7G1-Ar4aB0.g",[-92207492]); AGR.TOC("matalg","2A7G1-Ar4bB0.g",[-32729037]); AGR.TOC("matalg","2A7G1-Ar20aB0.g",[-123007004]); # 2S7 AGR.GRP("alt","A7","2S7"); AGR.TOC("matff","2S7G1-f7r8B0.m",[-53522252,18330038]); AGR.TOC("matff","2S7G1-f7r28B0.m",[-67980920,-35536298]); AGR.TOC("matff","2S7G1-f7r32B0.m",[-60511241,106583422]); AGR.TOC("matff","2S7G1-f7r40B0.m",[-44545978,16262383]); AGR.TOC("matff","2S7G1-f49r4aB0.m",[-15044674,-73437953]); AGR.TOC("matff","2S7G1-f49r16aB0.m",[22960962,-41454301]); AGR.TOC("matff","2S7G1-f49r20aB0.m",[-54171207,-27657892]); # 2S7i AGR.GRP("alt","A7","2S7i"); AGR.TOC("matff","2S7iG1-f3r8B0.m",[49999329,107284394]); AGR.TOC("matff","2S7iG1-f3r12B0.m",[-3646128,-101443637]); AGR.TOC("matff","2S7iG1-f3r36aB0.m",[75934216,13394983]); AGR.TOC("matff","2S7iG1-f5r8B0.m",[-41209421,-94422757]); AGR.TOC("matff","2S7iG1-f5r20B0.m",[-49647592,55460638]); AGR.TOC("matff","2S7iG1-f5r28B0.m",[-16367108,-67711016]); AGR.TOC("matff","2S7iG1-f5r40B0.m",[60330914,-73388851]); AGR.TOC("matff","2S7iG1-f7r4aB0.m",[-128946870,-89499747]); AGR.TOC("matff","2S7iG1-f7r16aB0.m",[-66493890,43278977]); AGR.TOC("matff","2S7iG1-f7r20aB0.m",[-110432753,-19780159]); AGR.TOC("matff","2S7iG1-f7r28B0.m",[-50217382,32343475]); AGR.TOC("matff","2S7iG1-f25r20aB0.m",[33577121,-84897365]); # 3A7 AGR.GRP("alt","A7","3A7"); AGR.TOC("perm","3A7G1-p45aB0.m",[109537525,96508581]); AGR.TOC("perm","3A7G1-p45bB0.m",[-114892068,76407987]); AGR.TOC("perm","3A7G1-p63B0.m",[129538451,-52215497]); AGR.TOC("perm","3A7G1-p315B0.m",[-134162246,-86486884]); AGR.TOC("matff","3A7G1-f2r12B0.m",[-53202595,30729675]); AGR.TOC("matff","3A7G1-f2r30B0.m",[90337719,-90141803]); AGR.TOC("matff","3A7G1-f2r48aB0.m",[75326183,-33290497]); AGR.TOC("matff","3A7G1-f2r48bB0.m",[-67009732,-70678928]); AGR.TOC("matff","3A7G1-f4r6B0.m",[81090800,-50669809]); AGR.TOC("matff","3A7G1-f4r15B0.m",[-24520496,86249362]); AGR.TOC("matff","3A7G1-f4r24aB0.m",[-51291230,34490550]); AGR.TOC("matff","3A7G1-f4r24bB0.m",[-101760030,-13124942]); AGR.TOC("matff","3A7G1-f5r6B0.m",[75634132,74423159]); AGR.TOC("matff","3A7G1-f5r12B0.m",[-104662262,69216411]); AGR.TOC("matff","3A7G1-f5r30aB0.m",[121631521,110288714]); AGR.TOC("matff","3A7G1-f5r30bB0.m",[19349938,123165985]); AGR.TOC("matff","3A7G1-f5r36B0.m",[-40143423,7979341]); AGR.TOC("matff","3A7G1-f5r42B0.m",[-77405396,54456798]); AGR.TOC("matff","3A7G1-f7r6B0.m",[-91983465,62064904]); AGR.TOC("matff","3A7G1-f7r9B0.m",[98614202,94446836]); AGR.TOC("matff","3A7G1-f7r15B0.m",[64305697,-124550272]); AGR.TOC("matff","3A7G1-f7r21aB0.m",[6811668,-29096036]); AGR.TOC("matff","3A7G1-f7r21bB0.m",[-57960020,2288264]); AGR.TOC("matff","3A7G1-f25r3B0.m",[30211216,101026231]); AGR.TOC("matff","3A7G1-f25r6B0.m",[57090120,-35828918]); AGR.TOC("matff","3A7G1-f25r15aB0.m",[-87407590,46689140]); AGR.TOC("matff","3A7G1-f25r15bB0.m",[62478524,-57683497]); AGR.TOC("matff","3A7G1-f25r18B0.m",[-87517950,-119078156]); AGR.TOC("matff","3A7G1-f25r21B0.m",[116472,-74374020]); AGR.TOC("matalg","3A7G1-Ar6B0.g",[-33810209]); AGR.TOC("matalg","3A7G1-Ar15aB0.g",[96656692]); AGR.TOC("matalg","3A7G1-Ar15bB0.g",[-107010826]); AGR.TOC("matalg","3A7G1-Ar21aB0.g",[-83149149]); AGR.TOC("matalg","3A7G1-Ar21bB0.g",[-51578621]); # 3S7 AGR.GRP("alt","A7","3S7"); AGR.TOC("perm","3S7G1-p63B0.m",[31377868,111851509]); AGR.TOC("perm","3S7G1-p90B0.m",[-107847473,2297321]); AGR.TOC("matff","3S7G1-f2r12B0.m",[26970840,-9365810]); AGR.TOC("matff","3S7G1-f2r30B0.m",[36334749,-43735233]); AGR.TOC("matff","3S7G1-f2r96B0.m",[-34473643,57899234]); AGR.TOC("matff","3S7G1-f5r6B0.m",[-66460916,-115373300]); AGR.TOC("matff","3S7G1-f5r12B0.m",[43656458,14004214]); AGR.TOC("matff","3S7G1-f5r30aB0.m",[-121607974,-20499580]); AGR.TOC("matff","3S7G1-f5r30bB0.m",[-13003126,-28767831]); AGR.TOC("matff","3S7G1-f5r36B0.m",[-47119799,109713215]); AGR.TOC("matff","3S7G1-f5r42B0.m",[-25680175,62700243]); AGR.TOC("matff","3S7G1-f7r12B0.m",[8273416,-83410363]); AGR.TOC("matff","3S7G1-f7r18B0.m",[88355389,71668127]); AGR.TOC("matff","3S7G1-f7r30B0.m",[110311840,-13780991]); AGR.TOC("matff","3S7G1-f7r42aB0.m",[71229562,-110145426]); AGR.TOC("matff","3S7G1-f7r42bB0.m",[98955354,114297898]); # 6A7 AGR.GRP("alt","A7","6A7"); AGR.TOC("perm","6A7G1-p720B0.m",[131742494,-73083657]); AGR.TOC("matff","6A7G1-f5r12aB0.m",[74207849,63560487]); AGR.TOC("matff","6A7G1-f5r12bB0.m",[125659785,-53997618]); AGR.TOC("matff","6A7G1-f5r24B0.m",[80969030,37253661]); AGR.TOC("matff","6A7G1-f5r48B0.m",[42213017,109752579]); AGR.TOC("matff","6A7G1-f7r6aB0.m",[96246682,39543939]); AGR.TOC("matff","6A7G1-f7r6bB0.m",[34691837,-20531271]); AGR.TOC("matff","6A7G1-f7r24B0.m",[-102605978,106048389]); AGR.TOC("matff","6A7G1-f25r6aB0.m",[100353712,-121631318]); AGR.TOC("matff","6A7G1-f25r6bB0.m",[-58835053,85206624]); AGR.TOC("matff","6A7G1-f25r12B0.m",[-36169651,-100389795]); AGR.TOC("matff","6A7G1-f25r24B0.m",[-19086814,-55349400]); # 6S7 AGR.GRP("alt","A7","6S7"); AGR.TOC("matff","6S7G1-f7r12B0.m",[-44861699,25585244]); AGR.TOC("matff","6S7G1-f7r48B0.m",[109965908,-114636847]); # A7 AGR.GRP("alt","A7","A7"); AGR.TOC("perm","A7G1-p7B0.m",[45602091,-40128812]); AGR.TOC("matff","A7G1-f2r4aB0.m",[-75334780,133359621]); AGR.TOC("matff","A7G1-f2r4bB0.m",[-75334780,110723042]); AGR.TOC("matff","A7G1-f2r6B0.m",[-96431038,-96670665]); AGR.TOC("matff","A7G1-f2r14B0.m",[88404425,-132995512]); AGR.TOC("matff","A7G1-f2r20B0.m",[-59840360,43050535]); AGR.TOC("matff","A7G1-f3r6B0.m",[-56494866,89026618]); AGR.TOC("matff","A7G1-f3r13B0.m",[-1113830,116073952]); AGR.TOC("matff","A7G1-f3r15B0.m",[-121714200,40692474]); AGR.TOC("matff","A7G1-f3r20B0.m",[-132035023,-82990016]); AGR.TOC("matff","A7G1-f5r6B0.m",[62597910,133847596]); AGR.TOC("matff","A7G1-f5r8B0.m",[-67278705,117637163]); AGR.TOC("matff","A7G1-f5r13B0.m",[-119963451,-120598875]); AGR.TOC("matff","A7G1-f5r15B0.m",[116088850,86554021]); AGR.TOC("matff","A7G1-f5r20B0.m",[-129342836,-87512862]); AGR.TOC("matff","A7G1-f5r35B0.m",[-74142229,31639714]); AGR.TOC("matff","A7G1-f7r5B0.m",[81664664,66608321]); AGR.TOC("matff","A7G1-f7r10B0.m",[-39370106,-111817133]); AGR.TOC("matff","A7G1-f7r14aB0.m",[77736448,5408238]); AGR.TOC("matff","A7G1-f7r14bB0.m",[51566638,59386993]); AGR.TOC("matff","A7G1-f7r21B0.m",[44369962,-60628903]); AGR.TOC("matff","A7G1-f7r35B0.m",[73079771,77988626]); AGR.TOC("matff","A7G1-f9r10aB0.m",[-2625794,89301035]); AGR.TOC("matff","A7G1-f9r10bB0.m",[62947657,130497263]); AGR.TOC("matff","A7G1-f25r10aB0.m",[98832882,52957486]); AGR.TOC("matff","A7G1-f25r10bB0.m",[-62846906,86891132]); AGR.TOC("matint","A7G1-Zr6B0.g",[48360344]); AGR.TOC("matint","A7G1-Zr14aB0.g",[24892537]); AGR.TOC("matint","A7G1-Zr14bB0.g",[-22139103]); AGR.TOC("matint","A7G1-Zr15B0.g",[-112180996]); AGR.TOC("matint","A7G1-Zr20B0.g",[-28988261]); AGR.TOC("matint","A7G1-Zr21B0.g",[-29742041]); AGR.TOC("matint","A7G1-Zr35B0.g",[22518441]); AGR.TOC("maxes","A7G1-max1W1",[70334159]); AGR.TOC("maxes","A7G1-max2W1",[-99809336]); AGR.TOC("check","A7G1-check1",[-63044540]); # S7 AGR.GRP("alt","A7","S7"); AGR.TOC("perm","S7G1-p7B0.m",[-124593203,67443889]); AGR.TOC("perm","S7G1-p21B0.m",[-121904583,105902254]); AGR.TOC("perm","S7G1-p30B0.m",[53165691,-63950219]); AGR.TOC("perm","S7G1-p35B0.m",[-68600957,-72406246]); AGR.TOC("perm","S7G1-p120B0.m",[92158314,118472449]); AGR.TOC("matff","S7G1-f2r6B0.m",[-22260173,-133387572]); AGR.TOC("matff","S7G1-f2r8B0.m",[-115100505,62527455]); AGR.TOC("matff","S7G1-f2r14B0.m",[65384245,74515664]); AGR.TOC("matff","S7G1-f2r20B0.m",[119920235,-124672320]); AGR.TOC("matff","S7G1-f3r6aB0.m",[-117937890,-131742766]); AGR.TOC("matff","S7G1-f3r13aB0.m",[71390686,-62222796]); AGR.TOC("matff","S7G1-f3r15aB0.m",[-127891226,40566345]); AGR.TOC("matff","S7G1-f3r20B0.m",[-21513772,-52594721]); AGR.TOC("matff","S7G1-f5r6aB0.m",[-128822608,73110986]); AGR.TOC("matff","S7G1-f5r8aB0.m",[-116058506,105279481]); AGR.TOC("matff","S7G1-f5r13aB0.m",[59726521,-39695657]); AGR.TOC("matff","S7G1-f5r15aB0.m",[-104102442,129350008]); AGR.TOC("matff","S7G1-f5r20B0.m",[88841578,-3367921]); AGR.TOC("matff","S7G1-f5r35aB0.m",[-121898027,-26417368]); AGR.TOC("matff","S7G1-f7r5aB0.m",[-86252045,-31938807]); AGR.TOC("matff","S7G1-f7r10aB0.m",[-68463391,-40306517]); AGR.TOC("matff","S7G1-f7r14aB0.m",[46054514,-125849128]); AGR.TOC("matff","S7G1-f7r14bB0.m",[23987557,13911761]); AGR.TOC("matff","S7G1-f7r21aB0.m",[35754486,-86587203]); AGR.TOC("matff","S7G1-f7r35aB0.m",[70139229,-63087248]); AGR.TOC("maxes","S7G1-max1W1",[-14717004]); AGR.TOC("maxes","S7G1-max2W1",[19547313]); AGR.TOC("maxes","S7G1-max3W1",[98162325]); AGR.TOC("maxes","S7G1-max4W1",[-81647236]); AGR.TOC("maxes","S7G1-max5W1",[111003326]); # 2A8 AGR.GRP("alt","A8","2A8"); AGR.TOC("perm","2A8G1-p240aB0.m",[-96287219,100052245]); AGR.TOC("perm","2A8G1-p240bB0.m",[-102533315,44761083]); AGR.TOC("perm","2A8G1-p240cB0.m",[-98336336,26503074]); AGR.TOC("matff","2A8G1-f3r8B0.m",[110104467,103157578]); AGR.TOC("matff","2A8G1-f3r48aB0.m",[-18748067,-87137760]); AGR.TOC("matff","2A8G1-f3r48bB0.m",[-51957761,4460697]); AGR.TOC("matff","2A8G1-f5r8B0.m",[-13016887,68445041]); AGR.TOC("matff","2A8G1-f5r48aB0.m",[-41187856,-68860196]); AGR.TOC("matff","2A8G1-f5r48bB0.m",[-71781049,11730666]); AGR.TOC("matff","2A8G1-f5r64B0.m",[46702969,55553521]); AGR.TOC("matff","2A8G1-f7r8B0.m",[-94094131,120686910]); AGR.TOC("matff","2A8G1-f7r16B0.m",[-35990194,-13511402]); AGR.TOC("matff","2A8G1-f7r48B0.m",[55558781,17701250]); AGR.TOC("matff","2A8G1-f7r56aB0.m",[123021175,34024872]); AGR.TOC("matff","2A8G1-f7r56bB0.m",[-944491,-5197282]); AGR.TOC("matff","2A8G1-f7r112B0.m",[-10708772,86832890]); AGR.TOC("matff","2A8G1-f9r24aB0.m",[-58804603,44796249]); AGR.TOC("matff","2A8G1-f9r24bB0.m",[-27097110,-15444090]); AGR.TOC("matff","2A8G1-f25r24aB0.m",[-86181411,71073867]); AGR.TOC("matff","2A8G1-f25r24bB0.m",[120078495,26625097]); AGR.TOC("matff","2A8G1-f25r32aB0.m",[1555143,4015084]); AGR.TOC("matff","2A8G1-f25r32bB0.m",[133809283,133818942]); AGR.TOC("matff","2A8G1-f49r56cB0.m",[36895777,31221483]); AGR.TOC("matff","2A8G1-f49r56dB0.m",[11478413,58925510]); AGR.TOC("matint","2A8G1-Zr8B0.g",[-127813824]); AGR.TOC("matmodn","2A8G1-Z4r4aB0.g",[-25748035]); # A8 AGR.GRP("alt","A8","A8"); AGR.TOC("perm","A8G1-p8B0.m",[-4527126,-126533380]); AGR.TOC("perm","A8G1-p15aB0.m",[41717428,-65350234]); AGR.TOC("perm","A8G1-p15bB0.m",[33188186,73649104]); AGR.TOC("matff","A8G1-f2r4aB0.m",[-75334780,-96547203]); AGR.TOC("matff","A8G1-f2r4bB0.m",[-75334780,-66578106]); AGR.TOC("matff","A8G1-f2r6B0.m",[-99095227,-29863203]); AGR.TOC("matff","A8G1-f2r14B0.m",[64744832,-32768114]); AGR.TOC("matff","A8G1-f2r20aB0.m",[87872891,48406533]); AGR.TOC("matff","A8G1-f2r20bB0.m",[127589419,-3907050]); AGR.TOC("matff","A8G1-f2r64B0.m",[86715581,-47507203]); AGR.TOC("matint","A8G1-Zr7B0.g",[44944099]); AGR.TOC("matint","A8G1-Zr14B0.g",[6569637]); AGR.TOC("matint","A8G1-Zr20B0.g",[119136527]); AGR.TOC("matint","A8G1-Zr21aB0.g",[-35592612]); AGR.TOC("matint","A8G1-Zr28B0.g",[-20315578]); AGR.TOC("matint","A8G1-Zr35B0.g",[66933826]); AGR.TOC("matint","A8G1-Zr42B0.g",[-132523549]); AGR.TOC("matint","A8G1-Zr56B0.g",[-119222824]); AGR.TOC("matint","A8G1-Zr64B0.g",[-109047313]); AGR.TOC("matint","A8G1-Zr70B0.g",[-74724874]); AGR.TOC("matint","A8G1-Zr90B0.g",[34617594]); AGR.TOC("check","A8G1-check1",[39317844]); # S8 AGR.GRP("alt","A8","S8"); AGR.TOC("perm","S8G1-p8B0.m",[123141729,85477392]); AGR.TOC("matff","S8G1-f2r6B0.m",[-22260173,-22867308]); AGR.TOC("matff","S8G1-f2r8B0.m",[84946852,-9458717]); AGR.TOC("matff","S8G1-f2r14B0.m",[-123417179,-87483402]); AGR.TOC("matff","S8G1-f2r40B0.m",[48676847,4116683]); AGR.TOC("matff","S8G1-f2r64B0.m",[51117359,-72788269]); # 2A9 AGR.GRP("alt","A9","2A9"); AGR.TOC("matff","2A9G1-f3r8B0.m",[-104094197,-8981692]); AGR.TOC("matff","2A9G1-f3r48B0.m",[132400672,-55146633]); AGR.TOC("matff","2A9G1-f3r104B0.m",[44601680,708409]); AGR.TOC("matff","2A9G1-f5r8aB0.m",[-72343023,-34091804]); AGR.TOC("matff","2A9G1-f5r8bB0.m",[-72343023,-36383995]); AGR.TOC("matff","2A9G1-f7r8aB0.m",[-93937177,119155111]); AGR.TOC("matff","2A9G1-f7r8bB0.m",[-93937177,63478918]); AGR.TOC("matalg","2A9G1-Ar8aB0.g",[-112500735]); # A9 AGR.GRP("alt","A9","A9"); AGR.TOC("perm","A9G1-p9B0.m",[116601334,-62323096]); AGR.TOC("perm","A9G1-p36B0.m",[-32785314,-70178370]); AGR.TOC("perm","A9G1-p84B0.m",[51265106,-49500979]); AGR.TOC("perm","A9G1-p120aB0.m",[123417366,12990255]); AGR.TOC("perm","A9G1-p120bB0.m",[-54926084,-114205725]); AGR.TOC("perm","A9G1-p126B0.m",[19487375,-73084215]); AGR.TOC("perm","A9G1-p280B0.m",[110225478,-24356222]); AGR.TOC("perm","A9G1-p840B0.m",[118760487,43929662]); AGR.TOC("matff","A9G1-f2r8aB0.m",[76766072,112609927]); AGR.TOC("matff","A9G1-f2r8bB0.m",[102232623,14154429]); AGR.TOC("matff","A9G1-f2r8cB0.m",[102232623,95743374]); AGR.TOC("matff","A9G1-f2r20aB0.m",[-116012097,86559057]); AGR.TOC("matff","A9G1-f2r20bB0.m",[11313813,86297175]); AGR.TOC("matff","A9G1-f2r26B0.m",[-43555360,-29522564]); AGR.TOC("matff","A9G1-f2r48B0.m",[111876087,125026724]); AGR.TOC("matff","A9G1-f2r78B0.m",[93158443,111098730]); AGR.TOC("matff","A9G1-f2r160B0.m",[-113196594,126317842]); AGR.TOC("matff","A9G1-f3r7B0.m",[-46888880,122989205]); AGR.TOC("matff","A9G1-f3r21B0.m",[97833906,-124795722]); AGR.TOC("matff","A9G1-f3r27B0.m",[53360387,-110179385]); AGR.TOC("matff","A9G1-f3r35B0.m",[-75914486,12943712]); AGR.TOC("matff","A9G1-f3r41B0.m",[113272071,-72099926]); AGR.TOC("matff","A9G1-f3r162B0.m",[-82012771,117328868]); AGR.TOC("matff","A9G1-f3r189B0.m",[-100089248,-55976864]); AGR.TOC("matff","A9G1-f5r8B0.m",[61715009,-104290189]); AGR.TOC("matff","A9G1-f5r21B0.m",[-108469338,-14430805]); AGR.TOC("matff","A9G1-f5r27B0.m",[-60285001,52677281]); AGR.TOC("matff","A9G1-f5r28B0.m",[12673978,-10559459]); AGR.TOC("matff","A9G1-f5r34B0.m",[43023049,-34704766]); AGR.TOC("matff","A9G1-f5r35aB0.m",[-76520532,-97440845]); AGR.TOC("matff","A9G1-f5r35bB0.m",[-62633215,-123969685]); AGR.TOC("matff","A9G1-f5r56B0.m",[8891258,56683786]); AGR.TOC("matff","A9G1-f5r83B0.m",[-27507312,-27462102]); AGR.TOC("matff","A9G1-f5r105B0.m",[42461781,58200084]); AGR.TOC("matff","A9G1-f5r120B0.m",[-119279049,47174249]); AGR.TOC("matff","A9G1-f5r133B0.m",[-18727663,16676412]); AGR.TOC("matff","A9G1-f5r134B0.m",[122853650,17410189]); AGR.TOC("matff","A9G1-f7r8B0.m",[-45341592,39241079]); AGR.TOC("matff","A9G1-f7r19B0.m",[-37669067,-88156896]); AGR.TOC("matff","A9G1-f7r28B0.m",[-48096103,-37393314]); AGR.TOC("matff","A9G1-f7r35aB0.m",[-103551900,-102253729]); AGR.TOC("matff","A9G1-f7r35bB0.m",[-131920737,-22272726]); AGR.TOC("matff","A9G1-f7r42B0.m",[-91817450,-81644783]); AGR.TOC("matff","A9G1-f7r47B0.m",[120025081,-6775808]); AGR.TOC("matff","A9G1-f7r56B0.m",[-267432,3717887]); AGR.TOC("matff","A9G1-f7r84B0.m",[-56264078,58337040]); AGR.TOC("matff","A9G1-f7r101B0.m",[83654551,65363130]); AGR.TOC("matff","A9G1-f7r105B0.m",[118513256,80794670]); AGR.TOC("matff","A9G1-f7r115B0.m",[75626264,4993916]); AGR.TOC("matff","A9G1-f7r168B0.m",[94115553,-109033653]); AGR.TOC("matff","A9G1-f7r189B0.m",[126789110,111104490]); AGR.TOC("matff","A9G1-f49r21aB0.m",[-57219481,58294530]); AGR.TOC("matff","A9G1-f49r21bB0.m",[113250307,-86761156]); AGR.TOC("matint","A9G1-Zr8B0.g",[-113036087]); AGR.TOC("matint","A9G1-Zr27B0.g",[-114160116]); AGR.TOC("matint","A9G1-Zr28B0.g",[-116816341]); AGR.TOC("matint","A9G1-Zr35aB0.g",[19143040]); AGR.TOC("matint","A9G1-Zr35bB0.g",[-127084087]); AGR.TOC("matint","A9G1-Zr42B0.g",[90871834]); AGR.TOC("matint","A9G1-Zr48B0.g",[94101296]); AGR.TOC("matint","A9G1-Zr56B0.g",[-105813169]); AGR.TOC("matint","A9G1-Zr84B0.g",[-106644844]); AGR.TOC("matint","A9G1-Zr105B0.g",[-75292765]); AGR.TOC("matint","A9G1-Zr120B0.g",[33650659]); AGR.TOC("matint","A9G1-Zr162B0.g",[11215876]); AGR.TOC("matint","A9G1-Zr168B0.g",[-43654782]); AGR.TOC("matint","A9G1-Zr189B0.g",[-7898273]); AGR.TOC("matint","A9G1-Zr216B0.g",[-36845553]); AGR.TOC("check","A9G1-check1",[66671310]); # S9 AGR.GRP("alt","A9","S9"); AGR.TOC("perm","S9G1-p9B0.m",[122091756,24861253]); # O10m2 AGR.GRP("clas","O10m2","O10m2"); AGR.TOC("perm","O10m2G1-p495B0.m",[-28308088,-22761395]); AGR.TOC("perm","O10m2G1-p528B0.m",[70479596,-62621089]); AGR.TOC("matff","O10m2G1-f2r10B0.m",[-91875246,-117747323]); AGR.TOC("matff","O10m2G1-f2r44B0.m",[-36564213,114587901]); AGR.TOC("matff","O10m2G1-f2r100B0.m",[92769221,-44362353]); AGR.TOC("matff","O10m2G1-f2r164B0.m",[18230970,48739712]); AGR.TOC("matff","O10m2G1-f2r670B0.m",[61340105,69740282]); AGR.TOC("matff","O10m2G1-f4r16aB0.m",[61178056,-5229430]); AGR.TOC("matff","O10m2G1-f4r16bB0.m",[128197535,31596352]); AGR.TOC("matint","O10m2G1-Zr154B0.g",[-57005457]); AGR.TOC("matint","O10m2G1-Zr187B0.g",[-100202868]); # O10m2d2 AGR.GRP("clas","O10m2","O10m2d2"); AGR.TOC("perm","O10m2d2G1-p495B0.m",[82167210,-72434757]); AGR.TOC("perm","O10m2d2G1-p528B0.m",[-117006734,-28217316]); AGR.TOC("perm","O10m2d2G1-p104448B0.m",[50997897,113123073]); AGR.TOC("matff","O10m2d2G1-f2r10B0.m",[-2306716,-13453481]); AGR.TOC("matff","O10m2d2G1-f2r32B0.m",[32911303,-129767206]); AGR.TOC("matff","O10m2d2G1-f2r44B0.m",[-104143658,103914544]); AGR.TOC("matff","O10m2d2G1-f2r100B0.m",[100488452,-14739345]); AGR.TOC("matff","O10m2d2G1-f2r164B0.m",[-75666222,-60099061]); AGR.TOC("matff","O10m2d2G1-f2r670B0.m",[-126418327,88563704]); # O10p2 AGR.GRP("clas","O10p2","O10p2"); AGR.TOC("perm","O10p2G1-p496B0.m",[44844370,37744812]); AGR.TOC("perm","O10p2G1-p527B0.m",[-115724540,71638127]); AGR.TOC("perm","O10p2G1-p2295aB0.m",[38660726,-113571137]); AGR.TOC("perm","O10p2G1-p2295bB0.m",[-48288307,-4515067]); AGR.TOC("perm","O10p2G1-p19840B0.m",[-55658699,-102645640]); AGR.TOC("perm","O10p2G1-p23715B0.m",[-19740974,108222650]); AGR.TOC("perm","O10p2G1-p39680B0.m",[-6853718,-83381012]); AGR.TOC("matff","O10p2G1-f2r10B0.m",[1103290,23925280]); AGR.TOC("matff","O10p2G1-f2r16aB0.m",[-120091825,-123583018]); AGR.TOC("matff","O10p2G1-f2r16bB0.m",[-12069847,-35735047]); AGR.TOC("matff","O10p2G1-f2r44B0.m",[110527978,-100120992]); AGR.TOC("matff","O10p2G1-f2r100B0.m",[-30089365,57879096]); AGR.TOC("matff","O10p2G1-f2r144aB0.m",[110645650,29636318]); AGR.TOC("matff","O10p2G1-f2r144bB0.m",[-30221860,44280011]); AGR.TOC("matff","O10p2G1-f2r164B0.m",[-22042842,30232047]); AGR.TOC("matff","O10p2G1-f2r320B0.m",[75333417,129740052]); AGR.TOC("matff","O10p2G1-f2r416aB0.m",[-108205687,102236385]); AGR.TOC("matff","O10p2G1-f2r416bB0.m",[101254524,51323514]); AGR.TOC("matff","O10p2G1-f2r670B0.m",[-130973724,2357046]); AGR.TOC("matff","O10p2G1-f3r155B0.m",[17052865,-30642849]); AGR.TOC("matff","O10p2G1-f3r185B0.m",[108681429,77852925]); AGR.TOC("matff","O10p2G1-f3r868B0.m",[-18367210,-8755148]); AGR.TOC("matint","O10p2G1-Zr155B0.g",[97641513]); AGR.TOC("matint","O10p2G1-Zr186B0.g",[-108863655]); AGR.TOC("maxes","O10p2G1-max1W1",[-101864758]); AGR.TOC("maxes","O10p2G1-max2W1",[-92187776]); AGR.TOC("maxes","O10p2G1-max3W1",[38781566]); AGR.TOC("maxes","O10p2G1-max4W1",[35823876]); AGR.TOC("out","O10p2G1-aW1",[-14956717]); # O10p2d2 AGR.GRP("clas","O10p2","O10p2d2"); AGR.TOC("perm","O10p2d2G1-p496B0.m",[126131529,-42810830]); AGR.TOC("perm","O10p2d2G1-p527B0.m",[109880158,41785888]); AGR.TOC("perm","O10p2d2G1-p4590B0.m",[-109285430,6021856]); AGR.TOC("matff","O10p2d2G1-f2r10B0.m",[98286660,84434027]); AGR.TOC("matff","O10p2d2G1-f2r32B0.m",[-30928128,-93439691]); AGR.TOC("matff","O10p2d2G1-f2r44B0.m",[104439943,58205560]); AGR.TOC("matff","O10p2d2G1-f2r100B0.m",[-11949612,133828120]); AGR.TOC("matff","O10p2d2G1-f2r164B0.m",[-83317851,-96030590]); AGR.TOC("matff","O10p2d2G1-f2r288B0.m",[-33354065,41077158]); AGR.TOC("matff","O10p2d2G1-f2r320B0.m",[-105116064,-3698751]); AGR.TOC("matff","O10p2d2G1-f2r670B0.m",[74131930,11768729]); AGR.TOC("matff","O10p2d2G1-f2r832B0.m",[-29701783,115777543]); AGR.TOC("pres","O10p2d2G1-P1",[-125096160]); # 2O73 AGR.GRP("clas","O73","2O73"); AGR.TOC("perm","2O73G1-p2160B0.m",[-52076683,-20333004]); AGR.TOC("matff","2O73G1-f3r8B0.m",[127365476,25520583]); # 3O73 AGR.GRP("clas","O73","3O73"); AGR.TOC("matff","3O73G1-f4r27aB0.m",[-46449646,-117029484]); # 3O73d2 AGR.GRP("clas","O73","3O73d2"); AGR.TOC("matff","3O73d2G1-f2r54B0.m",[-90690899,22318719]); # O73 AGR.GRP("clas","O73","O73"); AGR.TOC("perm","O73G1-p351B0.m",[82717158,59833498]); AGR.TOC("perm","O73G1-p364B0.m",[44293817,98554937]); AGR.TOC("perm","O73G1-p378B0.m",[87776874,53481543]); AGR.TOC("perm","O73G1-p1080aB0.m",[-42599020,-36616958]); AGR.TOC("perm","O73G1-p1080bB0.m",[132529762,60964145]); AGR.TOC("perm","O73G1-p1120B0.m",[126618791,36524551]); AGR.TOC("perm","O73G1-p3640B0.m",[-110156981,121387707]); AGR.TOC("matff","O73G1-f2r78B0.m",[6999211,89780880]); AGR.TOC("matff","O73G1-f2r90B0.m",[-23762673,39638601]); AGR.TOC("matff","O73G1-f2r104B0.m",[-89855475,46063845]); AGR.TOC("matff","O73G1-f2r260aB0.m",[-99269314,702557]); AGR.TOC("matff","O73G1-f2r260bB0.m",[-99269314,-47011243]); AGR.TOC("matff","O73G1-f3r7B0.m",[-73121160,-21443771]); AGR.TOC("matff","O73G1-f3r21B0.m",[82240744,21396837]); AGR.TOC("matff","O73G1-f3r27B0.m",[-47629963,-128106566]); AGR.TOC("matff","O73G1-f3r35B0.m",[23866511,-48444403]); AGR.TOC("matff","O73G1-f3r63B0.m",[99738307,-113235112]); AGR.TOC("matff","O73G1-f3r189aB0.m",[32603443,35965043]); AGR.TOC("matff","O73G1-f3r309B0.m",[82194057,63427926]); AGR.TOC("matff","O73G1-f5r78B0.m",[51985420,113524193]); AGR.TOC("matff","O73G1-f7r78B0.m",[-46420014,-13996426]); AGR.TOC("matff","O73G1-f13r78B0.m",[-59693717,-91113521]); AGR.TOC("matint","O73G1-Zr78B0.g",[-90841402]); AGR.TOC("matint","O73G1-Zr91B0.g",[-89128615]); AGR.TOC("matint","O73G1-Zr105B0.g",[-101644473]); AGR.TOC("matint","O73G1-Zr168B0.g",[66310041]); AGR.TOC("matint","O73G1-Zr182B0.g",[25658348]); AGR.TOC("matint","O73G1-Zr195B0.g",[131461461]); # O73d2 AGR.GRP("clas","O73","O73d2"); AGR.TOC("perm","O73d2G1-p351B0.m",[-10725195,127224107]); AGR.TOC("matff","O73d2G1-f2r78B0.m",[-54160091,89711834]); AGR.TOC("matff","O73d2G1-f3r7B0.m",[-40632628,119474507]); # O8m2 AGR.GRP("clas","O8m2","O8m2"); AGR.TOC("perm","O8m2G1-p119B0.m",[-24365065,-85295695]); AGR.TOC("perm","O8m2G1-p136B0.m",[-84196655,23106023]); AGR.TOC("perm","O8m2G1-p765B0.m",[81333754,-50808634]); AGR.TOC("perm","O8m2G1-p1071B0.m",[133774932,-90078008]); AGR.TOC("perm","O8m2G1-p1632B0.m",[-99000947,-108986222]); AGR.TOC("perm","O8m2G1-p24192B0.m",[-126775412,28682284]); AGR.TOC("perm","O8m2G1-p45696B0.m",[130548056,-93532377]); AGR.TOC("matff","O8m2G1-f2r8B0.m",[-87980185,127418639]); AGR.TOC("matff","O8m2G1-f2r26B0.m",[67804363,-130270035]); AGR.TOC("matff","O8m2G1-f2r48B0.m",[-14063248,4273112]); AGR.TOC("matff","O8m2G1-f3r34B0.m",[-29666937,92656759]); AGR.TOC("matff","O8m2G1-f3r50B0.m",[-15689624,-98254103]); AGR.TOC("matff","O8m2G1-f4r8bB0.m",[-13058890,-119239206]); AGR.TOC("matff","O8m2G1-f4r8cB0.m",[70013215,-12653524]); AGR.TOC("matff","O8m2G1-f4r48bB0.m",[-80990745,-24164226]); AGR.TOC("matff","O8m2G1-f4r48cB0.m",[97513962,82777957]); AGR.TOC("matff","O8m2G1-f5r34B0.m",[15034639,90818541]); AGR.TOC("matff","O8m2G1-f5r51B0.m",[125362755,88918352]); AGR.TOC("matff","O8m2G1-f5r84B0.m",[-111056563,24817596]); AGR.TOC("matff","O8m2G1-f7r33B0.m",[44085251,37064396]); AGR.TOC("matff","O8m2G1-f7r51B0.m",[87717115,-65218449]); AGR.TOC("matff","O8m2G1-f7r84B0.m",[-58834030,96414922]); AGR.TOC("matff","O8m2G1-f17r34B0.m",[-122498723,-76593032]); AGR.TOC("matff","O8m2G1-f17r51B0.m",[-19701269,38579551]); AGR.TOC("matff","O8m2G1-f17r83B0.m",[70197507,91520986]); AGR.TOC("matint","O8m2G1-Zr34B0.g",[12291934]); AGR.TOC("matint","O8m2G1-Zr51B0.g",[114705452]); AGR.TOC("matint","O8m2G1-Zr84B0.g",[-49115406]); AGR.TOC("matint","O8m2G1-Zr204aB0.g",[-545048]); AGR.TOC("matint","O8m2G1-Zr204bB0.g",[90706063]); AGR.TOC("cyclic","O8m2G1-cycW1",[75038654]); AGR.TOC("cyc2ccl","O8m2G1cycW1-cclsW1",[-130617321]); # O8m2d2 AGR.GRP("clas","O8m2","O8m2d2"); AGR.TOC("perm","O8m2d2G1-p119B0.m",[-6041009,115888367]); AGR.TOC("matff","O8m2d2G1-f2r8B0.m",[46258515,-78987090]); AGR.TOC("matff","O8m2d2G1-f3r34B0.m",[-120358158,-35720310]); AGR.TOC("matff","O8m2d2G1-f3r50B0.m",[-81409905,-77731908]); AGR.TOC("cyclic","O8m2d2G1-cycW1",[84687561]); AGR.TOC("cyc2ccl","O8m2d2G1cycW1-cclsW1",[112814052]); # 2O8m3 AGR.GRP("clas","O8m3","2O8m3"); AGR.TOC("matff","2O8m3G1-f3r16B0.m",[-47700701,134124282]); AGR.TOC("matff","2O8m3G1-f9r8aB0.m",[-98620704,-118542521]); AGR.TOC("matff","2O8m3G1-f9r8bB0.m",[4224939,-14594253]); # 2O8m3d2a AGR.GRP("clas","O8m3","2O8m3d2a"); AGR.TOC("matff","2O8m3d2aG1-f3r16B0.m",[-51454663,-42616726]); # O8m3 AGR.GRP("clas","O8m3","O8m3"); AGR.TOC("perm","O8m3G1-p1066B0.m",[-37177084,99457625]); AGR.TOC("matff","O8m3G1-f3r8B0.m",[-35438651,20098849]); AGR.TOC("matint","O8m3G1-Zr246B0.g",[-58311842]); # O8m3D8 AGR.GRP("clas","O8m3","O8m3D8"); AGR.TOC("matff","O8m3D8G1-f3r8B0.m",[119493405,9420304]); # O8m3V4 AGR.GRP("clas","O8m3","O8m3V4"); AGR.TOC("perm","O8m3V4G1-p1066B0.m",[-125437571,-83299227]); AGR.TOC("matff","O8m3V4G1-f3r16B0.m",[-21513338,-61914400]); # O8m3d2a AGR.GRP("clas","O8m3","O8m3d2a"); AGR.TOC("perm","O8m3d2aG1-p1066B0.m",[101936687,-112453392]); AGR.TOC("matff","O8m3d2aG1-f3r8B0.m",[30174304,84036930]); # O8m3d2c AGR.GRP("clas","O8m3","O8m3d2c"); AGR.TOC("perm","O8m3d2cG1-p1066B0.m",[50468861,-130105713]); AGR.TOC("perm","O8m3d2cG2-p1066B0.m",[42767122,-112906276]); AGR.TOC("matff","O8m3d2cG1-f3r8aB0.m",[16162087,-12619273]); # O8p2 AGR.GRP("clas","O8p2","O8p2"); AGR.TOC("matint","O8p2G1-Zr28B0.g",[-80118051]); AGR.TOC("matint","O8p2G1-Zr35aB0.g",[-26379578]); AGR.TOC("matint","O8p2G1-Zr35bB0.g",[-117206642]); AGR.TOC("matint","O8p2G1-Zr35cB0.g",[123375245]); AGR.TOC("matint","O8p2G1-Zr50B0.g",[130935801]); AGR.TOC("matint","O8p2G1-Zr84aB0.g",[62823799]); AGR.TOC("matint","O8p2G1-Zr84bB0.g",[-90117537]); AGR.TOC("matint","O8p2G1-Zr84cB0.g",[-34245370]); AGR.TOC("matint","O8p2G1-Zr175B0.g",[98193599]); AGR.TOC("matint","O8p2G1-Zr210B0.g",[107071400]); AGR.TOC("matint","O8p2G1-Zr210aB0.g",[-77879394]); AGR.TOC("matint","O8p2G1-Zr210bB0.g",[-61543489]); AGR.TOC("matint","O8p2G1-Zr210cB0.g",[-67812962]); # O8p2d2 AGR.GRP("clas","O8p2","O8p2d2"); AGR.TOC("pres","O8p2d2G1-P1",[115334752]); # 2O8p3 AGR.GRP("clas","O8p3","2O8p3"); AGR.TOC("perm","2O8p3G1-p2160aB0.m",[104589607,120500317]); AGR.TOC("perm","2O8p3G1-p2160bB0.m",[-59887176,-111333114]); AGR.TOC("perm","2O8p3G1-p2240B0.m",[-29160158,-93829527]); AGR.TOC("matff","2O8p3G1-f3r8B0.m",[126054580,-51595733]); AGR.TOC("matff","2O8p3G1-f3r56B0.m",[34510739,42120628]); AGR.TOC("matff","2O8p3G1-f3r104B0.m",[112739598,125768182]); AGR.TOC("matff","2O8p3G1-f3r224aB0.m",[53015969,-35489900]); AGR.TOC("matff","2O8p3G1-f3r224bB0.m",[-46687382,107828721]); AGR.TOC("matff","2O8p3G1-f3r384B0.m",[-87738697,93596151]); # 4O8p3S4 AGR.GRP("clas","O8p3","4O8p3S4"); AGR.TOC("matff","4O8p3S4G2-f3r24B0.m",[-37088614,-5932360]); # O8p3 AGR.GRP("clas","O8p3","O8p3"); AGR.TOC("perm","O8p3G1-p1080aB0.m",[76405715,119208768]); AGR.TOC("perm","O8p3G1-p1080bB0.m",[-68159021,33166699]); AGR.TOC("perm","O8p3G1-p1080cB0.m",[17260632,51712891]); AGR.TOC("perm","O8p3G1-p1080dB0.m",[-125607236,-30759303]); AGR.TOC("perm","O8p3G1-p1080eB0.m",[74691432,-55283348]); AGR.TOC("perm","O8p3G1-p1080fB0.m",[54228347,106065431]); AGR.TOC("perm","O8p3G1-p1120aB0.m",[52313105,-86975260]); AGR.TOC("perm","O8p3G1-p1120bB0.m",[-121913929,-24963882]); AGR.TOC("perm","O8p3G1-p1120cB0.m",[96067467,51334109]); AGR.TOC("perm","O8p3G1-p28431aB0.m",[48610439,-17098280]); AGR.TOC("perm","O8p3G1-p28431bB0.m",[102357116,-2915723]); AGR.TOC("perm","O8p3G1-p28431cB0.m",[-95236754,131710927]); AGR.TOC("perm","O8p3G1-p28431dB0.m",[103757910,-111662481]); AGR.TOC("perm","O8p3G1-p36400B0.m",[55974738,124609534]); AGR.TOC("matff","O8p3G1-f2r298B0.m",[-80048270,12965683]); AGR.TOC("matff","O8p3G1-f3r28B0.m",[-38352800,-50831561]); AGR.TOC("matff","O8p3G1-f3r35aB0.m",[-12113194,-122443902]); AGR.TOC("matff","O8p3G1-f3r35bB0.m",[-38499650,86939687]); AGR.TOC("matff","O8p3G1-f3r35cB0.m",[-49437023,-57407446]); AGR.TOC("matff","O8p3G1-f3r195B0.m",[-81944772,-115100921]); AGR.TOC("matff","O8p3G1-f3r322B0.m",[-110644111,-106498308]); AGR.TOC("matff","O8p3G1-f3r518aB0.m",[90564527,13554317]); AGR.TOC("matff","O8p3G1-f3r518bB0.m",[24959864,-28716903]); AGR.TOC("matff","O8p3G1-f3r518cB0.m",[-90638633,-117911955]); AGR.TOC("matff","O8p3G1-f3r567aB0.m",[86810431,652709]); AGR.TOC("matff","O8p3G1-f3r567bB0.m",[-18854913,10740889]); AGR.TOC("matff","O8p3G1-f3r567cB0.m",[-72848256,116897648]); AGR.TOC("matff","O8p3G1-f5r300B0.m",[-96518534,58939546]); AGR.TOC("matff","O8p3G1-f7r299B0.m",[49912950,109610342]); AGR.TOC("matff","O8p3G1-f13r300B0.m",[-110252186,49072647]); AGR.TOC("maxes","O8p3G1-max1W1",[2216648]); AGR.TOC("maxes","O8p3G1-max2W1",[-28575246]); AGR.TOC("maxes","O8p3G1-max7W1",[57517580]); AGR.TOC("maxes","O8p3G1-max10W1",[-15154337]); AGR.TOC("maxes","O8p3G1-max11W1",[-131676141]); AGR.TOC("maxes","O8p3G1-max12W1",[41998115]); AGR.TOC("maxes","O8p3G1-max13W1",[-129259704]); # O8p3S4 AGR.GRP("clas","O8p3","O8p3S4"); AGR.TOC("perm","O8p3S4G2-p3360B0.m",[-73519604,92311368]); AGR.TOC("perm","O8p3S4G2-p6480B0.m",[-96733550,-79748109]); # 2O93 AGR.GRP("clas","O93","2O93"); AGR.TOC("matff","2O93G1-f3r16B0.m",[-95326868,58590017]); # 2O93d2 AGR.GRP("clas","O93","2O93d2"); AGR.TOC("matff","2O93d2G1-f3r16B0.m",[77369705,47492252]); # O93 AGR.GRP("clas","O93","O93"); AGR.TOC("matff","O93G1-f3r9B0.m",[129442029,88034840]); # O93d2 AGR.GRP("clas","O93","O93d2"); AGR.TOC("matff","O93d2G1-f3r9B0.m",[-79044930,88034840]); # S102 AGR.GRP("clas","S102","S102"); AGR.TOC("perm","S102G1-p496B0.m",[19286218,-67519190]); AGR.TOC("perm","S102G1-p528B0.m",[-38467752,-50310250]); AGR.TOC("perm","S102G1-p992B0.m",[-12757228,-113671661]); AGR.TOC("perm","S102G1-p1023B0.m",[98443786,53485020]); AGR.TOC("perm","S102G1-p1056B0.m",[71933464,-92710051]); AGR.TOC("matff","S102G1-f2r10B0.m",[124085043,-13453481]); AGR.TOC("matff","S102G1-f2r32B0.m",[-49264749,-91273828]); AGR.TOC("matff","S102G1-f2r44B0.m",[36644287,91403710]); AGR.TOC("matff","S102G1-f2r100B0.m",[-132339785,-133660920]); AGR.TOC("matff","S102G1-f2r164B0.m",[-107118642,102810791]); AGR.TOC("matff","S102G1-f3r155B0.m",[-92478285,76933694]); AGR.TOC("matff","S102G1-f5r155B0.m",[4586104,-94557375]); AGR.TOC("matff","S102G1-f7r155B0.m",[29485763,62763193]); AGR.TOC("matff","S102G1-f11r155B0.m",[8136867,88782646]); AGR.TOC("matff","S102G1-f17r155B0.m",[63442455,-63872646]); AGR.TOC("matff","S102G1-f31r155B0.m",[87124238,112546228]); AGR.TOC("matint","S102G1-Zr155B0.g",[108190402]); AGR.TOC("matint","S102G1-Zr187B0.g",[93560770]); AGR.TOC("matint","S102G1-Zr341B0.g",[48503668]); AGR.TOC("find","S102G1-find1",[129550160]); AGR.TOC("check","S102G1-check1",[-13486801]); AGR.TOC("pres","S102G1-P1",[-55394161]); # 2S411 AGR.GRP("clas","S411","2S411"); AGR.TOC("matff","2S411G1-f11r4B0.m",[-62133377,-81234251]); # S411 AGR.GRP("clas","S411","S411"); AGR.TOC("matint","S411G1-Zr122B0.g",[50315406]); # 2S413 AGR.GRP("clas","S413","2S413"); AGR.TOC("matff","2S413G1-f13r4B0.m",[-26262853,11056926]); # S413 AGR.GRP("clas","S413","S413"); AGR.TOC("matint","S413G1-Zr170B0.g",[77408384]); # 2S417 AGR.GRP("clas","S417","2S417"); AGR.TOC("matff","2S417G1-f17r4B0.m",[-81277635,125804584]); # S417 AGR.GRP("clas","S417","S417"); AGR.TOC("matint","S417G1-Zr290B0.g",[-72216373]); AGR.TOC("find","S417G1-find1",[-18889750]); AGR.TOC("check","S417G1-check1",[72575667]); # 2S419 AGR.GRP("clas","S419","2S419"); AGR.TOC("matff","2S419G1-f19r4B0.m",[64679712,-133457148]); # S419 AGR.GRP("clas","S419","S419"); AGR.TOC("matint","S419G1-Zr362B0.g",[48497725]); # S44 AGR.GRP("clas","S44","S44"); AGR.TOC("perm","S44G1-p85aB0.m",[-4049736,98956541]); AGR.TOC("perm","S44G1-p120bB0.m",[-55160714,-5595531]); AGR.TOC("matff","S44G1-f3r18B0.m",[114490907,99206197]); AGR.TOC("matff","S44G1-f4r4cB0.m",[-66916166,-36229155]); AGR.TOC("matff","S44G1-f5r18B0.m",[98095481,96944879]); AGR.TOC("matff","S44G1-f5r33bB0.m",[20921094,104905736]); AGR.TOC("matff","S44G1-f17r18B0.m",[8287404,24636442]); AGR.TOC("matint","S44G1-Zr18B0.g",[-92216193]); AGR.TOC("matint","S44G1-Zr34aB0.g",[-114599776]); AGR.TOC("matint","S44G1-Zr34bB0.g",[31318568]); AGR.TOC("matint","S44G1-Zr50B0.g",[82053304]); AGR.TOC("matint","S44G1-Zr50aB0.g",[127917418]); AGR.TOC("matint","S44G1-Zr85B0.g",[-60331055]); AGR.TOC("matint","S44G1-Zr85aB0.g",[-55355440]); AGR.TOC("matint","S44G1-Zr85bB0.g",[-87893036]); AGR.TOC("matint","S44G1-Zr102B0.g",[-132149009]); AGR.TOC("matint","S44G1-Zr102aB0.g",[-16877799]); AGR.TOC("matint","S44G1-Zr102bB0.g",[-74561258]); AGR.TOC("matint","S44G1-Zr153B0.g",[15162004]); AGR.TOC("matint","S44G1-Zr408aB0.g",[-23986942]); AGR.TOC("matint","S44G1-Zr408bB0.g",[-41782718]); AGR.TOC("matint","S44G1-Zr900B0.g",[-56344576]); AGR.TOC("matalg","S44G1-Ar51aB0.g",[-128202902]); AGR.TOC("matalg","S44G1-Ar51bB0.g",[-131177657]); AGR.TOC("matalg","S44G1-Ar204aB0.g",[13435942]); AGR.TOC("matalg","S44G1-Ar204bB0.g",[-111688591]); AGR.TOC("maxes","S44G1-max1W1",[-110197138]); AGR.TOC("maxes","S44G1-max2W1",[60156120]); AGR.TOC("maxes","S44G1-max3W1",[64975797]); AGR.TOC("maxes","S44G1-max4W1",[-4819000]); AGR.TOC("maxes","S44G1-max5W1",[-40888439]); AGR.TOC("maxes","S44G1-max6W1",[49264090]); AGR.TOC("maxes","S44G1-max7W1",[41124433]); AGR.TOC("check","S44G1-check1",[25741154]); # S44d2 AGR.GRP("clas","S44","S44d2"); AGR.TOC("matff","S44d2G1-f2r8aB0.m",[84946852,69419253]); # S44d4 AGR.GRP("clas","S44","S44d4"); AGR.TOC("perm","S44d4G1-p170B0.m",[40288287,-41064186]); AGR.TOC("matff","S44d4G1-f2r16B0.m",[14450064,-31042563]); # 2S45 AGR.GRP("clas","S45","2S45"); AGR.TOC("perm","2S45G1-p624B0.m",[22743163,-27127675]); AGR.TOC("matff","2S45G1-f5r4B0.m",[88096190,36430521]); # S45 AGR.GRP("clas","S45","S45"); AGR.TOC("perm","S45G1-p156aB0.m",[-53395980,-100717682]); AGR.TOC("perm","S45G1-p156bB0.m",[-72278991,40973879]); AGR.TOC("perm","S45G1-p300B0.m",[-110880512,66617936]); AGR.TOC("perm","S45G1-p325B0.m",[41580917,-93531917]); AGR.TOC("matff","S45G1-f4r12aB0.m",[-16820011,-122202833]); AGR.TOC("matff","S45G1-f5r5B0.m",[-132964163,87158107]); AGR.TOC("matff","S45G1-f9r13B0.m",[-64769881,16766469]); AGR.TOC("matint","S45G1-Zr40B0.g",[-38090816]); AGR.TOC("matint","S45G1-Zr65aB0.g",[-39598817]); AGR.TOC("matint","S45G1-Zr65bB0.g",[114339701]); AGR.TOC("matint","S45G1-Zr90B0.g",[-20169873]); AGR.TOC("matint","S45G1-Zr104aB0.g",[76838380]); AGR.TOC("matint","S45G1-Zr104bB0.g",[-9158621]); AGR.TOC("matint","S45G1-Zr104cB0.g",[-116564476]); AGR.TOC("matint","S45G1-Zr130B0.g",[83528461]); AGR.TOC("matint","S45G1-Zr156B0.g",[-22613123]); AGR.TOC("matint","S45G1-Zr416B0.g",[-132297784]); AGR.TOC("matalg","S45G1-Ar13aB0.g",[82785093]); AGR.TOC("matalg","S45G1-Ar13bB0.g",[17930268]); AGR.TOC("maxes","S45G1-max1W1",[-72800046]); AGR.TOC("maxes","S45G1-max2W1",[-110892584]); AGR.TOC("maxes","S45G1-max3W1",[1319277]); AGR.TOC("maxes","S45G1-max4W1",[92563265]); AGR.TOC("maxes","S45G1-max5W1",[-57392860]); AGR.TOC("maxes","S45G1-max6W1",[19135983]); AGR.TOC("maxes","S45G1-max7W1",[-11057337]); AGR.TOC("maxes","S45G1-max8W1",[25577408]); AGR.TOC("check","S45G1-check1",[-128114345]); # S45d2 AGR.GRP("clas","S45","S45d2"); AGR.TOC("matff","S45d2G1-f2r24B0.m",[28899340,92326707]); AGR.TOC("matff","S45d2G1-f2r40B0.m",[78563714,19245896]); AGR.TOC("matff","S45d2G1-f2r64B0.m",[-11818053,88475813]); AGR.TOC("matff","S45d2G1-f2r104aB0.m",[-31202775,-4732993]); AGR.TOC("matff","S45d2G1-f2r104bB0.m",[-45827951,-77407041]); AGR.TOC("matff","S45d2G1-f3r26B0.m",[-84226306,-131226197]); AGR.TOC("matff","S45d2G1-f5r5B0.m",[22450810,28252478]); # 2S47 AGR.GRP("clas","S47","2S47"); AGR.TOC("matff","2S47G1-f7r4B0.m",[-41072448,25081416]); # 2S47d2 AGR.GRP("clas","S47","2S47d2"); AGR.TOC("matff","2S47d2G1-f7r4B0.m",[-9937153,25081416]); # S47 AGR.GRP("clas","S47","S47"); AGR.TOC("perm","S47G1-p400aB0.m",[8389418,-67580392]); AGR.TOC("perm","S47G1-p400bB0.m",[-63101719,-88778677]); AGR.TOC("perm","S47G1-p1176B0.m",[-81024524,58885869]); AGR.TOC("perm","S47G1-p1225B0.m",[1082744,-130482058]); AGR.TOC("matff","S47G1-f7r5B0.m",[14910708,-106883497]); AGR.TOC("matint","S47G1-Zr126B0.g",[-83694360]); AGR.TOC("matint","S47G1-Zr175aB0.g",[127121412]); AGR.TOC("matint","S47G1-Zr175bB0.g",[90115848]); AGR.TOC("matint","S47G1-Zr224B0.g",[110716248]); AGR.TOC("matalg","S47G1-Ar25aB0.g",[18948981]); AGR.TOC("matalg","S47G1-Ar25bB0.g",[-8439203]); AGR.TOC("check","S47G1-check1",[-116457689]); # S47d2 AGR.GRP("clas","S47","S47d2"); AGR.TOC("perm","S47d2G1-p400aB0.m",[109276459,71668262]); AGR.TOC("perm","S47d2G1-p400bB0.m",[17015866,-56639780]); AGR.TOC("matff","S47d2G1-f7r5B0.m",[55105936,-106883497]); # 2S49 AGR.GRP("clas","S49","2S49"); AGR.TOC("matff","2S49G1-f9r4B0.m",[71948431,7962193]); # S49 AGR.GRP("clas","S49","S49"); AGR.TOC("matint","S49G1-Zr41aB0.g",[13872774]); AGR.TOC("matint","S49G1-Zr41bB0.g",[-48292814]); AGR.TOC("check","S49G1-check1",[49518488]); # 2S62 AGR.GRP("clas","S62","2S62"); AGR.TOC("perm","2S62G1-p240aB0.m",[-56416490,105375861]); AGR.TOC("perm","2S62G1-p240bB0.m",[-54217874,-60810975]); AGR.TOC("perm","2S62G1-p480B0.m",[-14522420,-52304442]); AGR.TOC("perm","2S62G1-p1920B0.m",[-92122712,-128892606]); AGR.TOC("perm","2S62G1-p2160B0.m",[45205904,-45822516]); AGR.TOC("matff","2S62G1-f3r8B0.m",[-44566694,-103259130]); AGR.TOC("matff","2S62G1-f3r48B0.m",[-79973475,-86413405]); AGR.TOC("matff","2S62G1-f3r56aB0.m",[-41596615,50826804]); AGR.TOC("matff","2S62G1-f3r56bB0.m",[-89693038,-32511580]); AGR.TOC("matff","2S62G1-f3r104B0.m",[101455940,101636538]); AGR.TOC("matff","2S62G1-f3r272B0.m",[105650268,-120256780]); AGR.TOC("matint","2S62G1-Zr8B0.g",[11283237]); AGR.TOC("pres","2S62G1-P1",[35544777]); # S62 AGR.GRP("clas","S62","S62"); AGR.TOC("perm","S62G1-p28B0.m",[110976306,76931350]); AGR.TOC("perm","S62G1-p36B0.m",[48803935,71864601]); AGR.TOC("perm","S62G1-p56B0.m",[-59385519,-91987812]); AGR.TOC("perm","S62G1-p63B0.m",[-107037313,69320616]); AGR.TOC("perm","S62G1-p72B0.m",[60101593,21113958]); AGR.TOC("perm","S62G1-p120B0.m",[-65949187,-39483980]); AGR.TOC("perm","S62G1-p126B0.m",[77733787,61299713]); AGR.TOC("perm","S62G1-p135B0.m",[133224275,-56905045]); AGR.TOC("perm","S62G1-p240B0.m",[14429414,108846365]); AGR.TOC("perm","S62G1-p288B0.m",[112742404,-128942657]); AGR.TOC("perm","S62G1-p315B0.m",[-4879533,-105655093]); AGR.TOC("perm","S62G1-p336B0.m",[46625581,96365145]); AGR.TOC("perm","S62G1-p378aB0.m",[91351044,-22337672]); AGR.TOC("perm","S62G1-p378bB0.m",[121182969,80992080]); AGR.TOC("perm","S62G1-p960B0.m",[73213424,-115372799]); AGR.TOC("matff","S62G1-f2r6B0.m",[19312218,-22867308]); AGR.TOC("matff","S62G1-f2r8B0.m",[39687452,69277150]); AGR.TOC("matff","S62G1-f2r14B0.m",[-39020736,19866721]); AGR.TOC("matff","S62G1-f2r48B0.m",[-129537517,119805676]); AGR.TOC("matff","S62G1-f2r64B0.m",[130963387,-97154552]); AGR.TOC("matff","S62G1-f2r112B0.m",[-37025041,115526766]); AGR.TOC("matff","S62G1-f2r512B0.m",[-42832724,-21227198]); AGR.TOC("matff","S62G1-f3r7B0.m",[-39696685,-56075794]); AGR.TOC("matff","S62G1-f3r14B0.m",[84246854,-122001009]); AGR.TOC("matff","S62G1-f3r21B0.m",[-71040565,54822646]); AGR.TOC("matff","S62G1-f3r27B0.m",[61965192,-133825964]); AGR.TOC("matff","S62G1-f3r34B0.m",[-84696386,-15969451]); AGR.TOC("matff","S62G1-f3r35B0.m",[83314843,-58488375]); AGR.TOC("matff","S62G1-f3r49B0.m",[-81505603,76099653]); AGR.TOC("matff","S62G1-f3r91B0.m",[-61382880,118495085]); AGR.TOC("matff","S62G1-f3r98B0.m",[-92225131,-98952991]); AGR.TOC("matff","S62G1-f3r189aB0.m",[-94283157,28028612]); AGR.TOC("matff","S62G1-f3r189bB0.m",[31083669,51585246]); AGR.TOC("matff","S62G1-f3r189cB0.m",[-101055873,-58489210]); AGR.TOC("matff","S62G1-f3r196B0.m",[13250675,-109876925]); AGR.TOC("matff","S62G1-f3r405B0.m",[-55323738,86907721]); AGR.TOC("matint","S62G1-Zr7B0.g",[129664427]); AGR.TOC("matint","S62G1-Zr15B0.g",[-82755504]); AGR.TOC("matint","S62G1-Zr21aB0.g",[55698598]); AGR.TOC("matint","S62G1-Zr21bB0.g",[16632315]); AGR.TOC("matint","S62G1-Zr27B0.g",[116794220]); AGR.TOC("matint","S62G1-Zr35aB0.g",[-53184680]); AGR.TOC("matint","S62G1-Zr35bB0.g",[-96769678]); AGR.TOC("matint","S62G1-Zr56B0.g",[-118308605]); AGR.TOC("matint","S62G1-Zr70B0.g",[116739536]); AGR.TOC("matint","S62G1-Zr84B0.g",[34354222]); AGR.TOC("matint","S62G1-Zr105aB0.g",[44180138]); AGR.TOC("matint","S62G1-Zr105bB0.g",[16356187]); AGR.TOC("matint","S62G1-Zr105cB0.g",[-122949576]); AGR.TOC("matint","S62G1-Zr120B0.g",[-88554122]); AGR.TOC("matint","S62G1-Zr168B0.g",[-109579451]); AGR.TOC("matint","S62G1-Zr189aB0.g",[-76413044]); AGR.TOC("matint","S62G1-Zr189bB0.g",[-130727757]); AGR.TOC("matint","S62G1-Zr189cB0.g",[-127006297]); AGR.TOC("matint","S62G1-Zr210aB0.g",[-8691854]); AGR.TOC("matint","S62G1-Zr210bB0.g",[31690294]); AGR.TOC("matint","S62G1-Zr216B0.g",[-8956410]); AGR.TOC("maxes","S62G1-max1W1",[65571750]); AGR.TOC("maxes","S62G1-max2W1",[-94856361]); AGR.TOC("maxes","S62G1-max3W1",[-20640548]); AGR.TOC("maxes","S62G1-max4W1",[78361775]); AGR.TOC("maxes","S62G1-max5W1",[2207467]); AGR.TOC("maxes","S62G1-max6W1",[-120723562]); AGR.TOC("maxes","S62G1-max7W1",[-37873323]); AGR.TOC("maxes","S62G1-max8W1",[117469055]); AGR.TOC("classes","S62G1-cclsW1",[122548041]); AGR.TOC("cyclic","S62G1-cycW1",[71238045]); AGR.TOC("cyc2ccl","S62G1cycW1-cclsW1",[-58490974]); AGR.TOC("check","S62G1-check1",[25881517]); AGR.TOC("pres","S62G1-P1",[-109008602]); # 2S63 AGR.GRP("clas","S63","2S63"); AGR.TOC("matff","2S63G1-f3r6B0.m",[126789964,91588475]); # 2S63d2 AGR.GRP("clas","S63","2S63d2"); AGR.TOC("perm","2S63d2G1-p728B0.m",[73132286,100183245]); AGR.TOC("matff","2S63d2G1-f3r6B0.m",[25224878,-106581972]); # S63 AGR.GRP("clas","S63","S63"); AGR.TOC("perm","S63G1-p364B0.m",[-118604311,-16543820]); AGR.TOC("perm","S63G1-p1120B0.m",[-104841187,46945405]); AGR.TOC("perm","S63G1-p3640B0.m",[112776586,-63120543]); AGR.TOC("perm","S63G1-p7371B0.m",[-117628514,52928025]); AGR.TOC("matff","S63G1-f2r78B0.m",[-75626185,14759642]); AGR.TOC("matff","S63G1-f4r13aB0.m",[127110748,-48089272]); AGR.TOC("matff","S63G1-f7r13aB0.m",[46515349,10052906]); AGR.TOC("matff","S63G1-f25r13aB0.m",[124735498,59699487]); AGR.TOC("matint","S63G1-Zr105B0.g",[-14551475]); AGR.TOC("matint","S63G1-Zr168B0.g",[-118187547]); AGR.TOC("matint","S63G1-Zr195B0.g",[-42398291]); AGR.TOC("matalg","S63G1-Ar13aB0.g",[89649931]); AGR.TOC("matalg","S63G1-Ar13bB0.g",[23578946]); AGR.TOC("matalg","S63G1-Ar78B0.g",[-103564578]); AGR.TOC("matalg","S63G1-Ar91aB0.g",[110472391]); AGR.TOC("matalg","S63G1-Ar91bB0.g",[-74436229]); AGR.TOC("maxes","S63G1-max1W1",[65463392]); AGR.TOC("maxes","S63G1-max2W1",[-64140193]); AGR.TOC("maxes","S63G1-max4W1",[38624687]); AGR.TOC("maxes","S63G1-max5W1",[68902133]); AGR.TOC("maxes","S63G1-max6W1",[-11400556]); AGR.TOC("maxes","S63G1-max7W1",[3923366]); AGR.TOC("maxes","S63G1-max8W1",[-54178902]); AGR.TOC("maxes","S63G1-max9W1",[32541909]); AGR.TOC("maxes","S63G1-max10W1",[-8454259]); AGR.TOC("maxes","S63G1-max11W1",[-79997220]); # S63d2 AGR.GRP("clas","S63","S63d2"); AGR.TOC("perm","S63d2G1-p364B0.m",[-132668143,-95553371]); AGR.TOC("perm","S63d2G1-p1120B0.m",[-28676748,-78532620]); AGR.TOC("perm","S63d2G1-p3640B0.m",[-65079509,113173068]); AGR.TOC("perm","S63d2G1-p7371B0.m",[-88145812,-44758761]); AGR.TOC("matff","S63d2G1-f2r26B0.m",[6007477,10315021]); AGR.TOC("matff","S63d2G1-f3r13B0.m",[32905713,123187964]); # S65 AGR.GRP("clas","S65","S65"); AGR.TOC("perm","S65G1-p3906B0.m",[102938262,-63570841]); # S82 AGR.GRP("clas","S82","S82"); AGR.TOC("perm","S82G1-p120B0.m",[123689100,68180547]); AGR.TOC("perm","S82G1-p136B0.m",[100902606,-92322247]); AGR.TOC("perm","S82G1-p240B0.m",[-14798042,-44832011]); AGR.TOC("perm","S82G1-p255B0.m",[6989233,-25131992]); AGR.TOC("perm","S82G1-p272B0.m",[12328305,56946681]); AGR.TOC("perm","S82G1-p2295B0.m",[60858670,133484843]); AGR.TOC("perm","S82G1-p5355B0.m",[-8308181,-120195795]); AGR.TOC("matff","S82G1-f2r8B0.m",[56786564,-7169716]); AGR.TOC("matff","S82G1-f2r16B0.m",[42863545,40375752]); AGR.TOC("matff","S82G1-f2r26B0.m",[-23871571,-36710350]); AGR.TOC("matff","S82G1-f2r48B0.m",[-44393766,36116544]); AGR.TOC("matff","S82G1-f3r35B0.m",[75102353,85985046]); AGR.TOC("matff","S82G1-f3r50B0.m",[128010346,-94475218]); AGR.TOC("matff","S82G1-f5r35B0.m",[111491901,6342229]); AGR.TOC("matff","S82G1-f5r51B0.m",[-2439101,80588667]); AGR.TOC("matff","S82G1-f7r35B0.m",[-121858343,9682389]); AGR.TOC("matff","S82G1-f7r51B0.m",[-31942209,67026475]); AGR.TOC("matff","S82G1-f17r35B0.m",[58019619,70088272]); AGR.TOC("matff","S82G1-f17r51B0.m",[106285395,57981536]); AGR.TOC("matint","S82G1-Zr35B0.g",[49754726]); AGR.TOC("matint","S82G1-Zr51B0.g",[20525784]); AGR.TOC("matint","S82G1-Zr85B0.g",[89705460]); AGR.TOC("matint","S82G1-Zr119B0.g",[2402187]); AGR.TOC("matint","S82G1-Zr135B0.g",[-26481830]); # S83 AGR.GRP("clas","S83","S83"); AGR.TOC("perm","S83G1-p3280B0.m",[84149580,48280183]); # 3U311 AGR.GRP("clas","U311","3U311"); AGR.TOC("matff","3U311G1-f121r3aB0.m",[54120386,43906884]); # 3U311d2 AGR.GRP("clas","U311","3U311d2"); AGR.TOC("matff","3U311d2G1-f11r6B0.m",[113731019,-118688209]); # U311 AGR.GRP("clas","U311","U311"); AGR.TOC("perm","U311G1-p1332B0.m",[-2399457,108019957]); AGR.TOC("matff","U311G1-f2r110B0.m",[101216104,41258540]); AGR.TOC("matff","U311G1-f2r370aB0.m",[-130658650,107378127]); AGR.TOC("matff","U311G1-f2r370bB0.m",[-9111653,98555252]); AGR.TOC("matff","U311G1-f2r370cB0.m",[-12366454,-40179653]); AGR.TOC("matff","U311G1-f11r8B0.m",[46418923,50858867]); AGR.TOC("matff","U311G1-f121r10aB0.m",[-64091698,117096846]); AGR.TOC("matint","U311G1-Zr111aB0.g",[115143204]); AGR.TOC("maxes","U311G1-max1W1",[-20720980]); # U311d2 AGR.GRP("clas","U311","U311d2"); AGR.TOC("perm","U311d2G1-p1332B0.m",[26476675,126722475]); AGR.TOC("matff","U311d2G1-f2r110B0.m",[99013278,-64869391]); AGR.TOC("matff","U311d2G1-f11r8B0.m",[-41729110,95592306]); # U313 AGR.GRP("clas","U313","U313"); AGR.TOC("perm","U313G1-p2198B0.m",[-30735975,124277298]); # U316 AGR.GRP("clas","U316","U316"); AGR.TOC("perm","U316G1-p4097B0.m",[18404542,-121295681]); # U33 AGR.GRP("clas","U33","U33"); AGR.TOC("perm","U33G1-p28B0.m",[-55034865,68928245]); AGR.TOC("perm","U33G1-p36B0.m",[-61978097,99471259]); AGR.TOC("perm","U33G1-p63aB0.m",[-37936934,30232937]); AGR.TOC("perm","U33G1-p63bB0.m",[64607497,-91496811]); AGR.TOC("matff","U33G1-f2r6B0.m",[43979968,-57852349]); AGR.TOC("matff","U33G1-f2r14B0.m",[-27564002,-65762614]); AGR.TOC("matff","U33G1-f2r32aB0.m",[-15599009,-66073448]); AGR.TOC("matff","U33G1-f2r32bB0.m",[30375039,71109397]); AGR.TOC("matff","U33G1-f3r7B0.m",[34161718,-131142386]); AGR.TOC("matff","U33G1-f3r27B0.m",[91599748,110775764]); AGR.TOC("matff","U33G1-f7r6B0.m",[-76570342,-90208870]); AGR.TOC("matff","U33G1-f7r7aB0.m",[-22429220,71209399]); AGR.TOC("matff","U33G1-f7r14B0.m",[94291011,-47916281]); AGR.TOC("matff","U33G1-f7r21aB0.m",[121566276,29184447]); AGR.TOC("matff","U33G1-f7r26B0.m",[109924252,130651646]); AGR.TOC("matff","U33G1-f9r3bB0.m",[52521419,-95620519]); AGR.TOC("matff","U33G1-f9r6bB0.m",[71383686,62175400]); AGR.TOC("matff","U33G1-f9r15bB0.m",[121556602,40972269]); AGR.TOC("matff","U33G1-f49r7bB0.m",[11390124,13143680]); AGR.TOC("matff","U33G1-f49r21bB0.m",[2731335,-42935579]); AGR.TOC("matff","U33G1-f49r28aB0.m",[-46082945,-65806978]); AGR.TOC("matint","U33G1-Zr7aB0.g",[92550962]); AGR.TOC("matint","U33G1-Zr14aB0.g",[-106033864]); AGR.TOC("matint","U33G1-Zr14bB0.g",[-58543616]); AGR.TOC("matint","U33G1-Zr21aB0.g",[-102667114]); AGR.TOC("matint","U33G1-Zr27B0.g",[-108905857]); AGR.TOC("matint","U33G1-Zr42B0.g",[124882003]); AGR.TOC("matint","U33G1-Zr56B0.g",[-18347513]); AGR.TOC("matint","U33G1-Zr64B0.g",[83283541]); AGR.TOC("matalg","U33G1-Ar6B0.g",[-20268958]); AGR.TOC("matalg","U33G1-Ar7bB0.g",[-131813230]); AGR.TOC("matalg","U33G1-Ar7cB0.g",[-53716445]); AGR.TOC("matalg","U33G1-Ar21bB0.g",[81149260]); AGR.TOC("matalg","U33G1-Ar21cB0.g",[-27355280]); AGR.TOC("matalg","U33G1-Ar28aB0.g",[50662159]); AGR.TOC("matalg","U33G1-Ar28bB0.g",[72291775]); AGR.TOC("maxes","U33G1-max1W1",[131314018]); AGR.TOC("maxes","U33G1-max2W1",[-40241296]); AGR.TOC("maxes","U33G1-max4W1",[124599054]); # U33d2 AGR.GRP("clas","U33","U33d2"); AGR.TOC("perm","U33d2G1-p63bB0.m",[9178498,132963313]); AGR.TOC("matff","U33d2G1-f2r6B0.m",[-60926122,-82690472]); AGR.TOC("matff","U33d2G1-f2r14B0.m",[64470523,22539985]); AGR.TOC("matff","U33d2G1-f2r64B0.m",[77046502,-89597728]); AGR.TOC("matff","U33d2G1-f3r6B0.m",[-3081183,93673730]); AGR.TOC("matff","U33d2G1-f3r7B0.m",[37685085,71166098]); AGR.TOC("matff","U33d2G1-f3r12B0.m",[-86930532,-69681254]); AGR.TOC("matff","U33d2G1-f3r27B0.m",[55274905,101901216]); AGR.TOC("matff","U33d2G1-f3r30B0.m",[122666219,125434467]); AGR.TOC("maxes","U33d2G1-max1W1",[-62131944]); # U34 AGR.GRP("clas","U34","U34"); AGR.TOC("perm","U34G1-p65B0.m",[17360683,-78425434]); AGR.TOC("perm","U34G1-p208B0.m",[80086357,75227372]); AGR.TOC("perm","U34G1-p416B0.m",[40674578,-88371304]); AGR.TOC("perm","U34G1-p1600B0.m",[30233884,-36051796]); AGR.TOC("matff","U34G1-f2r12B0.m",[-10900053,78847107]); AGR.TOC("matff","U34G1-f2r16B0.m",[14396154,-41955931]); AGR.TOC("matff","U34G1-f2r36B0.m",[46976384,-17325910]); AGR.TOC("matff","U34G1-f2r64B0.m",[-118982544,-64223435]); AGR.TOC("matff","U34G1-f2r96B0.m",[-104284810,-124835199]); AGR.TOC("matff","U34G1-f3r12B0.m",[132589348,-122397110]); AGR.TOC("matff","U34G1-f3r52eB0.m",[-97982728,-41106856]); AGR.TOC("matff","U34G1-f3r64B0.m",[78225616,28949721]); AGR.TOC("matff","U34G1-f3r75aB0.m",[-80476965,-127074761]); AGR.TOC("matff","U34G1-f3r75bB0.m",[86181596,3348273]); AGR.TOC("matff","U34G1-f3r75cB0.m",[11829454,-73864367]); AGR.TOC("matff","U34G1-f3r75dB0.m",[75538121,28085319]); AGR.TOC("matff","U34G1-f3r78B0.m",[100243216,-48886087]); AGR.TOC("matff","U34G1-f3r208B0.m",[42907974,-68495142]); AGR.TOC("matff","U34G1-f4r6aB0.m",[-85023623,93249437]); AGR.TOC("matff","U34G1-f4r6bB0.m",[-81819623,-69612063]); AGR.TOC("matff","U34G1-f4r8aB0.m",[-116176095,-1687181]); AGR.TOC("matff","U34G1-f4r8bB0.m",[-116176095,25980700]); AGR.TOC("matff","U34G1-f4r18aB0.m",[123734973,-46092691]); AGR.TOC("matff","U34G1-f4r18bB0.m",[-93008733,-28725164]); AGR.TOC("matff","U34G1-f4r48aB0.m",[17578155,11361404]); AGR.TOC("matff","U34G1-f4r48bB0.m",[76888578,81472606]); AGR.TOC("matff","U34G1-f5r12B0.m",[-103789801,-34994288]); AGR.TOC("matff","U34G1-f5r39B0.m",[-123208157,96692618]); AGR.TOC("matff","U34G1-f5r65B0.m",[-127352607,-60913270]); AGR.TOC("matff","U34G1-f5r300B0.m",[32081092,72335547]); AGR.TOC("matff","U34G1-f13r12B0.m",[62408048,-109610137]); AGR.TOC("matff","U34G1-f13r52eB0.m",[54514785,103012193]); AGR.TOC("matff","U34G1-f13r63B0.m",[53184444,-72868675]); AGR.TOC("matff","U34G1-f13r65aB0.m",[-78103605,66500438]); AGR.TOC("matff","U34G1-f13r78B0.m",[113968884,-115040216]); AGR.TOC("matff","U34G1-f13r208B0.m",[-108736538,67866]); AGR.TOC("matff","U34G1-f13r260B0.m",[50602510,103112632]); AGR.TOC("matff","U34G1-f16r3aB0.m",[122874177,-27123872]); AGR.TOC("matff","U34G1-f16r3bB0.m",[81574912,-27123872]); AGR.TOC("matff","U34G1-f16r3cB0.m",[-126807937,-27123872]); AGR.TOC("matff","U34G1-f16r3dB0.m",[-109357799,-27123872]); AGR.TOC("matff","U34G1-f16r9aB0.m",[-46965852,84366801]); AGR.TOC("matff","U34G1-f16r9bB0.m",[-18686435,-119537219]); AGR.TOC("matff","U34G1-f16r9cB0.m",[38986822,69465137]); AGR.TOC("matff","U34G1-f16r9dB0.m",[77726640,-84914934]); AGR.TOC("matff","U34G1-f16r24aB0.m",[-119569304,132348686]); AGR.TOC("matff","U34G1-f16r24bB0.m",[-100531866,-8097523]); AGR.TOC("matff","U34G1-f16r24cB0.m",[4021513,219792]); AGR.TOC("matff","U34G1-f16r24dB0.m",[-40412631,13980730]); AGR.TOC("matff","U34G1-f25r150aB0.m",[-99531352,-98030002]); AGR.TOC("matff","U34G1-f25r150bB0.m",[69937018,21914643]); AGR.TOC("matint","U34G1-Zr64B0.g",[-49267710]); AGR.TOC("matint","U34G1-Zr65aB0.g",[-57596787]); AGR.TOC("matint","U34G1-Zr260B0.g",[-72588755]); AGR.TOC("matint","U34G1-Zr300B0.g",[87311619]); AGR.TOC("matalg","U34G1-Ar12B0.g",[55185181]); AGR.TOC("matalg","U34G1-Ar13aB0.g",[117438729]); AGR.TOC("matalg","U34G1-Ar13bB0.g",[58046395]); AGR.TOC("matalg","U34G1-Ar13cB0.g",[16609006]); AGR.TOC("matalg","U34G1-Ar13dB0.g",[67909373]); AGR.TOC("matalg","U34G1-Ar52aB0.g",[-104934326]); AGR.TOC("matalg","U34G1-Ar52bB0.g",[24197759]); AGR.TOC("matalg","U34G1-Ar52cB0.g",[-82220219]); AGR.TOC("matalg","U34G1-Ar52dB0.g",[-116015156]); AGR.TOC("maxes","U34G1-max1W1",[53933446]); AGR.TOC("maxes","U34G1-max2W1",[96452593]); AGR.TOC("maxes","U34G1-max3W1",[-95177580]); AGR.TOC("maxes","U34G1-max4W1",[60732284]); AGR.TOC("out","U34G1-a4W1",[-70979454]); AGR.TOC("pres","U34G1-P1",[75167543]); # U34d2 AGR.GRP("clas","U34","U34d2"); AGR.TOC("perm","U34d2G1-p65B0.m",[-70734908,-37630935]); AGR.TOC("perm","U34d2G1-p208B0.m",[83117313,20247513]); AGR.TOC("perm","U34d2G1-p416B0.m",[1886698,126129251]); AGR.TOC("perm","U34d2G1-p1600B0.m",[-104360745,-53360206]); AGR.TOC("maxes","U34d2G1-max1W1",[-120957511]); AGR.TOC("maxes","U34d2G1-max2W1",[-23763886]); AGR.TOC("maxes","U34d2G1-max3W1",[-91366119]); AGR.TOC("maxes","U34d2G1-max4W1",[79541912]); AGR.TOC("maxes","U34d2G1-max5W1",[125232883]); AGR.TOC("pres","U34d2G1-P1",[132977188]); # U34d4 AGR.GRP("clas","U34","U34d4"); AGR.TOC("perm","U34d4G1-p65B0.m",[51089587,-21751821]); AGR.TOC("perm","U34d4G1-p208B0.m",[117524311,84671893]); AGR.TOC("perm","U34d4G1-p416B0.m",[123189927,-3060560]); AGR.TOC("perm","U34d4G1-p1600B0.m",[101360521,-121654012]); AGR.TOC("matff","U34d4G1-f2r12B0.m",[-35230972,-5909819]); AGR.TOC("matff","U34d4G1-f2r16B0.m",[-99589815,16092554]); AGR.TOC("matff","U34d4G1-f2r36B0.m",[-115096760,116994797]); AGR.TOC("matff","U34d4G1-f2r64B0.m",[81737749,110839647]); AGR.TOC("matff","U34d4G1-f2r96B0.m",[111876370,14679376]); AGR.TOC("matff","U34d4G1-f3r24aB0.m",[-71815523,74229437]); AGR.TOC("matff","U34d4G1-f3r52B0.m",[-125141463,-64454306]); AGR.TOC("matff","U34d4G1-f3r64aB0.m",[-27767191,3232557]); AGR.TOC("matff","U34d4G1-f3r78aB0.m",[-51157972,-22461437]); AGR.TOC("matff","U34d4G1-f3r208B0.m",[70447454,58683363]); AGR.TOC("matff","U34d4G1-f3r300B0.m",[44269910,-18762582]); AGR.TOC("matff","U34d4G1-f5r12aB0.m",[-20838787,25813836]); AGR.TOC("matff","U34d4G1-f5r39aB0.m",[-132884508,-90704902]); AGR.TOC("matff","U34d4G1-f5r65aB0.m",[-7273387,-110405782]); AGR.TOC("matff","U34d4G1-f5r300B0.m",[-91650518,81153656]); AGR.TOC("matff","U34d4G1-f9r12aB0.m",[-62172830,-103676483]); AGR.TOC("matff","U34d4G1-f13r12aB0.m",[-49033489,-113664744]); AGR.TOC("matff","U34d4G1-f13r52B0.m",[32269842,20947821]); AGR.TOC("matff","U34d4G1-f13r63aB0.m",[39589624,93730429]); AGR.TOC("matff","U34d4G1-f13r65aB0.m",[32323730,-34684119]); AGR.TOC("matff","U34d4G1-f13r78aB0.m",[7163539,-77413724]); AGR.TOC("matff","U34d4G1-f13r208B0.m",[41810714,-58248165]); AGR.TOC("matff","U34d4G1-f13r260B0.m",[115061945,-79350074]); AGR.TOC("maxes","U34d4G1-max1W1",[-84053764]); AGR.TOC("maxes","U34d4G1-max2W1",[58465529]); AGR.TOC("maxes","U34d4G1-max3W1",[-104565319]); AGR.TOC("maxes","U34d4G1-max4W1",[93887266]); AGR.TOC("maxes","U34d4G1-max5W1",[58892799]); AGR.TOC("pres","U34d4G1-P1",[91031702]); # U35 AGR.GRP("clas","U35","U35"); AGR.TOC("perm","U35G1-p50B0.m",[79377838,90517095]); AGR.TOC("matint","U35G1-Zr21B0.g",[2647315]); AGR.TOC("matint","U35G1-Zr28aB0.g",[79144312]); AGR.TOC("matint","U35G1-Zr28bB0.g",[-127954516]); AGR.TOC("matint","U35G1-Zr28cB0.g",[-39999797]); AGR.TOC("matint","U35G1-Zr84B0.g",[-8847763]); AGR.TOC("matint","U35G1-Zr105B0.g",[-102955911]); AGR.TOC("matint","U35G1-Zr125B0.g",[-6373310]); AGR.TOC("matint","U35G1-Zr126aB0.g",[35920565]); AGR.TOC("matint","U35G1-Zr252B0.g",[83372172]); AGR.TOC("matint","U35G1-Zr288B0.g",[87573476]); AGR.TOC("pres","U35G1-P1",[33059216]); # U35d2 AGR.GRP("clas","U35","U35d2"); AGR.TOC("perm","U35d2G1-p50B0.m",[1867987,597831]); AGR.TOC("perm","U35d2G1-p126B0.m",[57933489,-90868789]); AGR.TOC("perm","U35d2G1-p175B0.m",[-30143206,2795820]); AGR.TOC("perm","U35d2G1-p525B0.m",[52287825,117985980]); AGR.TOC("perm","U35d2G1-p750B0.m",[-61520747,-22238562]); AGR.TOC("matff","U35d2G1-f2r20B0.m",[-51431499,91228414]); AGR.TOC("matff","U35d2G1-f2r28B0.m",[-122141611,93684727]); AGR.TOC("matff","U35d2G1-f2r56B0.m",[-86578170,-2680064]); AGR.TOC("matff","U35d2G1-f2r104B0.m",[114461795,-73415614]); AGR.TOC("matff","U35d2G1-f2r288B0.m",[59152440,42208940]); AGR.TOC("matff","U35d2G1-f3r20aB0.m",[-62988035,19241242]); AGR.TOC("matff","U35d2G1-f3r21aB0.m",[-15314504,-74114415]); AGR.TOC("matff","U35d2G1-f3r28aB0.m",[96837566,94831662]); AGR.TOC("matff","U35d2G1-f3r56B0.m",[33744891,-36563831]); AGR.TOC("matff","U35d2G1-f3r84aB0.m",[-56302550,-113576911]); AGR.TOC("matff","U35d2G1-f3r126aB0.m",[-965303,-96109392]); AGR.TOC("matff","U35d2G1-f3r252B0.m",[-133280960,121913998]); AGR.TOC("matff","U35d2G1-f3r288B0.m",[47530646,-33166197]); AGR.TOC("matff","U35d2G1-f5r8aB0.m",[-25753737,-36465240]); AGR.TOC("matff","U35d2G1-f5r19aB0.m",[95135359,-5952651]); AGR.TOC("matff","U35d2G1-f5r20B0.m",[-9118427,76229517]); AGR.TOC("matff","U35d2G1-f5r63aB0.m",[46850613,133206102]); AGR.TOC("matff","U35d2G1-f5r70B0.m",[119713154,-92650635]); AGR.TOC("matff","U35d2G1-f5r125aB0.m",[-3874360,-11879661]); AGR.TOC("matff","U35d2G1-f7r20aB0.m",[25578130,49668197]); AGR.TOC("matff","U35d2G1-f7r21aB0.m",[30911428,-51107732]); AGR.TOC("matff","U35d2G1-f7r28aB0.m",[121141020,-27438654]); AGR.TOC("matff","U35d2G1-f7r56B0.m",[-65748988,108569363]); AGR.TOC("matff","U35d2G1-f7r84aB0.m",[-128249178,-55277512]); AGR.TOC("matff","U35d2G1-f7r105aB0.m",[-9389598,115008169]); AGR.TOC("matff","U35d2G1-f7r124aB0.m",[-72369292,-84501320]); AGR.TOC("matff","U35d2G1-f7r126aB0.m",[43195759,54173438]); AGR.TOC("matff","U35d2G1-f7r252B0.m",[108946009,113476800]); AGR.TOC("maxes","U35d2G1-max2W1",[-103678865]); AGR.TOC("maxes","U35d2G1-max2W2",[-10329946]); AGR.TOC("maxes","U35d2G1-max3W1",[20496299]); AGR.TOC("maxes","U35d2G1-max4W1",[-120526082]); AGR.TOC("maxes","U35d2G1-max5W1",[96452593]); AGR.TOC("maxes","U35d2G1-max6W1",[42882023]); AGR.TOC("pres","U35d2G1-P1",[100875407]); # U37 AGR.GRP("clas","U37","U37"); AGR.TOC("perm","U37G1-p344B0.m",[31043946,-47100693]); AGR.TOC("perm","U37G1-p688B0.m",[-127237955,72593137]); AGR.TOC("perm","U37G1-p1032B0.m",[-73970263,-89133614]); AGR.TOC("perm","U37G1-p1376B0.m",[124823241,73198391]); AGR.TOC("perm","U37G1-p2064B0.m",[-76288734,1970699]); AGR.TOC("perm","U37G1-p2107B0.m",[83952628,103638671]); AGR.TOC("perm","U37G1-p14749B0.m",[-56081576,-114148754]); AGR.TOC("perm","U37G1-p16856B0.m",[43093642,39183080]); AGR.TOC("perm","U37G1-p43904B0.m",[-64386534,119104327]); AGR.TOC("matff","U37G1-f2r42B0.m",[-55818718,638323]); AGR.TOC("matff","U37G1-f2r258B0.m",[80235784,-27537996]); AGR.TOC("matff","U37G1-f2r344B0.m",[-62120321,110461212]); AGR.TOC("matff","U37G1-f3r42B0.m",[87877314,-117514730]); AGR.TOC("matff","U37G1-f3r43aB0.m",[-87211028,20612456]); AGR.TOC("matff","U37G1-f7r6cB0.m",[-82725300,91503278]); AGR.TOC("matff","U37G1-f7r8B0.m",[8670882,-42599195]); AGR.TOC("matff","U37G1-f7r12B0.m",[112552939,66100615]); AGR.TOC("matff","U37G1-f7r20B0.m",[-37672248,-3974413]); AGR.TOC("matff","U37G1-f7r27B0.m",[80204890,2243363]); AGR.TOC("matff","U37G1-f7r30aB0.m",[-111337443,106525141]); AGR.TOC("matff","U37G1-f7r30bB0.m",[-12708814,53781897]); AGR.TOC("matff","U37G1-f7r37B0.m",[-93467555,-92816406]); AGR.TOC("matff","U37G1-f7r42cB0.m",[-83217450,117281295]); AGR.TOC("matff","U37G1-f7r48B0.m",[-87749695,48539204]); AGR.TOC("matff","U37G1-f43r42B0.m",[-32288733,-88899808]); AGR.TOC("matff","U37G1-f43r43aB0.m",[-36187826,130510881]); AGR.TOC("matint","U37G1-Zr43aB0.g",[101009663]); AGR.TOC("maxes","U37G1-max1W1",[-97795468]); AGR.TOC("maxes","U37G1-max2W1",[-56630200]); AGR.TOC("maxes","U37G1-max3W1",[-2253449]); AGR.TOC("maxes","U37G1-max4W1",[-84578960]); AGR.TOC("maxes","U37G1-max5W1",[49417287]); AGR.TOC("out","U37G1-aW1",[8247317]); AGR.TOC("pres","U37G1-P1",[28359484]); # 3U38 AGR.GRP("clas","U38","3U38"); AGR.TOC("perm","3U38G1-p4617B0.m",[104686114,-82412374]); AGR.TOC("perm","3U38G1-p32832B0.m",[-70568696,48614352]); AGR.TOC("matff","3U38G1-f64r3aB0.m",[-127003918,115807546]); # U38 AGR.GRP("clas","U38","U38"); AGR.TOC("perm","U38G1-p513B0.m",[-79915265,-97999790]); AGR.TOC("perm","U38G1-p3648B0.m",[-132855599,94913045]); AGR.TOC("matff","U38G1-f3r56B0.m",[60901416,80285885]); AGR.TOC("matint","U38G1-Zr114B0.g",[70366208]); AGR.TOC("matint","U38G1-Zr133aB0.g",[67465534]); AGR.TOC("matint","U38G1-Zr133bB0.g",[85793258]); AGR.TOC("matint","U38G1-Zr133cB0.g",[131204949]); AGR.TOC("pres","U38G1-P1",[114437562]); # U38E9 AGR.GRP("clas","U38","U38E9"); AGR.TOC("perm","U38E9G1-p513B0.m",[-51718153,-7172068]); AGR.TOC("perm","U38E9G1-p3648B0.m",[108918084,96674272]); # U38S3 AGR.GRP("clas","U38","U38S3"); AGR.TOC("perm","U38S3G1-p513B0.m",[120040864,-107603928]); AGR.TOC("perm","U38S3G1-p3648B0.m",[129298163,-32640650]); # U38S3x3 AGR.GRP("clas","U38","U38S3x3"); AGR.TOC("perm","U38S3x3G1-p513B0.m",[-7604460,-27922153]); AGR.TOC("perm","U38S3x3G1-p3648B0.m",[14100675,72779990]); # U38d2 AGR.GRP("clas","U38","U38d2"); AGR.TOC("perm","U38d2G1-p513B0.m",[-12428198,-114715963]); AGR.TOC("perm","U38d2G1-p3648B0.m",[-102954589,7496962]); # U38d3a AGR.GRP("clas","U38","U38d3a"); AGR.TOC("perm","U38d3aG1-p513B0.m",[-17023673,-55556744]); AGR.TOC("perm","U38d3aG1-p3648B0.m",[-26653670,27700646]); # U38d3b AGR.GRP("clas","U38","U38d3b"); AGR.TOC("perm","U38d3bG1-p513B0.m",[-64368159,-37104193]); AGR.TOC("perm","U38d3bG1-p3648B0.m",[46031347,66020914]); # U38d3c AGR.GRP("clas","U38","U38d3c"); AGR.TOC("perm","U38d3cG1-p513B0.m",[66125187,78421743]); AGR.TOC("perm","U38d3cG1-p3648B0.m",[81885800,-100513959]); # U38d6 AGR.GRP("clas","U38","U38d6"); AGR.TOC("perm","U38d6G1-p513B0.m",[-46074225,-23985724]); AGR.TOC("perm","U38d6G1-p3648B0.m",[-67800605,10871735]); AGR.TOC("matff","U38d6G1-f2r24B0.m",[-43169189,106439536]); AGR.TOC("matff","U38d6G1-f2r54aB0.m",[-99197856,-22696828]); AGR.TOC("matff","U38d6G1-f2r54bB0.m",[-9921731,109048484]); AGR.TOC("matff","U38d6G1-f2r192B0.m",[116361037,-84768179]); AGR.TOC("matff","U38d6G1-f2r432B0.m",[-126811112,-101025286]); AGR.TOC("matff","U38d6G1-f2r512B0.m",[21383515,128345998]); AGR.TOC("matff","U38d6G1-f3r56aB0.m",[118935035,111312033]); AGR.TOC("matff","U38d6G1-f3r133aB0.m",[32879324,48179807]); AGR.TOC("matff","U38d6G1-f3r266B0.m",[25864402,-106835609]); # U39 AGR.GRP("clas","U39","U39"); AGR.TOC("perm","U39G1-p730B0.m",[-6720510,103605478]); AGR.TOC("matint","U39G1-Zr73aB0.g",[116063303]); # 2U42 AGR.GRP("clas","U42","2U42"); AGR.TOC("perm","2U42G1-p80B0.m",[-39324070,104832028]); AGR.TOC("perm","2U42G1-p240B0.m",[-112092215,107794298]); AGR.TOC("matff","2U42G1-f3r4B0.m",[-44010817,48225622]); AGR.TOC("matff","2U42G1-f3r16B0.m",[30238368,-84270813]); AGR.TOC("matff","2U42G1-f3r40B0.m",[114570034,68590057]); AGR.TOC("matint","2U42G1-Zr8B0.g",[116145303]); AGR.TOC("matalg","2U42G1-Ar4aB0.g",[128648158]); AGR.TOC("matalg","2U42G1-Ar4bB0.g",[-14476162]); AGR.TOC("matalg","2U42G1-Ar20aB0.g",[-45988034]); AGR.TOC("matalg","2U42G1-Ar20bB0.g",[62493463]); AGR.TOC("matalg","2U42G1-Ar20cB0.g",[87714701]); AGR.TOC("matalg","2U42G1-Ar36aB0.g",[16848127]); AGR.TOC("matalg","2U42G1-Ar36bB0.g",[-17484990]); AGR.TOC("matalg","2U42G1-Ar60bB0.g",[87834552]); # 2U42d2 AGR.GRP("clas","U42","2U42d2"); AGR.TOC("perm","2U42d2G1-p240B0.m",[-56416490,121403924]); AGR.TOC("matff","2U42d2G1-f3r4B0.m",[12103382,-127646183]); # U42 AGR.GRP("clas","U42","U42"); AGR.TOC("perm","U42G1-p27B0.m",[58456782,129640804]); AGR.TOC("perm","U42G1-p36B0.m",[19673844,-123531209]); AGR.TOC("perm","U42G1-p40aB0.m",[308248,-7687680]); AGR.TOC("perm","U42G1-p40bB0.m",[15659949,-23378134]); AGR.TOC("perm","U42G1-p45B0.m",[-75817052,-31383110]); AGR.TOC("matff","U42G1-f3r5B0.m",[56126559,96526580]); AGR.TOC("matff","U42G1-f3r10B0.m",[-75248600,-93817985]); AGR.TOC("matff","U42G1-f3r14B0.m",[-38066968,-37259744]); AGR.TOC("matff","U42G1-f3r25B0.m",[3033636,118025163]); AGR.TOC("matff","U42G1-f3r81B0.m",[36994169,6807225]); AGR.TOC("matff","U42G1-f4r4aB0.m",[-64634504,-79998674]); AGR.TOC("matff","U42G1-f5r6B0.m",[-57231786,-115938955]); AGR.TOC("matff","U42G1-f25r5aB0.m",[-118167804,38155024]); AGR.TOC("matff","U42G1-f25r10bB0.m",[29324164,106311246]); AGR.TOC("matint","U42G1-Zr6B0.g",[31490574]); AGR.TOC("matint","U42G1-Zr15aB0.g",[103762178]); AGR.TOC("matint","U42G1-Zr15bB0.g",[9414185]); AGR.TOC("matint","U42G1-Zr20B0.g",[-63236352]); AGR.TOC("matint","U42G1-Zr24B0.g",[-74726964]); AGR.TOC("matint","U42G1-Zr30aB0.g",[-118104298]); AGR.TOC("matint","U42G1-Zr60B0.g",[124718455]); AGR.TOC("matint","U42G1-Zr64B0.g",[-102877132]); AGR.TOC("matint","U42G1-Zr80B0.g",[-70317204]); AGR.TOC("matint","U42G1-Zr81B0.g",[38380259]); AGR.TOC("matalg","U42G1-Ar5aB0.g",[57904430]); AGR.TOC("matalg","U42G1-Ar5bB0.g",[56439648]); AGR.TOC("matalg","U42G1-Ar10B0.g",[-48475808]); AGR.TOC("matalg","U42G1-Ar10aB0.g",[-33665179]); AGR.TOC("matalg","U42G1-Ar10bB0.g",[-42222926]); AGR.TOC("matalg","U42G1-Ar30bB0.g",[-88351826]); AGR.TOC("matalg","U42G1-Ar30cB0.g",[-96100782]); AGR.TOC("matalg","U42G1-Ar40aB0.g",[-113995891]); AGR.TOC("matalg","U42G1-Ar40bB0.g",[53751750]); AGR.TOC("matalg","U42G1-Ar45aB0.g",[-98981155]); AGR.TOC("matalg","U42G1-Ar45bB0.g",[47258373]); AGR.TOC("cyclic","U42G1-cycW1",[-28178722]); AGR.TOC("cyc2ccl","U42G1cycW1-cclsW1",[-82022088]); AGR.TOC("check","U42G1-check1",[-87969859]); AGR.TOC("pres","U42G1-P1",[-132148842]); # U42d2 AGR.GRP("clas","U42","U42d2"); AGR.TOC("perm","U42d2G1-p27B0.m",[-114100809,181996]); AGR.TOC("perm","U42d2G1-p36B0.m",[-91912608,88502930]); AGR.TOC("perm","U42d2G1-p40aB0.m",[111542634,-1687551]); AGR.TOC("perm","U42d2G1-p40bB0.m",[-17644916,-39248668]); AGR.TOC("perm","U42d2G1-p45B0.m",[-87067104,-112303585]); AGR.TOC("matff","U42d2G1-f2r6B0.m",[133436379,-52124901]); AGR.TOC("matff","U42d2G1-f2r8B0.m",[84946852,9312127]); AGR.TOC("matff","U42d2G1-f2r14B0.m",[-111373697,-8180035]); AGR.TOC("matff","U42d2G1-f2r40B0.m",[19725664,-103780895]); AGR.TOC("matff","U42d2G1-f2r64B0.m",[53719255,-56861084]); AGR.TOC("matff","U42d2G1-f3r5B0.m",[-19187541,-45518448]); AGR.TOC("cyclic","U42d2G1-cycW1",[-133495148]); AGR.TOC("cyc2ccl","U42d2G1cycW1-cclsW1",[78750868]); # 2U43D8 AGR.GRP("clas","U43","2U43D8"); AGR.TOC("matff","2U43D8G1-f3r6B0.m",[132445977,-90933685]); # 9U43D8 AGR.GRP("clas","U43","9U43D8"); AGR.TOC("perm","9U43D8G1-p756aB0.m",[-129320174,104731858]); AGR.TOC("perm","9U43D8G1-p756bB0.m",[128140108,68787497]); AGR.TOC("perm","9U43D8G1-p972B0.m",[-112946109,-20072829]); # U43 AGR.GRP("clas","U43","U43"); AGR.TOC("matint","U43G1-Zr21B0.g",[-92150417]); AGR.TOC("matint","U43G1-Zr35aB0.g",[-93457197]); AGR.TOC("matint","U43G1-Zr35bB0.g",[-131185618]); AGR.TOC("matint","U43G1-Zr90B0.g",[85869769]); AGR.TOC("matint","U43G1-Zr140B0.g",[-90197400]); AGR.TOC("matint","U43G1-Zr189B0.g",[101640512]); AGR.TOC("matint","U43G1-Zr210B0.g",[-95686246]); # U43D8 AGR.GRP("clas","U43","U43D8"); AGR.TOC("perm","U43D8G1-p112B0.m",[52549505,-113190149]); AGR.TOC("perm","U43D8G1-p252B0.m",[95175289,-24127842]); AGR.TOC("perm","U43D8G1-p280B0.m",[97473667,-96483440]); AGR.TOC("perm","U43D8G1-p324B0.m",[97941105,55769944]); AGR.TOC("perm","U43D8G1-p540B0.m",[-8901183,88748754]); AGR.TOC("perm","U43D8G1-p1134B0.m",[-2081105,24138224]); AGR.TOC("perm","U43D8G1-p2835B0.m",[-21040280,117093823]); AGR.TOC("perm","U43D8G1-p4536B0.m",[110265871,1420758]); AGR.TOC("perm","U43D8G1-p5184B0.m",[-90710487,24022025]); AGR.TOC("perm","U43D8G1-p8505B0.m",[77730787,43511748]); AGR.TOC("perm","U43D8G1-p9072B0.m",[96704231,-108398996]); # U44 AGR.GRP("clas","U44","U44"); AGR.TOC("perm","U44G1-p325B0.m",[-4568984,73773116]); AGR.TOC("perm","U44G1-p1040B0.m",[26493434,-35888713]); AGR.TOC("perm","U44G1-p1105B0.m",[102738037,87270221]); AGR.TOC("perm","U44G1-p3264B0.m",[31163023,114008471]); AGR.TOC("matint","U44G1-Zr52B0.g",[-81459854]); AGR.TOC("matint","U44G1-Zr442B0.g",[-118351305]); AGR.TOC("find","U44G1-find1",[-82272203]); AGR.TOC("check","U44G1-check1",[-73579303]); # U45 AGR.GRP("clas","U45","U45"); AGR.TOC("perm","U45G1-p756B0.m",[-34242500,118724930]); AGR.TOC("perm","U45G1-p1575B0.m",[99242668,-121336230]); AGR.TOC("matint","U45G1-Zr105B0.g",[73661285]); # U52 AGR.GRP("clas","U52","U52"); AGR.TOC("perm","U52G1-p165B0.m",[-50299563,36084085]); AGR.TOC("perm","U52G1-p176B0.m",[-19765875,-57819741]); AGR.TOC("perm","U52G1-p297B0.m",[-120967324,-31238974]); AGR.TOC("perm","U52G1-p1408B0.m",[29397990,64478573]); AGR.TOC("perm","U52G1-p3520B0.m",[-7059345,-99124557]); AGR.TOC("perm","U52G1-p20736B0.m",[1158517,-47289782]); AGR.TOC("matff","U52G1-f2r24B0.m",[-6646933,95181238]); AGR.TOC("matff","U52G1-f2r74B0.m",[5774261,9017299]); AGR.TOC("matff","U52G1-f3r10B0.m",[51319165,95596744]); AGR.TOC("matff","U52G1-f3r44B0.m",[57556832,114394891]); AGR.TOC("matff","U52G1-f3r55B0.m",[73293070,85776857]); AGR.TOC("matff","U52G1-f3r100B0.m",[62413950,64452365]); AGR.TOC("matff","U52G1-f3r110B0.m",[116424182,-110537773]); AGR.TOC("matff","U52G1-f4r5aB0.m",[45995285,109882313]); AGR.TOC("matff","U52G1-f4r5bB0.m",[-126049394,109882313]); AGR.TOC("matff","U52G1-f4r10aB0.m",[120911867,-98434121]); AGR.TOC("matff","U52G1-f4r10bB0.m",[95858797,-29754316]); AGR.TOC("matff","U52G1-f5r43B0.m",[109287581,133998303]); AGR.TOC("matff","U52G1-f5r55aB0.m",[-22699903,43452043]); AGR.TOC("matff","U52G1-f5r120B0.m",[71232364,-62887381]); AGR.TOC("matff","U52G1-f5r176B0.m",[105144500,-121086734]); AGR.TOC("matff","U52G1-f11r44B0.m",[-41592242,-133398667]); AGR.TOC("matff","U52G1-f11r119B0.m",[-92389899,-74596812]); AGR.TOC("matff","U52G1-f11r176B0.m",[-80326188,70745456]); AGR.TOC("matint","U52G1-Zr55B0.g",[-29897748]); AGR.TOC("matint","U52G1-Zr120B0.g",[-18796342]); AGR.TOC("matint","U52G1-Zr165B0.g",[-51719883]); AGR.TOC("matint","U52G1-Zr176B0.g",[-18425186]); AGR.TOC("matalg","U52G1-Ar66aB0.g",[-49682746]); AGR.TOC("matalg","U52G1-Ar66bB0.g",[130473718]); AGR.TOC("maxes","U52G1-max1W1",[119806179]); AGR.TOC("maxes","U52G1-max2W1",[87667606]); AGR.TOC("maxes","U52G1-max2W2",[-19990869]); AGR.TOC("maxes","U52G1-max3W1",[-83076794]); AGR.TOC("maxes","U52G1-max4W1",[-95177580]); AGR.TOC("maxes","U52G1-max6W1",[-112979582]); AGR.TOC("cyclic","U52G1-cycW1",[118088632]); AGR.TOC("cyc2ccl","U52G1cycW1-cclsW1",[114777033]); AGR.TOC("out","U52G1-aW1",[-13861810]); AGR.TOC("out","U52G1-aW2",[11605644]); AGR.TOC("pres","U52G1-P1",[46614605]); # U52d2 AGR.GRP("clas","U52","U52d2"); AGR.TOC("perm","U52d2G1-p165B0.m",[-57172460,20622447]); AGR.TOC("perm","U52d2G1-p176B0.m",[33610714,-17129253]); AGR.TOC("perm","U52d2G1-p297B0.m",[108956803,74418339]); AGR.TOC("perm","U52d2G1-p1408B0.m",[28425851,85558444]); AGR.TOC("perm","U52d2G1-p3520B0.m",[90434701,73097833]); AGR.TOC("perm","U52d2G1-p20736B0.m",[22897081,-85641987]); AGR.TOC("matff","U52d2G1-f2r10B0.m",[18378846,132190822]); AGR.TOC("matff","U52d2G1-f2r20B0.m",[-21669052,-23087583]); AGR.TOC("matff","U52d2G1-f2r24B0.m",[101180288,-62246288]); AGR.TOC("matff","U52d2G1-f2r74B0.m",[85329492,-115838053]); AGR.TOC("matff","U52d2G1-f2r80aB0.m",[-74360706,39943991]); AGR.TOC("matff","U52d2G1-f2r80bB0.m",[-1356498,-96956770]); AGR.TOC("matff","U52d2G1-f2r320B0.m",[-3086314,-108864461]); AGR.TOC("matff","U52d2G1-f2r560B0.m",[97547576,85138825]); AGR.TOC("matff","U52d2G1-f2r1024B0.m",[-86621839,-121614257]); AGR.TOC("matff","U52d2G1-f3r10aB0.m",[-1510800,24690676]); AGR.TOC("maxes","U52d2G1-max1W1",[-60089510]); AGR.TOC("maxes","U52d2G1-max1W2",[-108620177]); AGR.TOC("maxes","U52d2G1-max2W1",[-51320160]); AGR.TOC("maxes","U52d2G1-max3W1",[1858877]); AGR.TOC("maxes","U52d2G1-max4W1",[76528039]); AGR.TOC("maxes","U52d2G1-max5W1",[29377135]); AGR.TOC("maxes","U52d2G1-max7W1",[66340331]); AGR.TOC("cyclic","U52d2G1-cycW1",[67412]); AGR.TOC("cyc2ccl","U52d2G1cycW1-cclsW1",[54543807]); AGR.TOC("switch","U52d2G2-G1W1",[27934901]); AGR.TOC("pres","U52d2G1-P1",[40350727]); # U53 AGR.GRP("clas","U53","U53"); AGR.TOC("matff","U53G1-f3r10cB0.m",[-71294271,53460609]); AGR.TOC("matff","U53G1-f3r20B0.m",[-76446202,79411588]); AGR.TOC("matff","U53G1-f3r24B0.m",[-1304893,68462119]); AGR.TOC("matff","U53G1-f3r30cB0.m",[35003819,112652284]); AGR.TOC("matff","U53G1-f3r51B0.m",[-21579018,61524488]); AGR.TOC("matff","U53G1-f9r5aB0.m",[-69792451,-20114666]); AGR.TOC("matff","U53G1-f9r5bB0.m",[-63271252,-20114666]); AGR.TOC("matff","U53G1-f9r10aB0.m",[133158952,58876621]); AGR.TOC("matff","U53G1-f9r10bB0.m",[-7853167,58876621]); AGR.TOC("matff","U53G1-f9r15aB0.m",[77460563,79938136]); AGR.TOC("matff","U53G1-f9r15bB0.m",[33945483,79938136]); AGR.TOC("matff","U53G1-f9r30aB0.m",[-98129367,34398421]); AGR.TOC("matff","U53G1-f9r30bB0.m",[28155437,-125271146]); AGR.TOC("maxes","U53G1-max2W1",[-94856361]); AGR.TOC("out","U53G1-a2W1",[-58177742]); # U54 AGR.GRP("clas","U54","U54"); AGR.TOC("perm","U54G1-p17425B0.m",[-36397966,129390617]); AGR.TOC("perm","U54G1-p52480B0.m",[-77574392,72052412]); # 12U62 AGR.GRP("clas","U62","12U62"); AGR.TOC("perm","12U62G1-p4704B0.m",[-101774785,-95425735]); AGR.TOC("perm","12U62G1-p8064B0.m",[86938306,-50833643]); AGR.TOC("matff","12U62G1-f4r27aB0.m",[10613592,50813522]); # 2U62 AGR.GRP("clas","U62","2U62"); AGR.TOC("perm","2U62G1-p1344B0.m",[-96746660,-8098938]); AGR.TOC("perm","2U62G1-p2816aB0.m",[-9919004,73998730]); AGR.TOC("perm","2U62G1-p2816bB0.m",[-65197888,-2928696]); AGR.TOC("perm","2U62G1-p5632B0.m",[95706354,53705238]); AGR.TOC("perm","2U62G1-p12672aB0.m",[-19489142,-92387753]); AGR.TOC("perm","2U62G1-p12672bB0.m",[64419162,17018190]); AGR.TOC("perm","2U62G1-p12672cB0.m",[-117738472,100063194]); AGR.TOC("perm","2U62G1-p41472B0.m",[44143153,-113061034]); AGR.TOC("matff","2U62G1-f3r56B0.m",[80171047,119446349]); AGR.TOC("matff","2U62G1-f3r120B0.m",[-70082088,46151118]); AGR.TOC("matff","2U62G1-f3r560B0.m",[-40708738,89515918]); AGR.TOC("matff","2U62G1-f5r56B0.m",[-14793534,-37421698]); AGR.TOC("matff","2U62G1-f5r176B0.m",[-114775302,-93260331]); AGR.TOC("matff","2U62G1-f5r616B0.m",[-21861757,102388853]); AGR.TOC("matff","2U62G1-f7r56B0.m",[-64594542,128023405]); AGR.TOC("matff","2U62G1-f7r176B0.m",[-88318705,-13645495]); AGR.TOC("matff","2U62G1-f7r616B0.m",[125102474,104459903]); AGR.TOC("matff","2U62G1-f11r56B0.m",[27908730,-27439099]); AGR.TOC("matff","2U62G1-f11r176B0.m",[104896756,108616862]); AGR.TOC("matff","2U62G1-f11r616B0.m",[116387240,49510959]); # 3U62 AGR.GRP("clas","U62","3U62"); AGR.TOC("perm","3U62G1-p2016B0.m",[-83499844,-94106975]); AGR.TOC("perm","3U62G1-p2079B0.m",[-15617918,-121099217]); AGR.TOC("perm","3U62G1-p18711B0.m",[85159923,-15080646]); AGR.TOC("perm","3U62G1-p19008aB0.m",[-8352431,-6985881]); AGR.TOC("perm","3U62G1-p19008bB0.m",[-84404157,-104255419]); AGR.TOC("perm","3U62G1-p19008cB0.m",[-36518996,-52242740]); AGR.TOC("matff","3U62G1-f4r6aB0.m",[98156764,23845688]); AGR.TOC("matff","3U62G1-f4r15aB0.m",[15785005,-119828598]); AGR.TOC("matff","3U62G1-f4r84aB0.m",[102028100,35105847]); AGR.TOC("matff","3U62G1-f4r90aB0.m",[-95435698,-133163104]); AGR.TOC("matff","3U62G1-f4r204aB0.m",[127497171,-12364456]); AGR.TOC("matff","3U62G1-f4r384aB0.m",[119710625,-25413606]); AGR.TOC("matff","3U62G1-f4r720aB0.m",[1216663,-109097078]); AGR.TOC("matff","3U62G1-f4r924aB0.m",[-127560878,-32752002]); AGR.TOC("matff","3U62G1-f7r21aB0.m",[-72638662,80390354]); AGR.TOC("matff","3U62G1-f7r210aB0.m",[37197289,87961912]); AGR.TOC("matff","3U62G1-f7r231aB0.m",[29301549,122118319]); AGR.TOC("matff","3U62G1-f7r462aB0.m",[89063052,17828650]); AGR.TOC("matff","3U62G1-f25r21aB0.m",[-22125326,90478363]); AGR.TOC("matff","3U62G1-f25r210aB0.m",[131289013,-130678392]); AGR.TOC("matff","3U62G1-f25r231aB0.m",[47200870,92356985]); AGR.TOC("matff","3U62G1-f25r462aB0.m",[-93859674,-71746983]); AGR.TOC("matff","3U62G1-f121r21aB0.m",[108763121,21124389]); AGR.TOC("matff","3U62G1-f121r210aB0.m",[-83006052,74898468]); AGR.TOC("matff","3U62G1-f121r231aB0.m",[-21409946,34760549]); AGR.TOC("matff","3U62G1-f121r462aB0.m",[113570485,-34512749]); # 4U62 AGR.GRP("clas","U62","4U62"); AGR.TOC("perm","4U62G1-p2688B0.m",[35396781,38634506]); # 6U62 AGR.GRP("clas","U62","6U62"); AGR.TOC("perm","6U62G1-p4032B0.m",[119668217,104174186]); AGR.TOC("perm","6U62G1-p38016aB0.m",[115315823,-103442961]); AGR.TOC("perm","6U62G1-p38016bB0.m",[28138103,109024887]); AGR.TOC("perm","6U62G1-p38016cB0.m",[-83291309,-17325938]); AGR.TOC("matff","6U62G1-f4r27aB0.m",[53592681,50813522]); AGR.TOC("matff","6U62G1-f7r120aB0.m",[4292338,-72363337]); AGR.TOC("matff","6U62G1-f25r120aB0.m",[80043281,32783906]); AGR.TOC("matff","6U62G1-f121r120aB0.m",[-76844812,95611100]); # U62 AGR.GRP("clas","U62","U62"); AGR.TOC("perm","U62G1-p672B0.m",[41883832,-119342788]); AGR.TOC("perm","U62G1-p693B0.m",[80011075,132849486]); AGR.TOC("perm","U62G1-p891B0.m",[-33758355,-102095511]); AGR.TOC("perm","U62G1-p1408aB0.m",[29635917,-100794787]); AGR.TOC("perm","U62G1-p1408bB0.m",[-124057494,18833616]); AGR.TOC("perm","U62G1-p1408cB0.m",[98628886,-49782471]); AGR.TOC("perm","U62G1-p2816aB0.m",[29758525,110670709]); AGR.TOC("perm","U62G1-p2816bB0.m",[-128527360,-82297667]); AGR.TOC("perm","U62G1-p2816cB0.m",[-25922293,-50806016]); AGR.TOC("perm","U62G1-p6237B0.m",[21756798,90148872]); AGR.TOC("perm","U62G1-p6336aB0.m",[60773858,-2454776]); AGR.TOC("perm","U62G1-p6336bB0.m",[-67876781,-101214989]); AGR.TOC("perm","U62G1-p6336cB0.m",[71320140,-7943165]); AGR.TOC("perm","U62G1-p12474B0.m",[660171,-128953529]); AGR.TOC("perm","U62G1-p20736aB0.m",[-113743555,-86287740]); AGR.TOC("perm","U62G1-p20736bB0.m",[4689720,128093826]); AGR.TOC("perm","U62G1-p20736cB0.m",[-61281304,-38305200]); AGR.TOC("perm","U62G1-p59136B0.m",[-34349507,111415438]); AGR.TOC("matff","U62G1-f2r20B0.m",[78929209,67521214]); AGR.TOC("matff","U62G1-f2r34B0.m",[-40302981,118770259]); AGR.TOC("matff","U62G1-f2r140B0.m",[42892782,-19795048]); AGR.TOC("matff","U62G1-f2r154B0.m",[131435381,-103954879]); AGR.TOC("matff","U62G1-f2r400B0.m",[-85949792,-94085068]); AGR.TOC("matff","U62G1-f3r21B0.m",[-4669439,-19190277]); AGR.TOC("matff","U62G1-f3r210B0.m",[100369997,93157187]); AGR.TOC("matff","U62G1-f3r229B0.m",[49933568,-21740528]); AGR.TOC("matff","U62G1-f3r364B0.m",[106636200,-134035568]); AGR.TOC("matff","U62G1-f4r70aB0.m",[35930765,75285548]); AGR.TOC("matff","U62G1-f4r70bB0.m",[126649385,114789385]); AGR.TOC("matff","U62G1-f4r896aB0.m",[-95558439,13902304]); AGR.TOC("matff","U62G1-f5r22B0.m",[-42318656,-51119679]); AGR.TOC("matff","U62G1-f5r231B0.m",[-35969322,-112008815]); AGR.TOC("matff","U62G1-f5r252B0.m",[26531882,67559014]); AGR.TOC("matff","U62G1-f5r440B0.m",[85455555,125018485]); AGR.TOC("matff","U62G1-f5r616B0.m",[-3067103,-110616148]); AGR.TOC("matff","U62G1-f7r22B0.m",[-9800171,-117014354]); AGR.TOC("matff","U62G1-f7r231B0.m",[123139749,-39714473]); AGR.TOC("matff","U62G1-f7r252B0.m",[49291300,-82033320]); AGR.TOC("matff","U62G1-f7r439B0.m",[22238893,67944875]); AGR.TOC("matff","U62G1-f7r616B0.m",[40565128,129478709]); AGR.TOC("matff","U62G1-f11r22B0.m",[105876888,-46394941]); AGR.TOC("matff","U62G1-f11r231B0.m",[-121637817,16844877]); AGR.TOC("matff","U62G1-f11r251B0.m",[-50485223,42023145]); AGR.TOC("matff","U62G1-f11r440B0.m",[38620526,44520621]); AGR.TOC("matff","U62G1-f11r616B0.m",[58444823,-65919906]); AGR.TOC("matint","U62G1-Zr22B0.g",[-132792550]); AGR.TOC("matint","U62G1-Zr231B0.g",[60313821]); AGR.TOC("maxes","U62G1-max1W1",[77681157]); AGR.TOC("maxes","U62G1-max1W2",[21370323]); AGR.TOC("maxes","U62G1-max2W1",[-41489840]); AGR.TOC("maxes","U62G1-max3W1",[20129642]); AGR.TOC("maxes","U62G1-max4W1",[91124264]); AGR.TOC("maxes","U62G1-max4W2",[-47760827]); AGR.TOC("maxes","U62G1-max5W1",[-42471960]); AGR.TOC("maxes","U62G1-max6W1",[44978555]); AGR.TOC("maxes","U62G1-max7W1",[-119865794]); AGR.TOC("maxes","U62G1-max8W1",[-63428706]); AGR.TOC("maxes","U62G1-max8W2",[47859679]); AGR.TOC("maxes","U62G1-max9W1",[49438861]); AGR.TOC("maxes","U62G1-max10W1",[-17519713]); AGR.TOC("maxes","U62G1-max11W1",[24632921]); AGR.TOC("maxes","U62G1-max11W2",[132654305]); AGR.TOC("maxes","U62G1-max12W1",[-132834885]); AGR.TOC("maxes","U62G1-max13W1",[-57911926]); AGR.TOC("maxes","U62G1-max14W1",[-118829535]); AGR.TOC("maxes","U62G1-max15W1",[-51744826]); AGR.TOC("maxes","U62G1-max16W1",[-31621045]); AGR.TOC("out","U62G1-a2W1",[-25509507]); AGR.TOC("out","U62G1-a3W1",[101719534]); # U62S3 AGR.GRP("clas","U62","U62S3"); AGR.TOC("perm","U62S3G1-p693B0.m",[82931017,-51445734]); AGR.TOC("perm","U62S3G1-p891B0.m",[44994054,66645969]); AGR.TOC("matff","U62S3G1-f2r20B0.m",[32957911,131281838]); AGR.TOC("matff","U62S3G1-f2r34B0.m",[-19555964,74226004]); AGR.TOC("matff","U62S3G1-f2r140a0B0.m",[-26001990,54006778]); AGR.TOC("matff","U62S3G1-f2r140a1B0.m",[-129943537,44969268]); AGR.TOC("matff","U62S3G1-f2r140a2B0.m",[-119325519,30594248]); AGR.TOC("matff","U62S3G1-f2r154B0.m",[-44721626,97175721]); AGR.TOC("matff","U62S3G1-f2r400B0.m",[-110153808,70135791]); AGR.TOC("matff","U62S3G1-f3r21aB0.m",[100541190,-70773790]); AGR.TOC("matff","U62S3G1-f3r210aB0.m",[59581404,-112108450]); AGR.TOC("matff","U62S3G1-f3r229aB0.m",[-110893949,82946128]); AGR.TOC("matff","U62S3G1-f3r364aB0.m",[-115141451,-120136105]); AGR.TOC("matff","U62S3G1-f5r22aB0.m",[127745745,58859989]); AGR.TOC("matff","U62S3G1-f7r22aB0.m",[-83283114,78672814]); AGR.TOC("matff","U62S3G1-f11r22aB0.m",[-94587495,14032]); # U62d2 AGR.GRP("clas","U62","U62d2"); AGR.TOC("perm","U62d2G1-p672B0.m",[-25523369,12654911]); AGR.TOC("perm","U62d2G1-p693B0.m",[-115660627,-7137007]); AGR.TOC("perm","U62d2G1-p891B0.m",[129866173,15020256]); AGR.TOC("perm","U62d2G1-p1408B0.m",[-78375109,3254482]); AGR.TOC("perm","U62d2G1-p6237B0.m",[59767995,-91383161]); AGR.TOC("perm","U62d2G1-p6336B0.m",[-21183900,40576140]); AGR.TOC("perm","U62d2G1-p20736B0.m",[-9581899,25873638]); AGR.TOC("matff","U62d2G1-f2r20B0.m",[-53547535,85421330]); AGR.TOC("matff","U62d2G1-f2r34B0.m",[85750725,23928042]); AGR.TOC("matff","U62d2G1-f2r140B0.m",[36696581,-80935705]); AGR.TOC("matff","U62d2G1-f2r154B0.m",[121526487,55009857]); AGR.TOC("matff","U62d2G1-f2r400B0.m",[-111007494,-131218683]); AGR.TOC("matff","U62d2G1-f3r21aB0.m",[-13517125,63540903]); AGR.TOC("matff","U62d2G1-f3r210aB0.m",[38097441,-67797225]); AGR.TOC("matff","U62d2G1-f3r229aB0.m",[89141837,54570259]); AGR.TOC("matff","U62d2G1-f3r364aB0.m",[-53381445,-12684210]); AGR.TOC("matff","U62d2G1-f5r22aB0.m",[108599543,71473481]); AGR.TOC("matff","U62d2G1-f7r22aB0.m",[-31038767,-17393281]); AGR.TOC("matff","U62d2G1-f11r22aB0.m",[-18994369,16334399]); # U63 AGR.GRP("clas","U63","U63"); AGR.TOC("perm","U63G1-p22204B0.m",[-129387006,-85296839]); AGR.TOC("perm","U63G1-p44226B0.m",[-5726477,107460429]); # U72 AGR.GRP("clas","U72","U72"); AGR.TOC("perm","U72G1-p2709B0.m",[70182082,94994402]); AGR.TOC("perm","U72G1-p2752B0.m",[-58626643,56927715]); AGR.TOC("matff","U72G1-f4r7aB0.m",[13572893,38482878]); AGR.TOC("matff","U72G1-f4r7bB0.m",[100370941,86400664]); AGR.TOC("maxes","U72G1-max1W1",[22904209]); AGR.TOC("maxes","U72G1-max2W1",[-126405096]); AGR.TOC("maxes","U72G1-max7W1",[-13017910]); AGR.TOC("out","U72G1-a2W1",[-14956717]); AGR.TOC("pres","U72G1-P1",[130497806]); # U82 AGR.GRP("clas","U82","U82"); AGR.TOC("perm","U82G1-p10880B0.m",[-125558626,-28447926]); AGR.TOC("perm","U82G1-p10965B0.m",[97819035,-129611467]); # E62 AGR.GRP("exc","E62","E62"); AGR.TOC("matff","E62G0-f2r27aB0.m",[-70297767,-96163256]); AGR.TOC("matff","E62G1-f2r27aB0.m",[-73318547,-70297767]); AGR.TOC("matff","E62G0-f2r27bB0.m",[-68668655,69131024]); AGR.TOC("matff","E62G1-f2r27bB0.m",[-42383541,-68668655]); AGR.TOC("matff","E62G0-f2r78B0.m",[-4960328,48265225]); AGR.TOC("matff","E62G1-f2r78B0.m",[-25397445,20657147]); AGR.TOC("switch","E62G0-G1W1",[64513689]); # 3E64 AGR.GRP("exc","E64","3E64"); AGR.TOC("matff","3E64G0-f4r27B0.m",[-57084589,-124036119]); # 3E64d2 AGR.GRP("exc","E64","3E64d2"); AGR.TOC("matff","3E64d2G0-f4r54B0.m",[29419197,-64150288]); # E64 AGR.GRP("exc","E64","E64"); AGR.TOC("matff","E64G0-f4r78B0.m",[-132528501,61287473]); # E72 AGR.GRP("exc","E72","E72"); AGR.TOC("matff","E72G0-f2r56B0.m",[-10834863,91921389]); AGR.TOC("matff","E72G0-f2r132B0.m",[26817200,-121290106]); # E74 AGR.GRP("exc","E74","E74"); AGR.TOC("matff","E74G0-f4r56aB0.m",[22134173,-120967594]); AGR.TOC("matff","E74G0-f4r132aB0.m",[-81050650,-36328227]); AGR.TOC("matff","E74G0-f4r248aB0.m",[-97730409,-25650350]); # E82 AGR.GRP("exc","E82","E82"); AGR.TOC("matff","E82G0-f2r248B0.m",[-49071027,61315514]); AGR.TOC("matff","E82G1-f2r248B0.m",[96667557,-105591188,110839232,-68636897,-25809603,-71748353,-199247,87987784,50344029]); # E85 AGR.GRP("exc","E85","E85"); AGR.TOC("matff","E85G0-f5r248B0.m",[-93455430,-64034859]); # 2F42 AGR.GRP("exc","F42","2F42"); AGR.TOC("perm","2F42G1-p139776B0.m",[-43833682,-50779955]); AGR.TOC("matff","2F42G1-f3r52B0.m",[-119545741,51871965]); AGR.TOC("matff","2F42G1-f3r2380B0.m",[-19179090,-6048453]); AGR.TOC("matff","2F42G1-f5r52B0.m",[7798019,-110626250]); AGR.TOC("matff","2F42G1-f37r52B0.m",[103071728,-98691494]); AGR.TOC("matint","2F42G1-Zr52B0.g",[-104964656]); # 2F42d2 AGR.GRP("exc","F42","2F42d2"); AGR.TOC("matff","2F42d2G1-f25r52B0.m",[-129910373,79093558]); # 2F42d4i AGR.GRP("exc","F42","2F42d4i"); AGR.TOC("matff","2F42d4iG1-f5r52B0.m",[-51144607,52466815]); # F42 AGR.GRP("exc","F42","F42"); AGR.TOC("perm","F42G1-p69888aB0.m",[-69475917,-84190098]); AGR.TOC("matff","F42G1-f2r26aB0.m",[87092000,-122290764]); AGR.TOC("maxes","F42G1-max3W1",[88368943]); AGR.TOC("out","F42G1-aW1",[-12804023]); # F42d2 AGR.GRP("exc","F42","F42d2"); AGR.TOC("matff","F42d2G1-f2r52B0.m",[-130699985,-57245789]); # 3G23 AGR.GRP("exc","G23","3G23"); AGR.TOC("perm","3G23G1-p1134B0.m",[-34025902,37530367]); AGR.TOC("matff","3G23G1-f4r27B0.m",[37994813,131397011]); AGR.TOC("matff","3G23G1-f7r27B0.m",[-87624442,95048033]); AGR.TOC("matff","3G23G1-f13r27B0.m",[61117322,-70520800]); # 3G23d2 AGR.GRP("exc","G23","3G23d2"); AGR.TOC("matff","3G23d2G1-f2r54B0.m",[76280437,92930197]); # G23 AGR.GRP("exc","G23","G23"); AGR.TOC("matff","G23G1-f2r14B0.m",[86434273,-43037825]); AGR.TOC("matff","G23G1-f2r78B0.m",[35032665,-63417450]); AGR.TOC("matff","G23G1-f2r90aB0.m",[69935322,-78029905]); AGR.TOC("matff","G23G1-f2r90bB0.m",[-23279448,19285845]); AGR.TOC("matff","G23G1-f2r90cB0.m",[-84439532,14115789]); AGR.TOC("matff","G23G1-f2r378B0.m",[51818618,71716851]); AGR.TOC("matff","G23G1-f3r7aB0.m",[-82008745,-123787747]); AGR.TOC("matff","G23G1-f3r7bB0.m",[37685085,20210123]); AGR.TOC("matff","G23G1-f3r27aB0.m",[-99882363,-16674426]); AGR.TOC("matff","G23G1-f3r27bB0.m",[-118117076,92962773]); AGR.TOC("matff","G23G1-f3r49B0.m",[9924097,56775392]); AGR.TOC("matff","G23G1-f3r189aB0.m",[-79955435,-95389552]); AGR.TOC("matff","G23G1-f3r189bB0.m",[71038188,-112373668]); AGR.TOC("matff","G23G1-f3r729B0.m",[-134099399,25104360]); AGR.TOC("matff","G23G1-f4r64aB0.m",[83734468,46041958]); AGR.TOC("matint","G23G1-Zr14B0.g",[-125439079]); AGR.TOC("matint","G23G1-Zr78B0.g",[-15372865]); AGR.TOC("matint","G23G1-Zr91aB0.g",[-64622020]); AGR.TOC("matint","G23G1-Zr91bB0.g",[-22531406]); AGR.TOC("matint","G23G1-Zr91cB0.g",[18002893]); AGR.TOC("matint","G23G1-Zr104B0.g",[-28104291]); AGR.TOC("matint","G23G1-Zr128B0.g",[-42573218]); AGR.TOC("matint","G23G1-Zr168B0.g",[-23126590]); AGR.TOC("matint","G23G1-Zr182aB0.g",[-1602808]); AGR.TOC("matint","G23G1-Zr182bB0.g",[-15191443]); AGR.TOC("maxes","G23G1-max1W1",[18720622]); AGR.TOC("maxes","G23G1-max2W1",[-17309167]); AGR.TOC("maxes","G23G1-max3W1",[-85688773]); AGR.TOC("maxes","G23G1-max4W1",[-102351042]); AGR.TOC("maxes","G23G1-max5W1",[-66384110]); AGR.TOC("maxes","G23G1-max6W1",[-13544917]); AGR.TOC("maxes","G23G1-max7W1",[38209968]); AGR.TOC("maxes","G23G1-max8W1",[-64232439]); AGR.TOC("maxes","G23G1-max9W1",[123477709]); AGR.TOC("maxes","G23G1-max10W1",[52528300]); AGR.TOC("cyclic","G23G1-cycW1",[36668268]); AGR.TOC("cyc2ccl","G23G1cycW1-cclsW1",[-89533622]); AGR.TOC("out","G23G1-aW1",[22691057]); AGR.TOC("pres","G23G1-P1",[-94264700]); # G23d2 AGR.GRP("exc","G23","G23d2"); AGR.TOC("perm","G23d2G1-p756B0.m",[42478542,51190038]); AGR.TOC("matff","G23d2G1-f2r14B0.m",[109031783,12990791]); AGR.TOC("matff","G23d2G1-f3r14B0.m",[73912942,80930425]); AGR.TOC("matff","G23d2G1-f7r14B0.m",[123985256,-80651691]); AGR.TOC("matff","G23d2G1-f13r14B0.m",[98088004,548769]); AGR.TOC("matff","G23d2G1-f13r434aB0.m",[74284224,37219817]); AGR.TOC("matalg","G23d2G1-Ar14B0.g",[117470773]); AGR.TOC("cyclic","G23d2G1-cycW1",[37643139]); AGR.TOC("cyc2ccl","G23d2G1cycW1-cclsW1",[65429839]); # 2G24 AGR.GRP("exc","G24","2G24"); AGR.TOC("matff","2G24G1-f3r12B0.m",[-67944567,-70203068]); AGR.TOC("matff","2G24G1-f5r12B0.m",[104442327,66070846]); AGR.TOC("matff","2G24G1-f5r92B0.m",[55965017,73607009]); AGR.TOC("matff","2G24G1-f7r12B0.m",[125615336,-4580527]); AGR.TOC("matff","2G24G1-f13r12B0.m",[-28440236,51252205]); AGR.TOC("matalg","2G24G1-Ar12B0.g",[51673463]); # 2G24d2 AGR.GRP("exc","G24","2G24d2"); AGR.TOC("matff","2G24d2G1-f7r12B0.m",[-121289401,-94829410]); AGR.TOC("matff","2G24d2G1-f9r12B0.m",[2580368,-42882399]); AGR.TOC("matff","2G24d2G1-f25r12B0.m",[-89736189,-64347559]); AGR.TOC("matff","2G24d2G1-f169r12B0.m",[-77376727,-39618687]); # 2G24d2i AGR.GRP("exc","G24","2G24d2i"); AGR.TOC("matff","2G24d2iG1-f3r12B0.m",[-47661060,-125365015]); # G24 AGR.GRP("exc","G24","G24"); AGR.TOC("perm","G24G1-p416B0.m",[51929690,-126223003]); AGR.TOC("perm","G24G1-p1365aB0.m",[-115158810,123111142]); AGR.TOC("perm","G24G1-p1365bB0.m",[-616460,-44852760]); AGR.TOC("perm","G24G1-p2016B0.m",[-42357015,39146207]); AGR.TOC("perm","G24G1-p2080B0.m",[-71294971,42600740]); AGR.TOC("perm","G24G1-p20800B0.m",[40526408,109930642]); AGR.TOC("matff","G24G1-f2r36B0.m",[-69550858,-88757509]); AGR.TOC("matff","G24G1-f2r196B0.m",[-36645448,68701707]); AGR.TOC("matff","G24G1-f3r64B0.m",[-61178871,47389179]); AGR.TOC("matff","G24G1-f3r78B0.m",[56754631,88353235]); AGR.TOC("matff","G24G1-f3r286B0.m",[-16456749,82354631]); AGR.TOC("matff","G24G1-f4r6aB0.m",[-8236036,128010787]); AGR.TOC("matff","G24G1-f4r6bB0.m",[-112136579,-68650117]); AGR.TOC("matff","G24G1-f4r14aB0.m",[-118197343,86712798]); AGR.TOC("matff","G24G1-f4r14bB0.m",[-116763231,71178845]); AGR.TOC("matff","G24G1-f4r64aB0.m",[-7261211,21213869]); AGR.TOC("matff","G24G1-f4r64bB0.m",[-17269228,-73693460]); AGR.TOC("matff","G24G1-f4r84aB0.m",[6140054,-24586477]); AGR.TOC("matff","G24G1-f4r84bB0.m",[34461358,-26016054]); AGR.TOC("matff","G24G1-f4r384aB0.m",[-82553044,-122520759]); AGR.TOC("matff","G24G1-f4r896aB0.m",[95398693,-63990656]); AGR.TOC("matff","G24G1-f5r65B0.m",[-127754414,76430054]); AGR.TOC("matff","G24G1-f5r78B0.m",[59900505,126954124]); AGR.TOC("matff","G24G1-f5r350B0.m",[49463148,69419323]); AGR.TOC("matff","G24G1-f5r363aB0.m",[75975508,-74691309]); AGR.TOC("matff","G24G1-f5r650B0.m",[-50931554,98893669]); AGR.TOC("matff","G24G1-f7r65B0.m",[20281126,107078106]); AGR.TOC("matff","G24G1-f7r78B0.m",[14130029,-11324105]); AGR.TOC("matff","G24G1-f13r65B0.m",[95368012,125051968]); AGR.TOC("matff","G24G1-f13r78B0.m",[29876060,-63293875]); AGR.TOC("matint","G24G1-Zr65B0.g",[-108898852]); AGR.TOC("matint","G24G1-Zr78B0.g",[102360278]); AGR.TOC("matint","G24G1-Zr350B0.g",[61213744]); AGR.TOC("maxes","G24G1-max1W1",[-32570630]); AGR.TOC("maxes","G24G1-max2W1",[-67243668]); AGR.TOC("maxes","G24G1-max3W1",[-120914341]); AGR.TOC("maxes","G24G1-max4W1",[-110962718]); AGR.TOC("maxes","G24G1-max5W1",[-111848634]); AGR.TOC("maxes","G24G1-max6W1",[123150437]); AGR.TOC("maxes","G24G1-max7W1",[57286674]); AGR.TOC("maxes","G24G1-max8W1",[-76130921]); AGR.TOC("cyclic","G24G1-cycW1",[-125358015]); AGR.TOC("cyc2ccl","G24G1cycW1-cclsW1",[73001604]); AGR.TOC("out","G24G1-aW1",[-50874917]); # G24d2 AGR.GRP("exc","G24","G24d2"); AGR.TOC("matff","G24d2G1-f2r12B0.m",[53559400,10770446]); AGR.TOC("matff","G24d2G1-f2r28B0.m",[125029957,133176954]); AGR.TOC("matff","G24d2G1-f2r36B0.m",[4814614,-66949677]); AGR.TOC("matff","G24d2G1-f2r128B0.m",[-115232965,-25353254]); AGR.TOC("matff","G24d2G1-f2r168B0.m",[-128954098,-65897249]); AGR.TOC("matff","G24d2G1-f2r196B0.m",[-85543658,-1871408]); AGR.TOC("matff","G24d2G1-f2r768B0.m",[-96415813,-49469578]); AGR.TOC("matff","G24d2G1-f3r64B0.m",[-119948435,-17965086]); AGR.TOC("matff","G24d2G1-f5r65B0.m",[-48774137,-119676318]); AGR.TOC("matff","G24d2G1-f13r65B0.m",[-18511590,120275590]); AGR.TOC("maxes","G24d2G1-max1W1",[-121379964]); AGR.TOC("cyclic","G24d2G1-cycW1",[109593526]); AGR.TOC("cyc2ccl","G24d2G1cycW1-cclsW1",[15196885]); # G25 AGR.GRP("exc","G25","G25"); AGR.TOC("perm","G25G1-p3906aB0.m",[-46431010,61004361]); AGR.TOC("perm","G25G1-p3906bB0.m",[96097769,-18195913]); AGR.TOC("perm","G25G1-p7750B0.m",[31797774,-26503741]); AGR.TOC("perm","G25G1-p7875B0.m",[38818423,-40529780]); AGR.TOC("matff","G25G1-f2r124B0.m",[92148540,79477694]); AGR.TOC("matff","G25G1-f3r124B0.m",[9277469,-110639435]); AGR.TOC("matff","G25G1-f3r651B0.m",[-12979976,-77711058]); AGR.TOC("matff","G25G1-f5r7B0.m",[-87260318,-71210308]); AGR.TOC("matff","G25G1-f5r14B0.m",[-21734629,-122434885]); AGR.TOC("matff","G25G1-f5r27B0.m",[129030369,-36682541]); AGR.TOC("matff","G25G1-f5r64B0.m",[64732108,58156458]); AGR.TOC("matff","G25G1-f5r77aB0.m",[73899891,-59347764]); AGR.TOC("matff","G25G1-f5r77bB0.m",[22873994,-70431269]); AGR.TOC("matff","G25G1-f5r97B0.m",[-112735515,68491092]); AGR.TOC("matff","G25G1-f5r182B0.m",[-49451491,-111747915]); AGR.TOC("matff","G25G1-f5r189B0.m",[92584953,-111884055]); AGR.TOC("matff","G25G1-f5r196B0.m",[133353185,128963607]); AGR.TOC("matff","G25G1-f5r371B0.m",[-85524619,-89118573]); AGR.TOC("matff","G25G1-f5r469B0.m",[80896235,37618159]); AGR.TOC("matff","G25G1-f5r483B0.m",[36818705,-14747997]); AGR.TOC("matff","G25G1-f5r721B0.m",[83883746,106891019]); AGR.TOC("matff","G25G1-f5r792B0.m",[6111574,-111486014]); AGR.TOC("maxes","G25G1-max1W1",[116756554]); AGR.TOC("maxes","G25G1-max2W1",[-62289962]); AGR.TOC("maxes","G25G1-max3W1",[120656499]); AGR.TOC("maxes","G25G1-max4W1",[111454099]); AGR.TOC("maxes","G25G1-max5W1",[-103005232]); AGR.TOC("maxes","G25G1-max6W1",[-45312413]); AGR.TOC("maxes","G25G1-max7W1",[-59368457]); AGR.TOC("cyc2ccl","G25G1cycW1-cclsW1",[-73931334]); # R27 AGR.GRP("exc","R27","R27"); AGR.TOC("perm","R27G1-p19684B0.m",[88111870,99184963]); AGR.TOC("matff","R27G1-f2r702B0.m",[26647838,24903191]); AGR.TOC("matff","R27G1-f27r7aB0.m",[-131893556,-92458544]); AGR.TOC("maxes","R27G1-max1W1",[-86545949]); AGR.TOC("maxes","R27G1-max2W1",[131433428]); AGR.TOC("maxes","R27G1-max3W1",[-20101048]); AGR.TOC("maxes","R27G1-max4W1",[-9024597]); AGR.TOC("maxes","R27G1-max5W1",[111943722]); AGR.TOC("maxes","R27G1-max6W1",[27654707]); AGR.TOC("cyclic","R27G1-cycW1",[73942379]); AGR.TOC("cyc2ccl","R27G1cycW1-cclsW1",[43823151]); AGR.TOC("out","R27G1-a3W1",[-43269740]); # R27d3 AGR.GRP("exc","R27","R27d3"); AGR.TOC("perm","R27d3G1-p19684B0.m",[64026943,29236333]); AGR.TOC("matff","R27d3G1-f2r702B0.m",[-20100123,-116928782]); AGR.TOC("matff","R27d3G1-f3r21B0.m",[116304889,96169159]); AGR.TOC("matff","R27d3G1-f4r741B0.m",[-133120577,-27931998]); AGR.TOC("maxes","R27d3G1-max1W1",[69723780]); AGR.TOC("maxes","R27d3G1-max2W1",[-101788691]); AGR.TOC("maxes","R27d3G1-max5W1",[-132658566]); AGR.TOC("maxes","R27d3G1-max6W1",[48349980]); AGR.TOC("cyclic","R27d3G1-cycW1",[59432872]); AGR.TOC("switch","R27d3G2-G1W1",[-63317196]); # Sz32 AGR.GRP("exc","Sz32","Sz32"); AGR.TOC("perm","Sz32G1-p1025B0.m",[-74943283,-38599391]); AGR.TOC("perm","Sz32G1-p198400B0.m",[-110250955,-38848881]); AGR.TOC("matff","Sz32G1-f5r124aB0.m",[-85113157,34261390]); AGR.TOC("matff","Sz32G1-f32r4aB0.m",[-39583783,77480269]); AGR.TOC("matff","Sz32G1-f41r124bB0.m",[-21014751,125604766]); AGR.TOC("maxes","Sz32G1-max1W1",[25385764]); AGR.TOC("maxes","Sz32G1-max2W1",[8659865]); AGR.TOC("maxes","Sz32G1-max3W1",[-86222599]); AGR.TOC("maxes","Sz32G1-max4W1",[-64659392]); AGR.TOC("cyclic","Sz32G1-cycW1",[119938586]); AGR.TOC("cyc2ccl","Sz32G1cycW1-cclsW1",[51030262]); # Sz32d5 AGR.GRP("exc","Sz32","Sz32d5"); AGR.TOC("perm","Sz32d5G1-p1025B0.m",[-17269389,84602614]); AGR.TOC("matff","Sz32d5G1-f2r20B0.m",[40805757,-50580400]); AGR.TOC("matff","Sz32d5G1-f5r124B0.m",[-311161,-5295501]); AGR.TOC("matff","Sz32d5G1-f5r248B0.m",[-9152643,-78092594]); AGR.TOC("matff","Sz32d5G1-f41r124B0.m",[88762614,98369594]); AGR.TOC("cyclic","Sz32d5G1-cycW1",[67817474]); # 2Sz8 AGR.GRP("exc","Sz8","2Sz8"); AGR.TOC("perm","2Sz8G1-p1040B0.m",[33264941,27987108]); AGR.TOC("matff","2Sz8G1-f2r128B0.m",[92649122,89231077]); AGR.TOC("matff","2Sz8G1-f5r8B0.m",[124580415,2446579]); AGR.TOC("matff","2Sz8G1-f7r40B0.m",[-56647718,-17769151]); AGR.TOC("matff","2Sz8G1-f13r16B0.m",[-89521920,16445770]); AGR.TOC("matff","2Sz8G1-f13r24B0.m",[35347373,-120126973]); AGR.TOC("pres","2Sz8G1-P1",[90075528]); # 4Sz8d3 AGR.GRP("exc","Sz8","4Sz8d3"); AGR.TOC("perm","4Sz8d3G1-p2080B0.m",[-2101264,70462745]); AGR.TOC("matff","4Sz8d3G1-f7r120B0.m",[-95140584,47871236]); AGR.TOC("matff","4Sz8d3G1-f13r48B0.m",[41418737,-71622098]); AGR.TOC("pres","4Sz8d3G1-P1",[-128061809]); # Sz8 AGR.GRP("exc","Sz8","Sz8"); AGR.TOC("perm","Sz8G1-p65B0.m",[-26581639,38161388]); AGR.TOC("perm","Sz8G1-p520B0.m",[-56882349,-114530139]); AGR.TOC("perm","Sz8G1-p560B0.m",[123310580,-17176368]); AGR.TOC("perm","Sz8G1-p1456B0.m",[-9198948,90911383]); AGR.TOC("perm","Sz8G1-p2080B0.m",[75808414,82588160]); AGR.TOC("matff","Sz8G1-f2r64B0.m",[-79065595,-38559232]); AGR.TOC("matff","Sz8G1-f5r14aB0.m",[10635806,-121759694]); AGR.TOC("matff","Sz8G1-f5r14bB0.m",[61058488,109021804]); AGR.TOC("matff","Sz8G1-f5r35aB0.m",[-59828866,131000197]); AGR.TOC("matff","Sz8G1-f5r35bB0.m",[-130041963,122519422]); AGR.TOC("matff","Sz8G1-f5r35cB0.m",[37522945,44869422]); AGR.TOC("matff","Sz8G1-f5r63B0.m",[-73238756,-16410445]); AGR.TOC("matff","Sz8G1-f5r195B0.m",[22203286,-13340200]); AGR.TOC("matff","Sz8G1-f7r64B0.m",[-123808239,-124110480]); AGR.TOC("matff","Sz8G1-f7r91B0.m",[-67586149,-983233]); AGR.TOC("matff","Sz8G1-f7r105B0.m",[38624629,-102965256]); AGR.TOC("matff","Sz8G1-f8r4aB0.m",[-123386786,113139979]); AGR.TOC("matff","Sz8G1-f8r16aB0.m",[-13412516,102615520]); AGR.TOC("matff","Sz8G1-f13r14aB0.m",[-66344243,-33179604]); AGR.TOC("matff","Sz8G1-f13r14bB0.m",[47820803,-115122686]); AGR.TOC("matff","Sz8G1-f13r35B0.m",[101418339,31923402]); AGR.TOC("matff","Sz8G1-f13r65aB0.m",[-40648355,49826080]); AGR.TOC("matff","Sz8G1-f13r65bB0.m",[-47835996,38687356]); AGR.TOC("matff","Sz8G1-f13r65cB0.m",[52255716,31097004]); AGR.TOC("matff","Sz8G1-f13r91B0.m",[-64703317,-94406067]); AGR.TOC("matff","Sz8G1-f49r14aB0.m",[37509277,17651471]); AGR.TOC("matff","Sz8G1-f125r65aB0.m",[-10776260,-22856988]); AGR.TOC("matff","Sz8G1-f125r65bB0.m",[-45427874,81182393]); AGR.TOC("matff","Sz8G1-f125r65cB0.m",[41924281,21885908]); AGR.TOC("matint","Sz8G1-Zr64B0.g",[-54004418]); AGR.TOC("matint","Sz8G1-Zr91B0.g",[109141593]); AGR.TOC("matalg","Sz8G1-Ar14aB0.g",[-8303044]); AGR.TOC("matalg","Sz8G1-Ar14bB0.g",[32973316]); AGR.TOC("matalg","Sz8G1-Ar65aB0.g",[39839717]); AGR.TOC("matalg","Sz8G1-Ar65bB0.g",[-97321434]); AGR.TOC("matalg","Sz8G1-Ar65cB0.g",[104586205]); AGR.TOC("maxes","Sz8G1-max1W1",[-106792446]); AGR.TOC("maxes","Sz8G1-max2W1",[-36021094]); AGR.TOC("maxes","Sz8G1-max3W1",[-25404543]); AGR.TOC("maxes","Sz8G1-max4W1",[-30852836]); AGR.TOC("classes","Sz8G1-cclsW1",[1795836]); AGR.TOC("cyclic","Sz8G1-cycW1",[63506842]); AGR.TOC("out","Sz8G1-a3W1",[102410782]); AGR.TOC("pres","Sz8G1-P1",[-36123627]); AGR.TOC("pres","Sz8G1-P2",[-92624787]); # Sz8d3 AGR.GRP("exc","Sz8","Sz8d3"); AGR.TOC("perm","Sz8d3G1-p65B0.m",[18689327,-130297361]); AGR.TOC("perm","Sz8d3G1-p520B0.m",[-134036275,-37527552]); AGR.TOC("perm","Sz8d3G1-p560B0.m",[29082476,-77011387]); AGR.TOC("perm","Sz8d3G1-p1456B0.m",[30603744,103276534]); AGR.TOC("perm","Sz8d3G1-p2080B0.m",[-117851698,-120267967]); AGR.TOC("matff","Sz8d3G1-f2r12B0.m",[-7393420,51938477]); AGR.TOC("matff","Sz8d3G1-f2r48B0.m",[89758950,-102260227]); AGR.TOC("matff","Sz8d3G1-f2r64B0.m",[5582233,-10305271]); AGR.TOC("matff","Sz8d3G1-f5r14B0.m",[128338057,43680009]); AGR.TOC("matff","Sz8d3G1-f5r63B0.m",[17291923,36419726]); AGR.TOC("matff","Sz8d3G1-f5r105B0.m",[-39927249,36852902]); AGR.TOC("matff","Sz8d3G1-f5r195B0.m",[8609772,-123588745]); AGR.TOC("matff","Sz8d3G1-f13r14B0.m",[-33472415,68968455]); AGR.TOC("matff","Sz8d3G1-f49r14B0.m",[-33148388,114852150]); AGR.TOC("maxes","Sz8d3G1-max1W1",[23585294]); AGR.TOC("maxes","Sz8d3G1-max1W2",[56024232]); AGR.TOC("maxes","Sz8d3G1-max2W1",[-106795528]); AGR.TOC("maxes","Sz8d3G1-max3W1",[-85586222]); AGR.TOC("maxes","Sz8d3G1-max4W1",[45488179]); AGR.TOC("maxes","Sz8d3G1-max5W1",[110343436]); AGR.TOC("classes","Sz8d3G1-cclsW1",[29754915]); AGR.TOC("cyclic","Sz8d3G1-cycW1",[94183098]); AGR.TOC("switch","Sz8d3G2-G1W1",[-92862509]); AGR.TOC("pres","Sz8d3G1-P1",[124335026]); # TD42 AGR.GRP("exc","TD42","TD42"); AGR.TOC("perm","TD42G1-p819B0.m",[-10501305,-99061254]); AGR.TOC("matff","TD42G1-f2r26B0.m",[6861405,27316309]); AGR.TOC("matff","TD42G1-f3r25B0.m",[-111344188,-71017228]); AGR.TOC("matff","TD42G1-f3r52B0.m",[25673339,-110318590]); AGR.TOC("matff","TD42G1-f3r196B0.m",[-56202347,82705611]); AGR.TOC("matff","TD42G1-f3r324B0.m",[44026544,-132500728]); AGR.TOC("matff","TD42G1-f3r441B0.m",[-12427530,16658292]); AGR.TOC("matff","TD42G1-f3r1053B0.m",[-98355828,-121741633]); AGR.TOC("matff","TD42G1-f7r26B0.m",[-20015577,34677534]); AGR.TOC("matff","TD42G1-f7r298B0.m",[-68795028,-97476619]); AGR.TOC("matff","TD42G1-f8r8aB0.m",[93622710,-33344479]); AGR.TOC("matff","TD42G1-f13r26B0.m",[-30054543,96988669]); AGR.TOC("matff","TD42G1-f27r351aB0.m",[-69567476,-46875777]); AGR.TOC("matff","TD42G1-f27r351bB0.m",[52698257,-13710506]); AGR.TOC("matff","TD42G1-f27r351cB0.m",[24139637,82594114]); AGR.TOC("matint","TD42G1-Zr26B0.g",[-82811700]); AGR.TOC("matint","TD42G1-Zr52B0.g",[58692512]); AGR.TOC("matint","TD42G1-Zr196B0.g",[116322165]); AGR.TOC("maxes","TD42G1-max1W1",[108517232]); AGR.TOC("maxes","TD42G1-max2W1",[-61427847]); AGR.TOC("maxes","TD42G1-max3W1",[71768213]); AGR.TOC("maxes","TD42G1-max4W1",[24910469]); AGR.TOC("maxes","TD42G1-max5W1",[-39788286]); AGR.TOC("maxes","TD42G1-max6W1",[3858362]); AGR.TOC("maxes","TD42G1-max7W1",[-92433715]); AGR.TOC("maxes","TD42G1-max8W1",[-21999476]); AGR.TOC("maxes","TD42G1-max9W1",[72478709]); AGR.TOC("cyclic","TD42G1-cycW1",[109498448]); AGR.TOC("cyc2ccl","TD42G1cycW1-cclsW1",[-110910802]); AGR.TOC("out","TD42G1-a3W1",[79559950]); # TD42d3 AGR.GRP("exc","TD42","TD42d3"); AGR.TOC("matff","TD42d3G1-f2r24B0.m",[97460247,-38233255]); AGR.TOC("matff","TD42d3G1-f2r26B0.m",[51230031,-77205005]); AGR.TOC("matff","TD42d3G1-f2r144B0.m",[18107385,-117405903]); AGR.TOC("matff","TD42d3G1-f2r246aB0.m",[92665502,-106689310]); AGR.TOC("matff","TD42d3G1-f2r480B0.m",[45254823,20144904]); AGR.TOC("matff","TD42d3G1-f3r52B0.m",[-71771377,-89200195]); AGR.TOC("matff","TD42d3G1-f3r196B0.m",[-89122273,-65715266]); AGR.TOC("matff","TD42d3G1-f7r26aB0.m",[37443700,77984633]); AGR.TOC("matff","TD42d3G1-f7r52aB0.m",[31761421,84408856]); AGR.TOC("matff","TD42d3G1-f7r273aB0.m",[125689997,30751760]); AGR.TOC("matff","TD42d3G1-f7r298aB0.m",[75265722,76184115]); AGR.TOC("matff","TD42d3G1-f7r467aB0.m",[-63050505,47319765]); AGR.TOC("matff","TD42d3G1-f13r26aB0.m",[119078174,21186735]); AGR.TOC("maxes","TD42d3G1-max4W1",[-80145308]); AGR.TOC("cyclic","TD42d3G1-cycW1",[-33183597]); AGR.TOC("cyc2ccl","TD42d3G1cycW1-cclsW1",[-90186984]); # TD43 AGR.GRP("exc","TD43","TD43"); AGR.TOC("perm","TD43G1-p26572B0.m",[-88074186,-38786018]); AGR.TOC("matff","TD43G1-f2r218B0.m",[104905526,75727876]); AGR.TOC("matff","TD43G1-f27r8aB0.m",[-125396163,-72636897]); # 2TE62 AGR.GRP("exc","TE62","2TE62"); AGR.TOC("matff","2TE62G1-f2r1704B0.m",[98176133,73659634]); # 2TE62d2 AGR.GRP("exc","TE62","2TE62d2"); AGR.TOC("matff","2TE62d2G1-f2r1705B0.m",[132074392,7708207]); AGR.TOC("matff","2TE62d2G1-f3r2432B0.m",[31810249,-22770249]); # 3TE62 AGR.GRP("exc","TE62","3TE62"); AGR.TOC("matff","3TE62G1-f4r27B0.m",[-89255860,-93293123]); # 3TE62S3 AGR.GRP("exc","TE62","3TE62S3"); AGR.TOC("matff","3TE62S3G0-f2r54B0.m",[131898693,-116462187]); # 3TE62d2 AGR.GRP("exc","TE62","3TE62d2"); AGR.TOC("matff","3TE62d2G1-f2r54B0.m",[35844574,-6779317]); # 3TE62d3 AGR.GRP("exc","TE62","3TE62d3"); AGR.TOC("matff","3TE62d3G0-f4r27B0.m",[-8598482,-129967937]); # 4TE62 AGR.GRP("exc","TE62","4TE62"); AGR.TOC("matff","4TE62G1-f2r1706B0.m",[-28003667,20498628]); # TE62 AGR.GRP("exc","TE62","TE62"); AGR.TOC("matff","TE62G1-f2r78B0.m",[29106086,-122397655]); AGR.TOC("matff","TE62G1-f2r1705aB0.m",[83016690,-94650971]); AGR.TOC("out","TE62G1-a2W1",[-59453278]); AGR.TOC("out","TE62G1-a3W1",[63184971]); # TE62S3 AGR.GRP("exc","TE62","TE62S3"); AGR.TOC("matff","TE62S3G0-f2r78B0.m",[83222518,90809456]); # TE62d2 AGR.GRP("exc","TE62","TE62d2"); AGR.TOC("matff","TE62d2G1-f2r78B0.m",[82064475,124956596]); AGR.TOC("matff","TE62d2G1-f3r1938B0.m",[31851186,55531837]); # TE62d3 AGR.GRP("exc","TE62","TE62d3"); AGR.TOC("matff","TE62d3G0-f2r78B0.m",[83222518,106730798]); # TF42 AGR.GRP("exc","TF42","TF42"); AGR.TOC("perm","TF42G1-p1600B0.m",[-37211084,-38897253]); AGR.TOC("perm","TF42G1-p1755B0.m",[58998439,70853112]); AGR.TOC("perm","TF42G1-p2304B0.m",[-120477733,-29507280]); AGR.TOC("perm","TF42G1-p2925B0.m",[68358721,-45087045]); AGR.TOC("perm","TF42G1-p12480B0.m",[-23470927,51049576]); AGR.TOC("perm","TF42G1-p14976B0.m",[121478237,-76779913]); AGR.TOC("matff","TF42G1-f2r26B0.m",[-14435114,-113292396]); AGR.TOC("matff","TF42G1-f2r246B0.m",[-19232979,82932839]); AGR.TOC("matff","TF42G1-f3r26aB0.m",[-54455119,-36800145]); AGR.TOC("matff","TF42G1-f3r26bB0.m",[53486701,-2015262]); AGR.TOC("matff","TF42G1-f3r54B0.m",[-111305949,-116611254]); AGR.TOC("matff","TF42G1-f3r77B0.m",[-80577335,116951646]); AGR.TOC("matff","TF42G1-f3r124aB0.m",[-54985865,132715076]); AGR.TOC("matff","TF42G1-f3r124bB0.m",[95513912,-73639791]); AGR.TOC("matff","TF42G1-f4r2048aB0.m",[-101207181,23217347]); AGR.TOC("matff","TF42G1-f5r27aB0.m",[79127454,-62374549]); AGR.TOC("matff","TF42G1-f5r27bB0.m",[27989765,75490599]); AGR.TOC("matff","TF42G1-f5r52B0.m",[8121505,-80695927]); AGR.TOC("matff","TF42G1-f5r78B0.m",[-89209549,-12947059]); AGR.TOC("matff","TF42G1-f5r218B0.m",[-120317877,-60225010]); AGR.TOC("matff","TF42G1-f9r27aB0.m",[58474367,105018797]); AGR.TOC("matff","TF42G1-f9r27bB0.m",[69866060,113452040]); AGR.TOC("matff","TF42G1-f13r27aB0.m",[-25896573,-59272896]); AGR.TOC("matff","TF42G1-f13r27bB0.m",[6846205,93819061]); AGR.TOC("matff","TF42G1-f13r52B0.m",[-67021491,-93909355]); AGR.TOC("matff","TF42G1-f13r78B0.m",[-67757828,45547291]); AGR.TOC("matff","TF42G1-f25r26aB0.m",[72243187,102875993]); AGR.TOC("matff","TF42G1-f25r26bB0.m",[-118084756,-103588755]); AGR.TOC("matff","TF42G1-f25r109aB0.m",[-816843,-102780292]); AGR.TOC("matff","TF42G1-f25r109bB0.m",[68604401,71301559]); AGR.TOC("matff","TF42G1-f169r26B0.m",[89078598,14639889]); AGR.TOC("matint","TF42G1-Zr52B0.g",[47940272]); AGR.TOC("matint","TF42G1-Zr78B0.g",[-46120530]); AGR.TOC("maxes","TF42G1-max1W1",[-52963060]); AGR.TOC("maxes","TF42G1-max2W1",[-21832158]); AGR.TOC("maxes","TF42G1-max3W1",[-31485219]); AGR.TOC("maxes","TF42G1-max4W1",[45633895]); AGR.TOC("maxes","TF42G1-max5W1",[-2996082]); AGR.TOC("maxes","TF42G1-max6W1",[-10856115]); AGR.TOC("maxes","TF42G1-max7W1",[-18055979]); AGR.TOC("maxes","TF42G1-max8W1",[-74592193]); AGR.TOC("cyclic","TF42G1-cycW1",[112883162]); AGR.TOC("cyc2ccl","TF42G1cycW1-cclsW1",[105460752]); AGR.TOC("pres","TF42G1-P1",[-124990063]); # TF42d2 AGR.GRP("exc","TF42","TF42d2"); AGR.TOC("perm","TF42d2G1-p1755B0.m",[-52088433,-100606049]); AGR.TOC("perm","TF42d2G1-p2304B0.m",[70494450,115546319]); AGR.TOC("matff","TF42d2G1-f2r26B0.m",[-38675641,-39644523]); AGR.TOC("matff","TF42d2G1-f2r246B0.m",[97755809,71082518]); AGR.TOC("matff","TF42d2G1-f3r52B0.m",[124402546,-54811053]); AGR.TOC("matff","TF42d2G1-f3r77B0.m",[-109209670,113053227]); AGR.TOC("matff","TF42d2G1-f5r27B0.m",[6496008,128767148]); AGR.TOC("matff","TF42d2G1-f5r52B0.m",[24617056,99357518]); AGR.TOC("matff","TF42d2G1-f5r78B0.m",[-91803490,-110346379]); AGR.TOC("matff","TF42d2G1-f5r218B0.m",[106581594,-105082374]); AGR.TOC("matff","TF42d2G1-f13r27aB0.m",[-71944661,-5801480]); AGR.TOC("matff","TF42d2G1-f13r27bB0.m",[35975952,-60429928]); AGR.TOC("matff","TF42d2G1-f13r78B0.m",[30775775,-60970092]); AGR.TOC("matff","TF42d2G1-f13r1374B0.m",[72048076,-47464220]); AGR.TOC("maxes","TF42d2G1-max1W1",[72641225]); AGR.TOC("pres","TF42d2G1-P1",[69865752]); # 2L2101 AGR.GRP("lin","L2101","2L2101"); AGR.TOC("matalg","2L2101G1-Ar102aB0.g",[37573240]); # L2101 AGR.GRP("lin","L2101","L2101"); AGR.TOC("matint","L2101G1-Zr101B0.g",[133076037]); AGR.TOC("matalg","L2101G1-Ar102aB0.g",[123113277]); AGR.TOC("maxes","L2101G1-max1W1",[77543199]); AGR.TOC("maxes","L2101G1-max2W1",[50083925]); AGR.TOC("maxes","L2101G1-max3W1",[75530552]); AGR.TOC("maxes","L2101G1-max4W1",[-85356476]); AGR.TOC("maxes","L2101G1-max5W1",[20202362]); AGR.TOC("out","L2101G1-a2W1",[108609048]); # 2L2103 AGR.GRP("lin","L2103","2L2103"); AGR.TOC("matalg","2L2103G1-Ar104aB0.g",[91016307]); # L2103 AGR.GRP("lin","L2103","L2103"); AGR.TOC("matint","L2103G1-Zr103B0.g",[124419151]); AGR.TOC("matalg","L2103G1-Ar104aB0.g",[84974515]); AGR.TOC("maxes","L2103G1-max1W1",[1168567]); AGR.TOC("maxes","L2103G1-max2W1",[98771752]); AGR.TOC("maxes","L2103G1-max3W1",[117428427]); AGR.TOC("maxes","L2103G1-max4W1",[-15214501]); AGR.TOC("maxes","L2103G1-max5W1",[-42252537]); AGR.TOC("out","L2103G1-a2W1",[-10449653]); # 2L2107 AGR.GRP("lin","L2107","2L2107"); AGR.TOC("matalg","2L2107G1-Ar108aB0.g",[41610451]); # L2107 AGR.GRP("lin","L2107","L2107"); AGR.TOC("matint","L2107G1-Zr107B0.g",[15234824]); AGR.TOC("matalg","L2107G1-Ar108aB0.g",[74687386]); AGR.TOC("maxes","L2107G1-max1W1",[-77221955]); AGR.TOC("maxes","L2107G1-max2W1",[50083925]); AGR.TOC("maxes","L2107G1-max3W1",[117428427]); AGR.TOC("maxes","L2107G1-max4W1",[-15986133]); AGR.TOC("out","L2107G1-a2W1",[70000060]); # 2L2109 AGR.GRP("lin","L2109","2L2109"); AGR.TOC("matalg","2L2109G1-Ar110aB0.g",[60416506]); # L2109 AGR.GRP("lin","L2109","L2109"); AGR.TOC("matint","L2109G1-Zr109B0.g",[-25735107]); AGR.TOC("matalg","L2109G1-Ar110aB0.g",[-45121876]); AGR.TOC("maxes","L2109G1-max1W1",[-9769840]); AGR.TOC("maxes","L2109G1-max2W1",[-52742966]); AGR.TOC("maxes","L2109G1-max3W1",[20196712]); AGR.TOC("maxes","L2109G1-max4W1",[-33392236]); AGR.TOC("maxes","L2109G1-max5W1",[-95740597]); AGR.TOC("out","L2109G1-a2W1",[-68559136]); # 2L211 AGR.GRP("lin","L211","2L211"); AGR.TOC("matff","2L211G1-f11r2B0.m",[117641548,74616249]); AGR.TOC("matff","2L211G1-f11r4B0.m",[-109242231,56040120]); AGR.TOC("matff","2L211G1-f11r6B0.m",[52557305,-55918315]); AGR.TOC("matff","2L211G1-f11r8B0.m",[45283555,-83694066]); AGR.TOC("matff","2L211G1-f11r10B0.m",[-89819765,75567976]); # L211 AGR.GRP("lin","L211","L211"); AGR.TOC("perm","L211G1-p11aB0.m",[-123271105,38306543]); AGR.TOC("perm","L211G1-p11bB0.m",[-123271105,-97689525]); AGR.TOC("perm","L211G1-p12B0.m",[-118120972,-27478863]); AGR.TOC("perm","L211G1-p55B0.m",[107363984,-70942041]); AGR.TOC("matff","L211G1-f2r10B0.m",[75057919,-104988621]); AGR.TOC("matff","L211G1-f2r10bB0.m",[38955196,127675444]); AGR.TOC("matff","L211G1-f2r24B0.m",[-78731294,-81476966]); AGR.TOC("matff","L211G1-f3r5aB0.m",[-18170891,-41767362]); AGR.TOC("matff","L211G1-f3r5bB0.m",[-29296439,5263909]); AGR.TOC("matff","L211G1-f3r10B0.m",[-60642449,-82170516]); AGR.TOC("matff","L211G1-f3r24B0.m",[-112790947,866855]); AGR.TOC("matff","L211G1-f4r5aB0.m",[-5236219,-90340470]); AGR.TOC("matff","L211G1-f4r5bB0.m",[13882788,46901805]); AGR.TOC("matff","L211G1-f4r12aB0.m",[104289404,-23317320]); AGR.TOC("matff","L211G1-f4r12bB0.m",[104289404,-122438266]); AGR.TOC("matff","L211G1-f5r5aB0.m",[-81550380,-131523481]); AGR.TOC("matff","L211G1-f5r5bB0.m",[-22534346,41800212]); AGR.TOC("matff","L211G1-f5r10aB0.m",[117734711,82239949]); AGR.TOC("matff","L211G1-f5r10bB0.m",[119720900,44516691]); AGR.TOC("matff","L211G1-f5r11B0.m",[122075473,-83625436]); AGR.TOC("matff","L211G1-f9r12aB0.m",[-127642448,-73986554]); AGR.TOC("matff","L211G1-f9r12bB0.m",[84450683,-61805314]); AGR.TOC("matff","L211G1-f11r3B0.m",[-126750382,-73939341]); AGR.TOC("matff","L211G1-f11r5B0.m",[49307670,69480485]); AGR.TOC("matff","L211G1-f11r7B0.m",[86809882,-124515293]); AGR.TOC("matff","L211G1-f11r9B0.m",[75379312,53671949]); AGR.TOC("matff","L211G1-f11r11B0.m",[-13081487,-16982456]); AGR.TOC("matint","L211G1-Zr10aB0.g",[96612861]); AGR.TOC("matint","L211G1-Zr10bB0.g",[-43431548]); AGR.TOC("matint","L211G1-Zr10cB0.g",[-47896152]); AGR.TOC("matint","L211G1-Zr11B0.g",[-2935033]); AGR.TOC("matalg","L211G1-Ar5aB0.g",[-134129477]); AGR.TOC("matalg","L211G1-Ar5bB0.g",[-10868109]); AGR.TOC("matalg","L211G1-Ar12aB0.g",[27330559]); AGR.TOC("matalg","L211G1-Ar12bB0.g",[16381729]); AGR.TOC("maxes","L211G1-max1W1",[-121742273]); AGR.TOC("maxes","L211G1-max2W1",[69578701]); AGR.TOC("maxes","L211G1-max3W1",[1157952]); AGR.TOC("maxes","L211G1-max4W1",[-119009509]); AGR.TOC("cyclic","L211G1-cycW1",[-123110936]); AGR.TOC("cyc2ccl","L211G1cycW1-cclsW1",[-37044661]); AGR.TOC("check","L211G1-check1",[100335170]); AGR.TOC("pres","L211G1-P1",[94801920]); # L211d2 AGR.GRP("lin","L211","L211d2"); AGR.TOC("perm","L211d2G1-p12B0.m",[85376259,78759073]); AGR.TOC("perm","L211d2G1-p22B0.m",[81251837,-32416322]); AGR.TOC("perm","L211d2G1-p55aB0.m",[2562443,-64825489]); AGR.TOC("perm","L211d2G1-p55bB0.m",[-60945265,-71912953]); AGR.TOC("perm","L211d2G1-p66B0.m",[102861998,46609527]); AGR.TOC("matff","L211d2G1-f2r10aB0.m",[-104455060,13626008]); AGR.TOC("matff","L211d2G1-f2r10bB0.m",[-64156113,112772673]); AGR.TOC("matff","L211d2G1-f4r12aB0.m",[-113262497,39895390]); AGR.TOC("matff","L211d2G1-f4r12bB0.m",[99408470,-26459309]); AGR.TOC("matff","L211d2G1-f11r3B0.m",[105616142,51353074]); AGR.TOC("matff","L211d2G1-f11r5B0.m",[-40684042,69480485]); AGR.TOC("matff","L211d2G1-f11r7B0.m",[23007475,120910396]); AGR.TOC("matff","L211d2G1-f11r9B0.m",[47008813,122974778]); AGR.TOC("matff","L211d2G1-f11r11B0.m",[-83346262,-127633464]); AGR.TOC("maxes","L211d2G1-max1W1",[-125255449]); AGR.TOC("maxes","L211d2G1-max2W1",[-111690704]); AGR.TOC("maxes","L211d2G1-max3W1",[-121742273]); AGR.TOC("maxes","L211d2G1-max4W1",[35382633]); AGR.TOC("maxes","L211d2G1-max5W1",[-69908688]); AGR.TOC("cyclic","L211d2G1-cycW1",[-77013908]); AGR.TOC("cyc2ccl","L211d2G1cycW1-cclsW1",[-95306297]); AGR.TOC("check","L211d2G1-check1",[-13733630]); AGR.TOC("pres","L211d2G1-P1",[90675863]); # 2L2113 AGR.GRP("lin","L2113","2L2113"); AGR.TOC("matalg","2L2113G1-Ar114aB0.g",[19005607]); # L2113 AGR.GRP("lin","L2113","L2113"); AGR.TOC("matint","L2113G1-Zr113B0.g",[-17556175]); AGR.TOC("matalg","L2113G1-Ar114aB0.g",[-29967839]); AGR.TOC("maxes","L2113G1-max1W1",[65275271]); AGR.TOC("maxes","L2113G1-max2W1",[-41665027]); AGR.TOC("maxes","L2113G1-max3W1",[40679634]); AGR.TOC("maxes","L2113G1-max4W1",[70293248]); AGR.TOC("maxes","L2113G1-max5W1",[7846482]); AGR.TOC("out","L2113G1-a2W1",[-31749984]); # 2L2127 AGR.GRP("lin","L2127","2L2127"); AGR.TOC("matalg","2L2127G1-Ar128aB0.g",[64922225]); # L2127 AGR.GRP("lin","L2127","L2127"); AGR.TOC("matint","L2127G1-Zr127B0.g",[108137535]); AGR.TOC("matalg","L2127G1-Ar128aB0.g",[-34498964]); AGR.TOC("maxes","L2127G1-max1W1",[-6184603]); AGR.TOC("maxes","L2127G1-max2W1",[98771752]); AGR.TOC("maxes","L2127G1-max3W1",[-52742966]); AGR.TOC("maxes","L2127G1-max4W1",[-81542613]); AGR.TOC("maxes","L2127G1-max5W1",[-99847805]); AGR.TOC("out","L2127G1-a2W1",[64553547]); # L2128 AGR.GRP("lin","L2128","L2128"); AGR.TOC("matint","L2128G1-Zr128B0.g",[-77487496]); AGR.TOC("matalg","L2128G1-Ar129aB0.g",[43545524]); # 2L213 AGR.GRP("lin","L213","2L213"); AGR.TOC("matff","2L213G1-f3r6aB0.m",[75322658,-28442581]); AGR.TOC("matff","2L213G1-f3r6bB0.m",[-21583259,-66373345]); AGR.TOC("matff","2L213G1-f3r14B0.m",[88377861,-102827991]); AGR.TOC("matff","2L213G1-f7r14aB0.m",[-67537133,108203959]); AGR.TOC("matff","2L213G1-f13r2B0.m",[98225255,13324548]); AGR.TOC("matff","2L213G1-f13r4B0.m",[-123327193,-131294325]); AGR.TOC("matff","2L213G1-f13r6B0.m",[77060268,4717066]); AGR.TOC("matff","2L213G1-f13r8B0.m",[98600107,-4412184]); AGR.TOC("matff","2L213G1-f13r10B0.m",[-112678870,-54337710]); AGR.TOC("matff","2L213G1-f13r12B0.m",[-10521917,-39316113]); AGR.TOC("matff","2L213G1-f27r12aB0.m",[-28729506,5105077]); AGR.TOC("matff","2L213G1-f27r12bB0.m",[-5973322,47284698]); AGR.TOC("matff","2L213G1-f27r12cB0.m",[-62161460,26516967]); AGR.TOC("matff","2L213G1-f49r6aB0.m",[-35361606,71477118]); AGR.TOC("matff","2L213G1-f49r6bB0.m",[-35361606,41211266]); AGR.TOC("matff","2L213G1-f49r14bB0.m",[44782079,-15650922]); AGR.TOC("matff","2L213G1-f49r14cB0.m",[109663018,39620947]); # 2L213d2 AGR.GRP("lin","L213","2L213d2"); AGR.TOC("matff","2L213d2G1-f3r12aB0.m",[100717735,-74660203]); # L213 AGR.GRP("lin","L213","L213"); AGR.TOC("perm","L213G1-p14B0.m",[-91947287,82787547]); AGR.TOC("matff","L213G1-f2r14B0.m",[81634284,117900590]); AGR.TOC("matff","L213G1-f3r13B0.m",[-42206942,-74309834]); AGR.TOC("matff","L213G1-f4r6aB0.m",[65000190,89312086]); AGR.TOC("matff","L213G1-f4r6bB0.m",[65000190,-122360638]); AGR.TOC("matff","L213G1-f7r12B0.m",[-22464759,-111035448]); AGR.TOC("matff","L213G1-f8r12aB0.m",[-23961287,-122239881]); AGR.TOC("matff","L213G1-f8r12bB0.m",[15467192,110047527]); AGR.TOC("matff","L213G1-f8r12cB0.m",[81786641,81442952]); AGR.TOC("matff","L213G1-f13r3B0.m",[63481373,105550590]); AGR.TOC("matff","L213G1-f13r5B0.m",[-39086473,41661632]); AGR.TOC("matff","L213G1-f13r7B0.m",[-113197285,-129463306]); AGR.TOC("matff","L213G1-f13r9B0.m",[127113446,64877555]); AGR.TOC("matff","L213G1-f13r11B0.m",[53072034,3244024]); AGR.TOC("matff","L213G1-f13r13B0.m",[104578255,-42907957]); AGR.TOC("matint","L213G1-Zr13B0.g",[123011361]); AGR.TOC("matint","L213G1-Zr14aB0.g",[-123871088]); AGR.TOC("matint","L213G1-Zr14bB0.g",[-105815349]); AGR.TOC("matint","L213G1-Zr14cB0.g",[-7881673]); AGR.TOC("matint","L213G1-Zr36B0.g",[83179307]); AGR.TOC("matalg","L213G1-Ar12aB0.g",[-59203708]); AGR.TOC("matalg","L213G1-Ar12bB0.g",[120191936]); AGR.TOC("matalg","L213G1-Ar12cB0.g",[20003507]); AGR.TOC("cyclic","L213G1-cycW1",[-122829237]); AGR.TOC("cyc2ccl","L213G1cycW1-cclsW1",[98128951]); AGR.TOC("out","L213G1-a2W1",[-84768428]); AGR.TOC("check","L213G1-check1",[114923626]); # L213d2 AGR.GRP("lin","L213","L213d2"); AGR.TOC("perm","L213d2G1-p14B0.m",[-19041356,-77302057]); AGR.TOC("perm","L213d2G1-p78B0.m",[-115427218,-95892825]); AGR.TOC("perm","L213d2G1-p91aB0.m",[13099628,-115148298]); AGR.TOC("matff","L213d2G1-f2r12aB0.m",[10533130,29850182]); AGR.TOC("matff","L213d2G1-f2r14B0.m",[-22148341,84612921]); AGR.TOC("matff","L213d2G1-f13r3aB0.m",[-43727987,36597755]); AGR.TOC("cyclic","L213d2G1-cycW1",[93407541]); AGR.TOC("cyc2ccl","L213d2G1cycW1-cclsW1",[-61538061]); # 2L2131 AGR.GRP("lin","L2131","2L2131"); AGR.TOC("matalg","2L2131G1-Ar132aB0.g",[65865488]); # L2131 AGR.GRP("lin","L2131","L2131"); AGR.TOC("matint","L2131G1-Zr131B0.g",[-68982411]); AGR.TOC("matalg","L2131G1-Ar132aB0.g",[104797209]); AGR.TOC("maxes","L2131G1-max1W1",[66564897]); AGR.TOC("maxes","L2131G1-max2W1",[-52742966]); AGR.TOC("maxes","L2131G1-max3W1",[98771752]); AGR.TOC("maxes","L2131G1-max4W1",[-97155444]); AGR.TOC("maxes","L2131G1-max5W1",[82760492]); AGR.TOC("out","L2131G1-a2W1",[79429276]); # 2L2137 AGR.GRP("lin","L2137","2L2137"); AGR.TOC("matalg","2L2137G1-Ar138aB0.g",[-16526672]); # L2137 AGR.GRP("lin","L2137","L2137"); AGR.TOC("matint","L2137G1-Zr137B0.g",[40430567]); AGR.TOC("matalg","L2137G1-Ar138aB0.g",[117152392]); AGR.TOC("maxes","L2137G1-max1W1",[-40146201]); AGR.TOC("maxes","L2137G1-max2W1",[98771752]); AGR.TOC("maxes","L2137G1-max3W1",[75295270]); AGR.TOC("maxes","L2137G1-max4W1",[-102190056]); AGR.TOC("maxes","L2137G1-max5W1",[-42658397]); AGR.TOC("out","L2137G1-a2W1",[-102504060]); # 2L2139 AGR.GRP("lin","L2139","2L2139"); AGR.TOC("matalg","2L2139G1-Ar140aB0.g",[-126063759]); # L2139 AGR.GRP("lin","L2139","L2139"); AGR.TOC("matint","L2139G1-Zr139B0.g",[-129819005]); AGR.TOC("matalg","L2139G1-Ar140aB0.g",[22634312]); AGR.TOC("maxes","L2139G1-max1W1",[35356411]); AGR.TOC("maxes","L2139G1-max2W1",[-52742966]); AGR.TOC("maxes","L2139G1-max3W1",[-120005548]); AGR.TOC("maxes","L2139G1-max4W1",[90241214]); AGR.TOC("maxes","L2139G1-max5W1",[59236432]); AGR.TOC("out","L2139G1-a2W1",[18854625]); # 2L2149 AGR.GRP("lin","L2149","2L2149"); AGR.TOC("matalg","2L2149G1-Ar150aB0.g",[-11696483]); # L2149 AGR.GRP("lin","L2149","L2149"); AGR.TOC("matint","L2149G1-Zr149B0.g",[102968573]); AGR.TOC("matalg","L2149G1-Ar150aB0.g",[-37170719]); AGR.TOC("maxes","L2149G1-max1W1",[-66969697]); AGR.TOC("maxes","L2149G1-max2W1",[-52742966]); AGR.TOC("maxes","L2149G1-max3W1",[-133853492]); AGR.TOC("maxes","L2149G1-max4W1",[-87873653]); AGR.TOC("maxes","L2149G1-max5W1",[47288309]); AGR.TOC("out","L2149G1-a2W1",[-7907886]); # 2L2151 AGR.GRP("lin","L2151","2L2151"); AGR.TOC("matalg","2L2151G1-Ar152aB0.g",[-90245408]); # L2151 AGR.GRP("lin","L2151","L2151"); AGR.TOC("matint","L2151G1-Zr151B0.g",[119951693]); AGR.TOC("matalg","L2151G1-Ar152aB0.g",[53971443]); AGR.TOC("maxes","L2151G1-max1W1",[-6133708]); AGR.TOC("maxes","L2151G1-max2W1",[117428427]); AGR.TOC("maxes","L2151G1-max3W1",[-52742966]); AGR.TOC("maxes","L2151G1-max4W1",[122228493]); AGR.TOC("maxes","L2151G1-max5W1",[-33391375]); AGR.TOC("maxes","L2151G1-max6W1",[113371709]); AGR.TOC("maxes","L2151G1-max7W1",[-99321456]); AGR.TOC("out","L2151G1-a2W1",[52782258]); # 2L2157 AGR.GRP("lin","L2157","2L2157"); AGR.TOC("matalg","2L2157G1-Ar158aB0.g",[61720223]); # L2157 AGR.GRP("lin","L2157","L2157"); AGR.TOC("matint","L2157G1-Zr157B0.g",[9690336]); AGR.TOC("matalg","L2157G1-Ar158aB0.g",[-104420675]); AGR.TOC("maxes","L2157G1-max1W1",[32840683]); AGR.TOC("maxes","L2157G1-max2W1",[98771752]); AGR.TOC("maxes","L2157G1-max3W1",[-64843294]); AGR.TOC("maxes","L2157G1-max4W1",[94147488]); AGR.TOC("out","L2157G1-a2W1",[48223269]); # L216 AGR.GRP("lin","L216","L216"); AGR.TOC("perm","L216G1-p17B0.m",[-25860833,85122705]); AGR.TOC("matff","L216G1-f3r16B0.m",[113301689,128988142]); AGR.TOC("matff","L216G1-f5r16B0.m",[13115658,23713490]); AGR.TOC("matff","L216G1-f9r17aB0.m",[-121570067,-7482952]); AGR.TOC("matff","L216G1-f9r17bB0.m",[-51916978,-114933949]); AGR.TOC("matff","L216G1-f16r2aB0.m",[-97704224,-81575292]); AGR.TOC("matff","L216G1-f17r15B0.m",[-30169332,56986142]); AGR.TOC("matff","L216G1-f17r17B0.m",[-113610380,-12549422]); AGR.TOC("matff","L216G1-f17r34B0.m",[61736652,73455961]); AGR.TOC("matff","L216G1-f17r68B0.m",[-62662568,-59797617]); AGR.TOC("matint","L216G1-Zr16B0.g",[-24057002]); AGR.TOC("matint","L216G1-Zr17aB0.g",[113536300]); AGR.TOC("matint","L216G1-Zr34B0.g",[91957897]); AGR.TOC("matint","L216G1-Zr68B0.g",[-22096638]); AGR.TOC("matint","L216G1-Zr120B0.g",[51019731]); AGR.TOC("cyclic","L216G1-cycW1",[107163383]); AGR.TOC("cyc2ccl","L216G1cycW1-cclsW1",[-123323472]); AGR.TOC("out","L216G1-a2W1",[-12944666]); AGR.TOC("out","L216G1-a4W1",[-100971246]); AGR.TOC("check","L216G1-check1",[62665234]); # L216d2 AGR.GRP("lin","L216","L216d2"); AGR.TOC("matff","L216d2G1-f4r4aB0.m",[-47692808,15333732]); AGR.TOC("cyclic","L216d2G1-cycW1",[-48808806]); AGR.TOC("cyc2ccl","L216d2G1cycW1-cclsW1",[32833683]); # L216d4 AGR.GRP("lin","L216","L216d4"); AGR.TOC("matff","L216d4G1-f2r8aB0.m",[84946852,63609119]); AGR.TOC("matff","L216d4G1-f2r8bB0.m",[100647892,-43619498]); AGR.TOC("matff","L216d4G1-f2r16aB0.m",[11242384,24314152]); AGR.TOC("matff","L216d4G1-f2r16bB0.m",[21535900,-45929875]); AGR.TOC("matff","L216d4G1-f2r32B0.m",[55087905,-27851192]); AGR.TOC("matff","L216d4G1-f3r16aB0.m",[43948758,-10148193]); AGR.TOC("matff","L216d4G1-f5r16aB0.m",[-28597828,130368598]); AGR.TOC("matff","L216d4G1-f5r17aB0.m",[98773480,108401653]); AGR.TOC("matff","L216d4G1-f9r60aB0.m",[37571756,-14947100]); AGR.TOC("matff","L216d4G1-f9r60bB0.m",[-61514124,69703825]); AGR.TOC("matff","L216d4G1-f17r15aB0.m",[88941287,-15835311]); AGR.TOC("matff","L216d4G1-f17r17aB0.m",[-71828116,-16990703]); AGR.TOC("matff","L216d4G1-f17r34aB0.m",[-25415718,82510637]); AGR.TOC("matff","L216d4G1-f17r68B0.m",[117656541,101172947]); AGR.TOC("matff","L216d4G1-f25r60aB0.m",[-89876973,-104154660]); AGR.TOC("matff","L216d4G1-f25r60bB0.m",[-69261645,1618576]); AGR.TOC("cyclic","L216d4G1-cycW1",[-74070453]); AGR.TOC("cyc2ccl","L216d4G1cycW1-cclsW1",[-22952011]); # 2L2163 AGR.GRP("lin","L2163","2L2163"); AGR.TOC("matalg","2L2163G1-Ar164aB0.g",[-120858578]); # L2163 AGR.GRP("lin","L2163","L2163"); AGR.TOC("matint","L2163G1-Zr163B0.g",[44887671]); AGR.TOC("matalg","L2163G1-Ar164aB0.g",[56363135]); AGR.TOC("maxes","L2163G1-max1W1",[-88602553]); AGR.TOC("maxes","L2163G1-max2W1",[98771752]); AGR.TOC("maxes","L2163G1-max3W1",[48045372]); AGR.TOC("maxes","L2163G1-max4W1",[54062706]); AGR.TOC("out","L2163G1-a2W1",[33372122]); # 2L2167 AGR.GRP("lin","L2167","2L2167"); AGR.TOC("matalg","2L2167G1-Ar168aB0.g",[-30977759]); # L2167 AGR.GRP("lin","L2167","L2167"); AGR.TOC("matint","L2167G1-Zr167B0.g",[-106781249]); AGR.TOC("matalg","L2167G1-Ar168aB0.g",[52761382]); AGR.TOC("maxes","L2167G1-max1W1",[33227458]); AGR.TOC("maxes","L2167G1-max2W1",[98771752]); AGR.TOC("maxes","L2167G1-max3W1",[50083925]); AGR.TOC("maxes","L2167G1-max4W1",[-63379587]); AGR.TOC("maxes","L2167G1-max5W1",[-114911979]); AGR.TOC("out","L2167G1-a2W1",[65102054]); # 2L217 AGR.GRP("lin","L217","2L217"); AGR.TOC("matff","2L217G1-f9r8aB0.m",[-117166958,82074942]); AGR.TOC("matff","2L217G1-f9r8bB0.m",[47065598,29939158]); AGR.TOC("matff","2L217G1-f17r2B0.m",[6911536,-105322369]); AGR.TOC("matff","2L217G1-f17r4B0.m",[-63603009,22696976]); AGR.TOC("matff","2L217G1-f17r6B0.m",[-78288000,-95930391]); AGR.TOC("matff","2L217G1-f17r8B0.m",[36976965,-51146083]); AGR.TOC("matff","2L217G1-f17r10B0.m",[-106402184,-86725200]); AGR.TOC("matff","2L217G1-f17r12B0.m",[-128860262,42509507]); AGR.TOC("matff","2L217G1-f17r14B0.m",[133839744,-115025145]); AGR.TOC("matff","2L217G1-f17r16B0.m",[112291201,-77293894]); # 2L217d2 AGR.GRP("lin","L217","2L217d2"); AGR.TOC("matff","2L217d2G1-f3r16B0.m",[6443587,-21386643]); # L217 AGR.GRP("lin","L217","L217"); AGR.TOC("perm","L217G1-p18B0.m",[-82912537,-44582286]); AGR.TOC("matff","L217G1-f2r8aB0.m",[56350420,11326923]); AGR.TOC("matff","L217G1-f2r8bB0.m",[-66251727,-119035891]); AGR.TOC("matff","L217G1-f2r16aB0.m",[32575162,38548666]); AGR.TOC("matff","L217G1-f2r48B0.m",[109629411,52173616]); AGR.TOC("matff","L217G1-f3r16B0.m",[-97474409,89597038]); AGR.TOC("matff","L217G1-f3r18aB0.m",[89711830,132717007]); AGR.TOC("matff","L217G1-f8r16bB0.m",[3907726,-34647212]); AGR.TOC("matff","L217G1-f8r16cB0.m",[56979279,76992993]); AGR.TOC("matff","L217G1-f8r16dB0.m",[-91570608,-109962938]); AGR.TOC("matff","L217G1-f9r9aB0.m",[3048714,57103623]); AGR.TOC("matff","L217G1-f9r9bB0.m",[123383675,-83522426]); AGR.TOC("matff","L217G1-f9r18bB0.m",[97688817,-88837865]); AGR.TOC("matff","L217G1-f9r18cB0.m",[88953815,-96918747]); AGR.TOC("matff","L217G1-f17r3B0.m",[128164355,-54485786]); AGR.TOC("matff","L217G1-f17r5B0.m",[62752732,26959766]); AGR.TOC("matff","L217G1-f17r7B0.m",[130133111,7735069]); AGR.TOC("matff","L217G1-f17r9B0.m",[21224908,-33407977]); AGR.TOC("matff","L217G1-f17r11B0.m",[26808255,-48153806]); AGR.TOC("matff","L217G1-f17r13B0.m",[-26821318,-28503130]); AGR.TOC("matff","L217G1-f17r15B0.m",[112207389,89241698]); AGR.TOC("matff","L217G1-f17r17B0.m",[11803114,124459896]); AGR.TOC("matint","L217G1-Zr16aB0.g",[107256525]); AGR.TOC("matint","L217G1-Zr17B0.g",[1797083]); AGR.TOC("matint","L217G1-Zr18aB0.g",[-127855891]); AGR.TOC("matint","L217G1-Zr18dB0.g",[90751802]); AGR.TOC("matint","L217G1-Zr48B0.g",[78630971]); AGR.TOC("matalg","L217G1-Ar9aB0.g",[125287525]); AGR.TOC("matalg","L217G1-Ar9bB0.g",[-115193717]); AGR.TOC("cyclic","L217G1-cycW1",[-14106864]); AGR.TOC("cyc2ccl","L217G1cycW1-cclsW1",[71146108]); AGR.TOC("check","L217G1-check1",[10441786]); # L217d2 AGR.GRP("lin","L217","L217d2"); AGR.TOC("perm","L217d2G1-p18B0.m",[2840279,5131224]); AGR.TOC("matff","L217d2G1-f17r3B0.m",[-28835866,-54485786]); # 2L2173 AGR.GRP("lin","L2173","2L2173"); AGR.TOC("matalg","2L2173G1-Ar174aB0.g",[-129123955]); # L2173 AGR.GRP("lin","L2173","L2173"); AGR.TOC("matint","L2173G1-Zr173B0.g",[105934329]); AGR.TOC("matalg","L2173G1-Ar174aB0.g",[-77683382]); AGR.TOC("maxes","L2173G1-max1W1",[-22144534]); AGR.TOC("maxes","L2173G1-max2W1",[98771752]); AGR.TOC("maxes","L2173G1-max3W1",[-71547031]); AGR.TOC("maxes","L2173G1-max4W1",[130757558]); AGR.TOC("out","L2173G1-a2W1",[67011312]); # 2L2179 AGR.GRP("lin","L2179","2L2179"); AGR.TOC("matalg","2L2179G1-Ar180aB0.g",[10497490]); # L2179 AGR.GRP("lin","L2179","L2179"); AGR.TOC("matint","L2179G1-Zr179B0.g",[81046310]); AGR.TOC("matalg","L2179G1-Ar180aB0.g",[-16440052]); AGR.TOC("maxes","L2179G1-max1W1",[109829600]); AGR.TOC("maxes","L2179G1-max2W1",[-131103847]); AGR.TOC("maxes","L2179G1-max3W1",[98771752]); AGR.TOC("maxes","L2179G1-max4W1",[-30556931]); AGR.TOC("maxes","L2179G1-max5W1",[33600339]); AGR.TOC("out","L2179G1-a2W1",[18592174]); # 2L2181 AGR.GRP("lin","L2181","2L2181"); AGR.TOC("matalg","2L2181G1-Ar182aB0.g",[87379586]); # L2181 AGR.GRP("lin","L2181","L2181"); AGR.TOC("matint","L2181G1-Zr181B0.g",[71734082]); AGR.TOC("matalg","L2181G1-Ar182aB0.g",[82987358]); AGR.TOC("maxes","L2181G1-max1W1",[89346661]); AGR.TOC("maxes","L2181G1-max2W1",[-52742966]); AGR.TOC("maxes","L2181G1-max3W1",[-131103847]); AGR.TOC("maxes","L2181G1-max4W1",[50625176]); AGR.TOC("maxes","L2181G1-max5W1",[74954710]); AGR.TOC("out","L2181G1-a2W1",[92056087]); # 2L219 AGR.GRP("lin","L219","2L219"); AGR.TOC("perm","2L219G1-p40B0.m",[-75425328,-81015716]); AGR.TOC("matff","2L219G1-f19r2B0.m",[-60529181,-81596629]); # 2L219d2i AGR.GRP("lin","L219","2L219d2i"); AGR.TOC("matff","2L219d2iG1-f3r20B0.m",[-38183413,93404023]); AGR.TOC("matff","2L219d2iG1-f5r20B0.m",[-481012,89842831]); AGR.TOC("matff","2L219d2iG1-f19r2aB0.m",[-60529181,-81596629]); # L219 AGR.GRP("lin","L219","L219"); AGR.TOC("perm","L219G1-p20B0.m",[24659231,-127711181]); AGR.TOC("perm","L219G1-p57aB0.m",[-101429737,-69344254]); AGR.TOC("perm","L219G1-p57bB0.m",[17296078,-64512583]); AGR.TOC("perm","L219G1-p171B0.m",[39319466,88018783]); AGR.TOC("perm","L219G1-p190B0.m",[-37790883,-8623862]); AGR.TOC("matff","L219G1-f2r20aB0.m",[20881578,-27015445]); AGR.TOC("matff","L219G1-f3r19B0.m",[-94940412,121630950]); AGR.TOC("matff","L219G1-f4r9aB0.m",[73176383,53415654]); AGR.TOC("matff","L219G1-f4r9bB0.m",[62934163,70154052]); AGR.TOC("matff","L219G1-f4r18aB0.m",[-100210374,125716156]); AGR.TOC("matff","L219G1-f4r18bB0.m",[27209702,-62352810]); AGR.TOC("matff","L219G1-f5r9aB0.m",[77195259,99472639]); AGR.TOC("matff","L219G1-f5r9bB0.m",[36693084,17693932]); AGR.TOC("matff","L219G1-f5r18B0.m",[-31242791,-50234523]); AGR.TOC("matff","L219G1-f5r20aB0.m",[-119786862,-22803290]); AGR.TOC("matff","L219G1-f8r20bB0.m",[55505572,-68483928]); AGR.TOC("matff","L219G1-f8r20cB0.m",[116520881,82160962]); AGR.TOC("matff","L219G1-f8r20dB0.m",[-81452471,-59801255]); AGR.TOC("matff","L219G1-f9r9aB0.m",[86818836,71785157]); AGR.TOC("matff","L219G1-f9r9bB0.m",[58361913,-79182132]); AGR.TOC("matff","L219G1-f9r18aB0.m",[35351054,69514466]); AGR.TOC("matff","L219G1-f9r18bB0.m",[95590865,-45009283]); AGR.TOC("matff","L219G1-f9r18cB0.m",[20882251,106600166]); AGR.TOC("matff","L219G1-f9r18dB0.m",[-17358616,9069780]); AGR.TOC("matff","L219G1-f19r3B0.m",[-60856921,103602966]); AGR.TOC("matff","L219G1-f19r5B0.m",[55888539,-52479113]); AGR.TOC("matff","L219G1-f19r7B0.m",[-76314715,-97982965]); AGR.TOC("matff","L219G1-f19r9B0.m",[42106921,-61184509]); AGR.TOC("matff","L219G1-f19r11B0.m",[102860803,102059262]); AGR.TOC("matff","L219G1-f19r13B0.m",[-42137490,94275844]); AGR.TOC("matff","L219G1-f19r15B0.m",[-5968738,31335985]); AGR.TOC("matff","L219G1-f19r17B0.m",[34260504,95947345]); AGR.TOC("matff","L219G1-f19r19B0.m",[-8457876,110671936]); AGR.TOC("matff","L219G1-f125r20bB0.m",[119940297,-57104473]); AGR.TOC("matff","L219G1-f125r20cB0.m",[-65838906,-95399319]); AGR.TOC("matff","L219G1-f125r20dB0.m",[-68813039,104603257]); AGR.TOC("matint","L219G1-Zr18eB0.g",[-25045864]); AGR.TOC("matint","L219G1-Zr19B0.g",[49324283]); AGR.TOC("matint","L219G1-Zr20aB0.g",[-16623570]); AGR.TOC("matint","L219G1-Zr36aB0.g",[-70545514]); AGR.TOC("cyclic","L219G1-cycW1",[72229979]); AGR.TOC("cyc2ccl","L219G1cycW1-cclsW1",[28530659]); AGR.TOC("check","L219G1-check1",[-109615390]); # L219d2 AGR.GRP("lin","L219","L219d2"); AGR.TOC("perm","L219d2G1-p20B0.m",[32900850,28964096]); AGR.TOC("perm","L219d2G1-p114B0.m",[12605773,-51667208]); AGR.TOC("perm","L219d2G1-p171B0.m",[-108133167,51706554]); AGR.TOC("perm","L219d2G1-p190B0.m",[-88414015,-96889267]); AGR.TOC("perm","L219d2G1-p285B0.m",[-19098413,-73672204]); AGR.TOC("matff","L219d2G1-f19r3B0.m",[57976465,-111736354]); AGR.TOC("cyclic","L219d2G1-cycW1",[-32424274]); AGR.TOC("cyc2ccl","L219d2G1cycW1-cclsW1",[98016748]); # 2L2191 AGR.GRP("lin","L2191","2L2191"); AGR.TOC("matalg","2L2191G1-Ar192aB0.g",[-10297209]); # L2191 AGR.GRP("lin","L2191","L2191"); AGR.TOC("matint","L2191G1-Zr191B0.g",[-91342354]); AGR.TOC("matalg","L2191G1-Ar192aB0.g",[-102131257]); AGR.TOC("maxes","L2191G1-max1W1",[130684941]); AGR.TOC("maxes","L2191G1-max2W1",[36772814]); AGR.TOC("maxes","L2191G1-max3W1",[98771752]); AGR.TOC("maxes","L2191G1-max4W1",[-122498485]); AGR.TOC("maxes","L2191G1-max5W1",[113353462]); AGR.TOC("maxes","L2191G1-max6W1",[4673722]); AGR.TOC("maxes","L2191G1-max7W1",[124194537]); AGR.TOC("out","L2191G1-a2W1",[55431083]); # 2L2193 AGR.GRP("lin","L2193","2L2193"); AGR.TOC("matalg","2L2193G1-Ar194aB0.g",[73212136]); # L2193 AGR.GRP("lin","L2193","L2193"); AGR.TOC("matint","L2193G1-Zr193B0.g",[71143513]); AGR.TOC("matalg","L2193G1-Ar194aB0.g",[121194653]); AGR.TOC("maxes","L2193G1-max1W1",[40907293]); AGR.TOC("maxes","L2193G1-max2W1",[98771752]); AGR.TOC("maxes","L2193G1-max3W1",[-67796260]); AGR.TOC("maxes","L2193G1-max4W1",[-127210880]); AGR.TOC("maxes","L2193G1-max5W1",[-118162825]); AGR.TOC("out","L2193G1-a2W1",[-106805706]); # 2L2197 AGR.GRP("lin","L2197","2L2197"); AGR.TOC("matalg","2L2197G1-Ar198aB0.g",[73927374]); # L2197 AGR.GRP("lin","L2197","L2197"); AGR.TOC("matint","L2197G1-Zr197B0.g",[45557225]); AGR.TOC("matalg","L2197G1-Ar198aB0.g",[39544976]); AGR.TOC("maxes","L2197G1-max1W1",[-130931367]); AGR.TOC("maxes","L2197G1-max2W1",[98771752]); AGR.TOC("maxes","L2197G1-max3W1",[-67796260]); AGR.TOC("maxes","L2197G1-max4W1",[14286554]); AGR.TOC("out","L2197G1-a2W1",[130181147]); # 2L2199 AGR.GRP("lin","L2199","2L2199"); AGR.TOC("matalg","2L2199G1-Ar200aB0.g",[-53439677]); # L2199 AGR.GRP("lin","L2199","L2199"); AGR.TOC("matint","L2199G1-Zr199B0.g",[-87031562]); AGR.TOC("matalg","L2199G1-Ar200aB0.g",[47081617]); AGR.TOC("maxes","L2199G1-max1W1",[-93257757]); AGR.TOC("maxes","L2199G1-max2W1",[-67796260]); AGR.TOC("maxes","L2199G1-max3W1",[117428427]); AGR.TOC("maxes","L2199G1-max4W1",[62034043]); AGR.TOC("maxes","L2199G1-max5W1",[-116874112]); AGR.TOC("maxes","L2199G1-max6W1",[-119648840]); AGR.TOC("maxes","L2199G1-max7W1",[-48148985]); AGR.TOC("out","L2199G1-a2W1",[76695252]); # 2L2211 AGR.GRP("lin","L2211","2L2211"); AGR.TOC("matalg","2L2211G1-Ar212aB0.g",[18814386]); # L2211 AGR.GRP("lin","L2211","L2211"); AGR.TOC("matint","L2211G1-Zr211B0.g",[-45535114]); AGR.TOC("matalg","L2211G1-Ar212aB0.g",[29682330]); AGR.TOC("maxes","L2211G1-max1W1",[-108408867]); AGR.TOC("maxes","L2211G1-max2W1",[-52742966]); AGR.TOC("maxes","L2211G1-max3W1",[116070154]); AGR.TOC("maxes","L2211G1-max4W1",[23166390]); AGR.TOC("maxes","L2211G1-max5W1",[122228493]); AGR.TOC("out","L2211G1-a2W1",[120263037]); # 2L2223 AGR.GRP("lin","L2223","2L2223"); AGR.TOC("matalg","2L2223G1-Ar224aB0.g",[-116181226]); # L2223 AGR.GRP("lin","L2223","L2223"); AGR.TOC("matint","L2223G1-Zr223B0.g",[-55905370]); AGR.TOC("matalg","L2223G1-Ar224aB0.g",[41299812]); AGR.TOC("maxes","L2223G1-max1W1",[113347374]); AGR.TOC("maxes","L2223G1-max2W1",[98771752]); AGR.TOC("maxes","L2223G1-max3W1",[-69257965]); AGR.TOC("maxes","L2223G1-max4W1",[-117428229]); AGR.TOC("maxes","L2223G1-max5W1",[-132949589]); AGR.TOC("out","L2223G1-a2W1",[52038676]); # 2L2227 AGR.GRP("lin","L2227","2L2227"); AGR.TOC("matalg","2L2227G1-Ar228aB0.g",[-75199876]); # L2227 AGR.GRP("lin","L2227","L2227"); AGR.TOC("matint","L2227G1-Zr227B0.g",[-105151178]); AGR.TOC("matalg","L2227G1-Ar228aB0.g",[91148488]); AGR.TOC("maxes","L2227G1-max1W1",[-105429437]); AGR.TOC("maxes","L2227G1-max2W1",[98771752]); AGR.TOC("maxes","L2227G1-max3W1",[56925867]); AGR.TOC("maxes","L2227G1-max4W1",[114147158]); AGR.TOC("out","L2227G1-a2W1",[-17717185]); # 2L2229 AGR.GRP("lin","L2229","2L2229"); AGR.TOC("matalg","2L2229G1-Ar230aB0.g",[-18137049]); # L2229 AGR.GRP("lin","L2229","L2229"); AGR.TOC("matint","L2229G1-Zr229B0.g",[69447815]); AGR.TOC("matalg","L2229G1-Ar230aB0.g",[21643362]); AGR.TOC("maxes","L2229G1-max1W1",[54102063]); AGR.TOC("maxes","L2229G1-max2W1",[117428427]); AGR.TOC("maxes","L2229G1-max3W1",[-116933033]); AGR.TOC("maxes","L2229G1-max4W1",[-125460422]); AGR.TOC("maxes","L2229G1-max5W1",[67274427]); AGR.TOC("out","L2229G1-a2W1",[-29606974]); # 2L223 AGR.GRP("lin","L223","2L223"); AGR.TOC("matff","2L223G1-f23r2B0.m",[20525409,47643517]); # 2L223d2i AGR.GRP("lin","L223","2L223d2i"); AGR.TOC("matff","2L223d2iG1-f23r2B0.m",[-88491394,61181965]); # L223 AGR.GRP("lin","L223","L223"); AGR.TOC("perm","L223G1-p24B0.m",[76120275,68802602]); AGR.TOC("matff","L223G1-f2r11aB0.m",[127094156,70571462]); AGR.TOC("matff","L223G1-f2r11bB0.m",[5360375,129551938]); AGR.TOC("matff","L223G1-f2r22B0.m",[-50133270,-13738710]); AGR.TOC("matff","L223G1-f3r22aB0.m",[-77636210,64274321]); AGR.TOC("matff","L223G1-f11r23B0.m",[42514454,-134050268]); AGR.TOC("matff","L223G1-f23r3B0.m",[42791262,95823127]); AGR.TOC("matff","L223G1-f23r5B0.m",[54370750,-24744185]); AGR.TOC("matff","L223G1-f23r7B0.m",[-132549125,-25900974]); AGR.TOC("matff","L223G1-f23r9B0.m",[92736657,-6223120]); AGR.TOC("matff","L223G1-f23r11B0.m",[-59046279,16148792]); AGR.TOC("matff","L223G1-f23r13B0.m",[-32965346,-4509189]); AGR.TOC("matff","L223G1-f23r15B0.m",[54984976,-41337166]); AGR.TOC("matff","L223G1-f23r17B0.m",[61549106,35129088]); AGR.TOC("matff","L223G1-f23r19B0.m",[-83435925,-110939099]); AGR.TOC("matff","L223G1-f23r21B0.m",[52870456,24920826]); AGR.TOC("matff","L223G1-f23r23B0.m",[-9561815,-92041134]); AGR.TOC("matff","L223G1-f32r24aB0.m",[21647014,14511678]); AGR.TOC("matff","L223G1-f32r24bB0.m",[-87307691,-46855468]); AGR.TOC("matff","L223G1-f32r24cB0.m",[-5789075,107108233]); AGR.TOC("matff","L223G1-f32r24dB0.m",[-9505617,76119520]); AGR.TOC("matff","L223G1-f32r24eB0.m",[-121899485,-39499865]); AGR.TOC("matint","L223G1-Zr22aB0.g",[5829416]); AGR.TOC("matint","L223G1-Zr22bB0.g",[39581756]); AGR.TOC("matint","L223G1-Zr22cB0.g",[-5464384]); AGR.TOC("matint","L223G1-Zr23B0.g",[-71592096]); AGR.TOC("matalg","L223G1-Ar24aB0.g",[-94070094]); AGR.TOC("matalg","L223G1-Ar24bB0.g",[-86537748]); AGR.TOC("matalg","L223G1-Ar24cB0.g",[-109907336]); AGR.TOC("matalg","L223G1-Ar24dB0.g",[1617625]); AGR.TOC("matalg","L223G1-Ar24eB0.g",[86827308]); AGR.TOC("cyclic","L223G1-cycW1",[-23018766]); AGR.TOC("cyc2ccl","L223G1cycW1-cclsW1",[79564962]); AGR.TOC("out","L223G1-a2W1",[-11046668]); AGR.TOC("check","L223G1-check1",[117306255]); # L223d2 AGR.GRP("lin","L223","L223d2"); AGR.TOC("matff","L223d2G1-f2r22aB0.m",[36563733,98146872]); AGR.TOC("matff","L223d2G1-f23r3aB0.m",[-9004677,95823127]); AGR.TOC("cyclic","L223d2G1-cycW1",[-117792659]); AGR.TOC("cyc2ccl","L223d2G1cycW1-cclsW1",[-132898044]); # 2L2233 AGR.GRP("lin","L2233","2L2233"); AGR.TOC("matalg","2L2233G1-Ar234aB0.g",[12717719]); # L2233 AGR.GRP("lin","L2233","L2233"); AGR.TOC("matint","L2233G1-Zr233B0.g",[23663299]); AGR.TOC("matalg","L2233G1-Ar234aB0.g",[-98686418]); AGR.TOC("maxes","L2233G1-max1W1",[-18098890]); AGR.TOC("maxes","L2233G1-max2W1",[-67796260]); AGR.TOC("maxes","L2233G1-max3W1",[75295270]); AGR.TOC("maxes","L2233G1-max4W1",[19437309]); AGR.TOC("maxes","L2233G1-max5W1",[102198882]); AGR.TOC("out","L2233G1-a2W1",[-76737931]); # 2L2239 AGR.GRP("lin","L2239","2L2239"); AGR.TOC("matalg","2L2239G1-Ar240aB0.g",[53428341]); # L2239 AGR.GRP("lin","L2239","L2239"); AGR.TOC("matint","L2239G1-Zr239B0.g",[-49774087]); AGR.TOC("matalg","L2239G1-Ar240aB0.g",[-35140575]); AGR.TOC("maxes","L2239G1-max1W1",[68942726]); AGR.TOC("maxes","L2239G1-max2W1",[-15392302]); AGR.TOC("maxes","L2239G1-max3W1",[98771752]); AGR.TOC("maxes","L2239G1-max4W1",[-16533216]); AGR.TOC("maxes","L2239G1-max5W1",[26047827]); AGR.TOC("maxes","L2239G1-max6W1",[-98880500]); AGR.TOC("maxes","L2239G1-max7W1",[-87747962]); AGR.TOC("out","L2239G1-a2W1",[-31181278]); # 2L2241 AGR.GRP("lin","L2241","2L2241"); AGR.TOC("matalg","2L2241G1-Ar242aB0.g",[22113801]); # L2241 AGR.GRP("lin","L2241","L2241"); AGR.TOC("matint","L2241G1-Zr241B0.g",[6537985]); AGR.TOC("matalg","L2241G1-Ar242aB0.g",[365622]); AGR.TOC("maxes","L2241G1-max1W1",[127178033]); AGR.TOC("maxes","L2241G1-max2W1",[117428427]); AGR.TOC("maxes","L2241G1-max3W1",[-94813412]); AGR.TOC("maxes","L2241G1-max4W1",[-116097452]); AGR.TOC("maxes","L2241G1-max5W1",[-118162825]); AGR.TOC("maxes","L2241G1-max6W1",[41454643]); AGR.TOC("maxes","L2241G1-max7W1",[-46947725]); AGR.TOC("out","L2241G1-a2W1",[-35280200]); # L225 AGR.GRP("lin","L225","L225"); AGR.TOC("check","L225G1-check1",[-20561499]); # 2L227 AGR.GRP("lin","L227","2L227"); AGR.TOC("matff","2L227G1-f27r2aB0.m",[75706202,42063428]); AGR.TOC("matff","2L227G1-f27r2bB0.m",[75706202,-32514381]); AGR.TOC("matff","2L227G1-f27r2cB0.m",[75706202,-90015011]); # L227 AGR.GRP("lin","L227","L227"); AGR.TOC("perm","L227G1-p28B0.m",[80361327,10779391]); AGR.TOC("matff","L227G1-f3r27B0.m",[-64273145,112755293]); AGR.TOC("matff","L227G1-f4r13aB0.m",[-121151895,113499759]); AGR.TOC("matff","L227G1-f4r13bB0.m",[-12358225,-97200516]); AGR.TOC("matff","L227G1-f7r26B0.m",[81983579,-62100947]); AGR.TOC("matff","L227G1-f13r27B0.m",[102008149,20812941]); AGR.TOC("matff","L227G1-f27r3aB0.m",[-27948298,-12834033]); AGR.TOC("matint","L227G1-Zr26gB0.g",[-108736083]); AGR.TOC("matint","L227G1-Zr27B0.g",[81578255]); AGR.TOC("matint","L227G1-Zr78aB0.g",[-94962840]); AGR.TOC("matalg","L227G1-Ar13aB0.g",[-42975513]); AGR.TOC("matalg","L227G1-Ar13bB0.g",[4935682]); AGR.TOC("matalg","L227G1-Ar28aB0.g",[86924695]); AGR.TOC("matalg","L227G1-Ar28bB0.g",[123708070]); AGR.TOC("matalg","L227G1-Ar28cB0.g",[44486067]); AGR.TOC("matalg","L227G1-Ar28dB0.g",[-1314465]); AGR.TOC("matalg","L227G1-Ar28eB0.g",[97815284]); AGR.TOC("matalg","L227G1-Ar28fB0.g",[32000090]); AGR.TOC("cyclic","L227G1-cycW1",[67164295]); AGR.TOC("cyc2ccl","L227G1cycW1-cclsW1",[-63635297]); AGR.TOC("check","L227G1-check1",[80991801]); # 2L229 AGR.GRP("lin","L229","2L229"); AGR.TOC("matff","2L229G1-f29r2B0.m",[-125331227,-113293998]); # L229 AGR.GRP("lin","L229","L229"); AGR.TOC("perm","L229G1-p30B0.m",[-59680209,-19128626]); AGR.TOC("matff","L229G1-f3r28aB0.m",[-27683415,120560509]); AGR.TOC("matff","L229G1-f4r14aB0.m",[24400041,93494808]); AGR.TOC("matff","L229G1-f4r14bB0.m",[-8336532,-128257369]); AGR.TOC("matff","L229G1-f5r28bB0.m",[11970703,117973494]); AGR.TOC("matff","L229G1-f7r29B0.m",[7912619,-57977568]); AGR.TOC("matff","L229G1-f29r3B0.m",[112522078,-128962994]); AGR.TOC("matff","L229G1-f29r5B0.m",[52274017,2980410]); AGR.TOC("matff","L229G1-f29r7B0.m",[-3967008,40635278]); AGR.TOC("matff","L229G1-f29r9B0.m",[6327751,-26682292]); AGR.TOC("matff","L229G1-f29r11B0.m",[88346290,35523613]); AGR.TOC("matff","L229G1-f29r13B0.m",[-57278166,-40446496]); AGR.TOC("matff","L229G1-f29r15B0.m",[-13769556,-20566652]); AGR.TOC("matff","L229G1-f29r17B0.m",[-26087738,-36837746]); AGR.TOC("matff","L229G1-f29r19B0.m",[-71985042,-103709323]); AGR.TOC("matff","L229G1-f29r21B0.m",[-53552726,-52380600]); AGR.TOC("matff","L229G1-f29r23B0.m",[-119150534,38421866]); AGR.TOC("matff","L229G1-f29r25B0.m",[-36299723,132251793]); AGR.TOC("matff","L229G1-f29r27B0.m",[100195319,74359202]); AGR.TOC("matff","L229G1-f29r29B0.m",[25221275,-121973737]); AGR.TOC("matint","L229G1-Zr28aB0.g",[-14464513]); AGR.TOC("matint","L229G1-Zr29B0.g",[108424046]); AGR.TOC("matint","L229G1-Zr30gB0.g",[89059266]); AGR.TOC("matint","L229G1-Zr56B0.g",[47191282]); AGR.TOC("matint","L229G1-Zr112B0.g",[-21499082]); AGR.TOC("matalg","L229G1-Ar30aB0.g",[36512456]); AGR.TOC("matalg","L229G1-Ar30bB0.g",[80372223]); AGR.TOC("matalg","L229G1-Ar30cB0.g",[-10466386]); AGR.TOC("matalg","L229G1-Ar30dB0.g",[-19659925]); AGR.TOC("matalg","L229G1-Ar30eB0.g",[-97848110]); AGR.TOC("matalg","L229G1-Ar30fB0.g",[-52616644]); AGR.TOC("cyclic","L229G1-cycW1",[82677982]); AGR.TOC("cyc2ccl","L229G1cycW1-cclsW1",[21083482]); AGR.TOC("check","L229G1-check1",[-111997689]); # 2L231 AGR.GRP("lin","L231","2L231"); AGR.TOC("matff","2L231G1-f5r16aB0.m",[-81178967,94350757]); AGR.TOC("matff","2L231G1-f31r2B0.m",[-80955541,-50941493]); AGR.TOC("matalg","2L231G1-Ar32aB0.g",[-28048748]); # L231 AGR.GRP("lin","L231","L231"); AGR.TOC("perm","L231G1-p32B0.m",[-106514309,-46309048]); AGR.TOC("matff","L231G1-f2r15aB0.m",[-97111509,129903836]); AGR.TOC("matff","L231G1-f2r15bB0.m",[-69292298,-50625580]); AGR.TOC("matff","L231G1-f2r32B0.m",[-35052800,908728]); AGR.TOC("matff","L231G1-f3r31B0.m",[-96095478,-95643115]); AGR.TOC("matff","L231G1-f4r32bB0.m",[-104132881,74423793]); AGR.TOC("matff","L231G1-f4r32cB0.m",[128095051,-12635082]); AGR.TOC("matff","L231G1-f5r31B0.m",[-14484728,-112300853]); AGR.TOC("matff","L231G1-f16r32dB0.m",[78688671,-97781633]); AGR.TOC("matff","L231G1-f16r32eB0.m",[-70334799,-32855008]); AGR.TOC("matff","L231G1-f16r32fB0.m",[115548558,62487969]); AGR.TOC("matff","L231G1-f16r32gB0.m",[64981303,26938370]); AGR.TOC("matff","L231G1-f31r3B0.m",[-22989219,-87408481]); AGR.TOC("matff","L231G1-f31r31B0.m",[-120420305,-62570553]); AGR.TOC("matint","L231G1-Zr30aB0.g",[93007295]); AGR.TOC("matint","L231G1-Zr30hB0.g",[-59663303]); AGR.TOC("matint","L231G1-Zr31B0.g",[13607483]); AGR.TOC("matint","L231G1-Zr32aB0.g",[-34239155]); AGR.TOC("matint","L231G1-Zr60B0.g",[-27228077]); AGR.TOC("matint","L231G1-Zr120B0.g",[82286628]); AGR.TOC("matalg","L231G1-Ar32aB0.g",[-62988969]); AGR.TOC("matalg","L231G1-Ar32bB0.g",[-26331784]); AGR.TOC("matalg","L231G1-Ar32cB0.g",[-60422937]); AGR.TOC("matalg","L231G1-Ar32dB0.g",[19214858]); AGR.TOC("matalg","L231G1-Ar32eB0.g",[69092363]); AGR.TOC("matalg","L231G1-Ar32fB0.g",[-82047763]); AGR.TOC("matalg","L231G1-Ar32gB0.g",[-119324733]); AGR.TOC("cyclic","L231G1-cycW1",[90904383]); AGR.TOC("cyc2ccl","L231G1cycW1-cclsW1",[-82679199]); AGR.TOC("check","L231G1-check1",[96645892]); # L231d2 AGR.GRP("lin","L231","L231d2"); AGR.TOC("matff","L231d2G1-f2r30B0.m",[51861420,36234284]); # L232 AGR.GRP("lin","L232","L232"); AGR.TOC("perm","L232G1-p33B0.m",[-70610589,-23599884]); AGR.TOC("perm","L232G1-p496B0.m",[45274093,56723380]); AGR.TOC("perm","L232G1-p528B0.m",[-127338279,-48095320]); AGR.TOC("matff","L232G1-f3r31aB0.m",[-31088571,40473858]); AGR.TOC("matff","L232G1-f11r31bB0.m",[-52046501,89586769]); AGR.TOC("matff","L232G1-f31r32B0.m",[-74620170,83684745]); AGR.TOC("matff","L232G1-f32r2aB0.m",[-109179637,120506087]); AGR.TOC("matint","L232G1-Zr31aB0.g",[27710295]); AGR.TOC("matint","L232G1-Zr32B0.g",[111975507]); AGR.TOC("matint","L232G1-Zr155B0.g",[65682418]); AGR.TOC("matint","L232G1-Zr310B0.g",[63940929]); AGR.TOC("matalg","L232G1-Ar33aB0.g",[-111213769]); AGR.TOC("matalg","L232G1-Ar33bB0.g",[22767814]); AGR.TOC("matalg","L232G1-Ar33cB0.g",[-85912419]); AGR.TOC("matalg","L232G1-Ar33dB0.g",[-44472014]); AGR.TOC("matalg","L232G1-Ar33eB0.g",[-15557684]); AGR.TOC("matalg","L232G1-Ar33fB0.g",[-20780673]); AGR.TOC("matalg","L232G1-Ar33gB0.g",[42896350]); AGR.TOC("matalg","L232G1-Ar33hB0.g",[-81704627]); AGR.TOC("matalg","L232G1-Ar33iB0.g",[41774250]); AGR.TOC("matalg","L232G1-Ar33jB0.g",[-56211343]); AGR.TOC("matalg","L232G1-Ar33kB0.g",[-26257869]); AGR.TOC("matalg","L232G1-Ar33lB0.g",[18695087]); AGR.TOC("matalg","L232G1-Ar33mB0.g",[111516653]); AGR.TOC("matalg","L232G1-Ar33nB0.g",[85174962]); AGR.TOC("matalg","L232G1-Ar33oB0.g",[89580754]); AGR.TOC("maxes","L232G1-max1W1",[-56055657]); AGR.TOC("maxes","L232G1-max1W2",[-39704409]); AGR.TOC("maxes","L232G1-max2W1",[-74379041]); AGR.TOC("maxes","L232G1-max3W1",[42337161]); AGR.TOC("cyclic","L232G1-cycW1",[-108617330]); AGR.TOC("cyc2ccl","L232G1cycW1-cclsW1",[-13687969]); AGR.TOC("out","L232G1-a5W1",[4839686]); AGR.TOC("check","L232G1-check1",[96645892]); AGR.TOC("pres","L232G1-P1",[16857565]); # L232d5 AGR.GRP("lin","L232","L232d5"); AGR.TOC("perm","L232d5G1-p33B0.m",[-68814625,-109729061]); AGR.TOC("perm","L232d5G1-p496B0.m",[-105897021,66623301]); AGR.TOC("perm","L232d5G1-p528B0.m",[-63593694,-4668264]); AGR.TOC("matff","L232d5G1-f2r10B0.m",[-123808131,-66336957]); AGR.TOC("matff","L232d5G1-f2r20aB0.m",[-15600981,-113963396]); AGR.TOC("matff","L232d5G1-f2r20bB0.m",[47088464,101469067]); AGR.TOC("matff","L232d5G1-f2r32B0.m",[16902110,85940192]); AGR.TOC("matff","L232d5G1-f2r40aB0.m",[-23723692,52369402]); AGR.TOC("matff","L232d5G1-f2r40bB0.m",[37826496,-71703658]); AGR.TOC("matff","L232d5G1-f2r80B0.m",[-114768504,120819740]); AGR.TOC("maxes","L232d5G1-max1W1",[-52518619]); AGR.TOC("maxes","L232d5G1-max2W1",[-127703617]); AGR.TOC("maxes","L232d5G1-max2W2",[-57343816]); AGR.TOC("maxes","L232d5G1-max3W1",[-101607447]); AGR.TOC("maxes","L232d5G1-max3W2",[86690101]); AGR.TOC("maxes","L232d5G1-max4W1",[108007369]); AGR.TOC("maxes","L232d5G1-max4W2",[-106959951]); AGR.TOC("cyclic","L232d5G1-cycW1",[-32484246]); AGR.TOC("cyc2ccl","L232d5G1cycW1-cclsW1",[-12705239]); AGR.TOC("pres","L232d5G1-P1",[496753]); # 2L237 AGR.GRP("lin","L237","2L237"); AGR.TOC("matalg","2L237G1-Ar38aB0.g",[33468955]); # L237 AGR.GRP("lin","L237","L237"); AGR.TOC("matint","L237G1-Zr37B0.g",[100462660]); AGR.TOC("matalg","L237G1-Ar38aB0.g",[116545177]); AGR.TOC("maxes","L237G1-max1W1",[-112251965]); AGR.TOC("maxes","L237G1-max2W1",[10136136]); AGR.TOC("maxes","L237G1-max3W1",[116070154]); AGR.TOC("maxes","L237G1-max4W1",[-119731353]); AGR.TOC("out","L237G1-a2W1",[86831153]); # 2L241 AGR.GRP("lin","L241","2L241"); AGR.TOC("matalg","2L241G1-Ar42aB0.g",[104729683]); # L241 AGR.GRP("lin","L241","L241"); AGR.TOC("matint","L241G1-Zr41B0.g",[-99645838]); AGR.TOC("matalg","L241G1-Ar42aB0.g",[24947099]); AGR.TOC("maxes","L241G1-max1W1",[125471130]); AGR.TOC("maxes","L241G1-max2W1",[123151682]); AGR.TOC("maxes","L241G1-max3W1",[-122498485]); AGR.TOC("maxes","L241G1-max4W1",[1635502]); AGR.TOC("maxes","L241G1-max5W1",[-67796260]); AGR.TOC("maxes","L241G1-max6W1",[27978879]); AGR.TOC("maxes","L241G1-max7W1",[57715274]); AGR.TOC("out","L241G1-a2W1",[-56097386]); # 2L243 AGR.GRP("lin","L243","2L243"); AGR.TOC("matalg","2L243G1-Ar44aB0.g",[128833873]); # L243 AGR.GRP("lin","L243","L243"); AGR.TOC("matint","L243G1-Zr43B0.g",[44941007]); AGR.TOC("matalg","L243G1-Ar44aB0.g",[-95515231]); AGR.TOC("maxes","L243G1-max1W1",[13335009]); AGR.TOC("maxes","L243G1-max2W1",[98771752]); AGR.TOC("maxes","L243G1-max3W1",[117428427]); AGR.TOC("maxes","L243G1-max4W1",[-9461404]); AGR.TOC("out","L243G1-a2W1",[-10085270]); # 2L247 AGR.GRP("lin","L247","2L247"); AGR.TOC("matalg","2L247G1-Ar48aB0.g",[-133856404]); # L247 AGR.GRP("lin","L247","L247"); AGR.TOC("matint","L247G1-Zr47B0.g",[-93776649]); AGR.TOC("matalg","L247G1-Ar48aB0.g",[31045833]); AGR.TOC("maxes","L247G1-max1W1",[-21036514]); AGR.TOC("maxes","L247G1-max2W1",[-24594494]); AGR.TOC("maxes","L247G1-max3W1",[78402499]); AGR.TOC("maxes","L247G1-max4W1",[-69820517]); AGR.TOC("maxes","L247G1-max5W1",[-64733339]); AGR.TOC("out","L247G1-a2W1",[-106932889]); # 2L249 AGR.GRP("lin","L249","2L249"); AGR.TOC("matff","2L249G1-f49r2aB0.m",[-77738721,120171565]); AGR.TOC("matff","2L249G1-f49r2bB0.m",[24508966,120171565]); # L249 AGR.GRP("lin","L249","L249"); AGR.TOC("perm","L249G1-p50B0.m",[-91986412,-11622404]); AGR.TOC("perm","L249G1-p175aB0.m",[82820976,-52998298]); AGR.TOC("perm","L249G1-p175bB0.m",[-3702127,92475894]); AGR.TOC("perm","L249G1-p980aB0.m",[-111963204,92359707]); AGR.TOC("perm","L249G1-p980bB0.m",[-38368951,18194715]); AGR.TOC("perm","L249G1-p1176B0.m",[63754546,24318233]); AGR.TOC("perm","L249G1-p1225B0.m",[43354204,-52302880]); AGR.TOC("matff","L249G1-f7r4B0.m",[-122976295,97785542]); AGR.TOC("matff","L249G1-f49r3aB0.m",[91372809,-5684836]); AGR.TOC("matff","L249G1-f49r3bB0.m",[-94098923,-5684836]); # 2L253 AGR.GRP("lin","L253","2L253"); AGR.TOC("matalg","2L253G1-Ar54aB0.g",[-8928569]); # L253 AGR.GRP("lin","L253","L253"); AGR.TOC("matint","L253G1-Zr53B0.g",[-57528958]); AGR.TOC("matalg","L253G1-Ar54aB0.g",[115889911]); AGR.TOC("maxes","L253G1-max1W1",[-7949675]); AGR.TOC("maxes","L253G1-max2W1",[98771752]); AGR.TOC("maxes","L253G1-max3W1",[-24016757]); AGR.TOC("maxes","L253G1-max4W1",[-116097452]); AGR.TOC("out","L253G1-a2W1",[94828721]); # 2L259 AGR.GRP("lin","L259","2L259"); AGR.TOC("matalg","2L259G1-Ar60aB0.g",[-38231059]); # L259 AGR.GRP("lin","L259","L259"); AGR.TOC("matint","L259G1-Zr59B0.g",[96414974]); AGR.TOC("matalg","L259G1-Ar60aB0.g",[-119040621]); AGR.TOC("maxes","L259G1-max1W1",[-34200159]); AGR.TOC("maxes","L259G1-max2W1",[-39026047]); AGR.TOC("maxes","L259G1-max3W1",[125670029]); AGR.TOC("maxes","L259G1-max4W1",[42071166]); AGR.TOC("maxes","L259G1-max5W1",[98771752]); AGR.TOC("out","L259G1-a2W1",[5441557]); # 2L261 AGR.GRP("lin","L261","2L261"); AGR.TOC("matalg","2L261G1-Ar62aB0.g",[-65154804]); # L261 AGR.GRP("lin","L261","L261"); AGR.TOC("matint","L261G1-Zr61B0.g",[-28535708]); AGR.TOC("matalg","L261G1-Ar62aB0.g",[13639090]); AGR.TOC("maxes","L261G1-max1W1",[-113761705]); AGR.TOC("maxes","L261G1-max2W1",[-29424071]); AGR.TOC("maxes","L261G1-max3W1",[-55103260]); AGR.TOC("maxes","L261G1-max4W1",[5504545]); AGR.TOC("maxes","L261G1-max5W1",[61663348]); AGR.TOC("out","L261G1-a2W1",[-73494788]); # L264 AGR.GRP("lin","L264","L264"); AGR.TOC("matint","L264G1-Zr64B0.g",[3637152]); AGR.TOC("matalg","L264G1-Ar65aB0.g",[-74990346]); # 2L267 AGR.GRP("lin","L267","2L267"); AGR.TOC("matalg","2L267G1-Ar68aB0.g",[-119110097]); # L267 AGR.GRP("lin","L267","L267"); AGR.TOC("matint","L267G1-Zr67B0.g",[-31103119]); AGR.TOC("matalg","L267G1-Ar68aB0.g",[50464254]); AGR.TOC("maxes","L267G1-max1W1",[13301311]); AGR.TOC("maxes","L267G1-max2W1",[98771752]); AGR.TOC("maxes","L267G1-max3W1",[-69257965]); AGR.TOC("maxes","L267G1-max4W1",[94646780]); AGR.TOC("out","L267G1-a2W1",[-61305413]); # 2L27 AGR.GRP("lin","L27","2L27"); AGR.TOC("perm","2L27G1-p16B0.m",[18937788,101534527]); AGR.TOC("perm","2L27G1-p48B0.m",[50784854,-62607311]); AGR.TOC("perm","2L27G1-p112B0.m",[23813295,-74617714]); AGR.TOC("perm","2L27G1-p336B0.m",[101513021,-12129824]); AGR.TOC("matff","2L27G1-f3r8B0.m",[-85360600,-64362510]); AGR.TOC("matff","2L27G1-f3r12B0.m",[-56959780,82402903]); AGR.TOC("matff","2L27G1-f7r2B0.m",[-72031738,-39354210]); AGR.TOC("matff","2L27G1-f7r4B0.m",[21980736,12031682]); AGR.TOC("matff","2L27G1-f7r6B0.m",[91729598,73771373]); AGR.TOC("matff","2L27G1-f9r4aB0.m",[-69280753,99960906]); AGR.TOC("matff","2L27G1-f9r4bB0.m",[-69280753,29931299]); AGR.TOC("matff","2L27G1-f9r6aB0.m",[-117080397,-39431188]); AGR.TOC("matff","2L27G1-f9r6bB0.m",[-117080397,-27343019]); AGR.TOC("pres","2L27G1-P1",[-134105252]); # 2L27d2 AGR.GRP("lin","L27","2L27d2"); AGR.TOC("perm","2L27d2G1-p32B0.m",[59442930,-77912855]); AGR.TOC("perm","2L27d2G1-p96B0.m",[-118100123,122469431]); AGR.TOC("perm","2L27d2G1-p224B0.m",[52859140,-112075309]); AGR.TOC("perm","2L27d2G1-p672B0.m",[32144421,-129823791]); # 2L27d2i AGR.GRP("lin","L27","2L27d2i"); AGR.TOC("perm","2L27d2iG1-p16aB0.m",[96723553,17491636]); AGR.TOC("perm","2L27d2iG1-p16bB0.m",[-130035598,-86840059]); AGR.TOC("perm","2L27d2iG1-p32B0.m",[67977434,-131909209]); AGR.TOC("perm","2L27d2iG1-p48aB0.m",[3733480,-129643461]); AGR.TOC("perm","2L27d2iG1-p48bB0.m",[81498658,81743050]); AGR.TOC("perm","2L27d2iG1-p96B0.m",[107847702,7110135]); AGR.TOC("perm","2L27d2iG1-p112aB0.m",[32537100,87239194]); AGR.TOC("perm","2L27d2iG1-p112bB0.m",[121272550,43905256]); AGR.TOC("perm","2L27d2iG1-p224B0.m",[27253918,-71331726]); AGR.TOC("perm","2L27d2iG1-p336B0.m",[38024782,-77639069]); AGR.TOC("perm","2L27d2iG1-p672B0.m",[46016725,81318152]); # L27 AGR.GRP("lin","L27","L27"); AGR.TOC("perm","L27G1-p7aB0.m",[49217095,41912584]); AGR.TOC("perm","L27G1-p7bB0.m",[80135519,-49134850]); AGR.TOC("perm","L27G1-p8B0.m",[-23286895,26136506]); AGR.TOC("perm","L27G1-p14aB0.m",[88769167,-127152366]); AGR.TOC("perm","L27G1-p14bB0.m",[106114946,-82319708]); AGR.TOC("perm","L27G1-p21B0.m",[-34366470,119619994]); AGR.TOC("perm","L27G1-p24B0.m",[21098421,64062395]); AGR.TOC("perm","L27G1-p28B0.m",[13997879,-1537989]); AGR.TOC("perm","L27G1-p42aB0.m",[95380373,-13080864]); AGR.TOC("perm","L27G1-p42bB0.m",[-47718257,-110106684]); AGR.TOC("perm","L27G1-p42cB0.m",[-89859222,78718510]); AGR.TOC("perm","L27G1-p56B0.m",[-36452036,97078584]); AGR.TOC("perm","L27G1-p84B0.m",[-105372602,132791931]); AGR.TOC("perm","L27G1-p168B0.m",[-48007814,133832626]); AGR.TOC("matff","L27G1-f2r3aB0.m",[57914838,26346105]); AGR.TOC("matff","L27G1-f2r3bB0.m",[-119253757,26346105]); AGR.TOC("matff","L27G1-f2r8B0.m",[126279998,17700283]); AGR.TOC("matff","L27G1-f3r6aB0.m",[121874030,-17226445]); AGR.TOC("matff","L27G1-f3r6bB0.m",[100466148,3567420]); AGR.TOC("matff","L27G1-f3r7B0.m",[15516596,-73787096]); AGR.TOC("matff","L27G1-f7r3B0.m",[29749878,-61433424]); AGR.TOC("matff","L27G1-f7r5B0.m",[-62739065,-104202378]); AGR.TOC("matff","L27G1-f7r7B0.m",[-133836350,7636822]); AGR.TOC("matff","L27G1-f9r3aB0.m",[44653245,-122746370]); AGR.TOC("matff","L27G1-f9r3bB0.m",[44653245,-64615968]); AGR.TOC("matint","L27G1-Zr6aB0.g",[-113349301]); AGR.TOC("matint","L27G1-Zr6bB0.g",[107121157]); AGR.TOC("matint","L27G1-Zr7B0.g",[-123920082]); AGR.TOC("matint","L27G1-Zr8B0.g",[-31448454]); AGR.TOC("matalg","L27G1-Ar3aB0.g",[-66771044]); AGR.TOC("matalg","L27G1-Ar3bB0.g",[-49583138]); AGR.TOC("maxes","L27G1-max1W1",[-112559531]); AGR.TOC("maxes","L27G1-max1W2",[4811487]); AGR.TOC("maxes","L27G1-max1W3",[22686636]); AGR.TOC("maxes","L27G1-max2W1",[38083598]); AGR.TOC("maxes","L27G1-max2W2",[-79295356]); AGR.TOC("maxes","L27G1-max2W3",[109910985]); AGR.TOC("maxes","L27G1-max3W1",[16690830]); AGR.TOC("maxes","L27G1-max3W2",[37289573]); AGR.TOC("maxes","L27G1-max3W3",[-129158900]); AGR.TOC("check","L27G1-check1",[80991801]); AGR.TOC("pres","L27G1-P1",[59758955]); # L27d2 AGR.GRP("lin","L27","L27d2"); AGR.TOC("perm","L27d2G1-p8B0.m",[-5510263,21540190]); AGR.TOC("perm","L27d2G1-p14B0.m",[90997888,-132691774]); AGR.TOC("perm","L27d2G1-p16B0.m",[5407018,102638737]); AGR.TOC("perm","L27d2G1-p21B0.m",[56049192,65425389]); AGR.TOC("perm","L27d2G1-p24B0.m",[103365845,-91778750]); AGR.TOC("perm","L27d2G1-p28B0.m",[-44303605,-10360032]); AGR.TOC("perm","L27d2G1-p28bB0.m",[106513626,107773132]); AGR.TOC("perm","L27d2G1-p42aB0.m",[-59490654,-121061376]); AGR.TOC("perm","L27d2G1-p42bB0.m",[-68642179,-62328167]); AGR.TOC("perm","L27d2G1-p42cB0.m",[11888379,95168154]); AGR.TOC("perm","L27d2G1-p48B0.m",[71422658,-129643461]); AGR.TOC("perm","L27d2G1-p56aB0.m",[-122228810,-64038626]); AGR.TOC("perm","L27d2G1-p56bB0.m",[32936262,-47352246]); AGR.TOC("perm","L27d2G1-p56cB0.m",[-99171114,-70888439]); AGR.TOC("perm","L27d2G1-p84aB0.m",[-87023985,-19484267]); AGR.TOC("perm","L27d2G1-p84bB0.m",[103075831,77267518]); AGR.TOC("perm","L27d2G1-p84cB0.m",[131447996,-129413916]); AGR.TOC("perm","L27d2G1-p112B0.m",[-35409806,-128129373]); AGR.TOC("perm","L27d2G1-p168aB0.m",[-74183466,-76560744]); AGR.TOC("perm","L27d2G1-p168bB0.m",[-11485800,8931352]); AGR.TOC("perm","L27d2G1-p336B0.m",[-50384223,-36708116]); AGR.TOC("maxes","L27d2G1-max1W1",[12326768]); AGR.TOC("maxes","L27d2G1-max1W2",[-60147278]); AGR.TOC("maxes","L27d2G1-max2W1",[-77560180]); AGR.TOC("maxes","L27d2G1-max3W1",[-122443526]); AGR.TOC("maxes","L27d2G1-max4W1",[-92766075]); AGR.TOC("switch","L27d2G2-G1W1",[126156494]); AGR.TOC("switch","L27d2G2-G1W2",[-227752]); AGR.TOC("pres","L27d2G1-P1",[122585497]); # 2L271 AGR.GRP("lin","L271","2L271"); AGR.TOC("matalg","2L271G1-Ar72aB0.g",[97573070]); # L271 AGR.GRP("lin","L271","L271"); AGR.TOC("matint","L271G1-Zr71B0.g",[-29765968]); AGR.TOC("matalg","L271G1-Ar72aB0.g",[-132705831]); AGR.TOC("maxes","L271G1-max1W1",[-107506999]); AGR.TOC("maxes","L271G1-max2W1",[-120005548]); AGR.TOC("maxes","L271G1-max3W1",[98771752]); AGR.TOC("maxes","L271G1-max4W1",[-115302759]); AGR.TOC("maxes","L271G1-max5W1",[19142927]); AGR.TOC("maxes","L271G1-max6W1",[-46171502]); AGR.TOC("maxes","L271G1-max7W1",[-69705092]); AGR.TOC("out","L271G1-a2W1",[-41215106]); # 2L273 AGR.GRP("lin","L273","2L273"); AGR.TOC("matalg","2L273G1-Ar74aB0.g",[128545564]); # L273 AGR.GRP("lin","L273","L273"); AGR.TOC("matint","L273G1-Zr73B0.g",[-105856654]); AGR.TOC("matalg","L273G1-Ar74aB0.g",[14924052]); AGR.TOC("maxes","L273G1-max1W1",[-6680566]); AGR.TOC("maxes","L273G1-max2W1",[98771752]); AGR.TOC("maxes","L273G1-max3W1",[-67796260]); AGR.TOC("maxes","L273G1-max4W1",[23166390]); AGR.TOC("maxes","L273G1-max5W1",[-34569730]); AGR.TOC("out","L273G1-a2W1",[105324938]); # 2L279 AGR.GRP("lin","L279","2L279"); AGR.TOC("matalg","2L279G1-Ar80aB0.g",[95725530]); # L279 AGR.GRP("lin","L279","L279"); AGR.TOC("matint","L279G1-Zr79B0.g",[41641260]); AGR.TOC("matalg","L279G1-Ar80aB0.g",[14169819]); AGR.TOC("maxes","L279G1-max1W1",[61294765]); AGR.TOC("maxes","L279G1-max2W1",[-67796260]); AGR.TOC("maxes","L279G1-max3W1",[98771752]); AGR.TOC("maxes","L279G1-max4W1",[33653711]); AGR.TOC("maxes","L279G1-max5W1",[-11273025]); AGR.TOC("maxes","L279G1-max6W1",[-122498485]); AGR.TOC("maxes","L279G1-max7W1",[113353462]); AGR.TOC("out","L279G1-a2W1",[24283469]); # L28 AGR.GRP("lin","L28","L28"); AGR.TOC("perm","L28G1-p9B0.m",[-85991161,61165666]); AGR.TOC("perm","L28G1-p28B0.m",[35669448,-782094]); AGR.TOC("perm","L28G1-p36B0.m",[25709402,47214261]); AGR.TOC("matff","L28G1-f2r6B0.m",[-60926122,-98268904]); AGR.TOC("matff","L28G1-f2r8B0.m",[126279998,68611850]); AGR.TOC("matff","L28G1-f2r12B0.m",[106294607,108107010]); AGR.TOC("matff","L28G1-f3r7B0.m",[27407714,7853667]); AGR.TOC("matff","L28G1-f3r27B0.m",[-107460493,-64525869]); AGR.TOC("matff","L28G1-f7r7aB0.m",[40749817,-128421700]); AGR.TOC("matff","L28G1-f7r8B0.m",[83678633,-26931561]); AGR.TOC("matff","L28G1-f7r21B0.m",[47260477,-109705151]); AGR.TOC("matff","L28G1-f8r2aB0.m",[-131892916,-38250632]); AGR.TOC("matff","L28G1-f8r2bB0.m",[45556983,-38250632]); AGR.TOC("matff","L28G1-f8r2cB0.m",[50328380,-38250632]); AGR.TOC("matff","L28G1-f8r4aB0.m",[-123386786,-87209001]); AGR.TOC("matff","L28G1-f8r4bB0.m",[-123386786,-55301343]); AGR.TOC("matff","L28G1-f8r4cB0.m",[-123386786,-80612404]); AGR.TOC("matff","L28G1-f27r9aB0.m",[84356960,99001269]); AGR.TOC("matff","L28G1-f27r9bB0.m",[-48094539,-37326664]); AGR.TOC("matff","L28G1-f27r9cB0.m",[-87327260,-86458705]); AGR.TOC("matint","L28G1-Zr7aB0.g",[110656383]); AGR.TOC("matint","L28G1-Zr8B0.g",[-51612611]); AGR.TOC("matint","L28G1-Zr27B0.g",[-114310636]); AGR.TOC("matalg","L28G1-Ar7bB0.g",[20710480]); AGR.TOC("matalg","L28G1-Ar7cB0.g",[106609871]); AGR.TOC("matalg","L28G1-Ar7dB0.g",[101983880]); AGR.TOC("matalg","L28G1-Ar9aB0.g",[-93920251]); AGR.TOC("matalg","L28G1-Ar9bB0.g",[64986437]); AGR.TOC("matalg","L28G1-Ar9cB0.g",[87023092]); AGR.TOC("maxes","L28G1-max1W1",[21105475]); AGR.TOC("maxes","L28G1-max2W1",[98771752]); AGR.TOC("maxes","L28G1-max3W1",[-22453665]); AGR.TOC("classes","L28G1-cclsW1",[-56266870]); AGR.TOC("cyclic","L28G1-cycW1",[-65903386]); AGR.TOC("cyc2ccl","L28G1cycW1-cclsW1",[-15352628]); AGR.TOC("check","L28G1-check1",[80991801]); # L28d3 AGR.GRP("lin","L28","L28d3"); AGR.TOC("perm","L28d3G1-p9B0.m",[-124930224,95862760]); AGR.TOC("perm","L28d3G1-p28B0.m",[-11347864,-3092846]); AGR.TOC("perm","L28d3G1-p36B0.m",[-57133671,18170332]); AGR.TOC("matff","L28d3G1-f2r6B0.m",[117978225,97958503]); AGR.TOC("matff","L28d3G1-f2r8B0.m",[126279998,-16426250]); AGR.TOC("matff","L28d3G1-f2r12B0.m",[-88309005,-97581577]); AGR.TOC("matff","L28d3G1-f3r7B0.m",[-76107375,95107976]); AGR.TOC("matff","L28d3G1-f3r27B0.m",[24644973,-94767526]); AGR.TOC("matff","L28d3G1-f7r7B0.m",[134048538,-25835967]); AGR.TOC("matff","L28d3G1-f7r8B0.m",[-27681234,-117458693]); AGR.TOC("matff","L28d3G1-f7r21B0.m",[131726451,47314828]); AGR.TOC("matint","L28d3G1-Zr7B0.g",[32732428]); AGR.TOC("matint","L28d3G1-Zr8B0.g",[76066356]); AGR.TOC("matint","L28d3G1-Zr21B0.g",[-3741690]); AGR.TOC("matint","L28d3G1-Zr27B0.g",[-20687523]); AGR.TOC("classes","L28d3G1-cclsW1",[-104837138]); AGR.TOC("cyclic","L28d3G1-cycW1",[-60225110]); AGR.TOC("cyc2ccl","L28d3G1cycW1-cclsW1",[68710271]); # 2L283 AGR.GRP("lin","L283","2L283"); AGR.TOC("matalg","2L283G1-Ar84aB0.g",[-96591429]); # L283 AGR.GRP("lin","L283","L283"); AGR.TOC("matint","L283G1-Zr83B0.g",[133196235]); AGR.TOC("matalg","L283G1-Ar84aB0.g",[-70217405]); AGR.TOC("maxes","L283G1-max1W1",[-49666001]); AGR.TOC("maxes","L283G1-max2W1",[98771752]); AGR.TOC("maxes","L283G1-max3W1",[-69257965]); AGR.TOC("maxes","L283G1-max4W1",[75963915]); AGR.TOC("out","L283G1-a2W1",[6146545]); # 2L289 AGR.GRP("lin","L289","2L289"); AGR.TOC("matalg","2L289G1-Ar90aB0.g",[32588927]); # L289 AGR.GRP("lin","L289","L289"); AGR.TOC("matint","L289G1-Zr89B0.g",[-34493501]); AGR.TOC("matalg","L289G1-Ar90aB0.g",[35540176]); AGR.TOC("maxes","L289G1-max1W1",[103741336]); AGR.TOC("maxes","L289G1-max2W1",[117428427]); AGR.TOC("maxes","L289G1-max3W1",[21738060]); AGR.TOC("maxes","L289G1-max4W1",[-33392236]); AGR.TOC("maxes","L289G1-max5W1",[41806923]); AGR.TOC("maxes","L289G1-max6W1",[90241214]); AGR.TOC("maxes","L289G1-max7W1",[-73311858]); AGR.TOC("out","L289G1-a2W1",[-13827601]); # 2L297 AGR.GRP("lin","L297","2L297"); AGR.TOC("matalg","2L297G1-Ar98aB0.g",[-34210]); # L297 AGR.GRP("lin","L297","L297"); AGR.TOC("matint","L297G1-Zr97B0.g",[58929255]); AGR.TOC("matalg","L297G1-Ar98aB0.g",[-119272150]); AGR.TOC("maxes","L297G1-max1W1",[57251414]); AGR.TOC("maxes","L297G1-max2W1",[-109559907]); AGR.TOC("maxes","L297G1-max3W1",[-67796260]); AGR.TOC("maxes","L297G1-max4W1",[50625176]); AGR.TOC("maxes","L297G1-max5W1",[49198845]); AGR.TOC("out","L297G1-a2W1",[20248882]); # L311 AGR.GRP("lin","L311","L311"); AGR.TOC("perm","L311G1-p133B0.m",[-48892957,-54007987]); AGR.TOC("matff","L311G1-f2r132B0.m",[15127738,-75727431]); AGR.TOC("matff","L311G1-f3r132B0.m",[-92319162,76425779]); AGR.TOC("matff","L311G1-f5r132B0.m",[-60819095,100091130]); AGR.TOC("matff","L311G1-f7r131B0.m",[72618050,62147603]); AGR.TOC("matff","L311G1-f11r3aB0.m",[51353074,-84399793]); AGR.TOC("matff","L311G1-f19r131B0.m",[-109101582,-13175777]); AGR.TOC("matint","L311G1-Zr132B0.g",[17593353]); AGR.TOC("matint","L311G1-Zr133aB0.g",[-47865131]); AGR.TOC("matint","L311G1-Zr532aB0.g",[106335786]); AGR.TOC("matint","L311G1-Zr532bB0.g",[-78067212]); AGR.TOC("matalg","L311G1-Ar133bB0.g",[29634126]); AGR.TOC("matalg","L311G1-Ar133cB0.g",[-4007399]); AGR.TOC("matalg","L311G1-Ar133dB0.g",[-22194624]); AGR.TOC("matalg","L311G1-Ar133eB0.g",[103312800]); AGR.TOC("matalg","L311G1-Ar133fB0.g",[65719361]); AGR.TOC("matalg","L311G1-Ar133gB0.g",[-101751351]); AGR.TOC("matalg","L311G1-Ar133hB0.g",[-114688021]); AGR.TOC("matalg","L311G1-Ar133iB0.g",[130526841]); AGR.TOC("check","L311G1-check1",[-61231635]); # L313 AGR.GRP("lin","L313","L313"); AGR.TOC("perm","L313G1-p183aB0.m",[-579457,21211168]); AGR.TOC("perm","L313G1-p183bB0.m",[-60482435,-35517122]); AGR.TOC("matint","L313G1-Zr182B0.g",[-111175614]); AGR.TOC("matint","L313G1-Zr183aB0.g",[-132862379]); AGR.TOC("matint","L313G1-Zr366B0.g",[93062962]); AGR.TOC("matalg","L313G1-Ar183bB0.g",[33423423]); AGR.TOC("matalg","L313G1-Ar183cB0.g",[-83074833]); AGR.TOC("check","L313G1-check1",[97550448]); # L33 AGR.GRP("lin","L33","L33"); AGR.TOC("perm","L33G1-p13aB0.m",[-116463163,121751560]); AGR.TOC("perm","L33G1-p13bB0.m",[122362027,96305341]); AGR.TOC("perm","L33G1-p144B0.m",[132953030,-79314437]); AGR.TOC("perm","L33G1-p234B0.m",[46906834,-97222146]); AGR.TOC("matff","L33G1-f2r12B0.m",[-68369210,-99704100]); AGR.TOC("matff","L33G1-f2r26B0.m",[-6487394,-93166295]); AGR.TOC("matff","L33G1-f3r3aB0.m",[-125015203,-1845232]); AGR.TOC("matff","L33G1-f3r3bB0.m",[22004189,-1845232]); AGR.TOC("matff","L33G1-f3r6aB0.m",[87395281,20238276]); AGR.TOC("matff","L33G1-f3r6bB0.m",[48358129,-10098283]); AGR.TOC("matff","L33G1-f3r7B0.m",[14693066,22845843]); AGR.TOC("matff","L33G1-f3r15aB0.m",[47943582,73867703]); AGR.TOC("matff","L33G1-f3r15bB0.m",[125984071,123092749]); AGR.TOC("matff","L33G1-f3r27B0.m",[42310481,17373410]); AGR.TOC("matff","L33G1-f13r11B0.m",[-23612432,-121029381]); AGR.TOC("matff","L33G1-f13r13B0.m",[54078889,-94309608]); AGR.TOC("matff","L33G1-f13r16B0.m",[-124556057,-43232758]); AGR.TOC("matff","L33G1-f13r26aB0.m",[-45703789,51535145]); AGR.TOC("matff","L33G1-f13r39B0.m",[52819509,-116280565]); AGR.TOC("matff","L33G1-f16r16aB0.m",[86287709,-95936991]); AGR.TOC("matff","L33G1-f169r26bB0.m",[15772447,10196970]); AGR.TOC("matff","L33G1-f169r26cB0.m",[86757413,-11766465]); AGR.TOC("matint","L33G1-Zr12B0.g",[61457421]); AGR.TOC("matint","L33G1-Zr13B0.g",[-92468055]); AGR.TOC("matint","L33G1-Zr26aB0.g",[84455157]); AGR.TOC("matint","L33G1-Zr27B0.g",[-29774170]); AGR.TOC("matint","L33G1-Zr39B0.g",[27098987]); AGR.TOC("matint","L33G1-Zr52B0.g",[-133915197]); AGR.TOC("matint","L33G1-Zr64B0.g",[123632852]); AGR.TOC("matalg","L33G1-Ar26bB0.g",[-84589093]); AGR.TOC("matalg","L33G1-Ar26cB0.g",[59595839]); AGR.TOC("check","L33G1-check1",[128356795]); # L33d2 AGR.GRP("lin","L33","L33d2"); AGR.TOC("perm","L33d2G1-p26B0.m",[5090655,58529217]); AGR.TOC("perm","L33d2G1-p52B0.m",[-99210540,91863820]); AGR.TOC("perm","L33d2G1-p117B0.m",[83812796,-69780241]); AGR.TOC("perm","L33d2G1-p144B0.m",[86756571,98651988]); AGR.TOC("perm","L33d2G1-p234B0.m",[37009871,-49456502]); AGR.TOC("matff","L33d2G1-f2r12B0.m",[19003538,118353708]); AGR.TOC("matff","L33d2G1-f2r26B0.m",[-56283482,-35124799]); AGR.TOC("matff","L33d2G1-f3r6B0.m",[-88688062,-45156628]); AGR.TOC("matff","L33d2G1-f3r7aB0.m",[-60557545,-118441876]); AGR.TOC("matff","L33d2G1-f3r12B0.m",[-53009047,-14672641]); AGR.TOC("matff","L33d2G1-f3r27aB0.m",[-2091504,-37614992]); AGR.TOC("matff","L33d2G1-f3r30B0.m",[13802191,-64168086]); AGR.TOC("matff","L33d2G1-f4r32aB0.m",[-27072300,-22301723]); AGR.TOC("matff","L33d2G1-f4r32bB0.m",[9376398,-83334069]); AGR.TOC("matff","L33d2G1-f13r11a1B0.m",[-133399472,104386340]); AGR.TOC("matff","L33d2G1-f13r13a1B0.m",[127185765,-13976792]); AGR.TOC("matff","L33d2G1-f13r16a1B0.m",[39120435,7620644]); AGR.TOC("matff","L33d2G1-f13r26a1B0.m",[58994423,-71875203]); AGR.TOC("matff","L33d2G1-f13r39a1B0.m",[-117604088,17820792]); AGR.TOC("matff","L33d2G1-f13r52B0.m",[75404613,-112415009]); # 12aL34 AGR.GRP("lin","L34","12aL34"); AGR.TOC("perm","12aL34G1-p1440B0.m",[-93057487,34381739]); # 12aL34d2a AGR.GRP("lin","L34","12aL34d2a"); AGR.TOC("matff","12aL34d2aG1-f7r48aB0.m",[26622177,109214358]); AGR.TOC("matff","12aL34d2aG1-f7r96aB0.m",[92172142,115704419]); AGR.TOC("matff","12aL34d2aG1-f7r96bB0.m",[-127705810,4045644]); AGR.TOC("matff","12aL34d2aG1-f25r48aB0.m",[-79141338,44899819]); AGR.TOC("matff","12aL34d2aG1-f25r48bB0.m",[14928352,18052982]); AGR.TOC("matff","12aL34d2aG1-f25r240aB0.m",[121261647,72933608]); # 12bL34 AGR.GRP("lin","L34","12bL34"); AGR.TOC("perm","12bL34G1-p1440B0.m",[6654670,-47327527]); AGR.TOC("matff","12bL34G1-f49r12aB0.m",[120731387,-43948989]); AGR.TOC("matff","12bL34G1-f49r36aB0.m",[6624692,-72871409]); AGR.TOC("matff","12bL34G1-f49r48aB0.m",[103614293,42100855]); AGR.TOC("matff","12bL34G1-f49r84aB0.m",[3517396,-122669699]); # 12bL34d2a AGR.GRP("lin","L34","12bL34d2a"); AGR.TOC("matff","12bL34d2aG1-f7r24aB0.m",[-90380968,87401413]); AGR.TOC("matff","12bL34d2aG1-f7r72aB0.m",[56903652,-2055551]); AGR.TOC("matff","12bL34d2aG1-f7r96aB0.m",[35078056,-127832242]); AGR.TOC("matff","12bL34d2aG1-f7r168aB0.m",[-69235645,73296186]); AGR.TOC("matff","12bL34d2aG1-f25r72aB0.m",[14083533,70706734]); AGR.TOC("matff","12bL34d2aG1-f25r96aB0.m",[-127862077,-102790773]); AGR.TOC("matff","12bL34d2aG1-f25r120aB0.m",[73397176,-75291982]); AGR.TOC("matff","12bL34d2aG1-f25r120bB0.m",[-68375584,53552761]); # 2L34 AGR.GRP("lin","L34","2L34"); AGR.TOC("perm","2L34G1-p112aB0.m",[-68974259,-52791464]); AGR.TOC("perm","2L34G1-p112bB0.m",[-41101872,-125401681]); AGR.TOC("perm","2L34G1-p112cB0.m",[-5706690,-120729682]); AGR.TOC("perm","2L34G1-p240aB0.m",[-41074538,22004999]); AGR.TOC("perm","2L34G1-p240bB0.m",[81289321,77816372]); AGR.TOC("perm","2L34G1-p240cB0.m",[15130538,96479366]); AGR.TOC("matff","2L34G1-f3r6B0.m",[-103893736,-86081679]); AGR.TOC("matff","2L34G1-f3r20B0.m",[-93569944,-87382685]); AGR.TOC("matff","2L34G1-f3r36B0.m",[-80756428,41508285]); AGR.TOC("matff","2L34G1-f3r44B0.m",[41478190,-18743104]); AGR.TOC("matff","2L34G1-f3r90B0.m",[88287177,-81736530]); AGR.TOC("matff","2L34G1-f5r20B0.m",[-89299589,-58349063]); AGR.TOC("matff","2L34G1-f5r28B0.m",[-399631,116739406]); AGR.TOC("matff","2L34G1-f5r36B0.m",[115657892,-23166152]); AGR.TOC("matff","2L34G1-f5r70B0.m",[-101817162,124450490]); AGR.TOC("matff","2L34G1-f5r90B0.m",[105022990,-88409173]); AGR.TOC("matff","2L34G1-f7r10B0.m",[84112006,27474894]); AGR.TOC("matff","2L34G1-f7r26B0.m",[-116585591,116151908]); AGR.TOC("matff","2L34G1-f7r56B0.m",[79622507,-86309451]); AGR.TOC("matff","2L34G1-f7r64B0.m",[-24493087,-33578946]); AGR.TOC("matff","2L34G1-f7r70B0.m",[127847176,83424766]); AGR.TOC("matff","2L34G1-f9r10aB0.m",[-25247569,128716654]); AGR.TOC("matff","2L34G1-f9r10bB0.m",[-103159260,-97045998]); AGR.TOC("matff","2L34G1-f9r22aB0.m",[22903972,116243796]); AGR.TOC("matff","2L34G1-f9r22bB0.m",[-58222286,54549056]); AGR.TOC("matff","2L34G1-f25r10aB0.m",[-88992821,67489201]); AGR.TOC("matff","2L34G1-f25r10bB0.m",[-105440074,96200235]); AGR.TOC("matff","2L34G1-f49r28aB0.m",[1310270,-62148044]); AGR.TOC("matff","2L34G1-f49r28bB0.m",[124811287,-54950694]); # 2L34d2a AGR.GRP("lin","L34","2L34d2a"); AGR.TOC("matff","2L34d2aG1-f3r20aB0.m",[116117247,-57691655]); AGR.TOC("matff","2L34d2aG1-f3r36aB0.m",[-77445395,-24387511]); AGR.TOC("matff","2L34d2aG1-f3r44aB0.m",[45409821,121155019]); AGR.TOC("matff","2L34d2aG1-f5r20aB0.m",[110311293,-1882364]); AGR.TOC("matff","2L34d2aG1-f5r28aB0.m",[47061633,-116857533]); AGR.TOC("matff","2L34d2aG1-f5r36aB0.m",[-67885411,-67746345]); AGR.TOC("matff","2L34d2aG1-f7r10aB0.m",[100312708,4134229]); AGR.TOC("matff","2L34d2aG1-f7r26aB0.m",[80948327,-21554207]); AGR.TOC("matff","2L34d2aG1-f7r56aB0.m",[-120340992,-42176093]); AGR.TOC("matff","2L34d2aG1-f7r64aB0.m",[106918930,34999708]); AGR.TOC("matff","2L34d2aG1-f7r70aB0.m",[19892965,88403861]); AGR.TOC("matff","2L34d2aG1-f9r6aB0.m",[-45904163,-91173218]); AGR.TOC("matff","2L34d2aG1-f9r90aB0.m",[-48863604,-36608392]); AGR.TOC("matff","2L34d2aG1-f25r70aB0.m",[-115392312,-50364781]); AGR.TOC("matff","2L34d2aG1-f25r90aB0.m",[-104079389,-35438474]); # 3L34 AGR.GRP("lin","L34","3L34"); AGR.TOC("perm","3L34G1-p63aB0.m",[-84404742,-70798544]); AGR.TOC("perm","3L34G1-p63bB0.m",[-112558804,-13333446]); AGR.TOC("perm","3L34G1-p360aB0.m",[-56841669,-51949901]); AGR.TOC("perm","3L34G1-p360bB0.m",[87942575,15177202]); AGR.TOC("perm","3L34G1-p360cB0.m",[-99761475,53988323]); AGR.TOC("matff","3L34G1-f2r6aB0.m",[-65706201,-101302677]); AGR.TOC("matff","3L34G1-f2r6bB0.m",[16308329,63335887]); AGR.TOC("matff","3L34G1-f2r18B0.m",[22226930,-25662078]); AGR.TOC("matff","3L34G1-f2r48aB0.m",[-66044074,33257764]); AGR.TOC("matff","3L34G1-f2r48bB0.m",[-116513251,2548963]); AGR.TOC("matff","3L34G1-f4r3aB0.m",[-97328602,65174037]); AGR.TOC("matff","3L34G1-f4r3bB0.m",[11933003,65174037]); AGR.TOC("matff","3L34G1-f4r9aB0.m",[-123373201,86769374]); AGR.TOC("matff","3L34G1-f4r24aB0.m",[128439733,-19119772]); AGR.TOC("matff","3L34G1-f4r24bB0.m",[36344684,-59800273]); AGR.TOC("matff","3L34G1-f5r42B0.m",[85695935,-130342706]); AGR.TOC("matff","3L34G1-f7r15aB0.m",[79081745,514114]); AGR.TOC("matff","3L34G1-f7r15bB0.m",[8581692,126454307]); AGR.TOC("matff","3L34G1-f7r15cB0.m",[-114513189,114145279]); AGR.TOC("matff","3L34G1-f7r21aB0.m",[24467152,23770871]); AGR.TOC("matff","3L34G1-f7r84aB0.m",[75155492,99817923]); AGR.TOC("matff","3L34G1-f7r126aB0.m",[-36594705,-111037250]); AGR.TOC("matff","3L34G1-f25r21aB0.m",[-17385074,112933939]); AGR.TOC("matff","3L34G1-f49r63aB0.m",[67855398,47781720]); AGR.TOC("matff","3L34G1-f49r63bB0.m",[21904644,126831464]); # 3L34d2a AGR.GRP("lin","L34","3L34d2a"); AGR.TOC("matff","3L34d2aG1-f4r6aB0.m",[101016393,-133212309]); AGR.TOC("matff","3L34d2aG1-f4r9aB0.m",[-95539509,-73330707]); AGR.TOC("matff","3L34d2aG1-f4r48aB0.m",[-71828641,-87874767]); AGR.TOC("matff","3L34d2aG1-f7r15aB0.m",[11348637,127771694]); AGR.TOC("matff","3L34d2aG1-f7r15bB0.m",[26041056,-109115907]); AGR.TOC("matff","3L34d2aG1-f7r15cB0.m",[43912746,-17513682]); AGR.TOC("matff","3L34d2aG1-f7r21aB0.m",[58637017,-5764544]); AGR.TOC("matff","3L34d2aG1-f7r126aB0.m",[56179507,132628587]); AGR.TOC("matff","3L34d2aG1-f25r15aB0.m",[-46743145,94716397]); AGR.TOC("matff","3L34d2aG1-f25r15bB0.m",[-36577252,58600418]); AGR.TOC("matff","3L34d2aG1-f25r15cB0.m",[62050075,-79592725]); AGR.TOC("matff","3L34d2aG1-f25r21aB0.m",[-96589924,-38419168]); AGR.TOC("matff","3L34d2aG1-f25r63aB0.m",[-35259848,-68482160]); AGR.TOC("matff","3L34d2aG1-f25r90aB0.m",[-112263163,40609361]); # 4aL34 AGR.GRP("lin","L34","4aL34"); AGR.TOC("perm","4aL34G1-p224B0.m",[-29322817,-112140598]); AGR.TOC("perm","4aL34G1-p480B0.m",[107820567,38862527]); # 4aL34d2a AGR.GRP("lin","L34","4aL34d2a"); AGR.TOC("matff","4aL34d2aG1-f3r16aB0.m",[46427716,16766612]); AGR.TOC("matff","4aL34d2aG1-f3r16bB0.m",[-95213894,-53996788]); AGR.TOC("matff","4aL34d2aG1-f3r48aB0.m",[-125471684,-15470402]); AGR.TOC("matff","4aL34d2aG1-f3r48bB0.m",[-125471684,-15470402]); AGR.TOC("matff","4aL34d2aG1-f3r80aB0.m",[117868899,-114418461]); AGR.TOC("matff","4aL34d2aG1-f5r16aB0.m",[-77788676,52337679]); AGR.TOC("matff","4aL34d2aG1-f5r112aB0.m",[-44260037,57153121]); AGR.TOC("matff","4aL34d2aG1-f7r16aB0.m",[105949035,-27886191]); AGR.TOC("matff","4aL34d2aG1-f7r16bB0.m",[15027655,123470029]); AGR.TOC("matff","4aL34d2aG1-f7r112aB0.m",[120149916,-29136110]); AGR.TOC("matff","4aL34d2aG1-f7r128aB0.m",[28457933,-84063692]); AGR.TOC("matff","4aL34d2aG1-f25r160aB0.m",[94975212,-18542833]); # 4bL34 AGR.GRP("lin","L34","4bL34"); AGR.TOC("perm","4bL34G1-p224B0.m",[4075530,-126540461]); AGR.TOC("perm","4bL34G1-p480B0.m",[993474,-12612935]); AGR.TOC("matff","4bL34G1-f3r8B0.m",[-54825854,-94825055]); AGR.TOC("matff","4bL34G1-f3r32B0.m",[-18133199,-18991413]); AGR.TOC("matff","4bL34G1-f3r56aB0.m",[17247428,-133536447]); AGR.TOC("matff","4bL34G1-f3r56bB0.m",[88017518,-102653945]); AGR.TOC("matff","4bL34G1-f3r72B0.m",[51891685,-72809012]); AGR.TOC("matff","4bL34G1-f3r120B0.m",[-16253618,-91930404]); AGR.TOC("matff","4bL34G1-f5r20aB0.m",[130948648,76660542]); AGR.TOC("matff","4bL34G1-f5r28aB0.m",[-9788569,-60703200]); AGR.TOC("matff","4bL34G1-f5r36aB0.m",[119489141,-132304597]); AGR.TOC("matff","4bL34G1-f5r160aB0.m",[-119862924,-26192627]); AGR.TOC("matff","4bL34G1-f7r40B0.m",[70560512,60215626]); AGR.TOC("matff","4bL34G1-f7r56aB0.m",[97013262,-79743414]); AGR.TOC("matff","4bL34G1-f7r56bB0.m",[36361797,86437892]); AGR.TOC("matff","4bL34G1-f7r72B0.m",[40325760,11787007]); AGR.TOC("matff","4bL34G1-f7r88B0.m",[131279819,90124935]); AGR.TOC("matff","4bL34G1-f9r4aB0.m",[25816187,-57490078]); AGR.TOC("matff","4bL34G1-f9r16aB0.m",[40512013,-9608413]); AGR.TOC("matff","4bL34G1-f9r28aB0.m",[49153070,-61801576]); AGR.TOC("matff","4bL34G1-f9r28bB0.m",[127076227,-35727580]); AGR.TOC("matff","4bL34G1-f9r36aB0.m",[-129263542,775946]); AGR.TOC("matff","4bL34G1-f9r60aB0.m",[16520345,64352643]); AGR.TOC("matff","4bL34G1-f25r80aB0.m",[-35370227,-56481398]); AGR.TOC("matff","4bL34G1-f25r80bB0.m",[125494459,26057263]); AGR.TOC("matff","4bL34G1-f49r20aB0.m",[-451666,-97316739]); AGR.TOC("matff","4bL34G1-f49r28aB0.m",[-50186719,-44902445]); AGR.TOC("matff","4bL34G1-f49r28bB0.m",[97249965,131233241]); AGR.TOC("matff","4bL34G1-f49r36aB0.m",[61905462,-6951638]); AGR.TOC("matff","4bL34G1-f49r44aB0.m",[27974262,-88322029]); # 4bL34d2a AGR.GRP("lin","L34","4bL34d2a"); AGR.TOC("matff","4bL34d2aG1-f3r8aB0.m",[102848125,-122573398]); AGR.TOC("matff","4bL34d2aG1-f3r32aB0.m",[132207655,24814268]); AGR.TOC("matff","4bL34d2aG1-f3r56aB0.m",[116001063,-114911263]); AGR.TOC("matff","4bL34d2aG1-f3r56bB0.m",[78698101,-19003998]); AGR.TOC("matff","4bL34d2aG1-f3r72aB0.m",[-23570692,-970393]); AGR.TOC("matff","4bL34d2aG1-f3r120aB0.m",[-111067857,12708432]); AGR.TOC("matff","4bL34d2aG1-f5r40aB0.m",[131962590,61002952]); AGR.TOC("matff","4bL34d2aG1-f5r56aB0.m",[93085107,-85515727]); AGR.TOC("matff","4bL34d2aG1-f5r72aB0.m",[-54606187,-117119289]); AGR.TOC("matff","4bL34d2aG1-f7r40aB0.m",[-82490410,64417307]); AGR.TOC("matff","4bL34d2aG1-f7r56aB0.m",[-119575217,-97663691]); AGR.TOC("matff","4bL34d2aG1-f7r56bB0.m",[-82308316,-113181878]); AGR.TOC("matff","4bL34d2aG1-f7r72aB0.m",[33321922,-46364155]); AGR.TOC("matff","4bL34d2aG1-f7r88aB0.m",[24921739,-87479774]); AGR.TOC("matff","4bL34d2aG1-f25r160aB0.m",[59696593,-11162019]); # 6L34 AGR.GRP("lin","L34","6L34"); AGR.TOC("perm","6L34G1-p720aB0.m",[-28192485,26893988]); AGR.TOC("perm","6L34G1-p720bB0.m",[-125662981,-3873538]); AGR.TOC("perm","6L34G1-p720cB0.m",[1794908,123135054]); AGR.TOC("matalg","6L34G1-Ar6aB0.g",[85836385]); # 6L34d2a AGR.GRP("lin","L34","6L34d2a"); AGR.TOC("matff","6L34d2aG1-f7r6aB0.m",[79827435,-76787641]); AGR.TOC("matff","6L34d2aG1-f7r36aB0.m",[-4007073,-17197499]); AGR.TOC("matff","6L34d2aG1-f7r54aB0.m",[-67804259,-129518022]); AGR.TOC("matff","6L34d2aG1-f7r84aB0.m",[30627110,77959264]); AGR.TOC("matff","6L34d2aG1-f25r6aB0.m",[61179572,-78383424]); AGR.TOC("matff","6L34d2aG1-f25r36aB0.m",[104612967,-64413333]); AGR.TOC("matff","6L34d2aG1-f25r90aB0.m",[15442327,41972559]); AGR.TOC("matff","6L34d2aG1-f25r120aB0.m",[-64557383,-50608452]); # L34 AGR.GRP("lin","L34","L34"); AGR.TOC("perm","L34G1-p21aB0.m",[-19004952,5499543]); AGR.TOC("perm","L34G1-p21bB0.m",[91845683,-54944712]); AGR.TOC("perm","L34G1-p56aB0.m",[-8900666,-118975031]); AGR.TOC("perm","L34G1-p56bB0.m",[50383895,-34790052]); AGR.TOC("perm","L34G1-p56cB0.m",[-86656563,-100194267]); AGR.TOC("perm","L34G1-p120aB0.m",[-72559214,27979987]); AGR.TOC("perm","L34G1-p120bB0.m",[-55561320,-1516803]); AGR.TOC("perm","L34G1-p120cB0.m",[-57007187,101354069]); AGR.TOC("perm","L34G1-p280B0.m",[98810647,-94695118]); AGR.TOC("matff","L34G1-f2r9aB0.m",[-98758327,-117475382]); AGR.TOC("matff","L34G1-f2r9bB0.m",[-63412790,110073486]); AGR.TOC("matff","L34G1-f2r16B0.m",[46169480,-95413981]); AGR.TOC("matff","L34G1-f2r64B0.m",[51000356,-26817579]); AGR.TOC("matff","L34G1-f3r15aB0.m",[-39614754,-121811673]); AGR.TOC("matff","L34G1-f3r15bB0.m",[-112371543,-1531556]); AGR.TOC("matff","L34G1-f3r15cB0.m",[113919011,67993071]); AGR.TOC("matff","L34G1-f3r19B0.m",[102198987,105678252]); AGR.TOC("matff","L34G1-f3r90B0.m",[51410400,84508933]); AGR.TOC("matff","L34G1-f3r126B0.m",[3481951,64876651]); AGR.TOC("matff","L34G1-f4r8aB0.m",[-75135557,38900111]); AGR.TOC("matff","L34G1-f4r8bB0.m",[-75135557,2656064]); AGR.TOC("matff","L34G1-f5r20B0.m",[-43817290,-113432271]); AGR.TOC("matff","L34G1-f5r35aB0.m",[-89364701,74136444]); AGR.TOC("matff","L34G1-f5r35bB0.m",[-52643649,7141410]); AGR.TOC("matff","L34G1-f5r35cB0.m",[-128692603,52387688]); AGR.TOC("matff","L34G1-f5r63B0.m",[-105250897,-19347820]); AGR.TOC("matff","L34G1-f5r90B0.m",[-47031751,107440221]); AGR.TOC("matff","L34G1-f7r19B0.m",[124793693,83774943]); AGR.TOC("matff","L34G1-f7r35aB0.m",[60130429,-22094752]); AGR.TOC("matff","L34G1-f7r35bB0.m",[105679957,97686809]); AGR.TOC("matff","L34G1-f7r35cB0.m",[-60559294,79512400]); AGR.TOC("matff","L34G1-f7r45B0.m",[47592897,30522697]); AGR.TOC("matff","L34G1-f7r126B0.m",[41002667,32973004]); AGR.TOC("matff","L34G1-f9r45aB0.m",[93201630,-127294177]); AGR.TOC("matff","L34G1-f9r45bB0.m",[49557081,53141546]); AGR.TOC("matff","L34G1-f9r63aB0.m",[112292721,2777151]); AGR.TOC("matff","L34G1-f9r63bB0.m",[-89774031,103770877]); AGR.TOC("matff","L34G1-f25r45aB0.m",[-44775022,120011673]); AGR.TOC("matff","L34G1-f25r45bB0.m",[-29632890,103603502]); AGR.TOC("matff","L34G1-f49r63aB0.m",[124259526,30413281]); AGR.TOC("matff","L34G1-f49r63bB0.m",[21372363,-97700157]); AGR.TOC("matint","L34G1-Zr20B0.g",[-122023731]); AGR.TOC("matint","L34G1-Zr35aB0.g",[-113551123]); AGR.TOC("matint","L34G1-Zr35bB0.g",[-828219]); AGR.TOC("matint","L34G1-Zr35cB0.g",[-25424988]); AGR.TOC("matint","L34G1-Zr64B0.g",[13550568]); AGR.TOC("matalg","L34G1-Ar63aB0.g",[118391189]); AGR.TOC("matalg","L34G1-Ar63bB0.g",[125483016]); AGR.TOC("maxes","L34G1-max1W1",[68080085]); AGR.TOC("maxes","L34G1-max2W1",[5685288]); AGR.TOC("maxes","L34G1-max3W1",[118140116]); AGR.TOC("maxes","L34G1-max6W1",[130740388]); AGR.TOC("maxes","L34G1-max7W1",[-9220339]); AGR.TOC("maxes","L34G1-max8W1",[125238819]); AGR.TOC("maxes","L34G1-max9W1",[-108213754]); AGR.TOC("maxstd","L34G1max6W1-L27G1W1",[74292380]); AGR.TOC("maxstd","L34G1max7W1-L27G1W1",[74292380]); AGR.TOC("maxstd","L34G1max8W1-L27G1W1",[74292380]); AGR.TOC("check","L34G1-check1",[27117774]); AGR.TOC("pres","L34G1-P1",[-49235946]); # L34d2a AGR.GRP("lin","L34","L34d2a"); AGR.TOC("matff","L34d2aG1-f2r16aB0.m",[83547602,116479864]); AGR.TOC("matff","L34d2aG1-f2r18aB0.m",[-25080438,-59240269]); AGR.TOC("matff","L34d2aG1-f2r64aB0.m",[69288851,95225700]); AGR.TOC("matff","L34d2aG1-f3r15aB0.m",[-61111317,101842957]); AGR.TOC("matff","L34d2aG1-f3r15bB0.m",[-128709375,-54183738]); AGR.TOC("matff","L34d2aG1-f3r15cB0.m",[76310770,-121510502]); AGR.TOC("matff","L34d2aG1-f3r19aB0.m",[-51740278,41392306]); AGR.TOC("matff","L34d2aG1-f3r90aB0.m",[56189202,55127644]); AGR.TOC("matff","L34d2aG1-f3r126aB0.m",[81734399,-58995213]); AGR.TOC("matff","L34d2aG1-f5r20aB0.m",[31455135,131197524]); AGR.TOC("matff","L34d2aG1-f5r35aB0.m",[-43784368,119001465]); AGR.TOC("matff","L34d2aG1-f5r35bB0.m",[-111004812,29887541]); AGR.TOC("matff","L34d2aG1-f5r35cB0.m",[-51473521,23444213]); AGR.TOC("matff","L34d2aG1-f5r63aB0.m",[-112065891,-65873907]); AGR.TOC("matff","L34d2aG1-f5r90aB0.m",[-119791052,16467379]); AGR.TOC("matff","L34d2aG1-f7r19aB0.m",[-101848977,23107928]); AGR.TOC("matff","L34d2aG1-f7r35aB0.m",[-527302,56621053]); AGR.TOC("matff","L34d2aG1-f7r35bB0.m",[-95054765,35790184]); AGR.TOC("matff","L34d2aG1-f7r35cB0.m",[-95865379,23720152]); AGR.TOC("matff","L34d2aG1-f7r45aB0.m",[110810312,-98005062]); AGR.TOC("matff","L34d2aG1-f7r126aB0.m",[82279213,126072812]); AGR.TOC("cyclic","L34d2aG1-cycW1",[-96567863]); # L35 AGR.GRP("lin","L35","L35"); AGR.TOC("perm","L35G1-p31aB0.m",[-54392845,-57877261]); AGR.TOC("perm","L35G1-p31bB0.m",[-87497619,-74211641]); AGR.TOC("matff","L35G1-f5r3aB0.m",[-65129013,15896462]); AGR.TOC("matff","L35G1-f5r3bB0.m",[-65129013,-40061844]); AGR.TOC("matff","L35G1-f5r8B0.m",[32399140,85142332]); AGR.TOC("matint","L35G1-Zr30B0.g",[-27425429]); AGR.TOC("matint","L35G1-Zr31aB0.g",[99159689]); AGR.TOC("matint","L35G1-Zr124aB0.g",[-115205541]); AGR.TOC("matint","L35G1-Zr124bB0.g",[30557051]); AGR.TOC("matint","L35G1-Zr125B0.g",[100061240]); AGR.TOC("matint","L35G1-Zr155aB0.g",[39857228]); AGR.TOC("matint","L35G1-Zr186B0.g",[50412205]); AGR.TOC("matalg","L35G1-Ar31bB0.g",[8369273]); AGR.TOC("matalg","L35G1-Ar31cB0.g",[-71316675]); AGR.TOC("matalg","L35G1-Ar124cB0.g",[-124331976]); AGR.TOC("matalg","L35G1-Ar124dB0.g",[-114482122]); AGR.TOC("matalg","L35G1-Ar124eB0.g",[-115304669]); AGR.TOC("matalg","L35G1-Ar124fB0.g",[2324575]); AGR.TOC("matalg","L35G1-Ar124gB0.g",[62362134]); AGR.TOC("matalg","L35G1-Ar124hB0.g",[88306887]); AGR.TOC("matalg","L35G1-Ar124iB0.g",[-83924311]); AGR.TOC("matalg","L35G1-Ar124jB0.g",[-35732927]); AGR.TOC("matalg","L35G1-Ar155bB0.g",[96893498]); AGR.TOC("matalg","L35G1-Ar155cB0.g",[49785947]); AGR.TOC("switch","L35G1-G2W1",[4135392]); AGR.TOC("switch","L35G2-G1W1",[-116206338]); AGR.TOC("check","L35G1-check1",[-74963282]); AGR.TOC("pres","L35G1-P1",[90517883]); AGR.TOC("pres","L35G2-P1",[97980954]); # L35d2 AGR.GRP("lin","L35","L35d2"); AGR.TOC("perm","L35d2G1-p62B0.m",[-29681502,-49152859]); AGR.TOC("perm","L35d2G1-p186B0.m",[65566167,-13349652]); AGR.TOC("perm","L35d2G1-p775B0.m",[-2342518,-86305942]); AGR.TOC("perm","L35d2G1-p3100B0.m",[-88459429,-121823863]); AGR.TOC("perm","L35d2G1-p3875B0.m",[-128735761,1363702]); AGR.TOC("perm","L35d2G1-p4000B0.m",[27219291,109028642]); AGR.TOC("matff","L35d2G1-f5r6B0.m",[-104077410,-32872059]); AGR.TOC("matff","L35d2G1-f5r8B0.m",[-98916020,-122589078]); AGR.TOC("maxes","L35d2G1-max1W1",[94732269]); AGR.TOC("maxes","L35d2G1-max2W1",[53483340]); AGR.TOC("maxes","L35d2G1-max3W1",[-77535957]); AGR.TOC("maxes","L35d2G1-max4W1",[-19947795]); AGR.TOC("maxes","L35d2G1-max5W1",[131867145]); AGR.TOC("maxes","L35d2G1-max6W1",[-53044737]); AGR.TOC("pres","L35d2G1-P1",[111773918]); # 3L37 AGR.GRP("lin","L37","3L37"); AGR.TOC("matff","3L37G1-f7r3B0.m",[-100717365,-108175928]); # 3L37d2 AGR.GRP("lin","L37","3L37d2"); # L37 AGR.GRP("lin","L37","L37"); AGR.TOC("perm","L37G1-p57B0.m",[-53038011,-87729305]); AGR.TOC("matff","L37G1-f2r152aB0.m",[-72199675,67264246]); AGR.TOC("matff","L37G1-f3r55B0.m",[-74161474,-22493683]); AGR.TOC("matff","L37G1-f3r57B0.m",[-47437722,-74326569]); AGR.TOC("matff","L37G1-f3r96aB0.m",[26591279,71358592]); AGR.TOC("matff","L37G1-f3r96bB0.m",[-32809021,70784477]); AGR.TOC("matff","L37G1-f3r96cB0.m",[95784301,-41545820]); AGR.TOC("matff","L37G1-f3r342aB0.m",[52549423,-121195267]); AGR.TOC("matff","L37G1-f3r399B0.m",[132962784,32272895]); AGR.TOC("matff","L37G1-f7r8B0.m",[58422518,-51802315]); AGR.TOC("matff","L37G1-f7r10aB0.m",[131217716,6719232]); AGR.TOC("matff","L37G1-f7r10bB0.m",[-80359230,-77685974]); AGR.TOC("matff","L37G1-f7r27B0.m",[21222778,570050]); AGR.TOC("matint","L37G1-Zr56B0.g",[-46471591]); AGR.TOC("matint","L37G1-Zr57B0.g",[113079095]); AGR.TOC("matint","L37G1-Zr152aB0.g",[11399823]); AGR.TOC("matint","L37G1-Zr152bB0.g",[102789999]); AGR.TOC("matint","L37G1-Zr152cB0.g",[16428520]); AGR.TOC("cyclic","L37G1-cycW1",[5762964]); AGR.TOC("cyc2ccl","L37G1cycW1-cclsW1",[22298259]); AGR.TOC("check","L37G1-check1",[-77065997]); # L37d2 AGR.GRP("lin","L37","L37d2"); AGR.TOC("matff","L37d2G1-f2r56B0.m",[33892259,-118271238]); AGR.TOC("matff","L37d2G1-f2r152B0.m",[-32632257,-100690645]); AGR.TOC("matff","L37d2G1-f2r342B0.m",[56091536,-12504703]); AGR.TOC("matff","L37d2G1-f3r55B0.m",[-71443487,-95752462]); AGR.TOC("matff","L37d2G1-f3r57B0.m",[39141964,-36264033]); AGR.TOC("matff","L37d2G1-f3r96B0.m",[-131123640,-26072740]); AGR.TOC("matff","L37d2G1-f3r192B0.m",[-93380539,-87395286]); AGR.TOC("matff","L37d2G1-f3r399B0.m",[-95030787,104673177]); AGR.TOC("matff","L37d2G1-f7r8B0.m",[-122290111,-122282756]); AGR.TOC("matff","L37d2G1-f7r20B0.m",[-30006785,-54694979]); AGR.TOC("matff","L37d2G1-f7r27B0.m",[-10239772,42092568]); AGR.TOC("matff","L37d2G1-f7r37B0.m",[110185839,-101415274]); AGR.TOC("matff","L37d2G1-f7r56B0.m",[86717133,99591761]); AGR.TOC("matff","L37d2G1-f7r70B0.m",[62370012,-82953269]); AGR.TOC("matff","L37d2G1-f7r308B0.m",[-75186577,82686741]); AGR.TOC("matff","L37d2G1-f7r343B0.m",[96956716,-59783385]); AGR.TOC("matff","L37d2G1-f9r342bB0.m",[-95252590,17365417]); AGR.TOC("matff","L37d2G1-f9r342cB0.m",[11273536,-73143313]); AGR.TOC("maxes","L37d2G1-max1W1",[18648327]); AGR.TOC("maxes","L37d2G1-max2W1",[72713883]); AGR.TOC("cyclic","L37d2G1-cycW1",[127772245]); AGR.TOC("cyc2ccl","L37d2G1cycW1-cclsW1",[-12399487]); # L38 AGR.GRP("lin","L38","L38"); AGR.TOC("perm","L38G1-p73aB0.m",[7367191,-115753490]); AGR.TOC("perm","L38G1-p73bB0.m",[16360602,76307498]); AGR.TOC("perm","L38G1-p56064B0.m",[-66463656,-89599168]); AGR.TOC("perm","L38G1-p75264B0.m",[-4020599,-20343939]); AGR.TOC("perm","L38G1-p98112B0.m",[35089548,56301880]); AGR.TOC("matff","L38G1-f2r27B0.m",[53570555,130909346]); AGR.TOC("matff","L38G1-f2r512B0.m",[107224380,37094558]); AGR.TOC("matff","L38G1-f3r72B0.m",[73721626,53952558]); AGR.TOC("matff","L38G1-f3r511B0.m",[35926319,-15545178]); AGR.TOC("matff","L38G1-f7r72B0.m",[-11825976,-66298402]); AGR.TOC("matff","L38G1-f7r511B0.m",[89673906,76603171]); AGR.TOC("matff","L38G1-f7r512B0.m",[-87765186,104110734]); AGR.TOC("matff","L38G1-f8r3B0.m",[-37144176,93598740]); AGR.TOC("matff","L38G1-f8r8B0.m",[108810880,41630410]); AGR.TOC("matff","L38G1-f8r9aB0.m",[34239993,52256508]); AGR.TOC("matff","L38G1-f8r9bB0.m",[-93705188,52256508]); AGR.TOC("matff","L38G1-f8r24aB0.m",[1402273,110477717]); AGR.TOC("matff","L38G1-f8r24bB0.m",[131799401,-76136676]); AGR.TOC("matff","L38G1-f8r27B0.m",[7847816,-72778508]); AGR.TOC("matff","L38G1-f8r64B0.m",[-39084705,27917098]); AGR.TOC("matff","L38G1-f8r72aB0.m",[-49992500,-101821875]); AGR.TOC("matff","L38G1-f8r72bB0.m",[48760267,-126905198]); AGR.TOC("matff","L38G1-f8r192B0.m",[-35474945,-62548250]); AGR.TOC("matff","L38G1-f27r657B0.m",[-9549407,-43676573]); AGR.TOC("matff","L38G1-f73r71B0.m",[126111976,36033445]); AGR.TOC("matff","L38G1-f73r441B0.m",[-47921267,127739676]); AGR.TOC("matff","L38G1-f73r511aB0.m",[31065741,56807328]); AGR.TOC("matff","L38G1-f73r511bB0.m",[-134145805,-122352988]); AGR.TOC("matff","L38G1-f343r511B0.m",[-100123551,19487879]); AGR.TOC("matint","L38G1-Zr72B0.g",[128827179]); AGR.TOC("matalg","L38G1-Ar73aB0.g",[-94769407]); AGR.TOC("matalg","L38G1-Ar73bB0.g",[50723992]); AGR.TOC("matalg","L38G1-Ar73cB0.g",[118152385]); AGR.TOC("matalg","L38G1-Ar73dB0.g",[18131412]); AGR.TOC("matalg","L38G1-Ar73eB0.g",[126115624]); AGR.TOC("matalg","L38G1-Ar73fB0.g",[179255]); AGR.TOC("maxes","L38G1-max1W1",[105383583]); AGR.TOC("maxes","L38G1-max2W1",[-121773189]); AGR.TOC("maxes","L38G1-max3W1",[-85409155]); AGR.TOC("maxes","L38G1-max4W1",[-111328178]); AGR.TOC("maxes","L38G1-max5W1",[101665901]); AGR.TOC("cyclic","L38G1-cycW1",[-13426753]); AGR.TOC("out","L38G1-a3W1",[-4207554]); AGR.TOC("out","L38G1-a6W1",[-85703423]); AGR.TOC("check","L38G1-check1",[98473383]); # L38d2 AGR.GRP("lin","L38","L38d2"); AGR.TOC("perm","L38d2G1-p146B0.m",[-94955132,-112292624]); AGR.TOC("perm","L38d2G1-p657B0.m",[30435745,-34395041]); AGR.TOC("perm","L38d2G1-p4672B0.m",[66223655,-50929470]); AGR.TOC("perm","L38d2G1-p56064B0.m",[104547485,-129071911]); AGR.TOC("perm","L38d2G1-p75264B0.m",[40691055,-35873055]); AGR.TOC("perm","L38d2G1-p98112B0.m",[-81730120,-26656673]); AGR.TOC("matff","L38d2G1-f2r54B0.m",[98557351,-23750355]); AGR.TOC("matff","L38d2G1-f3r511B0.m",[-98897088,-98980956]); AGR.TOC("matff","L38d2G1-f7r72B0.m",[9067370,-7943961]); AGR.TOC("matff","L38d2G1-f7r512B0.m",[-79802053,102557660]); AGR.TOC("matff","L38d2G1-f8r6B0.m",[-128895817,52766612]); AGR.TOC("matff","L38d2G1-f8r8B0.m",[76285973,-92596710]); AGR.TOC("matff","L38d2G1-f8r18aB0.m",[-90517385,-90105844]); AGR.TOC("matff","L38d2G1-f8r18bB0.m",[39866721,-33916835]); AGR.TOC("matff","L38d2G1-f8r48aB0.m",[-91069851,-114504242]); AGR.TOC("matff","L38d2G1-f8r48bB0.m",[-81874300,60040123]); AGR.TOC("matff","L38d2G1-f8r54B0.m",[-4260607,124828731]); AGR.TOC("matff","L38d2G1-f8r64B0.m",[-122276359,116666796]); AGR.TOC("matff","L38d2G1-f8r144aB0.m",[78652322,-42452376]); AGR.TOC("matff","L38d2G1-f8r144bB0.m",[43008911,-91466156]); AGR.TOC("matff","L38d2G1-f8r384B0.m",[-36200915,86527981]); AGR.TOC("matff","L38d2G1-f9r72B0.m",[109248692,109968207]); AGR.TOC("matff","L38d2G1-f73r71B0.m",[-119484075,-61189104]); AGR.TOC("matff","L38d2G1-f73r441B0.m",[124710465,-85261250]); AGR.TOC("matff","L38d2G1-f73r511aB0.m",[74045684,6998139]); AGR.TOC("matff","L38d2G1-f73r511bB0.m",[-127060099,127704476]); AGR.TOC("maxes","L38d2G1-max1W1",[-104229436]); AGR.TOC("cyclic","L38d2G1-cycW1",[-127124674]); # L38d3 AGR.GRP("lin","L38","L38d3"); AGR.TOC("perm","L38d3G1-p73aB0.m",[60158583,41378416]); AGR.TOC("perm","L38d3G1-p73bB0.m",[64492430,73623080]); AGR.TOC("perm","L38d3G1-p219aB0.m",[-52379589,-131711006]); AGR.TOC("perm","L38d3G1-p219bB0.m",[-33738630,22308821]); AGR.TOC("perm","L38d3G1-p56064B0.m",[38408933,43181430]); AGR.TOC("perm","L38d3G1-p75264B0.m",[-28778762,-122715979]); AGR.TOC("perm","L38d3G1-p98112B0.m",[109114039,4300594]); AGR.TOC("matff","L38d3G1-f2r9B0.m",[-20084484,101484140]); AGR.TOC("matff","L38d3G1-f2r24B0.m",[-55806868,80681738]); AGR.TOC("matff","L38d3G1-f2r27aB0.m",[-51526903,45097681]); AGR.TOC("matff","L38d3G1-f2r27bB0.m",[-15053373,-48460799]); AGR.TOC("matff","L38d3G1-f2r27cB0.m",[37582657,38692959]); AGR.TOC("matff","L38d3G1-f2r72aB0.m",[63869636,-19582455]); AGR.TOC("matff","L38d3G1-f2r72bB0.m",[-3653919,117200050]); AGR.TOC("matff","L38d3G1-f2r81B0.m",[-30896926,-28846440]); AGR.TOC("matff","L38d3G1-f2r192B0.m",[6107990,106607000]); AGR.TOC("matff","L38d3G1-f2r216aB0.m",[-26503866,49500718]); AGR.TOC("matff","L38d3G1-f2r216bB0.m",[47670388,86661620]); AGR.TOC("matff","L38d3G1-f2r576B0.m",[85301581,132157423]); AGR.TOC("matff","L38d3G1-f3r72B0.m",[-58390532,-42192185]); AGR.TOC("matff","L38d3G1-f3r511B0.m",[-33656045,-21320385]); AGR.TOC("matff","L38d3G1-f7r72B0.m",[32023300,38080482]); AGR.TOC("matff","L38d3G1-f7r511B0.m",[126996729,-76266671]); AGR.TOC("matff","L38d3G1-f7r512B0.m",[95227596,-108324848]); AGR.TOC("matff","L38d3G1-f73r71B0.m",[22143677,126112509]); AGR.TOC("matff","L38d3G1-f73r441B0.m",[61959137,-38741676]); AGR.TOC("matff","L38d3G1-f73r511aB0.m",[-72104415,5739869]); AGR.TOC("maxes","L38d3G1-max1W1",[-90168709]); AGR.TOC("maxes","L38d3G1-max2W1",[115911000]); AGR.TOC("maxes","L38d3G1-max3W1",[-40477011]); AGR.TOC("maxes","L38d3G1-max4W1",[-87098269]); AGR.TOC("maxes","L38d3G1-max5W1",[122880442]); AGR.TOC("maxes","L38d3G1-max6W1",[-32492270]); AGR.TOC("cyclic","L38d3G1-cycW1",[132160406]); # L38d6 AGR.GRP("lin","L38","L38d6"); AGR.TOC("perm","L38d6G1-p438B0.m",[36979974,-129349004]); AGR.TOC("perm","L38d6G1-p657B0.m",[-121018827,89574532]); AGR.TOC("perm","L38d6G1-p4672B0.m",[-16396462,-121176168]); AGR.TOC("perm","L38d6G1-p56064B0.m",[-11875828,-89403590]); AGR.TOC("perm","L38d6G1-p75264B0.m",[-55307927,28998015]); AGR.TOC("perm","L38d6G1-p98112B0.m",[-84935205,-27579668]); AGR.TOC("matff","L38d6G1-f2r18B0.m",[-97825654,112002520]); AGR.TOC("matff","L38d6G1-f2r24B0.m",[18149513,-94429235]); AGR.TOC("matff","L38d6G1-f2r54aB0.m",[37299043,43647713]); AGR.TOC("matff","L38d6G1-f2r54bB0.m",[35348036,-30831590]); AGR.TOC("matff","L38d6G1-f2r144aB0.m",[103814136,3817046]); AGR.TOC("matff","L38d6G1-f2r144bB0.m",[69562980,-50032280]); AGR.TOC("matff","L38d6G1-f2r162B0.m",[113830665,-112260504]); AGR.TOC("matff","L38d6G1-f2r192B0.m",[62204946,36556265]); AGR.TOC("matff","L38d6G1-f2r432aB0.m",[73951256,-67106930]); AGR.TOC("matff","L38d6G1-f2r432bB0.m",[115376089,-96173383]); AGR.TOC("matff","L38d6G1-f2r512B0.m",[65776895,66541066]); AGR.TOC("matff","L38d6G1-f2r1152B0.m",[-117654589,10646833]); AGR.TOC("matff","L38d6G1-f3r511B0.m",[-49219385,-46592666]); AGR.TOC("matff","L38d6G1-f7r72B0.m",[-73502741,-62173098]); AGR.TOC("matff","L38d6G1-f7r511B0.m",[73478384,22560211]); AGR.TOC("matff","L38d6G1-f7r512B0.m",[-77529684,10596156]); AGR.TOC("matff","L38d6G1-f9r72B0.m",[-39098903,81571638]); AGR.TOC("matff","L38d6G1-f73r71B0.m",[18945244,-94167432]); AGR.TOC("matff","L38d6G1-f73r441B0.m",[36170806,-132016127]); AGR.TOC("matff","L38d6G1-f73r511aB0.m",[-54022418,-24968416]); AGR.TOC("maxes","L38d6G1-max1W1",[71490578]); AGR.TOC("maxes","L38d6G1-max2W1",[-72072915]); AGR.TOC("maxes","L38d6G1-max3W1",[117563145]); AGR.TOC("maxes","L38d6G1-max4W1",[119177432]); AGR.TOC("maxes","L38d6G1-max5W1",[26193617]); AGR.TOC("maxes","L38d6G1-max6W1",[-85632843]); AGR.TOC("maxes","L38d6G1-max7W1",[-20516977]); AGR.TOC("cyclic","L38d6G1-cycW1",[-57509535]); # L39 AGR.GRP("lin","L39","L39"); AGR.TOC("check","L39G1-check1",[-106025308]); # L43 AGR.GRP("lin","L43","L43"); AGR.TOC("matint","L43G1-Zr26aB0.g",[-105586726]); AGR.TOC("matint","L43G1-Zr26bB0.g",[14322428]); AGR.TOC("matint","L43G1-Zr39B0.g",[-70747561]); AGR.TOC("matint","L43G1-Zr52B0.g",[-117944432]); AGR.TOC("matint","L43G1-Zr65aB0.g",[-43462609]); AGR.TOC("matint","L43G1-Zr65bB0.g",[-79044824]); AGR.TOC("matint","L43G1-Zr90B0.g",[-18794102]); AGR.TOC("matint","L43G1-Zr234aB0.g",[115038350]); AGR.TOC("matint","L43G1-Zr234bB0.g",[98732953]); AGR.TOC("check","L43G1-check1",[-9877145]); # L44 AGR.GRP("lin","L44","L44"); AGR.TOC("perm","L44G1-p85aB0.m",[-78273433,-83054224]); AGR.TOC("perm","L44G1-p85bB0.m",[75764047,62341714]); AGR.TOC("matint","L44G1-Zr84B0.g",[-41981437]); AGR.TOC("matint","L44G1-Zr378B0.g",[9827047]); AGR.TOC("matalg","L44G1-Ar85aB0.g",[65051230]); AGR.TOC("matalg","L44G1-Ar85bB0.g",[-113492586]); AGR.TOC("check","L44G1-check1",[22160128]); # L45 AGR.GRP("lin","L45","L45"); AGR.TOC("perm","L45G1-p156aB0.m",[-52631321,-95640334]); AGR.TOC("perm","L45G1-p156bB0.m",[87402899,82141888]); AGR.TOC("matint","L45G1-Zr155B0.g",[-91636964]); AGR.TOC("check","L45G1-check1",[-37437899]); # L52 AGR.GRP("lin","L52","L52"); AGR.TOC("perm","L52G1-p31aB0.m",[44238159,-87456268]); AGR.TOC("perm","L52G1-p155aB0.m",[20058840,906581]); AGR.TOC("matff","L52G1-f2r5aB0.m",[117659138,34509354]); AGR.TOC("matff","L52G1-f2r5bB0.m",[-7972919,68408550]); AGR.TOC("matff","L52G1-f2r10aB0.m",[3800244,26474245]); AGR.TOC("matff","L52G1-f2r10bB0.m",[-88519981,-80446320]); AGR.TOC("matff","L52G1-f2r24B0.m",[96000672,88562428]); AGR.TOC("matff","L52G1-f3r30B0.m",[54484155,64998207]); AGR.TOC("matff","L52G1-f3r124B0.m",[25519913,59619982]); AGR.TOC("matff","L52G1-f3r155B0.m",[-29387753,6992274]); AGR.TOC("matff","L52G1-f5r30B0.m",[-114958227,27900155]); AGR.TOC("matff","L52G1-f5r123B0.m",[-67781272,-58943096]); AGR.TOC("matff","L52G1-f5r155B0.m",[97509981,46816609]); AGR.TOC("matff","L52G1-f5r280B0.m",[-72093412,35289805]); AGR.TOC("matff","L52G1-f7r30B0.m",[-122678498,-14639435]); AGR.TOC("matff","L52G1-f7r94B0.m",[-8976263,-117502687]); AGR.TOC("matff","L52G1-f7r280B0.m",[-20429654,41591762]); AGR.TOC("matff","L52G1-f31r29B0.m",[121603472,75143693]); AGR.TOC("matff","L52G1-f31r251B0.m",[110733005,-84251252]); AGR.TOC("matint","L52G1-Zr30B0.g",[-5567868]); AGR.TOC("matint","L52G1-Zr124B0.g",[-78209188]); AGR.TOC("matint","L52G1-Zr155B0.g",[95433535]); AGR.TOC("matint","L52G1-Zr217B0.g",[26459850]); AGR.TOC("cyclic","L52G1-cycW1",[-15004991]); AGR.TOC("cyc2ccl","L52G1cycW1-cclsW1",[101753667]); AGR.TOC("check","L52G1-check1",[-5009189]); # L52d2 AGR.GRP("lin","L52","L52d2"); AGR.TOC("perm","L52d2G1-p62B0.m",[-110495248,24684736]); AGR.TOC("matff","L52d2G1-f2r10B0.m",[-126659050,118473857]); AGR.TOC("matff","L52d2G1-f2r20B0.m",[3041509,-90924842]); AGR.TOC("matff","L52d2G1-f2r24B0.m",[-92098935,2494118]); AGR.TOC("matff","L52d2G1-f7r30aB0.m",[-119049059,87841622]); AGR.TOC("matff","L52d2G1-f9r30aB0.m",[-35934743,-122816189]); AGR.TOC("matff","L52d2G1-f25r30aB0.m",[129061717,-92741289]); AGR.TOC("matff","L52d2G1-f31r29aB0.m",[-113552599,2445580]); AGR.TOC("matalg","L52d2G1-Ar30B0.g",[-37178541]); AGR.TOC("maxes","L52d2G1-max1W1",[64292511]); # L53 AGR.GRP("lin","L53","L53"); AGR.TOC("check","L53G1-check1",[50844511]); # L62 AGR.GRP("lin","L62","L62"); AGR.TOC("perm","L62G1-p63aB0.m",[88896673,60670713]); AGR.TOC("matff","L62G1-f2r6aB0.m",[-18349149,132247211]); AGR.TOC("matff","L62G1-f2r6bB0.m",[-127940522,-133387572]); AGR.TOC("matff","L62G1-f2r15aB0.m",[-11382353,16344018]); AGR.TOC("matff","L62G1-f2r15bB0.m",[36753227,-42154093]); AGR.TOC("matff","L62G1-f2r20B0.m",[101082495,77405590]); AGR.TOC("matff","L62G1-f2r34B0.m",[17695666,128732707]); AGR.TOC("matff","L62G1-f2r70aB0.m",[-115887284,96029470]); AGR.TOC("matff","L62G1-f2r84aB0.m",[36055239,21517382]); AGR.TOC("matff","L62G1-f2r90aB0.m",[49552181,33888329]); AGR.TOC("matff","L62G1-f2r154B0.m",[82795165,47912135]); AGR.TOC("matff","L62G1-f2r204aB0.m",[-84134028,-22417203]); AGR.TOC("matff","L62G1-f2r384aB0.m",[-112402423,-120497343]); AGR.TOC("matff","L62G1-f2r400B0.m",[79892765,-66409544]); AGR.TOC("matff","L62G1-f2r720aB0.m",[-40159375,17120413]); AGR.TOC("matff","L62G1-f2r896aB0.m",[-33608139,61740883]); AGR.TOC("matff","L62G1-f2r924aB0.m",[-51063019,-3036]); AGR.TOC("matff","L62G1-f3r61B0.m",[113049745,113592053]); AGR.TOC("matff","L62G1-f3r527aB0.m",[-123708430,116705172]); AGR.TOC("matff","L62G1-f3r651aB0.m",[37700750,12005168]); AGR.TOC("matff","L62G1-f5r62B0.m",[-32477555,-29104907]); AGR.TOC("matff","L62G1-f7r61B0.m",[-49899997,-21319927]); AGR.TOC("matff","L62G1-f31r62B0.m",[-18369723,-76443513]); AGR.TOC("matint","L62G1-Zr62B0.g",[-43664004]); AGR.TOC("matint","L62G1-Zr217B0.g",[-120280005]); AGR.TOC("check","L62G1-check1",[-128056177]); # L62d2 AGR.GRP("lin","L62","L62d2"); AGR.TOC("perm","L62d2G1-p126B0.m",[126561460,38194790]); AGR.TOC("matff","L62d2G1-f2r12B0.m",[132741796,-10840949]); AGR.TOC("matff","L62d2G1-f2r20B0.m",[63412771,120657148]); AGR.TOC("matff","L62d2G1-f2r30B0.m",[129967205,29144201]); AGR.TOC("matff","L62d2G1-f2r34B0.m",[42781856,39923097]); AGR.TOC("matff","L62d2G1-f2r140B0.m",[-54481917,129496710]); AGR.TOC("matff","L62d2G1-f2r154B0.m",[104291628,106847649]); AGR.TOC("matff","L62d2G1-f2r168B0.m",[87080003,30041208]); AGR.TOC("matff","L62d2G1-f2r180B0.m",[68264575,-43768955]); AGR.TOC("matff","L62d2G1-f2r400B0.m",[120328526,56733634]); AGR.TOC("matff","L62d2G1-f2r408B0.m",[72093766,-74055339]); AGR.TOC("matff","L62d2G1-f2r768B0.m",[33911161,67412604]); AGR.TOC("matff","L62d2G1-f3r61B0.m",[-52454721,76464843]); AGR.TOC("matff","L62d2G1-f7r61B0.m",[73505777,58322991]); # L72 AGR.GRP("lin","L72","L72"); AGR.TOC("perm","L72G1-p127aB0.m",[-81383982,38034596]); AGR.TOC("perm","L72G1-p127bB0.m",[7090850,-108392131]); AGR.TOC("matff","L72G1-f2r7aB0.m",[-21330232,42560205]); AGR.TOC("matff","L72G1-f2r7bB0.m",[-97306786,42560205]); AGR.TOC("matff","L72G1-f2r21aB0.m",[-110457920,-16494750]); AGR.TOC("matff","L72G1-f2r21bB0.m",[-68616319,-16494750]); AGR.TOC("matff","L72G1-f2r35aB0.m",[9604646,-31340289]); AGR.TOC("matff","L72G1-f2r35bB0.m",[-1733234,-31340289]); AGR.TOC("matff","L72G1-f2r48B0.m",[128664083,90971411]); AGR.TOC("matff","L72G1-f2r112aB0.m",[-18523005,113454681]); AGR.TOC("matff","L72G1-f2r112bB0.m",[-2928804,34502407]); AGR.TOC("matff","L72G1-f2r133aB0.m",[22712273,91837444]); AGR.TOC("matff","L72G1-f2r133bB0.m",[-47371223,-82210044]); AGR.TOC("matff","L72G1-f2r175aB0.m",[7545761,100567812]); AGR.TOC("matff","L72G1-f2r175bB0.m",[124609280,35504851]); AGR.TOC("matff","L72G1-f2r224aB0.m",[-4018295,36839543]); AGR.TOC("matff","L72G1-f2r224bB0.m",[110699823,34836376]); AGR.TOC("matff","L72G1-f2r392aB0.m",[-91126508,-60396410]); AGR.TOC("matff","L72G1-f2r448aB0.m",[-102435570,-55158398]); AGR.TOC("matff","L72G1-f2r448bB0.m",[-53014318,76675874]); AGR.TOC("matff","L72G1-f2r469aB0.m",[106152181,33246968]); AGR.TOC("matff","L72G1-f2r469bB0.m",[-64785497,116098298]); AGR.TOC("matff","L72G1-f2r707aB0.m",[-121664307,-108999944]); AGR.TOC("matff","L72G1-f2r707bB0.m",[-43898171,-1112464]); AGR.TOC("matff","L72G1-f2r736aB0.m",[-100708947,24441535]); AGR.TOC("matint","L72G1-Zr126B0.g",[-48092626]); AGR.TOC("out","L72G1-aW1",[-14956717]); AGR.TOC("check","L72G1-check1",[-44571660]); # L72d2 AGR.GRP("lin","L72","L72d2"); AGR.TOC("perm","L72d2G2-p254B0.m",[82273786,126367704]); AGR.TOC("matff","L72d2G2-f2r14B0.m",[-14888879,30789301]); AGR.TOC("matff","L72d2G2-f2r42B0.m",[-118494604,35019580]); AGR.TOC("matff","L72d2G2-f2r48B0.m",[71599376,48686250]); AGR.TOC("matff","L72d2G2-f2r70B0.m",[-110150944,90502739]); AGR.TOC("matff","L72d2G2-f2r224B0.m",[40466252,79118537]); AGR.TOC("matff","L72d2G2-f2r266B0.m",[-82984030,41079968]); AGR.TOC("matff","L72d2G2-f2r350B0.m",[25363888,6300827]); AGR.TOC("matff","L72d2G2-f2r392B0.m",[67965109,46704526]); AGR.TOC("matff","L72d2G2-f2r448B0.m",[104723254,-42979047]); AGR.TOC("matff","L72d2G2-f2r736B0.m",[-30023214,-90205025]); AGR.TOC("matff","L72d2G2-f2r896B0.m",[-65268227,80724372]); AGR.TOC("matff","L72d2G2-f2r938B0.m",[26957333,91326988]); AGR.TOC("maxes","L72d2G2-max1W1",[91749811]); # 214U72 AGR.GRP("misc","214U72","214U72"); AGR.TOC("perm","214U72G1-p10836B0.m",[101662355,-20448920]); AGR.TOC("pres","214U72G1-P1",[-44795026]); # 24A8 AGR.GRP("misc","24A8","24A8"); AGR.TOC("perm","24A8G1-p30B0.m",[71903128,37028289]); AGR.TOC("perm","24A8G1-p128B0.m",[103142313,-97409976]); AGR.TOC("matff","24A8G1-f2r11aB0.m",[99167621,26151815]); AGR.TOC("matff","24A8G1-f2r11bB0.m",[-12820998,-93726766]); AGR.TOC("matff","24A8G1-f3r15B0.m",[26869337,-133096812]); AGR.TOC("matff","24A8G1-f5r15B0.m",[-27766627,-32279966]); AGR.TOC("matff","24A8G1-f7r15B0.m",[7718146,-65885648]); AGR.TOC("matint","24A8G1-Zr15B0.g",[79329566]); AGR.TOC("pres","24A8G1-P1",[-4293007]); # 25L52 AGR.GRP("misc","25L52","25L52"); AGR.TOC("perm","25L52G1-p7440aB0.m",[-111345195,36618894]); AGR.TOC("perm","25L52G1-p7440bB0.m",[74024818,130615649]); AGR.TOC("perm","25L52G1-p7440cB0.m",[-31888628,114305088]); AGR.TOC("matff","25L52G1-f2r69aB0.m",[-100207434,-56556235]); AGR.TOC("matff","25L52G1-f3r248B0.m",[39814315,-98948311]); AGR.TOC("matff","25L52G1-f5r248B0.m",[48991917,-40151386]); AGR.TOC("matff","25L52G1-f7r248B0.m",[123338324,-14974429]); AGR.TOC("matff","25L52G1-f31r248B0.m",[112307036,-133345712]); AGR.TOC("matint","25L52G1-Zr248B0.g",[32894565]); AGR.TOC("pres","25L52G1-P1",[108336715]); # 53L35 AGR.GRP("misc","53L35","53L35"); AGR.TOC("perm","53L35G2-p3875aB0.m",[98472640,-119922207]); AGR.TOC("perm","53L35G2-p3875bB0.m",[111738352,7685159]); AGR.TOC("perm","53L35G2-p4650B0.m",[116192969,-34288265]); AGR.TOC("matff","53L35G2-f2r620B0.m",[117097329,-9236051]); AGR.TOC("matff","53L35G2-f5r16aB0.m",[10221874,-86572601]); AGR.TOC("switch","53L35G2-G1W1",[46907032]); AGR.TOC("pres","53L35G2-P1",[101915599]); # 2aM20 AGR.GRP("misc","M20","2aM20"); AGR.TOC("perm","2aM20G1-p12aB0.m",[62651319,-781632]); AGR.TOC("perm","2aM20G1-p12bB0.m",[-88792816,-83421660]); AGR.TOC("perm","2aM20G1-p20aB0.m",[11182399,-103525736]); AGR.TOC("perm","2aM20G1-p20bB0.m",[37746633,-55981603]); AGR.TOC("matint","2aM20G1-Zr6aB0.g",[-21861718]); AGR.TOC("matint","2aM20G1-Zr6bB0.g",[95627447]); AGR.TOC("matint","2aM20G1-Zr10aB0.g",[101100456]); AGR.TOC("matint","2aM20G1-Zr10bB0.g",[73269269]); AGR.TOC("matint","2aM20G1-Zr20B0.g",[49785939]); AGR.TOC("matint","2aM20G1-Zr24B0.g",[87943307]); AGR.TOC("matalg","2aM20G1-Ar12aB0.g",[-21550680]); AGR.TOC("matalg","2aM20G1-Ar12bB0.g",[-8721855]); AGR.TOC("matalg","2aM20G1-Ar12bB1.g",[-74282503]); # 2bM20 AGR.GRP("misc","M20","2bM20"); AGR.TOC("perm","2bM20G1-p120aB0.m",[79963263,51514372]); # 2cM20 AGR.GRP("misc","M20","2cM20"); AGR.TOC("perm","2cM20G1-p24B0.m",[69804398,100937538]); # 4bM20 AGR.GRP("misc","M20","4bM20"); AGR.TOC("matalg","4bM20G1-Ar4aB0.g",[67976289]); AGR.TOC("matalg","4bM20G1-Ar4aB1.g",[-45128870]); AGR.TOC("matalg","4bM20G1-Ar20aB0.g",[116840853]); # M20 AGR.GRP("misc","M20","M20"); AGR.TOC("perm","M20G1-p20aB0.m",[93460434,46892430]); AGR.TOC("perm","M20G1-p20bB0.m",[35523536,22123653]); AGR.TOC("perm","M20G1-p20cB0.m",[-90558672,-105944800]); AGR.TOC("perm","M20G1-p20dB0.m",[55711193,78780772]); # WF4 AGR.GRP("misc","WF4","WF4"); AGR.TOC("switch","WF4G1-G2W1",[-19840031]); AGR.TOC("switch","WF4G2-G1W1",[-41178304]); # B AGR.GRP("spor","B","B"); AGR.TOC("matff","BG1-f2r4370B0.m",[22338679,9574104]); AGR.TOC("matff","BG1-f3r4371B0.m",[-126623526,56117614]); AGR.TOC("matff","BG1-f5r4371B0.m",[24387158,97293413]); AGR.TOC("maxes","BG1-max1W1",[-23309410]); AGR.TOC("maxes","BG1-max2W1",[130363232]); AGR.TOC("maxes","BG1-max3W1",[65186353]); AGR.TOC("maxes","BG1-max4W1",[112679756]); AGR.TOC("maxes","BG1-max5W1",[70078050]); AGR.TOC("maxes","BG1-max6W1",[-10240842]); AGR.TOC("maxes","BG1-max7W1",[-95778125]); AGR.TOC("maxes","BG1-max8W1",[-114561485]); AGR.TOC("maxes","BG1-max9W1",[-64713162]); AGR.TOC("maxes","BG1-max11W1",[-127479522]); AGR.TOC("maxes","BG1-max13W1",[-65568147]); AGR.TOC("maxes","BG1-max15W1",[105462971]); AGR.TOC("maxes","BG1-max16W1",[8946418]); AGR.TOC("maxes","BG1-max21W1",[82234366]); AGR.TOC("maxes","BG1-max30W1",[110825337]); AGR.TOC("cyclic","BG1-cycW1",[-35716530]); AGR.TOC("find","BG1-find1",[-3578940]); AGR.TOC("check","BG1-check1",[-68324730]); # 2Co1 AGR.GRP("spor","Co1","2Co1"); AGR.TOC("perm","2Co1G1-p196560B0.m",[96415798,-69323281]); AGR.TOC("matff","2Co1G1-f3r24B0.m",[-119030063,-130928121]); AGR.TOC("matff","2Co1G1-f5r24B0.m",[-83812180,42833524]); AGR.TOC("matff","2Co1G1-f7r24B0.m",[115296415,56216790]); AGR.TOC("matff","2Co1G1-f11r24B0.m",[19082682,66033957]); AGR.TOC("matff","2Co1G1-f13r24B0.m",[-111666123,108123541]); AGR.TOC("matff","2Co1G1-f23r24B0.m",[88456885,65617027]); # Co1 AGR.GRP("spor","Co1","Co1"); AGR.TOC("perm","Co1G1-p98280B0.m",[24079381,103472469]); AGR.TOC("matff","Co1G1-f2r24B0.m",[16454603,-78294134]); AGR.TOC("matff","Co1G1-f2r274B0.m",[-107262491,33000833]); AGR.TOC("matff","Co1G1-f3r276B0.m",[-57677093,-99619174]); AGR.TOC("matff","Co1G1-f3r298B0.m",[-76486186,64745408]); AGR.TOC("matff","Co1G1-f5r276B0.m",[-105083684,37119347]); AGR.TOC("matff","Co1G1-f5r299B0.m",[53433007,20960457]); AGR.TOC("matff","Co1G1-f7r276B0.m",[-88453631,-96574878]); AGR.TOC("matff","Co1G1-f7r299B0.m",[34613385,36463682]); AGR.TOC("matff","Co1G1-f11r276B0.m",[-44418337,5438777]); AGR.TOC("matff","Co1G1-f11r299B0.m",[36501426,-57769629]); AGR.TOC("matff","Co1G1-f13r276B0.m",[-118172147,-25718111]); AGR.TOC("matff","Co1G1-f13r299B0.m",[44995352,111058082]); AGR.TOC("matff","Co1G1-f23r276B0.m",[-89714154,-2462119]); AGR.TOC("matff","Co1G1-f23r299B0.m",[-42410101,-35172656]); AGR.TOC("maxes","Co1G1-max1W1",[-69842982]); AGR.TOC("maxes","Co1G1-max2W1",[-42577851]); AGR.TOC("maxes","Co1G1-max3W1",[29824571]); AGR.TOC("maxes","Co1G1-max4W1",[60576186]); AGR.TOC("maxes","Co1G1-max5W1",[114366811]); AGR.TOC("maxes","Co1G1-max6W1",[-59185387]); AGR.TOC("cyclic","Co1G1-cycW1",[-31434513]); AGR.TOC("find","Co1G1-find1",[-106430356]); AGR.TOC("check","Co1G1-check1",[34503407]); # Co2 AGR.GRP("spor","Co2","Co2"); AGR.TOC("perm","Co2G1-p2300B0.m",[-68977590,58232971]); AGR.TOC("perm","Co2G1-p4600B0.m",[-96460373,-98916563]); AGR.TOC("matff","Co2G1-f2r22B0.m",[-54309341,-74421533]); AGR.TOC("matff","Co2G1-f2r24B0.m",[73783853,29191204]); AGR.TOC("matff","Co2G1-f2r230B0.m",[-75568974,26428654]); AGR.TOC("matff","Co2G1-f2r748aB0.m",[29333647,96025108]); AGR.TOC("matff","Co2G1-f2r748bB0.m",[-49568317,-76673767]); AGR.TOC("matff","Co2G1-f3r23B0.m",[-119021965,-88874426]); AGR.TOC("matff","Co2G1-f3r253B0.m",[-97217736,48922294]); AGR.TOC("matff","Co2G1-f3r275B0.m",[-83554978,-71118237]); AGR.TOC("matff","Co2G1-f5r23B0.m",[-103186525,3819505]); AGR.TOC("matff","Co2G1-f5r253B0.m",[111518393,-29520466]); AGR.TOC("matff","Co2G1-f5r275B0.m",[8519041,125012307]); AGR.TOC("matff","Co2G1-f7r23B0.m",[-25660649,-107582364]); AGR.TOC("matff","Co2G1-f7r253B0.m",[-13423944,-36779946]); AGR.TOC("matff","Co2G1-f7r275B0.m",[116483568,6268174]); AGR.TOC("matff","Co2G1-f11r23B0.m",[-14178919,-32787383]); AGR.TOC("matff","Co2G1-f11r253B0.m",[-70822799,30995569]); AGR.TOC("matff","Co2G1-f11r275B0.m",[-41272403,-123816874]); AGR.TOC("matff","Co2G1-f23r23B0.m",[-15909867,113781741]); AGR.TOC("matff","Co2G1-f23r253B0.m",[17672728,-82152779]); AGR.TOC("matff","Co2G1-f23r274B0.m",[6001910,70254650]); AGR.TOC("matint","Co2G1-Zr23B0.g",[-130083053]); AGR.TOC("maxes","Co2G1-max1W1",[93481466]); AGR.TOC("maxes","Co2G1-max1W2",[27705387]); AGR.TOC("maxes","Co2G1-max2W1",[-45537986]); AGR.TOC("maxes","Co2G1-max3W1",[18205426]); AGR.TOC("maxes","Co2G1-max4W1",[-36718201]); AGR.TOC("maxes","Co2G1-max5W1",[56120055]); AGR.TOC("maxes","Co2G1-max6W1",[-104533060]); AGR.TOC("maxes","Co2G1-max7W1",[1295619]); AGR.TOC("maxes","Co2G1-max8W1",[123959784]); AGR.TOC("maxes","Co2G1-max9W1",[-34639062]); AGR.TOC("maxes","Co2G1-max10W1",[6064278]); AGR.TOC("maxes","Co2G1-max11W1",[-41695303]); AGR.TOC("cyclic","Co2G1-cycW1",[88608625]); AGR.TOC("cyc2ccl","Co2G1cycW1-cclsW1",[-19670829]); AGR.TOC("find","Co2G1-find1",[-84924881]); AGR.TOC("check","Co2G1-check1",[-66751243]); AGR.TOC("pres","Co2G1-P1",[128912454]); # Co3 AGR.GRP("spor","Co3","Co3"); AGR.TOC("perm","Co3G1-p276B0.m",[14582085,-90782896]); AGR.TOC("perm","Co3G1-p552B0.m",[-2683827,-15482699]); AGR.TOC("perm","Co3G1-p11178B0.m",[61831036,-5901219]); AGR.TOC("perm","Co3G1-p37950B0.m",[107359696,-31625813]); AGR.TOC("perm","Co3G1-p48600B0.m",[67942847,24481707]); AGR.TOC("perm","Co3G1-p128800B0.m",[96644160,-97082857]); AGR.TOC("matff","Co3G1-f2r22B0.m",[-99639671,-25341638]); AGR.TOC("matff","Co3G1-f2r230B0.m",[57395912,27550237]); AGR.TOC("matff","Co3G1-f3r22B0.m",[7767996,-98496962]); AGR.TOC("matff","Co3G1-f3r126aB0.m",[33697170,-7230725]); AGR.TOC("matff","Co3G1-f3r126bB0.m",[89222635,-133975717]); AGR.TOC("matff","Co3G1-f3r231aB0.m",[-85181500,33307552]); AGR.TOC("matff","Co3G1-f3r231bB0.m",[-128218667,53213596]); AGR.TOC("matff","Co3G1-f3r770aB0.m",[3916846,23268085]); AGR.TOC("matff","Co3G1-f3r770bB0.m",[29336149,-5986270]); AGR.TOC("matff","Co3G1-f4r896aB0.m",[121896551,-127775391]); AGR.TOC("matff","Co3G1-f5r23B0.m",[-123447962,35769919]); AGR.TOC("matff","Co3G1-f5r230B0.m",[-123551581,-97913685]); AGR.TOC("matff","Co3G1-f5r253B0.m",[-83370110,-18097492]); AGR.TOC("matff","Co3G1-f5r275B0.m",[-109041971,52099922]); AGR.TOC("matff","Co3G1-f5r896bB0.m",[92235095,-1699054]); AGR.TOC("matff","Co3G1-f7r23B0.m",[-111077282,118209855]); AGR.TOC("matff","Co3G1-f7r253aB0.m",[-70514219,85872691]); AGR.TOC("matff","Co3G1-f7r253bB0.m",[123245056,-95958002]); AGR.TOC("matff","Co3G1-f7r275B0.m",[-112894711,-9483951]); AGR.TOC("matff","Co3G1-f11r23B0.m",[-72428323,-12096837]); AGR.TOC("matff","Co3G1-f11r253aB0.m",[31289485,-69770237]); AGR.TOC("matff","Co3G1-f11r253bB0.m",[-103946322,33707076]); AGR.TOC("matff","Co3G1-f11r275B0.m",[-29543137,102931089]); AGR.TOC("matff","Co3G1-f11r896B0.m",[102751052,-107518067]); AGR.TOC("matff","Co3G1-f23r23B0.m",[4706214,-31841620]); AGR.TOC("matff","Co3G1-f23r253aB0.m",[-96285288,86032464]); AGR.TOC("matff","Co3G1-f23r253bB0.m",[-110052111,111491396]); AGR.TOC("matff","Co3G1-f23r274B0.m",[126519047,-81971889]); AGR.TOC("matff","Co3G1-f23r896bB0.m",[-27578092,109234992]); AGR.TOC("matff","Co3G1-f49r896aB0.m",[18940849,-48431705]); AGR.TOC("matint","Co3G1-Zr23B0.g",[-117550955]); AGR.TOC("maxes","Co3G1-max1W1",[34723362]); AGR.TOC("maxes","Co3G1-max2W1",[56133327]); AGR.TOC("maxes","Co3G1-max3W1",[53815989]); AGR.TOC("maxes","Co3G1-max4W1",[-30650499]); AGR.TOC("maxes","Co3G1-max5W1",[128309913]); AGR.TOC("maxes","Co3G1-max6W1",[-128645195]); AGR.TOC("maxes","Co3G1-max7W1",[-60889528]); AGR.TOC("maxes","Co3G1-max8W1",[77677694]); AGR.TOC("maxes","Co3G1-max9W1",[-118689150]); AGR.TOC("maxes","Co3G1-max10W1",[-75692053]); AGR.TOC("maxes","Co3G1-max11W1",[58775119]); AGR.TOC("maxes","Co3G1-max12W1",[-37663486]); AGR.TOC("maxes","Co3G1-max12W2",[-2138577]); AGR.TOC("maxes","Co3G1-max13W1",[-17315091]); AGR.TOC("maxes","Co3G1-max14W1",[-28030005]); AGR.TOC("maxes","Co3G1-max14W2",[73664607]); AGR.TOC("cyclic","Co3G1-cycW1",[54960889]); AGR.TOC("cyc2ccl","Co3G1cycW1-cclsW1",[-89036463]); AGR.TOC("find","Co3G1-find1",[-51775057]); AGR.TOC("check","Co3G1-check1",[78322190]); # 2F22 AGR.GRP("spor","F22","2F22"); AGR.TOC("perm","2F22G1-p28160B0.m",[-88132950,-90185326]); AGR.TOC("perm","2F22G1-p123552B0.m",[-38471060,6945723]); AGR.TOC("matff","2F22G1-f3r176aB0.m",[-67510771,17530026]); AGR.TOC("matff","2F22G1-f5r352B0.m",[130371429,35452046]); AGR.TOC("matff","2F22G1-f7r352B0.m",[-108835620,89735486]); AGR.TOC("matff","2F22G1-f11r352B0.m",[-105641125,80175210]); AGR.TOC("matff","2F22G1-f13r352B0.m",[-19356946,58859946]); AGR.TOC("pres","2F22G1-P1",[-11319988]); # 2F22d2 AGR.GRP("spor","F22","2F22d2"); AGR.TOC("perm","2F22d2G1-p56320B0.m",[76652605,2337280]); AGR.TOC("matff","2F22d2G1-f3r352B0.m",[130547494,120956446]); # 3F22 AGR.GRP("spor","F22","3F22"); AGR.TOC("perm","3F22G1-p185328B0.m",[16928294,88751270]); AGR.TOC("matff","3F22G1-f4r27aB0.m",[54271746,25048988]); AGR.TOC("matff","3F22G1-f7r351aB0.m",[-107454340,-29445358]); # 3F22d2 AGR.GRP("spor","F22","3F22d2"); AGR.TOC("perm","3F22d2G1-p185328B0.m",[-17081867,-43586215]); AGR.TOC("matff","3F22d2G1-f2r54B0.m",[-44189973,-132306928]); AGR.TOC("matff","3F22d2G1-f7r702B0.m",[91703397,-29428399]); AGR.TOC("pres","3F22d2G1-P1",[65265659]); # F22 AGR.GRP("spor","F22","F22"); AGR.TOC("perm","F22G1-p3510B0.m",[88013596,112000128]); AGR.TOC("perm","F22G1-p14080bB0.m",[-9736640,43017714]); AGR.TOC("perm","F22G1-p61776B0.m",[-69687014,28989532]); AGR.TOC("perm","F22G1-p142155B0.m",[-64459092,-100815434]); AGR.TOC("perm","F22G1-p694980B0.m",[-12910822,6552950]); AGR.TOC("matff","F22G1-f2r78B0.m",[-109087521,86079833]); AGR.TOC("matff","F22G1-f2r350B0.m",[53992322,44682214]); AGR.TOC("matff","F22G1-f2r572B0.m",[-56558559,-83410488]); AGR.TOC("matff","F22G1-f3r77B0.m",[58601014,-70924339]); AGR.TOC("matff","F22G1-f3r351B0.m",[112711273,-97010383]); AGR.TOC("matff","F22G1-f3r924B0.m",[20017076,62757725]); AGR.TOC("matff","F22G1-f5r78B0.m",[51985420,2099863]); AGR.TOC("matff","F22G1-f5r428B0.m",[132955030,41517148]); AGR.TOC("matff","F22G1-f7r78B0.m",[-46420014,73444335]); AGR.TOC("matff","F22G1-f7r429B0.m",[36025548,-23873812]); AGR.TOC("matff","F22G1-f11r78B0.m",[-66379967,-31535389]); AGR.TOC("matff","F22G1-f11r429B0.m",[80858669,-90269841]); AGR.TOC("matff","F22G1-f13r78B0.m",[-59693717,-34590081]); AGR.TOC("matff","F22G1-f13r429B0.m",[-86809294,105048163]); AGR.TOC("matint","F22G1-Zr78B0.g",[3581979]); AGR.TOC("maxes","F22G1-max1W1",[49457212]); AGR.TOC("maxes","F22G1-max2W1",[-133744913]); AGR.TOC("maxes","F22G1-max3W1",[-127391878]); AGR.TOC("maxes","F22G1-max3W2",[-17534642]); AGR.TOC("maxes","F22G1-max4W1",[-97469408]); AGR.TOC("maxes","F22G1-max5W1",[-72007604]); AGR.TOC("maxes","F22G1-max6W1",[-69093545]); AGR.TOC("maxes","F22G1-max7W1",[71881397]); AGR.TOC("maxes","F22G1-max8W1",[40347112]); AGR.TOC("maxes","F22G1-max9W1",[98121755]); AGR.TOC("maxes","F22G1-max10W1",[2329153]); AGR.TOC("maxes","F22G1-max11W1",[-54590247]); AGR.TOC("maxes","F22G1-max12W1",[132206444]); AGR.TOC("maxes","F22G1-max13W2",[-30231311]); AGR.TOC("maxes","F22G1-max13W1",[-32889192]); AGR.TOC("maxes","F22G1-max14W1",[-59341090]); AGR.TOC("cyclic","F22G1-cycW1",[38092830]); AGR.TOC("find","F22G1-find1",[-119041567]); AGR.TOC("check","F22G1-check1",[-84596773]); AGR.TOC("pres","F22G1-P1",[-130721090]); # F22d2 AGR.GRP("spor","F22","F22d2"); AGR.TOC("perm","F22d2G1-p3510B0.m",[122813462,7896709]); AGR.TOC("matff","F22d2G1-f2r78B0.m",[95541956,-2293655]); AGR.TOC("matff","F22d2G1-f2r350B0.m",[47684515,44646509]); AGR.TOC("matff","F22d2G1-f2r572B0.m",[14778819,85403442]); AGR.TOC("matff","F22d2G1-f2r1352B0.m",[20201205,74325336]); AGR.TOC("matff","F22d2G1-f3r77aB0.m",[-76901730,61376488]); AGR.TOC("matff","F22d2G1-f3r351B0.m",[-26721206,113304381]); AGR.TOC("matff","F22d2G1-f3r924B0.m",[-20939834,-50311868]); AGR.TOC("matff","F22d2G1-f5r78aB0.m",[128701136,-12166168]); AGR.TOC("matff","F22d2G1-f5r428aB0.m",[-39131120,27681453]); AGR.TOC("matff","F22d2G1-f7r78aB0.m",[-103001035,83371722]); AGR.TOC("matff","F22d2G1-f7r429aB0.m",[115701320,-42249272]); AGR.TOC("matff","F22d2G1-f11r78aB0.m",[-89871349,83293156]); AGR.TOC("matff","F22d2G1-f11r429aB0.m",[49800099,6814782]); AGR.TOC("matff","F22d2G1-f13r78aB0.m",[32289635,7349185]); AGR.TOC("matff","F22d2G1-f13r429aB0.m",[127523643,-99866267]); AGR.TOC("matint","F22d2G1-Zr78B0.g",[-5867682]); AGR.TOC("maxes","F22d2G1-max1W1",[47591772]); AGR.TOC("maxes","F22d2G1-max2W1",[-75205594]); AGR.TOC("maxes","F22d2G1-max2W2",[-25527906]); AGR.TOC("maxes","F22d2G1-max13W1",[63356964]); AGR.TOC("find","F22d2G1-find1",[-29977100]); AGR.TOC("check","F22d2G1-check1",[-21731301]); AGR.TOC("pres","F22d2G1-P1",[56631505]); # F23 AGR.GRP("spor","F23","F23"); AGR.TOC("perm","F23G1-p31671B0.m",[-109867621,-116920938]); AGR.TOC("perm","F23G1-p137632B0.m",[-58299166,-108210543]); AGR.TOC("perm","F23G1-p275264B0.m",[22664129,111673749]); AGR.TOC("matff","F23G1-f2r782B0.m",[-45195278,-43838607]); AGR.TOC("matff","F23G1-f2r1494B0.m",[-110910446,97103140]); AGR.TOC("matff","F23G1-f3r253B0.m",[-29528849,99728135]); AGR.TOC("matff","F23G1-f3r528B0.m",[-66608829,21448579]); AGR.TOC("matff","F23G1-f5r782B0.m",[51442495,-35280106]); AGR.TOC("matff","F23G1-f7r782B0.m",[94890358,97085917]); AGR.TOC("matff","F23G1-f11r782B0.m",[113804675,14847872]); AGR.TOC("matff","F23G1-f13r782B0.m",[-105224962,-31673757]); AGR.TOC("matff","F23G1-f17r782B0.m",[-114471874,84914826]); AGR.TOC("matff","F23G1-f23r782B0.m",[-134202733,-5142396]); AGR.TOC("maxes","F23G1-max1W1",[-33074811]); AGR.TOC("maxes","F23G1-max1W2",[63247261]); AGR.TOC("maxes","F23G1-max2W1",[53548333]); AGR.TOC("maxes","F23G1-max3W1",[92061685]); AGR.TOC("maxes","F23G1-max4W1",[37397470]); AGR.TOC("maxes","F23G1-max5W1",[-60568749]); AGR.TOC("maxes","F23G1-max6W1",[64555088]); AGR.TOC("maxes","F23G1-max9W1",[-54739683]); AGR.TOC("maxes","F23G1-max10W1",[100950719]); AGR.TOC("maxes","F23G1-max13W1",[21543454]); AGR.TOC("maxes","F23G1-max14W1",[-6392675]); AGR.TOC("cyclic","F23G1-cycW1",[-11430007]); AGR.TOC("find","F23G1-find1",[49638304]); AGR.TOC("check","F23G1-check1",[-28390111]); # 3F24 AGR.GRP("spor","F24","3F24"); AGR.TOC("perm","3F24G1-p920808B0.m",[98989796,-62509770]); AGR.TOC("matff","3F24G1-f4r783B0.m",[124251776,-55444228]); # 3F24d2 AGR.GRP("spor","F24","3F24d2"); AGR.TOC("perm","3F24d2G1-p920808B0.m",[-125621829,-90081066]); AGR.TOC("matff","3F24d2G1-f2r1566B0.m",[-51370379,-95716454]); # F24 AGR.GRP("spor","F24","F24"); AGR.TOC("perm","F24G1-p306936B0.m",[54361344,-1810691]); AGR.TOC("matff","F24G1-f2r3774B0.m",[66627348,120763364]); AGR.TOC("matff","F24G1-f3r781B0.m",[-48772183,52620792]); AGR.TOC("cyclic","F24G1-cycW1",[117407279]); AGR.TOC("find","F24G1-find1",[36442676]); AGR.TOC("check","F24G1-check1",[-118382915]); # F24d2 AGR.GRP("spor","F24","F24d2"); AGR.TOC("perm","F24d2G1-p306936B0.m",[72541106,80284157]); AGR.TOC("matff","F24d2G1-f3r781B0.m",[121745779,-36600171]); AGR.TOC("maxes","F24d2G1-max1W1",[105412985]); AGR.TOC("maxes","F24d2G1-max2W1",[-79295356]); AGR.TOC("maxes","F24d2G1-max3W1",[93793339]); AGR.TOC("maxes","F24d2G1-max4W1",[37390223]); AGR.TOC("maxes","F24d2G1-max5W1",[-59017189]); AGR.TOC("maxes","F24d2G1-max6W1",[-29653284]); AGR.TOC("maxes","F24d2G1-max7W1",[54933709]); AGR.TOC("maxes","F24d2G1-max8W1",[-76471747]); AGR.TOC("maxes","F24d2G1-max9W1",[-115734141]); AGR.TOC("maxes","F24d2G1-max10W1",[-107781352]); AGR.TOC("maxes","F24d2G1-max11W1",[-84235325]); AGR.TOC("maxes","F24d2G1-max12W1",[-112949748]); AGR.TOC("maxes","F24d2G1-max13W1",[112375260]); AGR.TOC("maxes","F24d2G1-max14W1",[107469716]); AGR.TOC("maxes","F24d2G1-max15W1",[-48530803]); AGR.TOC("maxes","F24d2G1-max16W1",[-121777928]); AGR.TOC("maxes","F24d2G1-max17W1",[-111665551]); AGR.TOC("maxes","F24d2G1-max18W1",[91832835]); AGR.TOC("maxes","F24d2G1-max19W1",[-22571481]); AGR.TOC("maxes","F24d2G1-max20W1",[2941626]); AGR.TOC("maxes","F24d2G1-max21W1",[93208374]); AGR.TOC("find","F24d2G1-find1",[61593130]); AGR.TOC("check","F24d2G1-check1",[118274771]); # HN AGR.GRP("spor","HN","HN"); AGR.TOC("perm","HNG1-p1140000B0.m",[32853933,21005903]); AGR.TOC("matff","HNG1-f2r760B0.m",[89062086,-16714142]); AGR.TOC("matff","HNG1-f3r760B0.m",[-61491120,-129545822]); AGR.TOC("matff","HNG1-f4r132aB0.m",[5151139,78849289]); AGR.TOC("matff","HNG1-f4r132bB0.m",[41933222,-63692317]); AGR.TOC("matff","HNG1-f4r133B0.m",[13138870,13634501]); AGR.TOC("matff","HNG1-f4r2650aB0.m",[64027517,-54387001]); AGR.TOC("matff","HNG1-f5r133B0.m",[-115607691,-38092195]); AGR.TOC("matff","HNG1-f5r626B0.m",[70397839,113456339]); AGR.TOC("matff","HNG1-f5r627B0.m",[-115025766,118011978]); AGR.TOC("matff","HNG1-f7r760B0.m",[-123533355,79509308]); AGR.TOC("matff","HNG1-f9r133aB0.m",[106063587,-109722313]); AGR.TOC("matff","HNG1-f9r133bB0.m",[-86995469,110203185]); AGR.TOC("matff","HNG1-f11r133aB0.m",[84956559,-14832941]); AGR.TOC("matff","HNG1-f11r133bB0.m",[84956559,-119008248]); AGR.TOC("matff","HNG1-f11r760B0.m",[-112060195,-121414820]); AGR.TOC("matff","HNG1-f19r133aB0.m",[-25046747,-122833758]); AGR.TOC("matff","HNG1-f19r133bB0.m",[-25046747,-8020480]); AGR.TOC("matff","HNG1-f19r760B0.m",[30072934,-6664215]); AGR.TOC("matff","HNG1-f49r133aB0.m",[-80497250,40264194]); AGR.TOC("matff","HNG1-f49r133bB0.m",[-80497250,-130083872]); AGR.TOC("maxes","HNG1-max1W1",[-79453819]); AGR.TOC("maxes","HNG1-max2W1",[-48664089]); AGR.TOC("maxes","HNG1-max3W1",[-108500642]); AGR.TOC("maxes","HNG1-max4W1",[33191023]); AGR.TOC("maxes","HNG1-max5W1",[-124464431]); AGR.TOC("maxes","HNG1-max6W1",[125139500]); AGR.TOC("maxes","HNG1-max7W1",[34088059]); AGR.TOC("maxes","HNG1-max10W1",[86039496]); AGR.TOC("maxes","HNG1-max11W1",[-130398866]); AGR.TOC("maxes","HNG1-max12W1",[22691996]); AGR.TOC("maxes","HNG1-max14W1",[106083458]); AGR.TOC("cyclic","HNG1-cycW1",[41419292]); AGR.TOC("cyc2ccl","HNG1cycW1-cclsW1",[-75748754]); AGR.TOC("out","HNG1-a2W1",[127399345]); AGR.TOC("find","HNG1-find1",[114642738]); AGR.TOC("check","HNG1-check1",[107996829]); # HNd2 AGR.GRP("spor","HN","HNd2"); AGR.TOC("matff","HNd2G1-f2r264B0.m",[-86337838,-74967666]); AGR.TOC("matff","HNd2G1-f5r133B0.m",[107967366,114052582]); AGR.TOC("maxes","HNd2G1-max1W1",[-59380275]); AGR.TOC("maxes","HNd2G1-max2W1",[72220095]); AGR.TOC("maxes","HNd2G1-max3W1",[19789101]); AGR.TOC("maxes","HNd2G1-max4W1",[-120415217]); AGR.TOC("maxes","HNd2G1-max5W1",[16567717]); AGR.TOC("maxes","HNd2G1-max6W1",[27118928]); AGR.TOC("maxes","HNd2G1-max7W1",[-1853532]); AGR.TOC("maxes","HNd2G1-max8W1",[-113484495]); AGR.TOC("maxes","HNd2G1-max9W1",[-36214413]); AGR.TOC("maxes","HNd2G1-max10W1",[-126901570]); AGR.TOC("maxes","HNd2G1-max11W1",[-84047681]); AGR.TOC("maxes","HNd2G1-max12W1",[-109478497]); AGR.TOC("maxes","HNd2G1-max13W1",[-131778850]); AGR.TOC("find","HNd2G1-find1",[12123121]); AGR.TOC("check","HNd2G1-check1",[-133434122]); # 2HS AGR.GRP("spor","HS","2HS"); AGR.TOC("perm","2HSG1-p704B0.m",[-109395951,117522876]); AGR.TOC("perm","2HSG1-p4400B0.m",[14211745,-21341170]); AGR.TOC("perm","2HSG1-p11200aB0.m",[-25662951,-72671730]); AGR.TOC("matff","2HSG1-f3r56B0.m",[29617857,-84040410]); AGR.TOC("matff","2HSG1-f3r440B0.m",[8458115,7091735]); AGR.TOC("matff","2HSG1-f5r28bB0.m",[49997548,-8152916]); AGR.TOC("matff","2HSG1-f5r120bB0.m",[-102064132,-17454221]); AGR.TOC("matff","2HSG1-f5r440bB0.m",[21530211,33485463]); AGR.TOC("matff","2HSG1-f7r56B0.m",[-16827217,-94324586]); AGR.TOC("matff","2HSG1-f9r176bB0.m",[53472414,7717663]); AGR.TOC("matff","2HSG1-f11r56B0.m",[-55817406,-9356149]); # 2HSd2 AGR.GRP("spor","HS","2HSd2"); AGR.TOC("perm","2HSd2G1-p1408B0.m",[55485644,-85765607]); AGR.TOC("matff","2HSd2G1-f3r112B0.m",[66532271,-45075769]); AGR.TOC("matff","2HSd2G1-f5r56B0.m",[-37364297,11008849]); AGR.TOC("matff","2HSd2G1-f9r56B0.m",[6322774,-130822293]); # HS AGR.GRP("spor","HS","HS"); AGR.TOC("perm","HSG1-p100B0.m",[-124787112,8830718]); AGR.TOC("perm","HSG1-p176bB0.m",[-42157961,-64664893]); AGR.TOC("perm","HSG1-p1100aB0.m",[62778996,-3021590]); AGR.TOC("perm","HSG1-p1100bB0.m",[-58500379,-71383282]); AGR.TOC("perm","HSG1-p3850B0.m",[46018718,-78720855]); AGR.TOC("perm","HSG1-p4125B0.m",[5512571,-33882361]); AGR.TOC("perm","HSG1-p5600aB0.m",[120562511,41623182]); AGR.TOC("perm","HSG1-p15400B0.m",[99971444,-24579578]); AGR.TOC("matff","HSG1-f2r20B0.m",[-110839928,73283444]); AGR.TOC("matff","HSG1-f2r56B0.m",[3192799,69839091]); AGR.TOC("matff","HSG1-f2r132B0.m",[115944678,64036296]); AGR.TOC("matff","HSG1-f2r518B0.m",[-97262203,110789378]); AGR.TOC("matff","HSG1-f2r1000B0.m",[66717808,-9856755]); AGR.TOC("matff","HSG1-f3r22B0.m",[93991114,-14968607]); AGR.TOC("matff","HSG1-f3r49aB0.m",[70877444,68387699]); AGR.TOC("matff","HSG1-f3r49bB0.m",[22097890,-38965013]); AGR.TOC("matff","HSG1-f3r77B0.m",[76092415,-11040903]); AGR.TOC("matff","HSG1-f3r154aB0.m",[-14900053,-100838819]); AGR.TOC("matff","HSG1-f3r154bB0.m",[68524548,101006348]); AGR.TOC("matff","HSG1-f3r154cB0.m",[-51597134,73553996]); AGR.TOC("matff","HSG1-f3r231B0.m",[-95965145,-14427037]); AGR.TOC("matff","HSG1-f3r321B0.m",[-110835348,10032473]); AGR.TOC("matff","HSG1-f3r693B0.m",[40448458,-133341140]); AGR.TOC("matff","HSG1-f3r748B0.m",[-96691003,-131491770]); AGR.TOC("matff","HSG1-f3r770aB0.m",[47339280,-117561384]); AGR.TOC("matff","HSG1-f3r825B0.m",[68382465,104127473]); AGR.TOC("matff","HSG1-f4r896aB0.m",[-30617770,103602086]); AGR.TOC("matff","HSG1-f4r896bB0.m",[-95673772,4228568]); AGR.TOC("matff","HSG1-f5r21B0.m",[-18043664,7995456]); AGR.TOC("matff","HSG1-f5r55B0.m",[-32048849,-47336091]); AGR.TOC("matff","HSG1-f5r98B0.m",[6191487,99758067]); AGR.TOC("matff","HSG1-f5r133aB0.m",[18544119,-110577111]); AGR.TOC("matff","HSG1-f5r133bB0.m",[-124542697,97466202]); AGR.TOC("matff","HSG1-f5r175B0.m",[32636695,9681624]); AGR.TOC("matff","HSG1-f5r210B0.m",[-3911328,97387527]); AGR.TOC("matff","HSG1-f5r280aB0.m",[131594969,76134971]); AGR.TOC("matff","HSG1-f5r518B0.m",[66778477,79548322]); AGR.TOC("matff","HSG1-f5r650B0.m",[-89578289,50539996]); AGR.TOC("matff","HSG1-f7r22B0.m",[-53162324,69175635]); AGR.TOC("matff","HSG1-f7r77B0.m",[99238916,-36447346]); AGR.TOC("matff","HSG1-f7r154aB0.m",[-7838882,101761107]); AGR.TOC("matff","HSG1-f7r154bB0.m",[18760360,-66895717]); AGR.TOC("matff","HSG1-f7r154cB0.m",[89744760,-126726394]); AGR.TOC("matff","HSG1-f7r175B0.m",[-127648497,-10424629]); AGR.TOC("matff","HSG1-f7r231B0.m",[98380256,-72328589]); AGR.TOC("matff","HSG1-f7r605B0.m",[78865187,56877599]); AGR.TOC("matff","HSG1-f7r693B0.m",[-74626881,-14425913]); AGR.TOC("matff","HSG1-f7r770aB0.m",[-100706960,50439108]); AGR.TOC("matff","HSG1-f7r770bB0.m",[112584500,111883459]); AGR.TOC("matff","HSG1-f7r770cB0.m",[54727166,107839077]); AGR.TOC("matff","HSG1-f7r803B0.m",[48999068,62525531]); AGR.TOC("matff","HSG1-f11r22B0.m",[-103902786,131567279]); AGR.TOC("matff","HSG1-f11r77B0.m",[105194963,34738593]); AGR.TOC("matff","HSG1-f11r154aB0.m",[-94042976,1152264]); AGR.TOC("matff","HSG1-f11r154bB0.m",[-63804252,-112522132]); AGR.TOC("matff","HSG1-f11r154cB0.m",[-52658718,117648488]); AGR.TOC("matff","HSG1-f11r174B0.m",[-79918725,-36530971]); AGR.TOC("matff","HSG1-f11r231B0.m",[74378860,133955725]); AGR.TOC("matff","HSG1-f11r693B0.m",[-53293843,-114165050]); AGR.TOC("matff","HSG1-f11r770aB0.m",[-120037254,-54798718]); AGR.TOC("matff","HSG1-f11r825B0.m",[-100355329,70421451]); AGR.TOC("matff","HSG1-f11r854B0.m",[18463814,49643143]); AGR.TOC("matff","HSG1-f11r896B0.m",[-25794072,-94267541]); AGR.TOC("matff","HSG1-f49r896aB0.m",[-14346934,-87503340]); AGR.TOC("matff","HSG1-f49r896bB0.m",[58422987,37738098]); AGR.TOC("matff","HSG1-f121r770bB0.m",[97874222,96924629]); AGR.TOC("matff","HSG1-f121r770cB0.m",[-117482532,46080873]); AGR.TOC("matint","HSG1-Zr22B0.g",[2134773]); AGR.TOC("matint","HSG1-Zr77B0.g",[-33461269]); AGR.TOC("matint","HSG1-Zr154aB0.g",[128622008]); AGR.TOC("matint","HSG1-Zr154bB0.g",[100889216]); AGR.TOC("matint","HSG1-Zr154cB0.g",[52141046]); AGR.TOC("matint","HSG1-Zr175B0.g",[-51974944]); AGR.TOC("matint","HSG1-Zr231B0.g",[-799773]); AGR.TOC("maxes","HSG1-max1W1",[-109670816]); AGR.TOC("maxes","HSG1-max2W1",[77618700]); AGR.TOC("maxes","HSG1-max3W1",[-131481863]); AGR.TOC("maxes","HSG1-max4W1",[90334987]); AGR.TOC("maxes","HSG1-max5W1",[125851852]); AGR.TOC("maxes","HSG1-max6W1",[24989805]); AGR.TOC("maxes","HSG1-max7W1",[60122846]); AGR.TOC("maxes","HSG1-max8W1",[-80926385]); AGR.TOC("maxes","HSG1-max9W1",[23183641]); AGR.TOC("maxes","HSG1-max10W1",[-105738670]); AGR.TOC("maxes","HSG1-max11W1",[-60962218]); AGR.TOC("maxes","HSG1-max12W1",[129901534]); AGR.TOC("cyclic","HSG1-cycW1",[27005916]); AGR.TOC("cyc2ccl","HSG1cycW1-cclsW1",[-101829552]); AGR.TOC("find","HSG1-find1",[-117818194]); AGR.TOC("check","HSG1-check1",[18230266]); AGR.TOC("pres","HSG1-P1",[89705474]); # HSd2 AGR.GRP("spor","HS","HSd2"); AGR.TOC("perm","HSd2G1-p100B0.m",[-70324210,128569599]); AGR.TOC("perm","HSd2G1-p352B0.m",[20999653,-109343943]); AGR.TOC("perm","HSd2G1-p1100bB0.m",[-36595103,-2164206]); AGR.TOC("perm","HSd2G1-p15400B0.m",[-14950196,-23862648]); AGR.TOC("matff","HSd2G1-f2r20B0.m",[50037167,62072647]); AGR.TOC("matff","HSd2G1-f2r22B0.m",[-9022325,-84815465]); AGR.TOC("matff","HSd2G1-f2r56B0.m",[-21312538,119898817]); AGR.TOC("matff","HSd2G1-f2r132B0.m",[-79665966,38128389]); AGR.TOC("matff","HSd2G1-f2r518B0.m",[27012098,-78258800]); AGR.TOC("matff","HSd2G1-f2r1000B0.m",[55224993,-20500465]); AGR.TOC("matff","HSd2G1-f2r1408B0.m",[20027516,71784186]); AGR.TOC("matff","HSd2G1-f2r1792B0.m",[47687018,-54149205]); AGR.TOC("matff","HSd2G1-f3r22aB0.m",[98820765,4908381]); AGR.TOC("matff","HSd2G1-f3r77aB0.m",[-25698705,17484980]); AGR.TOC("matff","HSd2G1-f3r98aB0.m",[111392664,-61530638]); AGR.TOC("matff","HSd2G1-f3r154aB0.m",[58277522,47474792]); AGR.TOC("matff","HSd2G1-f3r231aB0.m",[99163037,86674182]); AGR.TOC("matff","HSd2G1-f3r308aB0.m",[-117803754,7897029]); AGR.TOC("matff","HSd2G1-f3r321aB0.m",[-37439220,-119136134]); AGR.TOC("matff","HSd2G1-f3r693aB0.m",[-125727427,42412744]); AGR.TOC("matff","HSd2G1-f3r748aB0.m",[-66305284,-54277114]); AGR.TOC("matff","HSd2G1-f3r825aB0.m",[-26332833,123665127]); AGR.TOC("matff","HSd2G1-f5r21aB0.m",[134122114,-39570726]); AGR.TOC("matff","HSd2G1-f5r55aB0.m",[126444372,-71029769]); AGR.TOC("matff","HSd2G1-f5r98aB0.m",[-19242410,46975984]); AGR.TOC("matff","HSd2G1-f5r175aB0.m",[70650798,-55617375]); AGR.TOC("matff","HSd2G1-f5r210aB0.m",[5604664,-82291763]); AGR.TOC("matff","HSd2G1-f5r266aB0.m",[-121107292,-6080807]); AGR.TOC("matff","HSd2G1-f5r518aB0.m",[-18803550,83470924]); AGR.TOC("matff","HSd2G1-f5r560aB0.m",[-58629522,36792176]); AGR.TOC("matff","HSd2G1-f5r650aB0.m",[-68196296,90913941]); AGR.TOC("matff","HSd2G1-f7r22aB0.m",[48179117,73635985]); AGR.TOC("matff","HSd2G1-f7r77aB0.m",[47363847,72878837]); AGR.TOC("matff","HSd2G1-f7r154aB0.m",[-66777681,-132469520]); AGR.TOC("matff","HSd2G1-f7r175aB0.m",[104627848,-59932879]); AGR.TOC("matff","HSd2G1-f7r231aB0.m",[18774316,91260845]); AGR.TOC("matff","HSd2G1-f7r308aB0.m",[96893028,-32303931]); AGR.TOC("matff","HSd2G1-f7r605aB0.m",[26180019,71343374]); AGR.TOC("matff","HSd2G1-f7r693B0.m",[-27097572,-17105054]); AGR.TOC("matff","HSd2G1-f7r693aB0.m",[-89214575,-97072913]); AGR.TOC("matff","HSd2G1-f7r770aB0.m",[96355805,-74428817]); AGR.TOC("matff","HSd2G1-f7r803B0.m",[-46471106,18374938]); AGR.TOC("matff","HSd2G1-f7r803aB0.m",[-39679207,-81368234]); AGR.TOC("matff","HSd2G1-f11r22aB0.m",[-8259291,43508426]); AGR.TOC("matff","HSd2G1-f11r77aB0.m",[-114093728,-53560645]); AGR.TOC("matff","HSd2G1-f11r154aB0.m",[-42206112,-121821089]); AGR.TOC("matff","HSd2G1-f11r174aB0.m",[63123284,121047128]); AGR.TOC("matff","HSd2G1-f11r231aB0.m",[33514654,103434208]); AGR.TOC("matff","HSd2G1-f11r308aB0.m",[-62014948,80454524]); AGR.TOC("matff","HSd2G1-f11r693aB0.m",[22869622,-81673636]); AGR.TOC("matff","HSd2G1-f11r770aB0.m",[16456349,8338033]); AGR.TOC("matff","HSd2G1-f11r825aB0.m",[-54693786,-2601188]); AGR.TOC("matff","HSd2G1-f11r854aB0.m",[89627605,-71298439]); AGR.TOC("matff","HSd2G1-f11r896aB0.m",[-30365885,-116863938]); AGR.TOC("maxes","HSd2G1-max1W1",[53167711]); AGR.TOC("maxes","HSd2G1-max2W1",[-43880811]); AGR.TOC("maxes","HSd2G1-max2W2",[-79295356]); AGR.TOC("maxes","HSd2G1-max3W1",[-70581250]); AGR.TOC("maxes","HSd2G1-max4W1",[82720027]); AGR.TOC("maxes","HSd2G1-max4W2",[52422575]); AGR.TOC("maxes","HSd2G1-max5W1",[-33881454]); AGR.TOC("maxes","HSd2G1-max6W1",[-10734996]); AGR.TOC("maxes","HSd2G1-max6W2",[87024687]); AGR.TOC("maxes","HSd2G1-max7W1",[-124919375]); AGR.TOC("maxes","HSd2G1-max8W1",[103553007]); AGR.TOC("maxes","HSd2G1-max9W1",[-89255059]); AGR.TOC("maxes","HSd2G1-max10W1",[98808984]); AGR.TOC("find","HSd2G1-find1",[89130556]); AGR.TOC("check","HSd2G1-check1",[-127212098]); AGR.TOC("pres","HSd2G1-P1",[66598625]); # He AGR.GRP("spor","He","He"); AGR.TOC("perm","HeG1-p2058B0.m",[41643635,18077559]); AGR.TOC("perm","HeG1-p8330B0.m",[-105415688,105842469]); AGR.TOC("perm","HeG1-p29155B0.m",[-118796776,34096499]); AGR.TOC("perm","HeG1-p244800B0.m",[33926117,19883176]); AGR.TOC("matff","HeG1-f2r51B0.m",[54261715,93379919]); AGR.TOC("matff","HeG1-f2r101B0.m",[128079215,-86715223]); AGR.TOC("matff","HeG1-f2r246B0.m",[120635934,-89233606]); AGR.TOC("matff","HeG1-f2r680B0.m",[-22851184,-61142644]); AGR.TOC("matff","HeG1-f3r679B0.m",[-78652892,27940980]); AGR.TOC("matff","HeG1-f5r104B0.m",[-5533390,-130515768]); AGR.TOC("matff","HeG1-f5r680B0.m",[105609709,34895690]); AGR.TOC("matff","HeG1-f7r50B0.m",[44448945,47371851]); AGR.TOC("matff","HeG1-f7r153B0.m",[112176717,103563499]); AGR.TOC("matff","HeG1-f7r426B0.m",[-51572347,-60147689]); AGR.TOC("matff","HeG1-f7r798B0.m",[-65040027,-82579779]); AGR.TOC("matff","HeG1-f9r51B0.m",[-87086101,3088062]); AGR.TOC("matff","HeG1-f9r153aB0.m",[-116818601,115738898]); AGR.TOC("matff","HeG1-f9r153bB0.m",[77633223,-70400496]); AGR.TOC("matff","HeG1-f17r102B0.m",[3315927,-127149239]); AGR.TOC("matff","HeG1-f17r306B0.m",[128990050,-87629342]); AGR.TOC("matff","HeG1-f17r680B0.m",[51071750,-66766558]); AGR.TOC("matff","HeG1-f25r51B0.m",[-17775458,-18096052]); AGR.TOC("matff","HeG1-f25r153aB0.m",[-97341369,46064468]); AGR.TOC("matff","HeG1-f25r153bB0.m",[123601479,-2193912]); AGR.TOC("matff","HeG1-f25r925aB0.m",[-104334496,73025631]); AGR.TOC("matff","HeG1-f25r925bB0.m",[-57226886,45741919]); AGR.TOC("matint","HeG1-Zr102B0.g",[-111893033]); AGR.TOC("maxes","HeG1-max1W1",[-43737733]); AGR.TOC("maxes","HeG1-max2W1",[108117526]); AGR.TOC("maxes","HeG1-max3W1",[-49949164]); AGR.TOC("maxes","HeG1-max4W1",[-59289512]); AGR.TOC("maxes","HeG1-max5W1",[-114225225]); AGR.TOC("maxes","HeG1-max6W1",[78467075]); AGR.TOC("maxes","HeG1-max7W1",[75076758]); AGR.TOC("maxes","HeG1-max8W1",[14747238]); AGR.TOC("maxes","HeG1-max9W1",[-90393776]); AGR.TOC("maxes","HeG1-max10W1",[14033334]); AGR.TOC("maxes","HeG1-max11W1",[4509856]); AGR.TOC("cyclic","HeG1-cycW1",[104054059]); AGR.TOC("out","HeG1-a2W1",[-124692776]); AGR.TOC("find","HeG1-find1",[69669390]); AGR.TOC("check","HeG1-check1",[9512126]); AGR.TOC("pres","HeG1-P1",[-56250110]); # Hed2 AGR.GRP("spor","He","Hed2"); AGR.TOC("perm","Hed2G1-p2058B0.m",[39787965,55630042]); AGR.TOC("perm","Hed2G1-p8330B0.m",[-12875628,-124069945]); AGR.TOC("matff","Hed2G1-f2r102B0.m",[128491948,-90059244]); AGR.TOC("matff","Hed2G1-f2r202B0.m",[96817739,120850527]); AGR.TOC("matff","Hed2G1-f2r492B0.m",[-4221368,-75050619]); AGR.TOC("matff","Hed2G1-f2r680B0.m",[33151751,40011930]); AGR.TOC("matff","Hed2G1-f3r102B0.m",[5013999,-47374312]); AGR.TOC("matff","Hed2G1-f3r306aB0.m",[114920766,99957318]); AGR.TOC("matff","Hed2G1-f3r679B0.m",[104816038,-29811480]); AGR.TOC("matff","Hed2G1-f5r102B0.m",[-84552456,-42830816]); AGR.TOC("matff","Hed2G1-f5r104aB0.m",[125317819,-23224809]); AGR.TOC("matff","Hed2G1-f5r306aB0.m",[-59677416,-115950200]); AGR.TOC("matff","Hed2G1-f5r680B0.m",[-27232831,-56698730]); AGR.TOC("matff","Hed2G1-f7r50B0.m",[119854620,47601686]); AGR.TOC("matff","Hed2G1-f7r153B0.m",[3483208,-66947991]); AGR.TOC("matff","Hed2G1-f7r426B0.m",[-112614285,-41923149]); AGR.TOC("matff","Hed2G1-f17r102B0.m",[-98678332,-10960323]); AGR.TOC("matff","Hed2G1-f17r306aB0.m",[98194188,68830057]); AGR.TOC("matff","Hed2G1-f17r680B0.m",[-80846352,5233036]); AGR.TOC("maxes","Hed2G1-max1W1",[39571088]); AGR.TOC("maxes","Hed2G1-max2W1",[86602080]); AGR.TOC("maxes","Hed2G1-max2W2",[10926996]); AGR.TOC("maxes","Hed2G1-max3W1",[-77901070]); AGR.TOC("maxes","Hed2G1-max3W2",[-5889445]); AGR.TOC("maxes","Hed2G1-max4W1",[46137349]); AGR.TOC("maxes","Hed2G1-max4W2",[1777236]); AGR.TOC("maxes","Hed2G1-max5W1",[78201159]); AGR.TOC("maxes","Hed2G1-max6W1",[82572966]); AGR.TOC("maxes","Hed2G1-max6W2",[-66410105]); AGR.TOC("maxes","Hed2G1-max7W1",[-105158792]); AGR.TOC("maxes","Hed2G1-max8W1",[43276992]); AGR.TOC("maxes","Hed2G1-max9W1",[9241607]); AGR.TOC("maxes","Hed2G1-max10W2",[131303494]); AGR.TOC("maxes","Hed2G1-max10W1",[-128311249]); AGR.TOC("maxes","Hed2G1-max11W1",[15765194]); AGR.TOC("maxes","Hed2G1-max12W1",[126119732]); AGR.TOC("find","Hed2G1-find1",[-5635868]); AGR.TOC("check","Hed2G1-check1",[-9689119]); # J1 AGR.GRP("spor","J1","J1"); AGR.TOC("perm","J1G1-p266B0.m",[22177126,-62974675]); AGR.TOC("perm","J1G1-p1045B0.m",[-120206893,102168794]); AGR.TOC("perm","J1G1-p1463B0.m",[-133715393,113823357]); AGR.TOC("perm","J1G1-p1540B0.m",[75810120,-100787024]); AGR.TOC("perm","J1G1-p1596B0.m",[101588624,-117563900]); AGR.TOC("perm","J1G1-p2926B0.m",[81845562,-20014759]); AGR.TOC("perm","J1G1-p4180B0.m",[-15995841,-28833662]); AGR.TOC("matff","J1G1-f2r20B0.m",[-61004905,-87815118]); AGR.TOC("matff","J1G1-f2r76aB0.m",[-101133014,5768976]); AGR.TOC("matff","J1G1-f2r76bB0.m",[38608532,58707824]); AGR.TOC("matff","J1G1-f2r112aB0.m",[-27762922,-39231978]); AGR.TOC("matff","J1G1-f2r112bB0.m",[103022738,-30663498]); AGR.TOC("matff","J1G1-f2r360B0.m",[71735870,-78934514]); AGR.TOC("matff","J1G1-f3r76aB0.m",[47213066,109189926]); AGR.TOC("matff","J1G1-f3r76bB0.m",[-13438726,-63081483]); AGR.TOC("matff","J1G1-f3r112B0.m",[85516695,-115922964]); AGR.TOC("matff","J1G1-f3r133B0.m",[55526379,109722479]); AGR.TOC("matff","J1G1-f3r154B0.m",[-84775452,-97075575]); AGR.TOC("matff","J1G1-f3r360B0.m",[-87211897,-121913277]); AGR.TOC("matff","J1G1-f4r56aB0.m",[-5126658,50178985]); AGR.TOC("matff","J1G1-f4r56bB0.m",[-106154690,-67274114]); AGR.TOC("matff","J1G1-f4r56cB0.m",[-130903651,-12932254]); AGR.TOC("matff","J1G1-f4r56dB0.m",[52608449,-5497505]); AGR.TOC("matff","J1G1-f5r56B0.m",[120075672,-81860207]); AGR.TOC("matff","J1G1-f5r76aB0.m",[-93215905,90094060]); AGR.TOC("matff","J1G1-f5r76bB0.m",[98338005,-111548749]); AGR.TOC("matff","J1G1-f5r77B0.m",[111788951,-2181113]); AGR.TOC("matff","J1G1-f5r133B0.m",[-101139042,115099859]); AGR.TOC("matff","J1G1-f5r360B0.m",[79519794,34617868]); AGR.TOC("matff","J1G1-f7r31B0.m",[107812230,81267576]); AGR.TOC("matff","J1G1-f7r45B0.m",[55047694,92422382]); AGR.TOC("matff","J1G1-f7r75B0.m",[46773029,13337192]); AGR.TOC("matff","J1G1-f7r77aB0.m",[88926029,-52130458]); AGR.TOC("matff","J1G1-f7r89B0.m",[-47541426,46151913]); AGR.TOC("matff","J1G1-f7r112B0.m",[-49729601,126089261]); AGR.TOC("matff","J1G1-f7r120B0.m",[-134146223,-74849221]); AGR.TOC("matff","J1G1-f7r133aB0.m",[100942778,-34392406]); AGR.TOC("matff","J1G1-f7r154B0.m",[105431024,132068788]); AGR.TOC("matff","J1G1-f7r266B0.m",[26589642,-35226900]); AGR.TOC("matff","J1G1-f8r120aB0.m",[364715,124623442]); AGR.TOC("matff","J1G1-f8r120bB0.m",[-133644121,-80473656]); AGR.TOC("matff","J1G1-f8r120cB0.m",[-49808271,88217072]); AGR.TOC("matff","J1G1-f9r56aB0.m",[127228489,51925005]); AGR.TOC("matff","J1G1-f9r56bB0.m",[-68571042,-29047888]); AGR.TOC("matff","J1G1-f9r77aB0.m",[-56987250,131399361]); AGR.TOC("matff","J1G1-f9r77bB0.m",[37261836,-33773054]); AGR.TOC("matff","J1G1-f11r7B0.m",[-9911341,-80003292]); AGR.TOC("matff","J1G1-f11r14B0.m",[-117124269,92507682]); AGR.TOC("matff","J1G1-f11r27B0.m",[-89301207,46608694]); AGR.TOC("matff","J1G1-f11r49B0.m",[123525147,5925104]); AGR.TOC("matff","J1G1-f11r56B0.m",[134047400,-58386021]); AGR.TOC("matff","J1G1-f11r64B0.m",[-131656409,-132788035]); AGR.TOC("matff","J1G1-f11r69B0.m",[106677382,-85852958]); AGR.TOC("matff","J1G1-f11r77aB0.m",[-36509359,-117909918]); AGR.TOC("matff","J1G1-f11r77bB0.m",[-41736705,-16867885]); AGR.TOC("matff","J1G1-f11r77cB0.m",[16146661,80770849]); AGR.TOC("matff","J1G1-f11r106B0.m",[-103391839,124188868]); AGR.TOC("matff","J1G1-f11r119B0.m",[-114730701,-131377448]); AGR.TOC("matff","J1G1-f11r209B0.m",[30432323,-115220214]); AGR.TOC("matff","J1G1-f19r22B0.m",[-8458095,123758142]); AGR.TOC("matff","J1G1-f19r34B0.m",[57580925,-123237802]); AGR.TOC("matff","J1G1-f19r43B0.m",[1561333,66803302]); AGR.TOC("matff","J1G1-f19r55B0.m",[-109172623,14442210]); AGR.TOC("matff","J1G1-f19r76aB0.m",[96251301,22067576]); AGR.TOC("matff","J1G1-f19r76bB0.m",[-75763271,-90052991]); AGR.TOC("matff","J1G1-f19r77B0.m",[5871029,48525857]); AGR.TOC("matff","J1G1-f19r133aB0.m",[-116071157,79659262]); AGR.TOC("matff","J1G1-f19r133bB0.m",[67214512,21683644]); AGR.TOC("matff","J1G1-f19r133cB0.m",[30382290,71973032]); AGR.TOC("matff","J1G1-f19r209B0.m",[-98745830,-14654175]); AGR.TOC("matff","J1G1-f27r120aB0.m",[88849715,5601993]); AGR.TOC("matff","J1G1-f27r120bB0.m",[95234762,128060063]); AGR.TOC("matff","J1G1-f27r120cB0.m",[21394050,-47984428]); AGR.TOC("matff","J1G1-f49r56aB0.m",[-82790943,55874968]); AGR.TOC("matff","J1G1-f49r56bB0.m",[77714597,-126420712]); AGR.TOC("matff","J1G1-f49r77bB0.m",[133603429,-13804032]); AGR.TOC("matff","J1G1-f49r77cB0.m",[108616408,79439704]); AGR.TOC("matff","J1G1-f49r133bB0.m",[-76280495,25191611]); AGR.TOC("matff","J1G1-f49r133cB0.m",[-31063626,-88798497]); AGR.TOC("matff","J1G1-f125r120aB0.m",[37110054,-12669843]); AGR.TOC("matff","J1G1-f125r120bB0.m",[27805098,64057217]); AGR.TOC("matff","J1G1-f125r120cB0.m",[36753518,132921276]); AGR.TOC("matint","J1G1-Zr76aB0.g",[-132150391]); AGR.TOC("matint","J1G1-Zr76bB0.g",[-56968292]); AGR.TOC("matint","J1G1-Zr77aB0.g",[73320684]); AGR.TOC("matint","J1G1-Zr112B0.g",[-31077060]); AGR.TOC("matint","J1G1-Zr133aB0.g",[21656545]); AGR.TOC("matint","J1G1-Zr154aB0.g",[83842088]); AGR.TOC("matint","J1G1-Zr209B0.g",[-94084326]); AGR.TOC("matint","J1G1-Zr266B0.g",[133600103]); AGR.TOC("matint","J1G1-Zr360B0.g",[-130775594]); AGR.TOC("maxes","J1G1-max1W1",[51538739]); AGR.TOC("maxes","J1G1-max2W1",[-6041435]); AGR.TOC("maxes","J1G1-max3W1",[-79963239]); AGR.TOC("maxes","J1G1-max4W1",[-89881442]); AGR.TOC("maxes","J1G1-max5W1",[15588260]); AGR.TOC("maxes","J1G1-max6W1",[134073476]); AGR.TOC("maxes","J1G1-max7W1",[74139840]); AGR.TOC("cyclic","J1G1-cycW1",[17461109]); AGR.TOC("cyc2ccl","J1G1cycW1-cclsW1",[122928561]); AGR.TOC("maxstd","J1G1max1W1-L211G1W1",[-69103036]); AGR.TOC("find","J1G1-find1",[-31682906]); AGR.TOC("check","J1G1-check1",[123542188]); AGR.TOC("pres","J1G1-P1",[62438344]); # 2J2 AGR.GRP("spor","J2","2J2"); AGR.TOC("perm","2J2G1-p200B0.m",[123577781,41593846]); AGR.TOC("perm","2J2G1-p1120B0.m",[-25117804,-26395146]); AGR.TOC("matff","2J2G1-f3r14B0.m",[-113897243,-32814486]); AGR.TOC("matff","2J2G1-f3r216B0.m",[14072415,-110234086]); AGR.TOC("matff","2J2G1-f3r236B0.m",[20660607,10073248]); AGR.TOC("matff","2J2G1-f5r6B0.m",[99799920,91333344]); AGR.TOC("matff","2J2G1-f5r14B0.m",[83051864,126204854]); AGR.TOC("matff","2J2G1-f5r50aB0.m",[-50527262,-97192412]); AGR.TOC("matff","2J2G1-f5r50bB0.m",[129810320,104344437]); AGR.TOC("matff","2J2G1-f5r56B0.m",[109189996,-127833587]); AGR.TOC("matff","2J2G1-f5r64B0.m",[75626446,87298219]); AGR.TOC("matff","2J2G1-f7r14B0.m",[-10597658,-86610093]); AGR.TOC("matff","2J2G1-f9r6aB0.m",[67698531,-117556776]); AGR.TOC("matff","2J2G1-f9r36aB0.m",[73184048,-23355679]); AGR.TOC("matff","2J2G1-f9r50bB0.m",[-69229760,100172887]); AGR.TOC("matff","2J2G1-f9r126bB0.m",[-118127278,69519271]); AGR.TOC("matff","2J2G1-f49r6aB0.m",[-120102143,36160691]); AGR.TOC("matff","2J2G1-f49r50bB0.m",[109335687,-28211937]); AGR.TOC("matff","2J2G1-f49r58aB0.m",[87250507,56426501]); AGR.TOC("pres","2J2G1-P1",[50736212]); AGR.TOC("pres","2J2G1-P2",[95313741]); # 2J2d2 AGR.GRP("spor","J2","2J2d2"); AGR.TOC("matff","2J2d2G1-f3r12B0.m",[97169803,118884350]); AGR.TOC("matff","2J2d2G1-f3r72B0.m",[-54956834,74771712]); AGR.TOC("matff","2J2d2G1-f3r100B0.m",[-28016138,85900205]); AGR.TOC("matff","2J2d2G1-f3r216aB0.m",[99016969,6068394]); AGR.TOC("matff","2J2d2G1-f3r252B0.m",[-17267583,51118333]); AGR.TOC("matff","2J2d2G1-f5r100aB0.m",[-54001130,34060243]); AGR.TOC("matff","2J2d2G1-f7r12B0.m",[54206582,91013231]); AGR.TOC("matff","2J2d2G1-f7r14aB0.m",[111764479,82142631]); AGR.TOC("matff","2J2d2G1-f7r100aB0.m",[-815702,10811702]); AGR.TOC("matff","2J2d2G1-f7r112aB0.m",[-112067511,-87122879]); AGR.TOC("matff","2J2d2G1-f7r116aB0.m",[-104312720,-1307904]); AGR.TOC("matff","2J2d2G1-f7r252aB0.m",[3333699,33300818]); AGR.TOC("matff","2J2d2G1-f7r336bB0.m",[-105320077,-76943839]); AGR.TOC("matff","2J2d2G1-f7r350aB0.m",[63381314,-68247947]); AGR.TOC("matff","2J2d2G1-f9r14bB0.m",[36762831,-132406626]); AGR.TOC("matff","2J2d2G1-f9r236aB0.m",[-31790249,74937544]); AGR.TOC("matff","2J2d2G1-f25r6aB0.m",[-132439171,1975945]); AGR.TOC("matff","2J2d2G1-f25r14aB0.m",[6732991,29876443]); AGR.TOC("matff","2J2d2G1-f25r56aB0.m",[-59725962,-5563607]); AGR.TOC("matff","2J2d2G1-f25r64aB0.m",[99815101,24146284]); AGR.TOC("matff","2J2d2G1-f25r190aB0.m",[62791918,105317228]); AGR.TOC("matff","2J2d2G1-f25r202aB0.m",[97700598,-22294908]); AGR.TOC("matff","2J2d2G1-f25r350aB0.m",[-111317796,-69843330]); AGR.TOC("matff","2J2d2G1-f49r84aB0.m",[77278470,5597725]); AGR.TOC("matff","2J2d2G1-f49r252bB0.m",[-32776114,-74356372]); AGR.TOC("pres","2J2d2G1-P1",[-81649202]); # 2J2d2i AGR.GRP("spor","J2","2J2d2i"); AGR.TOC("pres","2J2d2iG1-P1",[-124109267]); # J2 AGR.GRP("spor","J2","J2"); AGR.TOC("perm","J2G1-p100B0.m",[-10604214,76926874]); AGR.TOC("perm","J2G1-p280B0.m",[103019629,129543628]); AGR.TOC("perm","J2G1-p315B0.m",[-98296456,116940015]); AGR.TOC("perm","J2G1-p525B0.m",[39161370,50068086]); AGR.TOC("perm","J2G1-p840B0.m",[-2392939,-63559507]); AGR.TOC("perm","J2G1-p1008B0.m",[107917219,44185964]); AGR.TOC("perm","J2G1-p1800B0.m",[88439984,-83344771]); AGR.TOC("matff","J2G1-f2r36B0.m",[79421504,-69325762]); AGR.TOC("matff","J2G1-f2r84B0.m",[75413503,-102216560]); AGR.TOC("matff","J2G1-f2r160B0.m",[28629833,126740221]); AGR.TOC("matff","J2G1-f3r36B0.m",[-73894682,-94149424]); AGR.TOC("matff","J2G1-f3r63B0.m",[-21093812,-56023244]); AGR.TOC("matff","J2G1-f3r90B0.m",[-40992173,51864398]); AGR.TOC("matff","J2G1-f3r133B0.m",[-119378602,44663767]); AGR.TOC("matff","J2G1-f3r225B0.m",[80778398,-129737568]); AGR.TOC("matff","J2G1-f4r6aB0.m",[-48659567,19296333]); AGR.TOC("matff","J2G1-f4r14aB0.m",[-78197249,-86246293]); AGR.TOC("matff","J2G1-f4r64aB0.m",[-100350507,-91732982]); AGR.TOC("matff","J2G1-f5r14B0.m",[-24495182,62143285]); AGR.TOC("matff","J2G1-f5r21B0.m",[-101700739,129331869]); AGR.TOC("matff","J2G1-f5r41B0.m",[46482597,55653243]); AGR.TOC("matff","J2G1-f5r70B0.m",[-24973080,126135372]); AGR.TOC("matff","J2G1-f5r85B0.m",[60126257,36436769]); AGR.TOC("matff","J2G1-f5r90B0.m",[108529232,-1189698]); AGR.TOC("matff","J2G1-f5r175B0.m",[93698590,-86300113]); AGR.TOC("matff","J2G1-f5r189B0.m",[64786394,-55336423]); AGR.TOC("matff","J2G1-f5r225B0.m",[51793378,-25188973]); AGR.TOC("matff","J2G1-f5r300B0.m",[97176457,125598365]); AGR.TOC("matff","J2G1-f7r36B0.m",[94807847,-43954787]); AGR.TOC("matff","J2G1-f7r63B0.m",[113327264,-89095941]); AGR.TOC("matff","J2G1-f7r89B0.m",[93098055,-64430197]); AGR.TOC("matff","J2G1-f7r101B0.m",[-43267214,-43718865]); AGR.TOC("matff","J2G1-f7r124B0.m",[-31655958,29964592]); AGR.TOC("matff","J2G1-f7r126B0.m",[-69882593,52764208]); AGR.TOC("matff","J2G1-f7r175B0.m",[-7612451,56568397]); AGR.TOC("matff","J2G1-f7r199B0.m",[130106760,72724572]); AGR.TOC("matff","J2G1-f7r336B0.m",[-66986634,-12666334]); AGR.TOC("matff","J2G1-f9r13aB0.m",[-82599678,19475396]); AGR.TOC("matff","J2G1-f9r21aB0.m",[40398440,-105932054]); AGR.TOC("matff","J2G1-f9r57aB0.m",[72550823,-123729265]); AGR.TOC("matff","J2G1-f9r189aB0.m",[-80903080,-38830383]); AGR.TOC("matff","J2G1-f49r14aB0.m",[-83144889,-132137217]); AGR.TOC("matff","J2G1-f49r21aB0.m",[-93151165,8425597]); AGR.TOC("matff","J2G1-f49r70aB0.m",[35895714,-122041372]); AGR.TOC("matff","J2G1-f49r189aB0.m",[133245420,25430127]); AGR.TOC("matff","J2G1-f49r224bB0.m",[81013272,1711563]); AGR.TOC("matint","J2G1-Zr28B0.g",[-130022761]); AGR.TOC("matint","J2G1-Zr36B0.g",[-20614194]); AGR.TOC("matint","J2G1-Zr42B0.g",[31145687]); AGR.TOC("matint","J2G1-Zr63B0.g",[-89620674]); AGR.TOC("matint","J2G1-Zr90B0.g",[60260154]); AGR.TOC("matint","J2G1-Zr126B0.g",[-110181652]); AGR.TOC("matint","J2G1-Zr140B0.g",[-100307717]); AGR.TOC("matint","J2G1-Zr160B0.g",[-7897565]); AGR.TOC("matint","J2G1-Zr175B0.g",[-95385399]); AGR.TOC("matint","J2G1-Zr225B0.g",[-74398693]); AGR.TOC("matint","J2G1-Zr378B0.g",[85432049]); AGR.TOC("matint","J2G1-Zr448B0.g",[111047571]); AGR.TOC("matalg","J2G1-Ar14aB0.g",[-119892054]); AGR.TOC("matalg","J2G1-Ar14bB0.g",[116541793]); AGR.TOC("matalg","J2G1-Ar21aB0.g",[66352371]); AGR.TOC("matalg","J2G1-Ar21bB0.g",[-106545175]); AGR.TOC("maxes","J2G1-max1W1",[71503277]); AGR.TOC("maxes","J2G1-max2W1",[-28428383]); AGR.TOC("maxes","J2G1-max3W1",[63333853]); AGR.TOC("maxes","J2G1-max4W1",[100660452]); AGR.TOC("maxes","J2G1-max5W1",[-58932873]); AGR.TOC("maxes","J2G1-max6W1",[-63852235]); AGR.TOC("maxes","J2G1-max7W1",[-19546984]); AGR.TOC("maxes","J2G1-max8W1",[15473541]); AGR.TOC("maxes","J2G1-max9W1",[43284530]); AGR.TOC("cyclic","J2G1-cycW1",[115291828]); AGR.TOC("cyc2ccl","J2G1cycW1-cclsW1",[-131927518]); AGR.TOC("find","J2G1-find1",[-113443300]); AGR.TOC("check","J2G1-check1",[79820866]); AGR.TOC("pres","J2G1-P1",[75328306]); AGR.TOC("pres","J2G1-P2",[89317847]); # J2d2 AGR.GRP("spor","J2","J2d2"); AGR.TOC("perm","J2d2G1-p100B0.m",[79614429,-121551062]); AGR.TOC("matff","J2d2G1-f2r12B0.m",[50254151,-133240252]); AGR.TOC("matff","J2d2G1-f2r28B0.m",[-96028902,102432156]); AGR.TOC("matff","J2d2G1-f2r36B0.m",[-70271936,10793456]); AGR.TOC("matff","J2d2G1-f2r84B0.m",[-2485093,65970594]); AGR.TOC("matff","J2d2G1-f2r128B0.m",[-65498530,-20810824]); AGR.TOC("matff","J2d2G1-f2r160B0.m",[13476252,-37245155]); AGR.TOC("matff","J2d2G1-f3r26B0.m",[76485463,98100511]); AGR.TOC("matff","J2d2G1-f3r36aB0.m",[46652214,98816800]); AGR.TOC("matff","J2d2G1-f3r42B0.m",[80885786,-102033025]); AGR.TOC("matff","J2d2G1-f3r63aB0.m",[-133703228,114272230]); AGR.TOC("matff","J2d2G1-f3r90aB0.m",[131811586,30969873]); AGR.TOC("matff","J2d2G1-f3r114B0.m",[59108908,-9938196]); AGR.TOC("matff","J2d2G1-f3r133aB0.m",[84075448,37730824]); AGR.TOC("matff","J2d2G1-f3r225aB0.m",[-39220154,-130617020]); AGR.TOC("matff","J2d2G1-f3r378B0.m",[90745239,100731880]); AGR.TOC("matff","J2d2G1-f5r14aB0.m",[119575197,78985578]); AGR.TOC("matff","J2d2G1-f5r21aB0.m",[-95090773,18994822]); AGR.TOC("matff","J2d2G1-f5r41aB0.m",[104699912,115133213]); AGR.TOC("matff","J2d2G1-f5r70aB0.m",[17740820,-79331532]); AGR.TOC("matff","J2d2G1-f5r85aB0.m",[128785100,44563005]); AGR.TOC("matff","J2d2G1-f5r90aB0.m",[-44848211,29854069]); AGR.TOC("matff","J2d2G1-f5r175aB0.m",[-27628356,38889573]); AGR.TOC("matff","J2d2G1-f5r189aB0.m",[-4423560,-30106510]); AGR.TOC("matff","J2d2G1-f5r225aB0.m",[-120959546,27919126]); AGR.TOC("matff","J2d2G1-f5r300aB0.m",[-70109772,-101527760]); AGR.TOC("matff","J2d2G1-f7r28B0.m",[-68684266,-47870332]); AGR.TOC("matff","J2d2G1-f7r28aB0.m",[-78979492,-41376050]); AGR.TOC("matff","J2d2G1-f7r36aB0.m",[126296679,-7392050]); AGR.TOC("matff","J2d2G1-f7r42aB0.m",[78130173,41747469]); AGR.TOC("matff","J2d2G1-f7r63aB0.m",[-55496811,-113221109]); AGR.TOC("matff","J2d2G1-f7r89aB0.m",[18923317,107278480]); AGR.TOC("matff","J2d2G1-f7r101aB0.m",[132601761,33448972]); AGR.TOC("matff","J2d2G1-f7r124aB0.m",[25830938,-104474321]); AGR.TOC("matff","J2d2G1-f7r126aB0.m",[39401259,-63972050]); AGR.TOC("matff","J2d2G1-f7r140aB0.m",[-89259952,98564683]); AGR.TOC("matff","J2d2G1-f7r175aB0.m",[64538401,-130093289]); AGR.TOC("matff","J2d2G1-f7r199aB0.m",[-110342124,4074968]); AGR.TOC("matff","J2d2G1-f7r378aB0.m",[-116455614,-21324846]); AGR.TOC("matff","J2d2G1-f7r448aB0.m",[118611765,-72803788]); AGR.TOC("matff","J2d2G1-f49r336aB0.m",[-23714968,-84309371]); AGR.TOC("maxes","J2d2G1-max1W1",[-51694456]); AGR.TOC("maxes","J2d2G1-max2W2",[-30559536]); AGR.TOC("maxes","J2d2G1-max2W1",[23063257]); AGR.TOC("maxes","J2d2G1-max3W1",[111958377]); AGR.TOC("maxes","J2d2G1-max3W2",[-21586291]); AGR.TOC("maxes","J2d2G1-max4W1",[132837173]); AGR.TOC("maxes","J2d2G1-max5W1",[78799086]); AGR.TOC("maxes","J2d2G1-max6W1",[-73379527]); AGR.TOC("maxes","J2d2G1-max7W1",[19473530]); AGR.TOC("maxes","J2d2G1-max8W2",[-30055709]); AGR.TOC("maxes","J2d2G1-max8W1",[-83304134]); AGR.TOC("maxes","J2d2G1-max9W1",[-26512083]); AGR.TOC("maxes","J2d2G1-max10W1",[50336895]); AGR.TOC("maxes","J2d2G1-max10W2",[-115145540]); AGR.TOC("cyclic","J2d2G1-cycW1",[-77809268]); AGR.TOC("find","J2d2G1-find1",[63922423]); AGR.TOC("check","J2d2G1-check1",[113278913]); # 3J3 AGR.GRP("spor","J3","3J3"); AGR.TOC("matff","3J3G1-f4r9aB0.m",[5706396,-35558374]); AGR.TOC("matff","3J3G1-f4r18aB0.m",[43277515,4750208]); AGR.TOC("matff","3J3G1-f4r18bB0.m",[-130770368,71718454]); AGR.TOC("matff","3J3G1-f4r126aB0.m",[17655829,10977322]); AGR.TOC("matff","3J3G1-f4r153aB0.m",[-86667489,69354272]); AGR.TOC("matff","3J3G1-f4r153bB0.m",[105863765,-99696278]); AGR.TOC("matff","3J3G1-f4r324aB0.m",[120672405,22266670]); AGR.TOC("matff","3J3G1-f4r720aB0.m",[28389114,90385026]); AGR.TOC("matff","3J3G1-f4r1008aB0.m",[-64314065,-67617738]); AGR.TOC("matff","3J3G1-f5r36B0.m",[102625935,-11945867]); AGR.TOC("matff","3J3G1-f17r36aB0.m",[-51234880,68470238]); AGR.TOC("matff","3J3G1-f17r36bB0.m",[51033368,12468464]); AGR.TOC("matff","3J3G1-f17r342aB0.m",[-5781739,-45542491]); AGR.TOC("matff","3J3G1-f17r648aB0.m",[-133504337,-14109488]); AGR.TOC("matff","3J3G1-f19r18aB0.m",[-13218369,-54533917]); AGR.TOC("matff","3J3G1-f19r18bB0.m",[71768792,-33082416]); AGR.TOC("matff","3J3G1-f25r18B0.m",[-22348714,74615936]); AGR.TOC("matff","3J3G1-f25r153B0.m",[-46297630,-38642240]); AGR.TOC("matff","3J3G1-f25r171aB0.m",[819518,-42644410]); AGR.TOC("pres","3J3G1-P1",[94181161]); AGR.TOC("pres","3J3G1-P2",[97697866]); # 3J3d2 AGR.GRP("spor","J3","3J3d2"); AGR.TOC("matff","3J3d2G1-f2r18B0.m",[-71834125,97014104]); # J3 AGR.GRP("spor","J3","J3"); AGR.TOC("perm","J3G1-p6156B0.m",[-6997746,114293647]); AGR.TOC("perm","J3G1-p14688aB0.m",[83603351,101939310]); AGR.TOC("perm","J3G1-p14688bB0.m",[108341248,2451612]); AGR.TOC("perm","J3G1-p17442B0.m",[130030449,-27264281]); AGR.TOC("perm","J3G1-p20520B0.m",[-108660079,-106583523]); AGR.TOC("perm","J3G1-p23256B0.m",[107077962,125529650]); AGR.TOC("perm","J3G1-p25840B0.m",[93937982,27658851]); AGR.TOC("perm","J3G1-p26163B0.m",[-76971561,46022270]); AGR.TOC("perm","J3G1-p43605B0.m",[-25523132,90042139]); AGR.TOC("matff","J3G1-f2r80B0.m",[-114855153,-63500987]); AGR.TOC("matff","J3G1-f2r244B0.m",[96929110,40003984]); AGR.TOC("matff","J3G1-f2r248B0.m",[-5581136,-102087980]); AGR.TOC("matff","J3G1-f2r966B0.m",[-21628489,-81419317]); AGR.TOC("matff","J3G1-f3r324B0.m",[-121653249,-48968634]); AGR.TOC("matff","J3G1-f3r934B0.m",[21180256,9353944]); AGR.TOC("matff","J3G1-f4r78bB0.m",[130683410,-49146325]); AGR.TOC("matff","J3G1-f4r84aB0.m",[97268024,90323773]); AGR.TOC("matff","J3G1-f4r322aB0.m",[-94596495,-83869187]); AGR.TOC("matff","J3G1-f5r85aB0.m",[-29570850,-22625474]); AGR.TOC("matff","J3G1-f5r323B0.m",[20586886,-63936535]); AGR.TOC("matff","J3G1-f5r646B0.m",[38468934,-19638553]); AGR.TOC("matff","J3G1-f5r816B0.m",[-38226666,33164345]); AGR.TOC("matff","J3G1-f9r18bB0.m",[-114161524,3130286]); AGR.TOC("matff","J3G1-f9r84bB0.m",[131054028,43504610]); AGR.TOC("matff","J3G1-f9r153bB0.m",[74571268,-72197498]); AGR.TOC("matff","J3G1-f17r85bB0.m",[69355264,79827344]); AGR.TOC("matff","J3G1-f17r324B0.m",[1501502,47098677]); AGR.TOC("matff","J3G1-f17r379B0.m",[-18078186,-100804918]); AGR.TOC("matff","J3G1-f17r646cB0.m",[33779740,-35096697]); AGR.TOC("matff","J3G1-f17r761B0.m",[-24827989,-30157498]); AGR.TOC("matff","J3G1-f17r816B0.m",[49783141,-44417889]); AGR.TOC("matff","J3G1-f17r836B0.m",[67110042,-103596482]); AGR.TOC("matff","J3G1-f17r1292B0.m",[-25034150,-70852400]); AGR.TOC("matff","J3G1-f19r85B0.m",[-116269633,124397448]); AGR.TOC("matff","J3G1-f19r110B0.m",[-14149257,-72994069]); AGR.TOC("matff","J3G1-f19r214B0.m",[112808376,63056856]); AGR.TOC("matff","J3G1-f19r323aB0.m",[-56308585,122734075]); AGR.TOC("matff","J3G1-f19r646aB0.m",[32723177,57321757]); AGR.TOC("matff","J3G1-f19r706B0.m",[124798330,-118385496]); AGR.TOC("matff","J3G1-f19r919B0.m",[117468015,76233284]); AGR.TOC("matff","J3G1-f19r1001B0.m",[-71775894,32124539]); AGR.TOC("matint","J3G1-Zr170B0.g",[5010871]); AGR.TOC("maxes","J3G1-max1W1",[101439354]); AGR.TOC("maxes","J3G1-max2W1",[78445967]); AGR.TOC("maxes","J3G1-max3W1",[-59984060]); AGR.TOC("maxes","J3G1-max4W1",[1926870]); AGR.TOC("maxes","J3G1-max5W1",[126899098]); AGR.TOC("maxes","J3G1-max6W1",[62944102]); AGR.TOC("maxes","J3G1-max7W1",[115657958]); AGR.TOC("maxes","J3G1-max8W1",[49123027]); AGR.TOC("maxes","J3G1-max9W1",[-44554009]); AGR.TOC("cyclic","J3G1-cycW1",[59511997]); AGR.TOC("cyc2ccl","J3G1cycW1-cclsW1",[3912495]); AGR.TOC("find","J3G1-find1",[84468241]); AGR.TOC("check","J3G1-check1",[131719718]); AGR.TOC("pres","J3G1-P1",[6588741]); # J3d2 AGR.GRP("spor","J3","J3d2"); AGR.TOC("perm","J3d2G1-p6156B0.m",[11729589,-119672344]); AGR.TOC("matff","J3d2G1-f2r80aB0.m",[-129818312,-84930763]); AGR.TOC("matff","J3d2G1-f2r156aB0.m",[-35325545,7697295]); AGR.TOC("matff","J3d2G1-f2r168aB0.m",[-69077590,124597600]); AGR.TOC("matff","J3d2G1-f2r244aB0.m",[100974568,111207289]); AGR.TOC("matff","J3d2G1-f2r644aB0.m",[31198995,-77464786]); AGR.TOC("matff","J3d2G1-f2r966aB0.m",[-36421548,-25821412]); AGR.TOC("matff","J3d2G1-f3r36B0.m",[31764118,43883456]); AGR.TOC("matff","J3d2G1-f3r36aB0.m",[99684431,109585689]); AGR.TOC("matff","J3d2G1-f3r168aB0.m",[-615510,-7899195]); AGR.TOC("matff","J3d2G1-f3r306aB0.m",[-65318316,-88972481]); AGR.TOC("matff","J3d2G1-f3r324aB0.m",[-91579146,-112188732]); AGR.TOC("matff","J3d2G1-f3r934aB0.m",[103410483,111489511]); AGR.TOC("matff","J3d2G1-f5r170aB0.m",[126235142,-44861301]); AGR.TOC("matff","J3d2G1-f5r323bB0.m",[11663668,-31895383]); AGR.TOC("matff","J3d2G1-f5r646aB0.m",[83386032,-54626814]); AGR.TOC("matff","J3d2G1-f5r816aB0.m",[-54694986,110817765]); AGR.TOC("matff","J3d2G1-f17r170aB0.m",[-20712877,15840937]); AGR.TOC("matff","J3d2G1-f17r324aB0.m",[-121994210,13113504]); AGR.TOC("matff","J3d2G1-f17r379aB0.m",[8150753,-6344132]); AGR.TOC("matff","J3d2G1-f17r646aB0.m",[1825660,100643838]); AGR.TOC("matff","J3d2G1-f17r836aB0.m",[-6609325,64870910]); AGR.TOC("matff","J3d2G1-f19r85aB0.m",[42726302,-85827259]); AGR.TOC("matff","J3d2G1-f19r110aB0.m",[33474962,61327975]); AGR.TOC("matff","J3d2G1-f19r214aB0.m",[86168827,45997897]); AGR.TOC("matff","J3d2G1-f19r214bB0.m",[-14898486,-70381615]); AGR.TOC("matff","J3d2G1-f19r646aB0.m",[-75020622,36753805]); AGR.TOC("matff","J3d2G1-f19r706aB0.m",[39748629,-88787685]); AGR.TOC("matff","J3d2G1-f19r919aB0.m",[69365981,-131623696]); AGR.TOC("matff","J3d2G1-f19r1001aB0.m",[-93762295,55734533]); AGR.TOC("matff","J3d2G1-f19r1214aB0.m",[91332265,-83777443]); AGR.TOC("maxes","J3d2G1-max1W1",[43765696]); AGR.TOC("maxes","J3d2G1-max1W2",[51647767]); AGR.TOC("maxes","J3d2G1-max2W1",[12604146]); AGR.TOC("maxes","J3d2G1-max2W2",[-47456261]); AGR.TOC("maxes","J3d2G1-max3W1",[-83635088]); AGR.TOC("maxes","J3d2G1-max3W2",[-56061537]); AGR.TOC("maxes","J3d2G1-max4W1",[42497159]); AGR.TOC("maxes","J3d2G1-max4W2",[13243978]); AGR.TOC("maxes","J3d2G1-max4W3",[122658637]); AGR.TOC("maxes","J3d2G1-max5W1",[44354392]); AGR.TOC("maxes","J3d2G1-max5W2",[100303569]); AGR.TOC("maxes","J3d2G1-max6W1",[34236532]); AGR.TOC("maxes","J3d2G1-max6W2",[-13239779]); AGR.TOC("maxes","J3d2G1-max7W1",[-63149480]); AGR.TOC("maxes","J3d2G1-max7W2",[110046694]); AGR.TOC("maxes","J3d2G1-max8W1",[52645162]); AGR.TOC("maxes","J3d2G1-max8W2",[-23404220]); AGR.TOC("maxes","J3d2G1-max9W1",[-61130598]); AGR.TOC("maxes","J3d2G1-max9W2",[-84682738]); AGR.TOC("cyclic","J3d2G1-cycW1",[-22222726]); AGR.TOC("find","J3d2G1-find1",[-62481230]); AGR.TOC("check","J3d2G1-check1",[-29141963]); AGR.TOC("pres","J3d2G1-P1",[79692095]); # J4 AGR.GRP("spor","J4","J4"); AGR.TOC("matff","J4G1-f2r112B0.m",[-65652010,73342411]); AGR.TOC("matff","J4G1-f2r1220aB0.m",[6701669,71684102]); AGR.TOC("matff","J4G1-f11r1333B0.m",[89088292,102950801]); AGR.TOC("maxes","J4G1-max1W1",[46104539]); AGR.TOC("maxes","J4G1-max2W1",[2832080]); AGR.TOC("maxes","J4G1-max3W1",[-125358074]); AGR.TOC("maxes","J4G1-max4W1",[-107364696]); AGR.TOC("maxes","J4G1-max5W1",[-29842207]); AGR.TOC("maxes","J4G1-max6W1",[-34916600]); AGR.TOC("maxes","J4G1-max7W1",[-25028404]); AGR.TOC("maxes","J4G1-max8W1",[-34180489]); AGR.TOC("maxes","J4G1-max9W1",[-27356525]); AGR.TOC("maxes","J4G1-max10W1",[-61874604]); AGR.TOC("maxes","J4G1-max11W1",[93074183]); AGR.TOC("maxes","J4G1-max12W1",[109847687]); AGR.TOC("maxes","J4G1-max13W1",[69852070]); AGR.TOC("cyclic","J4G1-cycW1",[11528942]); AGR.TOC("switch","J4G1-G2W1",[1835111]); AGR.TOC("find","J4G1-find1",[47331454]); AGR.TOC("check","J4G1-check1",[94551580]); # Ly AGR.GRP("spor","Ly","Ly"); AGR.TOC("matff","LyG1-f3r651B0.m",[10566154,103166968]); AGR.TOC("matff","LyG1-f4r2480B0.m",[34218313,18008839]); AGR.TOC("matff","LyG1-f5r111B0.m",[88507392,25634025]); AGR.TOC("matff","LyG1-f5r517B0.m",[-5960997,-106607566]); AGR.TOC("matff","LyG1-f5r2480aB0.m",[80368824,-54706907]); AGR.TOC("matff","LyG1-f5r2480bB0.m",[-29935409,-96272542]); AGR.TOC("maxes","LyG1-max1W1",[84121637]); AGR.TOC("maxes","LyG1-max2W1",[-65521363]); AGR.TOC("maxes","LyG1-max3W1",[-14876375]); AGR.TOC("maxes","LyG1-max4W1",[36673662]); AGR.TOC("maxes","LyG1-max5W1",[123699800]); AGR.TOC("maxes","LyG1-max6W1",[-67283536]); AGR.TOC("maxes","LyG1-max7W1",[-98954415]); AGR.TOC("maxes","LyG1-max8W1",[-13258558]); AGR.TOC("maxes","LyG1-max9W1",[33311056]); AGR.TOC("cyclic","LyG1-cycW1",[-35173790]); AGR.TOC("cyc2ccl","LyG1cycW1-cclsW1",[-40764659]); AGR.TOC("find","LyG1-find1",[-93251550]); AGR.TOC("check","LyG1-check1",[53141382]); # M AGR.GRP("spor","M","M"); AGR.TOC("find","MG1-find1",[-31705853]); AGR.TOC("check","MG1-check1",[-44568560]); # M3max7 AGR.GRP("spor","M","M3max7"); AGR.TOC("matff","M3max7G0-f3r38B0.m",[-97335535,130920706,-68939516,63018560]); # Mmax10 AGR.GRP("spor","M","Mmax10"); AGR.TOC("perm","Mmax10G0-p1032192B0.m",[18677102,-120278726]); # Mmax11 AGR.GRP("spor","M","Mmax11"); AGR.TOC("perm","Mmax11G0-p805896B0.m",[80835450,17005428]); AGR.TOC("matff","Mmax11G0-f3r204B0.m",[-68979527,97267981]); # Mmax12 AGR.GRP("spor","M","Mmax12"); AGR.TOC("matff","Mmax12G0-f5r135B0.m",[-41923899,-68468649]); # Mmax13 AGR.GRP("spor","M","Mmax13"); AGR.TOC("perm","Mmax13G0-p3369B0.m",[-124454153,-118539307]); # Mmax14 AGR.GRP("spor","M","Mmax14"); AGR.TOC("perm","Mmax14G0-p34992B0.m",[36007341,16238952]); AGR.TOC("perm","Mmax14G0-p69984B0.m",[-19023274,21953817]); # Mmax15 AGR.GRP("spor","M","Mmax15"); AGR.TOC("perm","Mmax15G0-p85293B0.m",[45592030,24658568]); AGR.TOC("perm","Mmax15G0-p113724B0.m",[8153441,-11541249]); AGR.TOC("perm","Mmax15G0-p227448B0.m",[-117512269,18905903]); # Mmax15q1 AGR.GRP("spor","M","Mmax15q1"); AGR.TOC("perm","Mmax15q1G0-p6561B0.m",[55971037,-89489113]); # Mmax15q2 AGR.GRP("spor","M","Mmax15q2"); AGR.TOC("perm","Mmax15q2G0-p1404B0.m",[4489106,-73235772]); # Mmax15q3 AGR.GRP("spor","M","Mmax15q3"); AGR.TOC("perm","Mmax15q3G0-p108B0.m",[94046920,-133086079]); # Mmax16 AGR.GRP("spor","M","Mmax16"); AGR.TOC("perm","Mmax16G0-p78125B0.m",[-123466697,-18135321]); AGR.TOC("matff","Mmax16G0-f5r8B0.m",[-129008619,-80013105]); # Mmax17 AGR.GRP("spor","M","Mmax17"); AGR.TOC("perm","Mmax17G0-p2065B0.m",[-24577210,3845541]); # Mmax18 AGR.GRP("spor","M","Mmax18"); AGR.TOC("perm","Mmax18G0-p17B0.m",[-96374399,84665195]); # Mmax19 AGR.GRP("spor","M","Mmax19"); AGR.TOC("perm","Mmax19G0-p7750B0.m",[9717373,-57055253]); AGR.TOC("perm","Mmax19G0-p46500B0.m",[32384318,25040051]); AGR.TOC("perm","Mmax19G0-p96875B0.m",[-78036431,91495778]); AGR.TOC("matff","Mmax19G0-f5r46B0.m",[-128678362,85752621]); # Mmax20 AGR.GRP("spor","M","Mmax20"); AGR.TOC("perm","Mmax20G0-p30B0.m",[20272089,-84261147]); # Mmax21 AGR.GRP("spor","M","Mmax21"); AGR.TOC("perm","Mmax21G0-p518B0.m",[26532979,-91226104]); AGR.TOC("perm","Mmax21G0-p3653B0.m",[64063784,113703956]); AGR.TOC("matff","Mmax21G0-f2r28B0.m",[-26612517,-65459450]); # Mmax22 AGR.GRP("spor","M","Mmax22"); AGR.TOC("perm","Mmax22G0-p750B0.m",[57129072,7477813]); AGR.TOC("perm","Mmax22G0-p15625B0.m",[-116581289,-57343609]); # Mmax23 AGR.GRP("spor","M","Mmax23"); AGR.TOC("perm","Mmax23G0-p184B0.m",[-13866898,-55917792]); AGR.TOC("perm","Mmax23G0-p524B0.m",[127804996,-76894010]); AGR.TOC("matff","Mmax23G0-f2r22B0.m",[77850203,-95111381]); # Mmax24 AGR.GRP("spor","M","Mmax24"); AGR.TOC("perm","Mmax24G0-p16807B0.m",[-96132444,56610806]); AGR.TOC("matff","Mmax24G0-f7r6B0.m",[-61000562,23163086]); # Mmax25 AGR.GRP("spor","M","Mmax25"); AGR.TOC("perm","Mmax25G0-p151B0.m",[4610688,-7957974]); # Mmax26 AGR.GRP("spor","M","Mmax26"); AGR.TOC("perm","Mmax26G0-p36B0.m",[-78507803,6093542]); # Mmax27 AGR.GRP("spor","M","Mmax27"); AGR.TOC("perm","Mmax27G0-p17B0.m",[14263291,22525490]); # Mmax28 AGR.GRP("spor","M","Mmax28"); AGR.TOC("perm","Mmax28G0-p625B0.m",[-127973830,34552176]); AGR.TOC("matff","Mmax28G0-f5r5B0.m",[89882878,77104098]); # Mmax29 AGR.GRP("spor","M","Mmax29"); AGR.TOC("perm","Mmax29G0-p392B0.m",[-17293048,74987613]); AGR.TOC("perm","Mmax29G0-p2401B0.m",[-78383939,123860282]); AGR.TOC("matff","Mmax29G0-f7r7B0.m",[112461751,-115478207]); # Mmax30 AGR.GRP("spor","M","Mmax30"); AGR.TOC("perm","Mmax30G0-p21B0.m",[-97695841,20991856]); # Mmax31 AGR.GRP("spor","M","Mmax31"); AGR.TOC("perm","Mmax31G0-p15B0.m",[-40663314,111091613]); # Mmax32 AGR.GRP("spor","M","Mmax32"); AGR.TOC("perm","Mmax32G0-p24B0.m",[60571607,112921406]); # Mmax33 AGR.GRP("spor","M","Mmax33"); AGR.TOC("perm","Mmax33G0-p169B0.m",[93753111,15633434]); AGR.TOC("matff","Mmax33G0-f13r3B0.m",[27954821,-122983683]); # Mmax34 AGR.GRP("spor","M","Mmax34"); AGR.TOC("perm","Mmax34G0-p57B0.m",[-43311648,73396022]); # Mmax35 AGR.GRP("spor","M","Mmax35"); AGR.TOC("perm","Mmax35G0-p39B0.m",[-9590504,97350065]); # Mmax36 AGR.GRP("spor","M","Mmax36"); AGR.TOC("perm","Mmax36G0-p2197B0.m",[83587471,-26703514]); AGR.TOC("matff","Mmax36G0-f13r4B0.m",[-99724456,-47703948]); # Mmax39 AGR.GRP("spor","M","Mmax39"); AGR.TOC("perm","Mmax39G0-p121B0.m",[-18318182,-28117149]); AGR.TOC("matff","Mmax39G0-f11r3B0.m",[-39573731,-15426602]); # Mmax4 AGR.GRP("spor","M","Mmax4"); AGR.TOC("matff","Mmax4G0-f2r1708B0.m",[-90172041,-56342351]); # Mmax41 AGR.GRP("spor","M","Mmax41"); AGR.TOC("perm","Mmax41G0-p49B0.m",[110691146,79808877]); AGR.TOC("matff","Mmax41G0-f7r3B0.m",[-60576044,65702456]); # Mmax43 AGR.GRP("spor","M","Mmax43"); AGR.TOC("perm","Mmax43G0-p41B0.m",[-31842605,-77703055]); # Mmax6 AGR.GRP("spor","M","Mmax6"); AGR.TOC("perm","Mmax6G0-p294912B0.m",[88770226,29440698]); # Mmax7 AGR.GRP("spor","M","Mmax7"); AGR.TOC("matff","Mmax7G0-f3r78B0.m",[-60481712,-11921347,-87256435]); # Mmax9 AGR.GRP("spor","M","Mmax9"); AGR.TOC("matff","Mmax9G0-f2r250B0.m",[119882445,-110292395]); # M11 AGR.GRP("spor","M11","M11"); AGR.TOC("perm","M11G1-p11B0.m",[-23242334,84686582]); AGR.TOC("perm","M11G1-p12B0.m",[97614119,-100540349]); AGR.TOC("perm","M11G1-p55B0.m",[-96772320,-36474778]); AGR.TOC("perm","M11G1-p66B0.m",[9740518,133760186]); AGR.TOC("perm","M11G1-p165B0.m",[110061815,-44393461]); AGR.TOC("matff","M11G1-f2r10B0.m",[127264365,-86026089]); AGR.TOC("matff","M11G1-f2r32B0.m",[-102853569,-48330032]); AGR.TOC("matff","M11G1-f2r44B0.m",[-119533246,-45775323]); AGR.TOC("matff","M11G1-f3r5aB0.m",[68650191,57900817]); AGR.TOC("matff","M11G1-f3r5bB0.m",[74015297,130147793]); AGR.TOC("matff","M11G1-f3r10aB0.m",[83366269,67157210]); AGR.TOC("matff","M11G1-f3r10bB0.m",[128973873,33625375]); AGR.TOC("matff","M11G1-f3r10cB0.m",[10369459,45060681]); AGR.TOC("matff","M11G1-f3r24B0.m",[24068442,-125977934]); AGR.TOC("matff","M11G1-f3r45B0.m",[1493310,-100498939]); AGR.TOC("matff","M11G1-f4r16aB0.m",[125550197,-50883640]); AGR.TOC("matff","M11G1-f4r16bB0.m",[21425449,53740060]); AGR.TOC("matff","M11G1-f5r10aB0.m",[8511433,126827892]); AGR.TOC("matff","M11G1-f5r11B0.m",[-133249663,83948554]); AGR.TOC("matff","M11G1-f5r16aB0.m",[-51162984,129285556]); AGR.TOC("matff","M11G1-f5r16bB0.m",[125703736,129424194]); AGR.TOC("matff","M11G1-f5r20B0.m",[107484105,25865804]); AGR.TOC("matff","M11G1-f5r45B0.m",[-39522961,130380806]); AGR.TOC("matff","M11G1-f5r55B0.m",[-88501284,-77523996]); AGR.TOC("matff","M11G1-f11r9B0.m",[-12680777,119649168]); AGR.TOC("matff","M11G1-f11r10aB0.m",[114488862,-54564471]); AGR.TOC("matff","M11G1-f11r10bB0.m",[78585948,-35885917]); AGR.TOC("matff","M11G1-f11r11B0.m",[-47486067,25146697]); AGR.TOC("matff","M11G1-f11r16B0.m",[96969304,64712245]); AGR.TOC("matff","M11G1-f11r44B0.m",[102913891,-120563489]); AGR.TOC("matff","M11G1-f11r55B0.m",[24089776,-77958630]); AGR.TOC("matff","M11G1-f25r10bB0.m",[-128941494,-19184706]); AGR.TOC("matff","M11G1-f25r10cB0.m",[87488062,-91620163]); AGR.TOC("matint","M11G1-Zr10aB0.g",[42919820]); AGR.TOC("matint","M11G1-Zr11B0.g",[63654078]); AGR.TOC("matint","M11G1-Zr20B0.g",[41705437]); AGR.TOC("matint","M11G1-Zr32B0.g",[-61588475]); AGR.TOC("matint","M11G1-Zr44B0.g",[12272531]); AGR.TOC("matint","M11G1-Zr45B0.g",[85806096]); AGR.TOC("matint","M11G1-Zr55B0.g",[2315188]); AGR.TOC("matalg","M11G1-Ar10bB0.g",[-69763370]); AGR.TOC("matalg","M11G1-Ar10cB0.g",[55047378]); AGR.TOC("maxes","M11G1-max1W1",[-87639153]); AGR.TOC("maxes","M11G1-max2W1",[31931707]); AGR.TOC("maxes","M11G1-max3W1",[-22285271]); AGR.TOC("maxes","M11G1-max4W1",[-53275818]); AGR.TOC("maxes","M11G1-max5W1",[81859818]); AGR.TOC("classes","M11G1-cclsW1",[44035324]); AGR.TOC("cyclic","M11G1-cycW1",[-119662999]); AGR.TOC("cyc2ccl","M11G1cycW1-cclsW1",[-92464422]); AGR.TOC("maxstd","M11G1max1W1-M10G1W1",[-93789632]); AGR.TOC("maxstd","M11G1max2W1-L211G1W1",[-93789632]); AGR.TOC("maxstd","M11G1max4W1-S5G1W1",[-93789632]); AGR.TOC("find","M11G1-find1",[-66199957]); AGR.TOC("check","M11G1-check1",[-12040319]); AGR.TOC("pres","M11G1-P1",[-11084023]); # 2M12 AGR.GRP("spor","M12","2M12"); AGR.TOC("perm","2M12G1-p24aB0.m",[-1273465,65254220]); AGR.TOC("matff","2M12G1-f3r6bB0.m",[121578910,129273462]); AGR.TOC("matff","2M12G1-f5r12B0.m",[-101075401,-1460971]); AGR.TOC("matint","2M12G1-Zr12B0.g",[68025268]); AGR.TOC("matint","2M12G1-Zr120B0.g",[-79235244]); AGR.TOC("matint","2M12G1-Zr220B0.g",[-49629620]); AGR.TOC("pres","2M12G1-P1",[-20608944]); # 2M12d2 AGR.GRP("spor","M12","2M12d2"); AGR.TOC("perm","2M12d2G1-p48B0.m",[-30364446,-627565]); AGR.TOC("matff","2M12d2G1-f3r10aB0.m",[-34996601,-118846721]); AGR.TOC("matff","2M12d2G1-f3r10bB0.m",[-76717690,118738579]); AGR.TOC("matff","2M12d2G1-f3r10cB0.m",[-35597745,-118495992]); AGR.TOC("matff","2M12d2G1-f3r12B0.m",[60451266,-32378584]); AGR.TOC("matff","2M12d2G1-f3r12aB0.m",[103057523,-62320936]); AGR.TOC("matff","2M12d2G1-f3r88aB0.m",[-41083111,2706141]); AGR.TOC("matff","2M12d2G1-f3r168aB0.m",[-67470713,-127337236]); AGR.TOC("matff","2M12d2G1-f5r120bB0.m",[-82693885,-32740698]); AGR.TOC("matff","2M12d2G1-f5r220aB0.m",[25416081,-95738572]); AGR.TOC("matff","2M12d2G1-f5r320aB0.m",[-134190359,104982855]); AGR.TOC("matff","2M12d2G1-f11r10aB0.m",[112952395,32411565]); AGR.TOC("matff","2M12d2G1-f11r10bB0.m",[-64596746,-67029675]); AGR.TOC("matff","2M12d2G1-f11r12aB0.m",[-127522320,-35727857]); AGR.TOC("matff","2M12d2G1-f11r32aB0.m",[-105789088,-97647879]); AGR.TOC("matff","2M12d2G1-f11r88aB0.m",[54914992,-126426826]); AGR.TOC("matff","2M12d2G1-f11r108aB0.m",[-53667847,82216193]); AGR.TOC("matff","2M12d2G1-f11r220aB0.m",[-8950103,-128269568]); AGR.TOC("matff","2M12d2G1-f25r10aB0.m",[57623869,-87407490]); AGR.TOC("matff","2M12d2G1-f25r10bB0.m",[57623869,15898170]); AGR.TOC("matff","2M12d2G1-f25r12aB0.m",[125938463,123350688]); AGR.TOC("matff","2M12d2G1-f25r32bB0.m",[63923528,-60675183]); # M12 AGR.GRP("spor","M12","M12"); AGR.TOC("perm","M12G1-p12aB0.m",[-55292532,-11034135]); AGR.TOC("perm","M12G1-p12bB0.m",[70136775,-42596378]); AGR.TOC("perm","M12G1-p66aB0.m",[16716104,85280492]); AGR.TOC("perm","M12G1-p66bB0.m",[16716104,-119705959]); AGR.TOC("matff","M12G1-f2r10B0.m",[-86054196,-117728977]); AGR.TOC("matff","M12G1-f2r44B0.m",[5391720,-62166224]); AGR.TOC("matff","M12G1-f2r144B0.m",[101904902,53296002]); AGR.TOC("matff","M12G1-f3r10aB0.m",[30472542,-78417955]); AGR.TOC("matff","M12G1-f3r15bB0.m",[47152398,-27722653]); AGR.TOC("matff","M12G1-f3r34B0.m",[117253362,13257774]); AGR.TOC("matff","M12G1-f3r45aB0.m",[76737617,86109308]); AGR.TOC("matff","M12G1-f3r45bB0.m",[47791811,116448062]); AGR.TOC("matff","M12G1-f3r54B0.m",[19871925,-54650667]); AGR.TOC("matff","M12G1-f3r99B0.m",[39128640,48059071]); AGR.TOC("matff","M12G1-f4r16aB0.m",[-32139946,-84977167]); AGR.TOC("matff","M12G1-f4r16bB0.m",[1105818,-114535987]); AGR.TOC("matff","M12G1-f5r11aB0.m",[-671395,131486522]); AGR.TOC("matff","M12G1-f5r16bB0.m",[-119459442,21159535]); AGR.TOC("matff","M12G1-f5r45B0.m",[-9586441,100658622]); AGR.TOC("matff","M12G1-f5r55aB0.m",[50494097,-122759986]); AGR.TOC("matff","M12G1-f5r55cB0.m",[21533278,-123660069]); AGR.TOC("matff","M12G1-f5r66B0.m",[98010649,-114174962]); AGR.TOC("matff","M12G1-f5r78B0.m",[-130685797,93378717]); AGR.TOC("matff","M12G1-f5r98B0.m",[126662635,-35501250]); AGR.TOC("matff","M12G1-f5r120B0.m",[9595464,80432835]); AGR.TOC("matff","M12G1-f11r11aB0.m",[117263727,-65625522]); AGR.TOC("matff","M12G1-f11r16B0.m",[7038217,126342649]); AGR.TOC("matff","M12G1-f11r29B0.m",[46845011,75944568]); AGR.TOC("matff","M12G1-f11r53B0.m",[-22816443,-99210671]); AGR.TOC("matff","M12G1-f11r55aB0.m",[78596492,112224851]); AGR.TOC("matff","M12G1-f11r55cB0.m",[109913466,-103557516]); AGR.TOC("matff","M12G1-f11r66B0.m",[-124182891,-60073630]); AGR.TOC("matff","M12G1-f11r91B0.m",[-51340364,-33111912]); AGR.TOC("matff","M12G1-f11r99B0.m",[-97513304,-119552486]); AGR.TOC("matff","M12G1-f11r176B0.m",[122185646,-46090498]); AGR.TOC("matint","M12G1-Zr11aB0.g",[-19460267]); AGR.TOC("matint","M12G1-Zr11bB0.g",[-78777004]); AGR.TOC("matint","M12G1-Zr32B0.g",[-78965106]); AGR.TOC("matint","M12G1-Zr45B0.g",[-45893207]); AGR.TOC("matint","M12G1-Zr54B0.g",[18721185]); AGR.TOC("matint","M12G1-Zr55aB0.g",[-132387311]); AGR.TOC("matint","M12G1-Zr55bB0.g",[22269619]); AGR.TOC("matint","M12G1-Zr55cB0.g",[49013808]); AGR.TOC("matint","M12G1-Zr66B0.g",[-49745577]); AGR.TOC("matint","M12G1-Zr99B0.g",[127931032]); AGR.TOC("matint","M12G1-Zr120B0.g",[-88353220]); AGR.TOC("matint","M12G1-Zr144B0.g",[55976025]); AGR.TOC("matint","M12G1-Zr176B0.g",[37102922]); AGR.TOC("maxes","M12G1-max1W1",[-74887234]); AGR.TOC("maxes","M12G1-max2W1",[-103508023]); AGR.TOC("maxes","M12G1-max3W1",[-46947109]); AGR.TOC("maxes","M12G1-max4W1",[122531757]); AGR.TOC("maxes","M12G1-max5W1",[-72442915]); AGR.TOC("maxes","M12G1-max6W1",[-115977755]); AGR.TOC("maxes","M12G1-max7W1",[-7727314]); AGR.TOC("maxes","M12G1-max8W1",[-25167283]); AGR.TOC("maxes","M12G1-max9W1",[-119063057]); AGR.TOC("maxes","M12G1-max9W2",[103098466]); AGR.TOC("maxes","M12G1-max10W1",[21615072]); AGR.TOC("maxes","M12G1-max11W1",[31496255]); AGR.TOC("cyclic","M12G1-cycW1",[-43136937]); AGR.TOC("cyc2ccl","M12G1cycW1-cclsW1",[-83580916]); AGR.TOC("find","M12G1-find1",[114877484]); AGR.TOC("check","M12G1-check1",[10112000]); AGR.TOC("pres","M12G1-P1",[-104566534]); # M12d2 AGR.GRP("spor","M12","M12d2"); AGR.TOC("perm","M12d2G1-p24B0.m",[85361421,36218677]); AGR.TOC("matff","M12d2G1-f2r10B0.m",[-39183640,98958554]); AGR.TOC("matff","M12d2G1-f2r32B0.m",[69559674,55891503]); AGR.TOC("matff","M12d2G1-f2r44B0.m",[-114562868,54725308]); AGR.TOC("matff","M12d2G1-f2r144B0.m",[119502516,-18771909]); AGR.TOC("matff","M12d2G1-f3r20aB0.m",[-46752782,-108429068]); AGR.TOC("matff","M12d2G1-f3r30aB0.m",[24169138,-130765309]); AGR.TOC("matff","M12d2G1-f3r34aB0.m",[-130589788,-129061493]); AGR.TOC("matff","M12d2G1-f3r45aB0.m",[-70607796,-57393951]); AGR.TOC("matff","M12d2G1-f3r90aB0.m",[-55377240,-61327165]); AGR.TOC("matff","M12d2G1-f3r99aB0.m",[-109489496,3522822]); AGR.TOC("matff","M12d2G1-f5r22aB0.m",[-126221984,-74607577]); AGR.TOC("matff","M12d2G1-f5r32aB0.m",[36044101,23981739]); AGR.TOC("matff","M12d2G1-f5r45aB0.m",[-30491799,115673903]); AGR.TOC("matff","M12d2G1-f5r55aB0.m",[-35236987,-31452685]); AGR.TOC("matff","M12d2G1-f5r66aB0.m",[-33014102,-99933291]); AGR.TOC("matff","M12d2G1-f5r78aB0.m",[-18026437,34364040]); AGR.TOC("matff","M12d2G1-f5r98aB0.m",[22041299,-66452079]); AGR.TOC("matff","M12d2G1-f5r110aB0.m",[-30352804,81435913]); AGR.TOC("matff","M12d2G1-f9r54aB0.m",[32626589,25634529]); AGR.TOC("matff","M12d2G1-f11r16aB0.m",[-36796290,-43495409]); AGR.TOC("matff","M12d2G1-f11r22aB0.m",[-105783911,98859320]); AGR.TOC("matff","M12d2G1-f11r29aB0.m",[11546275,96104565]); AGR.TOC("matff","M12d2G1-f11r53aB0.m",[-103408143,55355629]); AGR.TOC("matff","M12d2G1-f11r55aB0.m",[-78072260,-3025683]); AGR.TOC("matff","M12d2G1-f11r66aB0.m",[-100452523,75555621]); AGR.TOC("matff","M12d2G1-f11r91aB0.m",[22098706,56302525]); AGR.TOC("matff","M12d2G1-f11r99aB0.m",[47013209,-19879758]); AGR.TOC("matff","M12d2G1-f11r110aB0.m",[114279619,38742074]); AGR.TOC("matff","M12d2G1-f11r176aB0.m",[-54368026,126683633]); AGR.TOC("matff","M12d2G1-f25r120aB0.m",[-106674804,-45635490]); AGR.TOC("maxes","M12d2G1-max2W1",[80704822]); AGR.TOC("maxes","M12d2G1-max2W2",[-15618703]); AGR.TOC("maxes","M12d2G1-max3W1",[-67457384]); AGR.TOC("maxes","M12d2G1-max3W2",[-5625195]); AGR.TOC("maxes","M12d2G1-max4W1",[52870876]); AGR.TOC("maxes","M12d2G1-max5W1",[61547913]); AGR.TOC("maxes","M12d2G1-max6W1",[77063171]); AGR.TOC("maxes","M12d2G1-max7W1",[-81985076]); AGR.TOC("maxes","M12d2G1-max8W1",[92948753]); AGR.TOC("maxes","M12d2G1-max9W1",[-76208250]); AGR.TOC("cyclic","M12d2G1-cycW1",[132557223]); AGR.TOC("find","M12d2G1-find1",[-122825568]); AGR.TOC("check","M12d2G1-check1",[-27876306]); AGR.TOC("pres","M12d2G1-P1",[-133855910]); AGR.TOC("pres","M12d2G1-P2",[-72708144]); # 12M22 AGR.GRP("spor","M22","12M22"); AGR.TOC("perm","12M22G1-p31680aB0.m",[9906127,-59852062]); AGR.TOC("matff","12M22G1-f25r48aB0.m",[-46557856,81641584]); AGR.TOC("matff","12M22G1-f25r120aB0.m",[-125088758,-2506418]); AGR.TOC("matff","12M22G1-f25r120bB0.m",[-78561283,-105812013]); AGR.TOC("matff","12M22G1-f25r144aB0.m",[-29975526,-65673389]); AGR.TOC("matff","12M22G1-f25r144bB0.m",[127272957,-130662528]); AGR.TOC("matff","12M22G1-f25r336aB0.m",[-37713301,-105379825]); AGR.TOC("matff","12M22G1-f49r120aB0.m",[-63290246,52705833]); AGR.TOC("matff","12M22G1-f49r120bB0.m",[-79132900,108295515]); AGR.TOC("matff","12M22G1-f49r144aB0.m",[-94406601,15940801]); AGR.TOC("matff","12M22G1-f49r336aB0.m",[-51155111,-121195002]); AGR.TOC("matff","12M22G1-f49r336bB0.m",[106595095,-123597501]); AGR.TOC("matff","12M22G1-f121r24aB0.m",[-40536384,104596703]); AGR.TOC("matff","12M22G1-f121r24bB0.m",[23328519,-48149838]); AGR.TOC("matff","12M22G1-f121r96aB0.m",[-48948579,-80134011]); AGR.TOC("matff","12M22G1-f121r120aB0.m",[-115277169,-72547597]); AGR.TOC("matff","12M22G1-f121r120bB0.m",[8658388,-133539247]); AGR.TOC("matff","12M22G1-f121r120cB0.m",[96485657,79917231]); AGR.TOC("matff","12M22G1-f121r120dB0.m",[-30849462,-51073305]); AGR.TOC("matff","12M22G1-f121r144aB0.m",[17917213,-112666056]); AGR.TOC("matff","12M22G1-f121r144bB0.m",[-53370978,103893560]); AGR.TOC("matff","12M22G1-f121r336aB0.m",[-42702128,-13658617]); # 12M22d2 AGR.GRP("spor","M22","12M22d2"); AGR.TOC("matff","12M22d2G1-f11r48B0.m",[69671352,-16302678]); # 2M22 AGR.GRP("spor","M22","2M22"); AGR.TOC("perm","2M22G1-p352aB0.m",[56143277,128925707]); AGR.TOC("perm","2M22G1-p660B0.m",[95495599,37777135]); AGR.TOC("matff","2M22G1-f3r56B0.m",[-61287125,109003991]); AGR.TOC("matff","2M22G1-f3r120B0.m",[-121061359,115873279]); AGR.TOC("matff","2M22G1-f3r126bB0.m",[121656924,94851182]); AGR.TOC("matff","2M22G1-f3r210B0.m",[-115777653,74358765]); AGR.TOC("matff","2M22G1-f5r28aB0.m",[125168210,-91335665]); AGR.TOC("matff","2M22G1-f5r28bB0.m",[69803757,-17568613]); AGR.TOC("matff","2M22G1-f5r120B0.m",[-56121636,101087527]); AGR.TOC("matff","2M22G1-f5r210B0.m",[128119568,45453382]); AGR.TOC("matff","2M22G1-f5r330B0.m",[16155567,122563512]); AGR.TOC("matff","2M22G1-f5r440B0.m",[-33733768,-627019]); AGR.TOC("matff","2M22G1-f7r10B0.m",[-22029031,84566230]); AGR.TOC("matff","2M22G1-f7r56B0.m",[-91585793,-91433509]); AGR.TOC("matff","2M22G1-f7r120B0.m",[-22293731,15728191]); AGR.TOC("matff","2M22G1-f7r210B0.m",[-50099914,-99706141]); AGR.TOC("matff","2M22G1-f7r252B0.m",[-129684483,12894509]); AGR.TOC("matff","2M22G1-f7r308B0.m",[-24314328,-42732558]); AGR.TOC("matff","2M22G1-f7r320B0.m",[-101701630,-30746747]); AGR.TOC("matff","2M22G1-f9r10aB0.m",[17201638,-128074961]); AGR.TOC("matff","2M22G1-f9r10bB0.m",[-95892414,102336354]); AGR.TOC("matff","2M22G1-f9r154B0.m",[-116228794,83263333]); AGR.TOC("matff","2M22G1-f11r10aB0.m",[-134098178,-53384331]); AGR.TOC("matff","2M22G1-f11r10bB0.m",[-10782644,82512695]); AGR.TOC("matff","2M22G1-f11r56B0.m",[106482032,-121137932]); AGR.TOC("matff","2M22G1-f11r64B0.m",[22318679,-70253560]); AGR.TOC("matff","2M22G1-f11r126B0.m",[-7631317,-11671494]); AGR.TOC("matff","2M22G1-f11r308B0.m",[-54648878,128686514]); AGR.TOC("matff","2M22G1-f11r330B0.m",[102617152,65024357]); AGR.TOC("matff","2M22G1-f11r440B0.m",[28399241,-2102835]); AGR.TOC("matff","2M22G1-f25r10aB0.m",[-98977995,-27415385]); AGR.TOC("matff","2M22G1-f25r10bB0.m",[-99451378,5112945]); AGR.TOC("matff","2M22G1-f25r126aB0.m",[-57218262,15084879]); AGR.TOC("matff","2M22G1-f49r126aB0.m",[13107552,-131187163]); AGR.TOC("matff","2M22G1-f49r126bB0.m",[131551529,-4166631]); AGR.TOC("matff","2M22G1-f49r154aB0.m",[-121191028,-107331814]); AGR.TOC("matff","2M22G1-f49r154bB0.m",[73554621,-61424212]); AGR.TOC("matff","2M22G1-f121r154aB0.m",[-133974502,-84368600]); AGR.TOC("matff","2M22G1-f121r154bB0.m",[-45934554,119466995]); AGR.TOC("matint","2M22G1-Zr20B0.g",[-63673770]); AGR.TOC("matint","2M22G1-Zr56B0.g",[-103613096]); AGR.TOC("matint","2M22G1-Zr120B0.g",[-37007248]); AGR.TOC("matint","2M22G1-Zr210B0.g",[114162666]); AGR.TOC("matmodn","2M22G1-Z4r10aB0.g",[-20114809]); # 2M22d2 AGR.GRP("spor","M22","2M22d2"); AGR.TOC("matff","2M22d2G1-f7r10aB0.m",[-89057001,-348588]); AGR.TOC("matff","2M22d2G1-f9r10bB0.m",[-1432588,-125687051]); AGR.TOC("matff","2M22d2G1-f11r10bB0.m",[66479975,-36612750]); AGR.TOC("matff","2M22d2G1-f25r10bB0.m",[26926212,123375069]); # 3M22 AGR.GRP("spor","M22","3M22"); AGR.TOC("perm","3M22G1-p693B0.m",[-90950774,-36534057]); AGR.TOC("perm","3M22G1-p990B0.m",[88405894,15556203]); AGR.TOC("perm","3M22G1-p2016B0.m",[42690420,-31772423]); AGR.TOC("matff","3M22G1-f4r6aB0.m",[71234966,-87182868]); AGR.TOC("matff","3M22G1-f4r15aB0.m",[132279547,39475398]); AGR.TOC("matff","3M22G1-f4r45aB0.m",[23089284,-41495564]); AGR.TOC("matff","3M22G1-f4r45bB0.m",[-92557253,-77110222]); AGR.TOC("matff","3M22G1-f4r84aB0.m",[3098833,69483187]); AGR.TOC("matff","3M22G1-f4r384aB0.m",[53704323,89379282]); AGR.TOC("matff","3M22G1-f7r21aB0.m",[-29699237,-14040638]); AGR.TOC("matff","3M22G1-f7r45aB0.m",[7805648,52649302]); AGR.TOC("matff","3M22G1-f7r99aB0.m",[26796142,-65889647]); AGR.TOC("matff","3M22G1-f7r210aB0.m",[-103908876,-11419203]); AGR.TOC("matff","3M22G1-f7r210bB0.m",[7176595,94287278]); AGR.TOC("matff","3M22G1-f7r231aB0.m",[93436445,35648684]); AGR.TOC("matff","3M22G1-f7r231bB0.m",[133208162,52368388]); AGR.TOC("matff","3M22G1-f7r285aB0.m",[-91260757,105658476]); AGR.TOC("matff","3M22G1-f25r21aB0.m",[60937788,3361834]); AGR.TOC("matff","3M22G1-f25r45aB0.m",[-43147185,-103043419]); AGR.TOC("matff","3M22G1-f25r45bB0.m",[-9112148,70548030]); AGR.TOC("matff","3M22G1-f25r78aB0.m",[118019622,-68687596]); AGR.TOC("matff","3M22G1-f25r105aB0.m",[107285554,-73950486]); AGR.TOC("matff","3M22G1-f25r105bB0.m",[-6246678,-49079695]); AGR.TOC("matff","3M22G1-f25r153aB0.m",[85663391,-121210049]); AGR.TOC("matff","3M22G1-f25r210aB0.m",[-105966657,10593901]); AGR.TOC("matff","3M22G1-f25r231aB0.m",[8691771,-46254777]); AGR.TOC("matff","3M22G1-f25r330aB0.m",[-131760822,-83048131]); AGR.TOC("matff","3M22G1-f49r105aB0.m",[93962384,-67672397]); AGR.TOC("matff","3M22G1-f49r105bB0.m",[-59095893,109124393]); AGR.TOC("matff","3M22G1-f121r21aB0.m",[-39874224,-34796923]); AGR.TOC("matff","3M22G1-f121r21a1B0.m",[17337245,-117197209]); AGR.TOC("matff","3M22G1-f121r45aB0.m",[-76674299,2389962]); AGR.TOC("matff","3M22G1-f121r45bB0.m",[-74576484,82056758]); AGR.TOC("matff","3M22G1-f121r84aB0.m",[-25406504,-66805706]); AGR.TOC("matff","3M22G1-f121r99aB0.m",[127801704,-93344375]); AGR.TOC("matff","3M22G1-f121r210aB0.m",[-93910269,55722704]); AGR.TOC("matff","3M22G1-f121r231aB0.m",[56839442,115186698]); AGR.TOC("matff","3M22G1-f121r231bB0.m",[-24203685,23469173]); AGR.TOC("matff","3M22G1-f121r330aB0.m",[124278958,96479011]); # 3M22d2 AGR.GRP("spor","M22","3M22d2"); AGR.TOC("matff","3M22d2G1-f2r12B0.m",[6840548,-26232830]); # 4M22 AGR.GRP("spor","M22","4M22"); AGR.TOC("perm","4M22G1-p4928aB0.m",[11585037,105129294]); AGR.TOC("perm","4M22G1-p4928bB0.m",[61651366,86992085]); AGR.TOC("matff","4M22G1-f5r160aB0.m",[-24431069,5648069]); AGR.TOC("matff","4M22G1-f5r160bB0.m",[-91637796,108820756]); AGR.TOC("matff","4M22G1-f5r560aB0.m",[49697557,42774244]); AGR.TOC("matff","4M22G1-f9r56aB0.m",[-4511476,-85229496]); AGR.TOC("matff","4M22G1-f9r56bB0.m",[-85284070,-63400015]); AGR.TOC("matff","4M22G1-f9r64aB0.m",[11491563,-57962702]); AGR.TOC("matff","4M22G1-f9r144aB0.m",[12095402,83939207]); AGR.TOC("matff","4M22G1-f9r144bB0.m",[16268112,21905840]); AGR.TOC("matff","4M22G1-f9r160aB0.m",[8089512,-50786849]); AGR.TOC("matff","4M22G1-f9r160bB0.m",[-110141442,84589679]); AGR.TOC("matff","4M22G1-f25r56aB0.m",[-64919639,110217711]); AGR.TOC("matff","4M22G1-f25r56bB0.m",[-66086722,-42618990]); AGR.TOC("matff","4M22G1-f25r88aB0.m",[-7028213,-55102756]); AGR.TOC("matff","4M22G1-f25r88bB0.m",[-89593330,-14296138]); AGR.TOC("matff","4M22G1-f49r16aB0.m",[-83990831,-17954821]); AGR.TOC("matff","4M22G1-f49r56aB0.m",[104359104,-130972437]); AGR.TOC("matff","4M22G1-f49r56bB0.m",[64863017,-25151610]); AGR.TOC("matff","4M22G1-f49r144aB0.m",[32202062,110809734]); AGR.TOC("matff","4M22G1-f49r160aB0.m",[10828994,61470740]); AGR.TOC("matff","4M22G1-f49r560aB0.m",[-118236950,123907225]); AGR.TOC("matff","4M22G1-f121r56aB0.m",[102752874,81508189]); AGR.TOC("matff","4M22G1-f121r56bB0.m",[-50141594,117960335]); AGR.TOC("matff","4M22G1-f121r144aB0.m",[-116885944,-57532000]); AGR.TOC("matff","4M22G1-f121r144bB0.m",[32299598,-87521745]); AGR.TOC("matff","4M22G1-f121r160aB0.m",[-112598365,-69807599]); AGR.TOC("matff","4M22G1-f121r176aB0.m",[-77732242,38321848]); # 4M22d2 AGR.GRP("spor","M22","4M22d2"); AGR.TOC("matff","4M22d2G1-f7r32B0.m",[95409404,100722998]); # 6M22 AGR.GRP("spor","M22","6M22"); AGR.TOC("perm","6M22G1-p1980B0.m",[-34361411,-22911521]); AGR.TOC("matff","6M22G1-f7r54aB0.m",[9967088,-85473402]); AGR.TOC("matff","6M22G1-f7r66aB0.m",[28289005,20396332]); AGR.TOC("matff","6M22G1-f7r210aB0.m",[21913981,-30012010]); AGR.TOC("matff","6M22G1-f7r252aB0.m",[-55729871,46346398]); AGR.TOC("matff","6M22G1-f7r330aB0.m",[-100871511,-28803112]); AGR.TOC("matff","6M22G1-f7r420aB0.m",[-45585257,67096229]); AGR.TOC("matff","6M22G1-f25r66aB0.m",[-75232219,-102853624]); AGR.TOC("matff","6M22G1-f25r66bB0.m",[-97605414,66327552]); AGR.TOC("matff","6M22G1-f25r120aB0.m",[-85156605,94909756]); AGR.TOC("matff","6M22G1-f25r126aB0.m",[-7401864,65424553]); AGR.TOC("matff","6M22G1-f25r126bB0.m",[62266197,-96560539]); AGR.TOC("matff","6M22G1-f25r210aB0.m",[-13142946,4729517]); AGR.TOC("matff","6M22G1-f25r210bB0.m",[84479748,23802815]); AGR.TOC("matff","6M22G1-f25r210cB0.m",[121914827,-17204842]); AGR.TOC("matff","6M22G1-f25r330aB0.m",[24086159,-70084100]); AGR.TOC("matff","6M22G1-f49r126aB0.m",[-66544000,36901116]); AGR.TOC("matff","6M22G1-f49r126bB0.m",[-36437176,-11649204]); AGR.TOC("matff","6M22G1-f49r210bB0.m",[36277584,101781842]); AGR.TOC("matff","6M22G1-f49r210cB0.m",[-104731780,-40717739]); AGR.TOC("matff","6M22G1-f121r36aB0.m",[18342608,125425919]); AGR.TOC("matff","6M22G1-f121r36a1B0.m",[-94823834,-17650354]); AGR.TOC("matff","6M22G1-f121r66aB0.m",[7571032,-98520871]); AGR.TOC("matff","6M22G1-f121r66bB0.m",[110495588,61939331]); AGR.TOC("matff","6M22G1-f121r90aB0.m",[47082380,-107831827]); AGR.TOC("matff","6M22G1-f121r120aB0.m",[-78977570,80520063]); AGR.TOC("matff","6M22G1-f121r174aB0.m",[-26250212,-67037255]); AGR.TOC("matff","6M22G1-f121r210aB0.m",[69887357,-53414700]); AGR.TOC("matff","6M22G1-f121r330aB0.m",[-102575627,10806500]); # 6M22d2 AGR.GRP("spor","M22","6M22d2"); AGR.TOC("matff","6M22d2G1-f11r72B0.m",[50152179,29673410]); # M22 AGR.GRP("spor","M22","M22"); AGR.TOC("perm","M22G1-p22B0.m",[120088212,-117893933]); AGR.TOC("perm","M22G1-p77B0.m",[-60412592,-39004054]); AGR.TOC("perm","M22G1-p176aB0.m",[-117058973,-13255017]); AGR.TOC("perm","M22G1-p176bB0.m",[-71876488,64385171]); AGR.TOC("perm","M22G1-p231B0.m",[-100923681,-20737374]); AGR.TOC("perm","M22G1-p330B0.m",[-67557036,23142407]); AGR.TOC("perm","M22G1-p462aB0.m",[-65976175,23533673]); AGR.TOC("perm","M22G1-p462bB0.m",[-59778880,95539211]); AGR.TOC("perm","M22G1-p462cB0.m",[-49482222,52549893]); AGR.TOC("perm","M22G1-p616B0.m",[-3074412,-115809031]); AGR.TOC("perm","M22G1-p672B0.m",[7640483,-115001890]); AGR.TOC("perm","M22G1-p770B0.m",[120630396,-32668057]); AGR.TOC("matff","M22G1-f2r10aB0.m",[93955492,72279513]); AGR.TOC("matff","M22G1-f2r10bB0.m",[-64432252,-10720956]); AGR.TOC("matff","M22G1-f2r34B0.m",[109181802,69819591]); AGR.TOC("matff","M22G1-f2r98B0.m",[20614323,-91349386]); AGR.TOC("matff","M22G1-f3r21B0.m",[2319237,-40869995]); AGR.TOC("matff","M22G1-f3r49aB0.m",[48294192,10182642]); AGR.TOC("matff","M22G1-f3r49bB0.m",[123534207,114086963]); AGR.TOC("matff","M22G1-f3r55B0.m",[6858684,37531924]); AGR.TOC("matff","M22G1-f3r99B0.m",[108404973,-18754208]); AGR.TOC("matff","M22G1-f3r210B0.m",[12080907,20988418]); AGR.TOC("matff","M22G1-f3r231B0.m",[-122316352,101359885]); AGR.TOC("matff","M22G1-f4r70aB0.m",[-61080913,5645990]); AGR.TOC("matff","M22G1-f4r70bB0.m",[119680241,-57957631]); AGR.TOC("matff","M22G1-f5r21B0.m",[95454839,98341706]); AGR.TOC("matff","M22G1-f5r55B0.m",[86944414,-106029713]); AGR.TOC("matff","M22G1-f5r98B0.m",[27831268,-45715352]); AGR.TOC("matff","M22G1-f5r133B0.m",[-129991529,120806590]); AGR.TOC("matff","M22G1-f5r210B0.m",[103633115,125473720]); AGR.TOC("matff","M22G1-f5r280aB0.m",[-132987247,24183680]); AGR.TOC("matff","M22G1-f5r385B0.m",[57398607,13638594]); AGR.TOC("matff","M22G1-f7r21B0.m",[35391543,72293264]); AGR.TOC("matff","M22G1-f7r45B0.m",[-109057607,114091080]); AGR.TOC("matff","M22G1-f7r54B0.m",[40209085,53790651]); AGR.TOC("matff","M22G1-f7r154B0.m",[-43277479,76833098]); AGR.TOC("matff","M22G1-f7r210B0.m",[-115679524,-44095420]); AGR.TOC("matff","M22G1-f7r231B0.m",[74317215,19149303]); AGR.TOC("matff","M22G1-f7r385B0.m",[-22401150,-21936165]); AGR.TOC("matff","M22G1-f9r45aB0.m",[-101961334,-50630745]); AGR.TOC("matff","M22G1-f11r20B0.m",[-55748559,-113866179]); AGR.TOC("matff","M22G1-f11r45aB0.m",[61322426,-118021428]); AGR.TOC("matff","M22G1-f11r45bB0.m",[117900991,130808780]); AGR.TOC("matff","M22G1-f11r55B0.m",[131181739,-110452977]); AGR.TOC("matff","M22G1-f11r99B0.m",[-69355157,66661936]); AGR.TOC("matff","M22G1-f11r154B0.m",[91700642,-11598460]); AGR.TOC("matff","M22G1-f11r190B0.m",[-78747459,428544]); AGR.TOC("matff","M22G1-f11r231B0.m",[-92735279,82232581]); AGR.TOC("matff","M22G1-f11r385B0.m",[-4174418,39852578]); AGR.TOC("matff","M22G1-f25r45aB0.m",[-32298545,-100748534]); AGR.TOC("matff","M22G1-f49r280aB0.m",[63765143,54000780]); AGR.TOC("matff","M22G1-f49r280bB0.m",[-110919489,-95232644]); AGR.TOC("matint","M22G1-Zr21B0.g",[68782527]); AGR.TOC("matint","M22G1-Zr55B0.g",[-98762146]); AGR.TOC("matint","M22G1-Zr99B0.g",[-64451966]); AGR.TOC("matint","M22G1-Zr154B0.g",[-78499440]); AGR.TOC("matint","M22G1-Zr210B0.g",[-49657556]); AGR.TOC("matint","M22G1-Zr231B0.g",[-75863010]); AGR.TOC("maxes","M22G1-max1W1",[-108162340]); AGR.TOC("maxes","M22G1-max2W1",[86468072]); AGR.TOC("maxes","M22G1-max3W1",[66738939]); AGR.TOC("maxes","M22G1-max4W1",[-72501701]); AGR.TOC("maxes","M22G1-max5W1",[32962252]); AGR.TOC("maxes","M22G1-max6W1",[-12409309]); AGR.TOC("maxes","M22G1-max7W1",[122295071]); AGR.TOC("maxes","M22G1-max7W2",[-54548400]); AGR.TOC("maxes","M22G1-max8W1",[-43185300]); AGR.TOC("cyclic","M22G1-cycW1",[75634248]); AGR.TOC("cyclic","M22G1-cycW2",[79365136]); AGR.TOC("cyc2ccl","M22G1cycW1-cclsW1",[-73021974]); AGR.TOC("find","M22G1-find1",[-22929670]); AGR.TOC("check","M22G1-check1",[-117375842]); AGR.TOC("pres","M22G1-P1",[104320198]); # M22d2 AGR.GRP("spor","M22","M22d2"); AGR.TOC("perm","M22d2G1-p22B0.m",[86602657,-110180846]); AGR.TOC("perm","M22d2G1-p77B0.m",[11661714,-65509390]); AGR.TOC("perm","M22d2G1-p231B0.m",[-1462911,-41392807]); AGR.TOC("perm","M22d2G1-p330B0.m",[-59463654,-62454811]); AGR.TOC("perm","M22d2G1-p352B0.m",[-11066693,124793148]); AGR.TOC("perm","M22d2G1-p616B0.m",[-16850080,-113061237]); AGR.TOC("perm","M22d2G1-p672B0.m",[-9473389,-30463793]); AGR.TOC("matff","M22d2G1-f2r10aB0.m",[-90630307,-128468476]); AGR.TOC("matff","M22d2G1-f2r10bB0.m",[17206676,63639932]); AGR.TOC("matff","M22d2G1-f2r34B0.m",[-89926694,-127454121]); AGR.TOC("matff","M22d2G1-f2r98B0.m",[84593793,107508647]); AGR.TOC("matff","M22d2G1-f2r140B0.m",[67560328,41049421]); AGR.TOC("matff","M22d2G1-f3r21aB0.m",[-92501974,-107109745]); AGR.TOC("matff","M22d2G1-f3r55aB0.m",[-76213947,-10156798]); AGR.TOC("matff","M22d2G1-f3r98B0.m",[59603673,6484183]); AGR.TOC("matff","M22d2G1-f3r99aB0.m",[22980,-10081575]); AGR.TOC("matff","M22d2G1-f3r210aB0.m",[-80001338,-131679871]); AGR.TOC("matff","M22d2G1-f3r231aB0.m",[-133826445,-23325070]); AGR.TOC("matff","M22d2G1-f5r21aB0.m",[-35842635,-17579168]); AGR.TOC("matff","M22d2G1-f5r55aB0.m",[104666460,-133136627]); AGR.TOC("matff","M22d2G1-f5r98aB0.m",[-15665933,10768741]); AGR.TOC("matff","M22d2G1-f5r133aB0.m",[6631388,111796983]); AGR.TOC("matff","M22d2G1-f5r210aB0.m",[-100109991,39935080]); AGR.TOC("matff","M22d2G1-f5r385aB0.m",[19370917,75584038]); AGR.TOC("matff","M22d2G1-f5r560B0.m",[-5741100,22721739]); AGR.TOC("matff","M22d2G1-f7r21aB0.m",[-67112680,43045281]); AGR.TOC("matff","M22d2G1-f7r45aB0.m",[2846321,-6133671]); AGR.TOC("matff","M22d2G1-f7r54aB0.m",[-1166393,-37567711]); AGR.TOC("matff","M22d2G1-f7r154aB0.m",[-106850501,-56652481]); AGR.TOC("matff","M22d2G1-f7r210aB0.m",[-7605737,-77888289]); AGR.TOC("matff","M22d2G1-f7r231aB0.m",[94268020,20313882]); AGR.TOC("matff","M22d2G1-f7r385aB0.m",[79734490,-27768815]); AGR.TOC("matff","M22d2G1-f7r560B0.m",[-92302801,42190990]); AGR.TOC("matff","M22d2G1-f9r45aB0.m",[-32652339,-115868824]); AGR.TOC("matff","M22d2G1-f9r45bB0.m",[-4373288,37153914]); AGR.TOC("matff","M22d2G1-f11r20aB0.m",[-10228550,-28363284]); AGR.TOC("matff","M22d2G1-f11r45aB0.m",[-115303832,7271263]); AGR.TOC("matff","M22d2G1-f11r45bB0.m",[65584681,76308413]); AGR.TOC("matff","M22d2G1-f11r55aB0.m",[-42280703,56446882]); AGR.TOC("matff","M22d2G1-f11r99aB0.m",[78828095,-95138735]); AGR.TOC("matff","M22d2G1-f11r154aB0.m",[-125684610,59549727]); AGR.TOC("matff","M22d2G1-f11r190aB0.m",[130351633,-99707873]); AGR.TOC("matff","M22d2G1-f11r231aB0.m",[-21953425,88673416]); AGR.TOC("matff","M22d2G1-f11r385aB0.m",[14676131,-85493410]); AGR.TOC("matff","M22d2G1-f25r45aB0.m",[23900540,-8771718]); AGR.TOC("matff","M22d2G1-f25r45bB0.m",[29914508,120865664]); AGR.TOC("maxes","M22d2G1-max1W1",[-28226023]); AGR.TOC("maxes","M22d2G1-max1W2",[-24429373]); AGR.TOC("maxes","M22d2G1-max2W1",[41701063]); AGR.TOC("maxes","M22d2G1-max2W2",[96835542]); AGR.TOC("maxes","M22d2G1-max3W1",[94478419]); AGR.TOC("maxes","M22d2G1-max4W1",[56584143]); AGR.TOC("maxes","M22d2G1-max5W1",[-47328183]); AGR.TOC("maxes","M22d2G1-max5W2",[-33392236]); AGR.TOC("maxes","M22d2G1-max6W1",[-134200980]); AGR.TOC("maxes","M22d2G1-max7W1",[36093093]); AGR.TOC("maxes","M22d2G1-max7W2",[42318604]); AGR.TOC("cyclic","M22d2G1-cycW1",[-73012825]); AGR.TOC("cyc2ccl","M22d2G1cycW1-cclsW1",[46889110]); AGR.TOC("find","M22d2G1-find1",[-64593058]); AGR.TOC("check","M22d2G1-check1",[32836613]); AGR.TOC("pres","M22d2G1-P1",[-7009976]); # M23 AGR.GRP("spor","M23","M23"); AGR.TOC("perm","M23G1-p23B0.m",[-100860468,134035545]); AGR.TOC("perm","M23G1-p253aB0.m",[112730578,127077447]); AGR.TOC("perm","M23G1-p253bB0.m",[24187844,-99879066]); AGR.TOC("perm","M23G1-p506B0.m",[133932382,72600534]); AGR.TOC("perm","M23G1-p1288B0.m",[-84395714,94531011]); AGR.TOC("perm","M23G1-p1771B0.m",[-2600980,60172805]); AGR.TOC("perm","M23G1-p40320B0.m",[-134072939,97361009]); AGR.TOC("matff","M23G1-f2r11aB0.m",[92412226,99097621]); AGR.TOC("matff","M23G1-f2r11bB0.m",[-75650132,-64182966]); AGR.TOC("matff","M23G1-f2r44aB0.m",[-31974611,68547307]); AGR.TOC("matff","M23G1-f2r44bB0.m",[39718097,-124066485]); AGR.TOC("matff","M23G1-f2r120B0.m",[-113866580,-63331011]); AGR.TOC("matff","M23G1-f2r220aB0.m",[-86962328,-81382235]); AGR.TOC("matff","M23G1-f2r220bB0.m",[-115044176,-101407103]); AGR.TOC("matff","M23G1-f2r252B0.m",[-110016101,-60073054]); AGR.TOC("matff","M23G1-f3r22B0.m",[-36385545,-15448429]); AGR.TOC("matff","M23G1-f3r104aB0.m",[-120194361,-100341681]); AGR.TOC("matff","M23G1-f3r104bB0.m",[-100112989,-67853695]); AGR.TOC("matff","M23G1-f3r231B0.m",[-59421394,66873842]); AGR.TOC("matff","M23G1-f3r253B0.m",[115197826,-75226257]); AGR.TOC("matff","M23G1-f3r770aB0.m",[-50745745,-127476955]); AGR.TOC("matff","M23G1-f4r896aB0.m",[79604086,129778838]); AGR.TOC("matff","M23G1-f4r896bB0.m",[1564561,-132647208]); AGR.TOC("matff","M23G1-f5r22B0.m",[110977893,65082343]); AGR.TOC("matff","M23G1-f5r230B0.m",[-17598208,-107309542]); AGR.TOC("matff","M23G1-f5r231aB0.m",[66242910,-26415424]); AGR.TOC("matff","M23G1-f5r231bB0.m",[-36703530,74201785]); AGR.TOC("matff","M23G1-f5r896aB0.m",[-10230930,126936296]); AGR.TOC("matff","M23G1-f7r22B0.m",[83749274,-81701398]); AGR.TOC("matff","M23G1-f7r45B0.m",[119901626,31746262]); AGR.TOC("matff","M23G1-f7r208B0.m",[-131498870,103553188]); AGR.TOC("matff","M23G1-f7r231aB0.m",[73195829,-54497879]); AGR.TOC("matff","M23G1-f7r990B0.m",[-132653617,119679425]); AGR.TOC("matff","M23G1-f9r45bB0.m",[-127901148,-108530718]); AGR.TOC("matff","M23G1-f9r990bB0.m",[116336332,122680284]); AGR.TOC("matff","M23G1-f11r22B0.m",[54637034,6489040]); AGR.TOC("matff","M23G1-f11r45bB0.m",[-51057705,-86906861]); AGR.TOC("matff","M23G1-f11r229B0.m",[1224283,102271717]); AGR.TOC("matff","M23G1-f11r231aB0.m",[75699015,37254489]); AGR.TOC("matff","M23G1-f11r253B0.m",[-134189740,83294965]); AGR.TOC("matff","M23G1-f11r806B0.m",[-102453078,96809740]); AGR.TOC("matff","M23G1-f11r990aB0.m",[91508789,76517999]); AGR.TOC("matff","M23G1-f23r21B0.m",[123156478,48784163]); AGR.TOC("matff","M23G1-f23r45bB0.m",[54480828,15262719]); AGR.TOC("matff","M23G1-f23r210B0.m",[98875790,-43341672]); AGR.TOC("matff","M23G1-f23r230B0.m",[128932608,47573421]); AGR.TOC("matff","M23G1-f23r231aB0.m",[13816289,11783324]); AGR.TOC("matff","M23G1-f23r253B0.m",[70082102,86222539]); AGR.TOC("matff","M23G1-f23r280B0.m",[-100486126,105888104]); AGR.TOC("matff","M23G1-f23r665bB0.m",[-86565912,75506669]); AGR.TOC("matff","M23G1-f25r45aB0.m",[-63651988,16529557]); AGR.TOC("matff","M23G1-f25r770B0.m",[25945094,-121739652]); AGR.TOC("matff","M23G1-f25r990aB0.m",[14490712,5435057]); AGR.TOC("matff","M23G1-f49r231bB0.m",[112713982,62428033]); AGR.TOC("matff","M23G1-f49r231cB0.m",[-46596743,-111079908]); AGR.TOC("matff","M23G1-f49r770aB0.m",[48434943,101609634]); AGR.TOC("matff","M23G1-f49r770bB0.m",[-7613774,-115624564]); AGR.TOC("matff","M23G1-f49r896aB0.m",[-34287057,102026322]); AGR.TOC("matff","M23G1-f49r896bB0.m",[38639819,109523786]); AGR.TOC("matff","M23G1-f121r231bB0.m",[31844564,-73487081]); AGR.TOC("matff","M23G1-f121r231cB0.m",[6220520,-118565449]); AGR.TOC("matff","M23G1-f121r770aB0.m",[73486127,-76866322]); AGR.TOC("matff","M23G1-f121r770bB0.m",[83161076,-16561573]); AGR.TOC("matint","M23G1-Zr22B0.g",[-121440039]); AGR.TOC("matint","M23G1-Zr230B0.g",[47145869]); AGR.TOC("matint","M23G1-Zr231aB0.g",[-94915198]); AGR.TOC("maxes","M23G1-max1W1",[-24165601]); AGR.TOC("maxes","M23G1-max2W1",[-128505273]); AGR.TOC("maxes","M23G1-max3W1",[103287015]); AGR.TOC("maxes","M23G1-max4W1",[-125187000]); AGR.TOC("maxes","M23G1-max5W1",[-28960133]); AGR.TOC("maxes","M23G1-max6W1",[3238391]); AGR.TOC("maxes","M23G1-max7W1",[-63572583]); AGR.TOC("cyclic","M23G1-cycW1",[50189716]); AGR.TOC("cyc2ccl","M23G1cycW1-cclsW1",[-116022309]); AGR.TOC("find","M23G1-find1",[114090014]); AGR.TOC("check","M23G1-check1",[-12184050]); AGR.TOC("pres","M23G1-P1",[-101588990]); AGR.TOC("pres","M23G1-P2",[-27167702]); # M24 AGR.GRP("spor","M24","M24"); AGR.TOC("perm","M24G1-p24B0.m",[69729679,-50094784]); AGR.TOC("perm","M24G1-p276B0.m",[-48137797,-71357401]); AGR.TOC("perm","M24G1-p759B0.m",[-32835247,100541381]); AGR.TOC("perm","M24G1-p1288B0.m",[-105109803,60825843]); AGR.TOC("perm","M24G1-p1771B0.m",[-53290348,-40522722]); AGR.TOC("perm","M24G1-p2024B0.m",[70785156,119340263]); AGR.TOC("perm","M24G1-p3795B0.m",[-60516233,-49941219]); AGR.TOC("matff","M24G1-f2r11aB0.m",[40272001,-97238947]); AGR.TOC("matff","M24G1-f2r11bB0.m",[50964937,49863534]); AGR.TOC("matff","M24G1-f2r44aB0.m",[22851199,6817130]); AGR.TOC("matff","M24G1-f2r44bB0.m",[-95012821,82979184]); AGR.TOC("matff","M24G1-f2r120B0.m",[-50819863,-33106966]); AGR.TOC("matff","M24G1-f2r220aB0.m",[120862636,-82730718]); AGR.TOC("matff","M24G1-f2r220bB0.m",[81903649,26327048]); AGR.TOC("matff","M24G1-f2r252B0.m",[-71570037,-123764407]); AGR.TOC("matff","M24G1-f2r320aB0.m",[-3286786,-9382849]); AGR.TOC("matff","M24G1-f2r320bB0.m",[107335357,-56091905]); AGR.TOC("matff","M24G1-f2r1242B0.m",[61922408,56953676]); AGR.TOC("matff","M24G1-f2r1792B0.m",[-120675264,-7134767]); AGR.TOC("matff","M24G1-f3r22B0.m",[121921842,107251646]); AGR.TOC("matff","M24G1-f3r231B0.m",[-67248893,-41750420]); AGR.TOC("matff","M24G1-f3r252B0.m",[36773800,10058429]); AGR.TOC("matff","M24G1-f3r483B0.m",[129663509,42481818]); AGR.TOC("matff","M24G1-f3r770aB0.m",[76706933,58962005]); AGR.TOC("matff","M24G1-f3r770bB0.m",[-18902817,-1386993]); AGR.TOC("matff","M24G1-f5r23B0.m",[-31286155,-100615534]); AGR.TOC("matff","M24G1-f5r231B0.m",[-3104293,34489521]); AGR.TOC("matff","M24G1-f5r252B0.m",[12668770,78103862]); AGR.TOC("matff","M24G1-f5r253B0.m",[-61030374,68486059]); AGR.TOC("matff","M24G1-f7r23B0.m",[-133527112,-110941087]); AGR.TOC("matff","M24G1-f7r45B0.m",[89821164,-52784035]); AGR.TOC("matff","M24G1-f7r252B0.m",[-89436205,-88594841]); AGR.TOC("matff","M24G1-f7r253B0.m",[69344442,-54398731]); AGR.TOC("matff","M24G1-f7r483B0.m",[32062896,-12902574]); AGR.TOC("matff","M24G1-f7r990B0.m",[78507865,27503768]); AGR.TOC("matff","M24G1-f9r45aB0.m",[-51030313,-121660802]); AGR.TOC("matff","M24G1-f9r45bB0.m",[-26747836,74052103]); AGR.TOC("matff","M24G1-f9r990bB0.m",[69846870,-53594523]); AGR.TOC("matff","M24G1-f11r23B0.m",[-73893830,44738184]); AGR.TOC("matff","M24G1-f11r45B0.m",[32491674,-78186603]); AGR.TOC("matff","M24G1-f11r229B0.m",[-39363252,118511511]); AGR.TOC("matff","M24G1-f11r253B0.m",[-2745752,86312317]); AGR.TOC("matff","M24G1-f11r482B0.m",[-24340279,-1698726]); AGR.TOC("matff","M24G1-f11r806B0.m",[-38662066,116782016]); AGR.TOC("matff","M24G1-f11r990bB0.m",[71542649,-129337380]); AGR.TOC("matff","M24G1-f23r23B0.m",[-80084667,88290511]); AGR.TOC("matff","M24G1-f23r45B0.m",[-101350989,56417532]); AGR.TOC("matff","M24G1-f23r231bB0.m",[74937308,-79336049]); AGR.TOC("matff","M24G1-f23r251B0.m",[124453838,-82707878]); AGR.TOC("matff","M24G1-f23r253B0.m",[-31154580,-5562077]); AGR.TOC("matff","M24G1-f23r483B0.m",[80083472,-133029888]); AGR.TOC("matff","M24G1-f23r770B0.m",[-71064977,68359404]); AGR.TOC("matff","M24G1-f23r990bB0.m",[-100049652,-132065010]); AGR.TOC("matff","M24G1-f25r45aB0.m",[93156266,17678669]); AGR.TOC("matff","M24G1-f25r45bB0.m",[84076873,-99614928]); AGR.TOC("matff","M24G1-f25r770aB0.m",[-77238967,27371362]); AGR.TOC("matff","M24G1-f25r990aB0.m",[58142147,10133728]); AGR.TOC("matff","M24G1-f49r231bB0.m",[26086794,-37182197]); AGR.TOC("matff","M24G1-f49r770aB0.m",[118037837,-12074292]); AGR.TOC("matff","M24G1-f121r231bB0.m",[-115996360,66090690]); AGR.TOC("matff","M24G1-f121r770aB0.m",[-11753116,-9832376]); AGR.TOC("matint","M24G1-Zr23B0.g",[-82579400]); AGR.TOC("maxes","M24G1-max1W1",[-60251604]); AGR.TOC("maxes","M24G1-max1W2",[111703741]); AGR.TOC("maxes","M24G1-max2W1",[-74459771]); AGR.TOC("maxes","M24G1-max3W1",[-108401652]); AGR.TOC("maxes","M24G1-max4W1",[3804826]); AGR.TOC("maxes","M24G1-max5W1",[2323602]); AGR.TOC("maxes","M24G1-max6W1",[132682569]); AGR.TOC("maxes","M24G1-max7W1",[76506186]); AGR.TOC("maxes","M24G1-max8W1",[-102663899]); AGR.TOC("maxes","M24G1-max9W1",[115203509]); AGR.TOC("cyclic","M24G1-cycW1",[-56796942]); AGR.TOC("cyc2ccl","M24G1cycW1-cclsW1",[9885207]); AGR.TOC("find","M24G1-find1",[99762564]); AGR.TOC("check","M24G1-check1",[-117805797]); AGR.TOC("pres","M24G1-P1",[-19892668]); # 3McL AGR.GRP("spor","McL","3McL"); AGR.TOC("perm","3McLG1-p66825B0.m",[60936654,67493678]); AGR.TOC("perm","3McLG1-p103950B0.m",[-50980231,-108548578]); AGR.TOC("perm","3McLG1-p340200B0.m",[-67945854,-95815728]); AGR.TOC("matff","3McLG1-f3r42B0.m",[99498753,-89665574]); AGR.TOC("matff","3McLG1-f4r126aB0.m",[9748162,-38721246]); AGR.TOC("matff","3McLG1-f4r396dB0.m",[85171231,126701593]); AGR.TOC("matff","3McLG1-f25r45aB0.m",[-93885213,44318729]); AGR.TOC("matff","3McLG1-f25r126aB0.m",[-62486368,-132035306]); AGR.TOC("matff","3McLG1-f25r126bB0.m",[-63371139,69148948]); AGR.TOC("matff","3McLG1-f25r153aB0.m",[68472864,47273268]); AGR.TOC("matff","3McLG1-f25r639aB0.m",[-96966834,33763078]); AGR.TOC("matff","3McLG1-f25r846aB0.m",[971973,-40293260]); AGR.TOC("matff","3McLG1-f49r126aB0.m",[6910296,-99809787]); AGR.TOC("matff","3McLG1-f49r126a1B0.m",[50224140,-62359271]); AGR.TOC("matff","3McLG1-f49r126bB0.m",[81138596,82194185]); AGR.TOC("matff","3McLG1-f49r126b1B0.m",[-121596870,-78979904]); AGR.TOC("matff","3McLG1-f121r126aB0.m",[-65773772,110797052]); # 3McLd2 AGR.GRP("spor","McL","3McLd2"); AGR.TOC("matff","3McLd2G1-f4r252aB0.m",[-69343368,40600993]); AGR.TOC("matff","3McLd2G1-f5r90B0.m",[-394219,73863340]); AGR.TOC("matff","3McLd2G1-f5r306B0.m",[-100747,12674032]); AGR.TOC("matff","3McLd2G1-f5r1278B0.m",[110647295,-72472577]); # McL AGR.GRP("spor","McL","McL"); AGR.TOC("perm","McLG1-p275B0.m",[47898348,-128992295]); AGR.TOC("perm","McLG1-p2025aB0.m",[-92438755,-89387202]); AGR.TOC("perm","McLG1-p2025bB0.m",[-33910713,-67453834]); AGR.TOC("perm","McLG1-p7128B0.m",[-108415507,128829357]); AGR.TOC("perm","McLG1-p15400aB0.m",[-80528616,79619470]); AGR.TOC("perm","McLG1-p15400bB0.m",[-20237023,-70709260]); AGR.TOC("perm","McLG1-p22275aB0.m",[122489538,83932768]); AGR.TOC("perm","McLG1-p22275bB0.m",[36151766,64738375]); AGR.TOC("perm","McLG1-p22275cB0.m",[-79442166,331736]); AGR.TOC("perm","McLG1-p22275dB0.m",[-75632286,66456356]); AGR.TOC("perm","McLG1-p113400B0.m",[6999341,13472873]); AGR.TOC("perm","McLG1-p299376B0.m",[-9479493,-2888638]); AGR.TOC("matff","McLG1-f2r22B0.m",[-29801617,93282897]); AGR.TOC("matff","McLG1-f2r230B0.m",[-90515213,123236950]); AGR.TOC("matff","McLG1-f2r748aB0.m",[61620232,41476658]); AGR.TOC("matff","McLG1-f2r748bB0.m",[11594131,-63342175]); AGR.TOC("matff","McLG1-f3r21B0.m",[114054470,-28069582]); AGR.TOC("matff","McLG1-f3r104aB0.m",[-10460225,35627935]); AGR.TOC("matff","McLG1-f3r104bB0.m",[88537943,-74642905]); AGR.TOC("matff","McLG1-f3r210B0.m",[-18678164,-77048027]); AGR.TOC("matff","McLG1-f3r560B0.m",[-106270647,50354264]); AGR.TOC("matff","McLG1-f4r896aB0.m",[-90586135,-115047387]); AGR.TOC("matff","McLG1-f4r896bB0.m",[-68251794,-120220088]); AGR.TOC("matff","McLG1-f5r21B0.m",[88783977,-75974823]); AGR.TOC("matff","McLG1-f5r210B0.m",[-101587046,-93777169]); AGR.TOC("matff","McLG1-f5r230B0.m",[7379395,60865678]); AGR.TOC("matff","McLG1-f5r560B0.m",[4995570,-57381940]); AGR.TOC("matff","McLG1-f5r896bB0.m",[-77830754,76324619]); AGR.TOC("matff","McLG1-f7r22B0.m",[93285753,24448482]); AGR.TOC("matff","McLG1-f7r231B0.m",[-73334366,-75104676]); AGR.TOC("matff","McLG1-f7r252B0.m",[-133408383,-64954954]); AGR.TOC("matff","McLG1-f9r605aB0.m",[15419571,-41576184]); AGR.TOC("matff","McLG1-f9r605bB0.m",[-101100999,-12569507]); AGR.TOC("matff","McLG1-f11r22B0.m",[37807153,-51356397]); AGR.TOC("matff","McLG1-f11r231B0.m",[111051229,-24393693]); AGR.TOC("matff","McLG1-f11r251B0.m",[-37005776,10578858]); AGR.TOC("matff","McLG1-f11r896B0.m",[-85250757,106637974]); AGR.TOC("matff","McLG1-f23r896bB0.m",[-23000891,-94948674]); AGR.TOC("matff","McLG1-f25r1200aB0.m",[-28171956,83963976]); AGR.TOC("matff","McLG1-f49r770aB0.m",[-123750876,103165319]); AGR.TOC("matff","McLG1-f49r770bB0.m",[17458306,-14741153]); AGR.TOC("matff","McLG1-f49r896aB0.m",[-10611582,-125807855]); AGR.TOC("matff","McLG1-f49r896bB0.m",[80950651,88285278]); AGR.TOC("matff","McLG1-f121r770aB0.m",[114719663,11727585]); AGR.TOC("matff","McLG1-f121r770bB0.m",[-8445975,-26028394]); AGR.TOC("matint","McLG1-Zr231B0.g",[-49278506]); AGR.TOC("maxes","McLG1-max1W1",[19059882]); AGR.TOC("maxes","McLG1-max2W1",[-62642271]); AGR.TOC("maxes","McLG1-max3W1",[110409269]); AGR.TOC("maxes","McLG1-max4W1",[35098666]); AGR.TOC("maxes","McLG1-max5W1",[-55696958]); AGR.TOC("maxes","McLG1-max6W1",[89156344]); AGR.TOC("maxes","McLG1-max7W1",[-86705876]); AGR.TOC("maxes","McLG1-max8W1",[73280981]); AGR.TOC("maxes","McLG1-max9W1",[66232232]); AGR.TOC("maxes","McLG1-max10W1",[75761973]); AGR.TOC("maxes","McLG1-max11W1",[-31107947]); AGR.TOC("maxes","McLG1-max12W1",[25223287]); AGR.TOC("cyclic","McLG1-cycW1",[80099064]); AGR.TOC("cyc2ccl","McLG1cycW1-cclsW1",[37704454]); AGR.TOC("find","McLG1-find1",[-42473073]); AGR.TOC("check","McLG1-check1",[90702923]); AGR.TOC("pres","McLG1-P1",[-26372773]); # McLd2 AGR.GRP("spor","McL","McLd2"); AGR.TOC("perm","McLd2G1-p275B0.m",[14870816,-60035920]); AGR.TOC("perm","McLd2G1-p4050B0.m",[2540135,39919988]); AGR.TOC("perm","McLd2G1-p7128B0.m",[26124040,60946723]); AGR.TOC("perm","McLd2G1-p22275aB0.m",[84478906,-92915846]); AGR.TOC("perm","McLd2G1-p44550B0.m",[30228915,66372087]); AGR.TOC("matff","McLd2G1-f2r22B0.m",[8539527,3564557]); AGR.TOC("matff","McLd2G1-f2r230aB0.m",[2931937,101506955]); AGR.TOC("matff","McLd2G1-f2r1496aB0.m",[-30759426,104911468]); AGR.TOC("matff","McLd2G1-f3r21aB0.m",[-49446994,51853136]); AGR.TOC("matff","McLd2G1-f3r104aB0.m",[77300657,-53847227]); AGR.TOC("matff","McLd2G1-f3r104bB0.m",[45648377,98839103]); AGR.TOC("matff","McLd2G1-f3r210aB0.m",[114674039,52866468]); AGR.TOC("matff","McLd2G1-f3r560aB0.m",[-109490635,-99608112]); AGR.TOC("matff","McLd2G1-f5r21aB0.m",[80298400,-114334962]); AGR.TOC("matff","McLd2G1-f5r210aB0.m",[696431,-23094537]); AGR.TOC("matff","McLd2G1-f5r230aB0.m",[97104592,105161756]); AGR.TOC("matff","McLd2G1-f5r560aB0.m",[-49219297,-39031070]); AGR.TOC("matff","McLd2G1-f5r896aB0.m",[45641947,-75634287]); AGR.TOC("matff","McLd2G1-f5r896bB0.m",[75500104,64305836]); AGR.TOC("matff","McLd2G1-f7r22aB0.m",[-73156626,-131881739]); AGR.TOC("matff","McLd2G1-f7r231aB0.m",[11393104,-63500764]); AGR.TOC("matff","McLd2G1-f7r252aB0.m",[-22097052,-5180212]); AGR.TOC("matff","McLd2G1-f11r22aB0.m",[-78162929,-67763669]); AGR.TOC("matff","McLd2G1-f11r231aB0.m",[118374016,6657957]); AGR.TOC("matff","McLd2G1-f11r251aB0.m",[53146173,-131950397]); AGR.TOC("matff","McLd2G1-f11r896aB0.m",[58009627,-112706307]); AGR.TOC("matff","McLd2G1-f49r896aB0.m",[73951333,70246501]); AGR.TOC("maxes","McLd2G1-max1W1",[61006147]); AGR.TOC("maxes","McLd2G1-max2W1",[84224117]); AGR.TOC("maxes","McLd2G1-max3W1",[-82005936]); AGR.TOC("maxes","McLd2G1-max4W1",[-17845375]); AGR.TOC("maxes","McLd2G1-max5W1",[21634646]); AGR.TOC("maxes","McLd2G1-max6W1",[-22213112]); AGR.TOC("maxes","McLd2G1-max7W1",[73842512]); AGR.TOC("maxes","McLd2G1-max7W2",[86102852]); AGR.TOC("maxes","McLd2G1-max8W1",[128685854]); AGR.TOC("maxes","McLd2G1-max8W2",[-96338819]); AGR.TOC("maxes","McLd2G1-max9W1",[110274093]); AGR.TOC("maxes","McLd2G1-max10W1",[48370239]); AGR.TOC("cyclic","McLd2G1-cycW1",[-91022863]); AGR.TOC("find","McLd2G1-find1",[-49966785]); AGR.TOC("check","McLd2G1-check1",[-134019723]); AGR.TOC("pres","McLd2G1-P1",[99955646]); # 3ON AGR.GRP("spor","ON","3ON"); AGR.TOC("perm","3ONG1-p368280B0.m",[99436862,-91608028]); AGR.TOC("matff","3ONG1-f4r153B0.m",[-16268827,-103124065]); AGR.TOC("matff","3ONG1-f7r45aB0.m",[29014787,31368259]); AGR.TOC("matff","3ONG1-f7r45bB0.m",[-42391612,78013723]); # 3ONd2 AGR.GRP("spor","ON","3ONd2"); AGR.TOC("perm","3ONd2G1-p736560B0.m",[-68689630,47782023]); AGR.TOC("matff","3ONd2G1-f2r306B0.m",[-113541223,-48646281]); AGR.TOC("matff","3ONd2G1-f7r90B0.m",[-8350529,94350551]); # ON AGR.GRP("spor","ON","ON"); AGR.TOC("perm","ONG1-p122760aB0.m",[130879699,5548962]); AGR.TOC("matff","ONG1-f3r154B0.m",[38543454,103909362]); AGR.TOC("matff","ONG1-f3r495B0.m",[-109943698,72387173]); AGR.TOC("matff","ONG1-f3r684B0.m",[33722778,-62341476]); AGR.TOC("matff","ONG1-f7r406B0.m",[-21559565,-81416063]); AGR.TOC("matff","ONG1-f7r1618B0.m",[21602186,-42693064]); AGR.TOC("matff","ONG1-f9r342aB0.m",[98458763,64167879]); AGR.TOC("matff","ONG1-f9r342bB0.m",[-68492253,-107208061]); AGR.TOC("matff","ONG1-f31r1869B0.m",[-52500805,27983940]); AGR.TOC("maxes","ONG1-max1W1",[62944102]); AGR.TOC("maxes","ONG1-max2W1",[43828776]); AGR.TOC("maxes","ONG1-max3W1",[13338363]); AGR.TOC("maxes","ONG1-max4W1",[8525863]); AGR.TOC("maxes","ONG1-max5W1",[90069876]); AGR.TOC("maxes","ONG1-max6W1",[34462054]); AGR.TOC("maxes","ONG1-max7W1",[-90805441]); AGR.TOC("maxes","ONG1-max8W1",[12382008]); AGR.TOC("maxes","ONG1-max9W1",[-45861662]); AGR.TOC("maxes","ONG1-max10W1",[-6113101]); AGR.TOC("maxes","ONG1-max11W1",[55632949]); AGR.TOC("maxes","ONG1-max12W1",[114468286]); AGR.TOC("maxes","ONG1-max13W1",[-19450717]); AGR.TOC("cyclic","ONG1-cycW1",[126303448]); AGR.TOC("find","ONG1-find1",[-88306264]); AGR.TOC("check","ONG1-check1",[67315863]); # ONd2 AGR.GRP("spor","ON","ONd2"); AGR.TOC("perm","ONd2G1-p245520B0.m",[-42709158,30093434]); AGR.TOC("matff","ONd2G1-f3r684B0.m",[59153414,-77686939]); AGR.TOC("matff","ONd2G1-f3r990B0.m",[20383107,-30244925]); AGR.TOC("matff","ONd2G1-f7r406B0.m",[-104236411,79672753]); AGR.TOC("matff","ONd2G1-f7r1618B0.m",[94353914,92795391]); AGR.TOC("matff","ONd2G1-f9r154B0.m",[-52358288,-121686221]); AGR.TOC("matff","ONd2G1-f31r1869B0.m",[-15179195,-20224881]); AGR.TOC("maxes","ONd2G1-max1W1",[87423786]); AGR.TOC("maxes","ONd2G1-max2W1",[-132443113]); AGR.TOC("maxes","ONd2G1-max3W1",[-63240888]); AGR.TOC("maxes","ONd2G1-max4W1",[-67521683]); AGR.TOC("maxes","ONd2G1-max5W1",[-120270312]); AGR.TOC("maxes","ONd2G1-max6W1",[-124644877]); AGR.TOC("maxes","ONd2G1-max7W1",[-105999166]); AGR.TOC("maxes","ONd2G1-max8W1",[73256546]); AGR.TOC("maxes","ONd2G1-max9W1",[-109711177]); AGR.TOC("maxes","ONd2G1-max10W1",[91475306]); AGR.TOC("check","ONd2G1-check1",[101930093]); # ONd4 AGR.GRP("spor","ON","ONd4"); AGR.TOC("matff","ONd4G1-f3r154B0.m",[6087572,-92368074]); # 2Ru AGR.GRP("spor","Ru","2Ru"); AGR.TOC("perm","2RuG1-p16240B0.m",[-41672100,8217618]); AGR.TOC("matff","2RuG1-f3r56B0.m",[-10365513,-78441559]); AGR.TOC("matff","2RuG1-f5r28B0.m",[-75745528,51862955]); AGR.TOC("matff","2RuG1-f5r912B0.m",[113987106,92551439]); AGR.TOC("matff","2RuG1-f7r56B0.m",[60360641,-75246280]); AGR.TOC("matff","2RuG1-f9r28B0.m",[92102602,-26481667]); AGR.TOC("matff","2RuG1-f13r28B0.m",[52986574,97176965]); AGR.TOC("matff","2RuG1-f29r28B0.m",[-86811570,-19732864]); AGR.TOC("matff","2RuG1-f49r28B0.m",[-64130671,74771777]); # Ru AGR.GRP("spor","Ru","Ru"); AGR.TOC("perm","RuG1-p4060B0.m",[-53954577,-28356413]); AGR.TOC("matff","RuG1-f2r28B0.m",[8731502,77315986]); AGR.TOC("matff","RuG1-f2r376B0.m",[98838040,-77528473]); AGR.TOC("matff","RuG1-f2r1246B0.m",[-10088876,103662524]); AGR.TOC("matff","RuG1-f3r406B0.m",[-121033876,100514665]); AGR.TOC("matff","RuG1-f3r783B0.m",[96110003,111822503]); AGR.TOC("matff","RuG1-f5r133B0.m",[89406776,-26001685]); AGR.TOC("matff","RuG1-f5r273B0.m",[115408136,-86832564]); AGR.TOC("matff","RuG1-f5r378B0.m",[-51204044,111676142]); AGR.TOC("matff","RuG1-f5r783B0.m",[31677180,96341162]); AGR.TOC("matff","RuG1-f7r406B0.m",[124785085,102458493]); AGR.TOC("matff","RuG1-f7r782B0.m",[19079994,25060169]); AGR.TOC("matff","RuG1-f9r378B0.m",[131439757,-82258119]); AGR.TOC("matff","RuG1-f13r378B0.m",[93152021,121995687]); AGR.TOC("matff","RuG1-f13r406B0.m",[-132506753,9597583]); AGR.TOC("matff","RuG1-f13r783B0.m",[-7052092,127225028]); AGR.TOC("matff","RuG1-f29r378B0.m",[44132576,74752841]); AGR.TOC("matff","RuG1-f29r406B0.m",[-38870625,-18279730]); AGR.TOC("matff","RuG1-f29r783B0.m",[25821631,-2668956]); AGR.TOC("matff","RuG1-f49r378B0.m",[-32894027,-9333064]); AGR.TOC("maxes","RuG1-max1W1",[-75578155]); AGR.TOC("maxes","RuG1-max1W2",[-129092743]); AGR.TOC("maxes","RuG1-max2W2",[108886564]); AGR.TOC("maxes","RuG1-max2W1",[-52387943]); AGR.TOC("maxes","RuG1-max3W1",[-70042632]); AGR.TOC("maxes","RuG1-max3W2",[127581494]); AGR.TOC("maxes","RuG1-max4W2",[7612106]); AGR.TOC("maxes","RuG1-max4W1",[5060269]); AGR.TOC("maxes","RuG1-max5W1",[50048439]); AGR.TOC("maxes","RuG1-max5W2",[-43399221]); AGR.TOC("maxes","RuG1-max6W2",[-123299778]); AGR.TOC("maxes","RuG1-max6W1",[-59823619]); AGR.TOC("maxes","RuG1-max7W1",[67169891]); AGR.TOC("maxes","RuG1-max7W2",[43762211]); AGR.TOC("maxes","RuG1-max8W2",[51544408]); AGR.TOC("maxes","RuG1-max8W1",[118175684]); AGR.TOC("maxes","RuG1-max9W1",[-77505058]); AGR.TOC("maxes","RuG1-max9W2",[-95757028]); AGR.TOC("maxes","RuG1-max9W3",[70927804]); AGR.TOC("maxes","RuG1-max10W1",[-64639884]); AGR.TOC("maxes","RuG1-max10W2",[26896137]); AGR.TOC("maxes","RuG1-max11W1",[-75133302]); AGR.TOC("maxes","RuG1-max11W2",[105886580]); AGR.TOC("maxes","RuG1-max12W1",[-131392469]); AGR.TOC("maxes","RuG1-max12W2",[-27483953]); AGR.TOC("maxes","RuG1-max13W1",[127833708]); AGR.TOC("maxes","RuG1-max13W2",[101693928]); AGR.TOC("maxes","RuG1-max14W1",[53460971]); AGR.TOC("maxes","RuG1-max14W2",[-112917650]); AGR.TOC("maxes","RuG1-max15W3",[-68154847]); AGR.TOC("maxes","RuG1-max15W1",[59301912]); AGR.TOC("maxes","RuG1-max15W2",[-17090852]); AGR.TOC("classes","RuG1-cclsW1",[127501587]); AGR.TOC("cyclic","RuG1-cycW1",[-126643575]); AGR.TOC("maxstd","RuG1max9W2-L229G1W1",[-43443220]); AGR.TOC("find","RuG1-find1",[52057267]); AGR.TOC("check","RuG1-check1",[-30550431]); # 2Suz AGR.GRP("spor","Suz","2Suz"); AGR.TOC("perm","2SuzG1-p65520B0.m",[100499361,-17563632]); AGR.TOC("matff","2SuzG1-f3r12B0.m",[-27396965,-130567168]); AGR.TOC("matff","2SuzG1-f3r208B0.m",[-10246112,71400972]); AGR.TOC("matff","2SuzG1-f3r352B0.m",[-88992129,72842831]); # 2Suzd2 AGR.GRP("spor","Suz","2Suzd2"); AGR.TOC("matff","2Suzd2G1-f3r12aB0.m",[-3895471,-130567168]); # 3Suz AGR.GRP("spor","Suz","3Suz"); AGR.TOC("perm","3SuzG1-p5346B0.m",[-76176506,86470514]); AGR.TOC("perm","3SuzG1-p98280B0.m",[53377107,9551332]); AGR.TOC("perm","3SuzG1-p405405B0.m",[45794222,-32826998]); AGR.TOC("matff","3SuzG1-f4r12aB0.m",[104289404,-97338178]); AGR.TOC("matff","3SuzG1-f4r66aB0.m",[82458020,39793555]); AGR.TOC("matff","3SuzG1-f4r429aB0.m",[-61260387,-55759488]); AGR.TOC("matff","3SuzG1-f4r825aB0.m",[67351605,15291413]); AGR.TOC("matff","3SuzG1-f4r825bB0.m",[125193684,-42083462]); AGR.TOC("matff","3SuzG1-f25r66aB0.m",[69419571,40407784]); # 3Suzd2 AGR.GRP("spor","Suz","3Suzd2"); AGR.TOC("perm","3Suzd2G1-p5346B0.m",[-19010047,86470514]); AGR.TOC("matff","3Suzd2G1-f2r24B0.m",[44158235,-91947292]); AGR.TOC("matff","3Suzd2G1-f5r132B0.m",[24890922,74028927]); AGR.TOC("matff","3Suzd2G1-f7r132B0.m",[117434516,-37228764]); AGR.TOC("matff","3Suzd2G1-f11r132B0.m",[-58076262,-47418246]); # 6Suz AGR.GRP("spor","Suz","6Suz"); AGR.TOC("perm","6SuzG1-p196560B0.m",[-95904469,-67046241]); AGR.TOC("matff","6SuzG1-f7r12aB0.m",[-82762128,-47015058]); AGR.TOC("matff","6SuzG1-f13r12aB0.m",[12391134,-67351534]); AGR.TOC("matff","6SuzG1-f25r12aB0.m",[-91997322,132100624]); # 6Suzd2 AGR.GRP("spor","Suz","6Suzd2"); AGR.TOC("matff","6Suzd2G1-f3r24B0.m",[-67857734,-58600215]); AGR.TOC("matff","6Suzd2G1-f5r24B0.m",[-112852769,-18855249]); AGR.TOC("matff","6Suzd2G1-f11r24B0.m",[46107370,85173164]); # Suz AGR.GRP("spor","Suz","Suz"); AGR.TOC("perm","SuzG1-p1782B0.m",[82893022,51463088]); AGR.TOC("perm","SuzG1-p22880B0.m",[-45414207,72022853]); AGR.TOC("perm","SuzG1-p32760B0.m",[-36637758,68776003]); AGR.TOC("perm","SuzG1-p135135B0.m",[-65616209,-86572635]); AGR.TOC("perm","SuzG1-p232960B0.m",[11347220,105131424]); AGR.TOC("perm","SuzG1-p370656B0.m",[2182352,-118767183]); AGR.TOC("perm","SuzG1-p405405B0.m",[105067735,100713240]); AGR.TOC("matff","SuzG1-f2r142B0.m",[8357366,6920144]); AGR.TOC("matff","SuzG1-f2r638B0.m",[4074312,106364657]); AGR.TOC("matff","SuzG1-f3r64B0.m",[50365357,-54063209]); AGR.TOC("matff","SuzG1-f3r78B0.m",[-92014561,35230543]); AGR.TOC("matff","SuzG1-f3r286B0.m",[60274666,-70924388]); AGR.TOC("matff","SuzG1-f3r429B0.m",[-49101968,-91628171]); AGR.TOC("matff","SuzG1-f3r649B0.m",[-19946195,30163779]); AGR.TOC("matff","SuzG1-f4r110aB0.m",[-109919096,-62082606]); AGR.TOC("matff","SuzG1-f4r572aB0.m",[-95643378,32758517]); AGR.TOC("matff","SuzG1-f4r572bB0.m",[-104417257,-95066640]); AGR.TOC("matff","SuzG1-f5r143B0.m",[74394469,-38271034]); AGR.TOC("matff","SuzG1-f5r363B0.m",[89885945,39063479]); AGR.TOC("matff","SuzG1-f5r780B0.m",[132266614,-19359649]); AGR.TOC("matff","SuzG1-f7r143B0.m",[105634339,28653126]); AGR.TOC("matff","SuzG1-f7r364B0.m",[-74055301,-21058343]); AGR.TOC("matff","SuzG1-f7r780B0.m",[112681667,-113939536]); AGR.TOC("matff","SuzG1-f11r143B0.m",[-18320833,-74534883]); AGR.TOC("matff","SuzG1-f11r364B0.m",[53490611,108496215]); AGR.TOC("matff","SuzG1-f11r779B0.m",[-65750084,-98455485]); AGR.TOC("matff","SuzG1-f13r143B0.m",[66190938,96991043]); AGR.TOC("matff","SuzG1-f13r364B0.m",[74414593,-31777157]); AGR.TOC("matff","SuzG1-f13r780B0.m",[-81127443,54737132]); AGR.TOC("matint","SuzG1-Zr143B0.g",[89311105]); AGR.TOC("maxes","SuzG1-max1W1",[-68768193]); AGR.TOC("maxes","SuzG1-max2W1",[-108601749]); AGR.TOC("maxes","SuzG1-max3W1",[-77948579]); AGR.TOC("maxes","SuzG1-max4W1",[-36690020]); AGR.TOC("maxes","SuzG1-max5W1",[40680439]); AGR.TOC("maxes","SuzG1-max6W1",[24938473]); AGR.TOC("maxes","SuzG1-max7W1",[-4080847]); AGR.TOC("maxes","SuzG1-max8W1",[-133098394]); AGR.TOC("maxes","SuzG1-max9W1",[-28786936]); AGR.TOC("maxes","SuzG1-max10W1",[76923768]); AGR.TOC("maxes","SuzG1-max11W1",[-37002406]); AGR.TOC("maxes","SuzG1-max12W1",[-5356944]); AGR.TOC("maxes","SuzG1-max13W1",[111038819]); AGR.TOC("maxes","SuzG1-max14W1",[129646128]); AGR.TOC("maxes","SuzG1-max15W1",[-85715848]); AGR.TOC("maxes","SuzG1-max16W1",[-51955785]); AGR.TOC("maxes","SuzG1-max17W1",[40310031]); AGR.TOC("cyclic","SuzG1-cycW1",[107929098]); AGR.TOC("out","SuzG1-a2W1",[16469656]); AGR.TOC("out","SuzG1-a2W2",[-107369804]); AGR.TOC("find","SuzG1-find1",[14760334]); AGR.TOC("check","SuzG1-check1",[81413483]); # Suzd2 AGR.GRP("spor","Suz","Suzd2"); AGR.TOC("perm","Suzd2G1-p1782B0.m",[-71919329,51463088]); AGR.TOC("matff","Suzd2G1-f3r64aB0.m",[-90913076,-54063209]); AGR.TOC("matff","Suzd2G1-f5r143aB0.m",[11496573,83112486]); AGR.TOC("matff","Suzd2G1-f7r143aB0.m",[-107656145,-91209592]); AGR.TOC("matff","Suzd2G1-f11r143aB0.m",[62231233,-74534883]); AGR.TOC("maxes","Suzd2G1-max1W1",[43070058]); AGR.TOC("maxes","Suzd2G1-max2W2",[36172803]); AGR.TOC("maxes","Suzd2G1-max2W1",[-95676410]); AGR.TOC("maxes","Suzd2G1-max3W1",[94233840]); AGR.TOC("maxes","Suzd2G1-max4W1",[2475767]); AGR.TOC("maxes","Suzd2G1-max5W2",[-129129167]); AGR.TOC("maxes","Suzd2G1-max5W1",[26815149]); AGR.TOC("maxes","Suzd2G1-max6W1",[22464709]); AGR.TOC("maxes","Suzd2G1-max7W1",[131499830]); AGR.TOC("maxes","Suzd2G1-max7W2",[103360853]); AGR.TOC("maxes","Suzd2G1-max8W1",[-92936899]); AGR.TOC("maxes","Suzd2G1-max8W2",[-104913286]); AGR.TOC("maxes","Suzd2G1-max9W1",[33878153]); AGR.TOC("maxes","Suzd2G1-max10W1",[-22801521]); AGR.TOC("maxes","Suzd2G1-max11W1",[-106160515]); AGR.TOC("maxes","Suzd2G1-max11W2",[-26338511]); AGR.TOC("maxes","Suzd2G1-max12W1",[123474922]); AGR.TOC("maxes","Suzd2G1-max13W1",[-88908553]); AGR.TOC("maxes","Suzd2G1-max13W2",[17072729]); AGR.TOC("maxes","Suzd2G1-max14W1",[118227933]); AGR.TOC("maxes","Suzd2G1-max15W1",[-82644616]); AGR.TOC("maxes","Suzd2G1-max16W1",[-129217850]); AGR.TOC("maxes","Suzd2G1-max16W2",[62477926]); AGR.TOC("find","Suzd2G1-find1",[-3302032]); AGR.TOC("check","Suzd2G1-check1",[54766116]); # Th AGR.GRP("spor","Th","Th"); AGR.TOC("matff","ThG1-f2r248B0.m",[37434506,-68904843]); AGR.TOC("matff","ThG1-f3r248B0.m",[-60944342,46058358]); AGR.TOC("matff","ThG1-f3r3875B0.m",[13659990,-72730650]); AGR.TOC("matff","ThG1-f5r248B0.m",[48991917,-128748049]); AGR.TOC("matff","ThG1-f7r248B0.m",[123338324,34822469]); AGR.TOC("matff","ThG1-f13r248B0.m",[-64490935,-8767165]); AGR.TOC("matff","ThG1-f19r248B0.m",[12847805,-68708149]); AGR.TOC("matff","ThG1-f31r248B0.m",[112307036,-111237321]); AGR.TOC("maxes","ThG1-max1W1",[-15425179]); AGR.TOC("maxes","ThG1-max2W1",[93806918]); AGR.TOC("maxes","ThG1-max3W1",[-55978438]); AGR.TOC("maxes","ThG1-max4W1",[110343436]); AGR.TOC("maxes","ThG1-max4W2",[133062282]); AGR.TOC("maxes","ThG1-max5W1",[2816244]); AGR.TOC("maxes","ThG1-max6W1",[69845358]); AGR.TOC("maxes","ThG1-max7W1",[73444571]); AGR.TOC("maxes","ThG1-max8W1",[-104649732]); AGR.TOC("maxes","ThG1-max9W1",[24676676]); AGR.TOC("maxes","ThG1-max10W1",[3060244]); AGR.TOC("maxes","ThG1-max11W1",[-58445008]); AGR.TOC("maxes","ThG1-max12W1",[-92730481]); AGR.TOC("maxes","ThG1-max13W1",[61196644]); AGR.TOC("maxes","ThG1-max14W1",[11298405]); AGR.TOC("maxes","ThG1-max14W2",[-74495271]); AGR.TOC("maxes","ThG1-max15W2",[-97506952]); AGR.TOC("maxes","ThG1-max15W1",[43001311]); AGR.TOC("maxes","ThG1-max16W1",[7045374]); AGR.TOC("cyclic","ThG1-cycW1",[-112362289]); AGR.TOC("maxstd","ThG1max14W1-M10G1W1",[-67607570]); AGR.TOC("find","ThG1-find1",[-54609116]); AGR.TOC("check","ThG1-check1",[69410453]); ############################################################################# ## ## What follows now are the representation dependent additional data. ## They must be read after the notification of the representations, ## in order to give us a chance to check the existence of the underlying ## representation. ## ############################################################################# ## ## Store info about compatibility of generators with those of factor groups. ## AGR.STDCOMP("(2^2x3).U6(2)",[1,"U6(2)",1,true]); AGR.STDCOMP("12.M22",[1,"M22",1,true]); AGR.STDCOMP("12.M22.2",[1,"M22.2",1,true]); AGR.STDCOMP("12_1.L3(4)",[1,"L3(4)",1,true]); AGR.STDCOMP("12_2.L3(4)",[1,"L3(4)",1,true]); AGR.STDCOMP("2.A11",[1,"A11",1,true]); AGR.STDCOMP("2.A14.2",[1,"A14.2",1,true]); AGR.STDCOMP("2.A5",[1,"A5",1,true]); AGR.STDCOMP("2.A5.2",[1,"A5.2",1,true]); AGR.STDCOMP("2.A6",[1,"A6",1,true]); AGR.STDCOMP("2.A6.2_1",[1,"A6.2_1",1,true]); AGR.STDCOMP("2.A7",[1,"A7",1,true]); AGR.STDCOMP("2.A8",[1,"A8",1,true]); AGR.STDCOMP("2.Fi22",[1,"Fi22",1,true]); AGR.STDCOMP("2.Fi22.2",[1,"Fi22.2",1,true]); AGR.STDCOMP("2.HS",[1,"HS",1,true]); AGR.STDCOMP("2.HS.2",[1,"HS.2",1,true]); AGR.STDCOMP("2.J2",[1,"J2",1,true]); AGR.STDCOMP("2.L2(11)",[1,"L2(11)",1,true]); AGR.STDCOMP("2.L3(2)",[1,"L3(2)",1,true]); AGR.STDCOMP("2.L3(2).2",[1,"L3(2).2",1,true]); AGR.STDCOMP("2.L3(4)",[1,"L3(4)",1,true]); AGR.STDCOMP("2.M12",[1,"M12",1,true]); AGR.STDCOMP("2.M12.2",[1,"M12.2",1,true]); AGR.STDCOMP("2.M22",[1,"M22",1,true]); AGR.STDCOMP("2.M22.2",[1,"M22.2",1,true]); AGR.STDCOMP("2.S6(2)",[1,"S6(2)",1,true]); AGR.STDCOMP("2.Sz(8)",[1,"Sz(8)",1,true]); AGR.STDCOMP("2.U4(2)",[1,"U4(2)",1,true]); AGR.STDCOMP("2^2.Sz(8).3",[1,"Sz(8).3",1,true]); AGR.STDCOMP("3.A6",[1,"A6",1,true]); AGR.STDCOMP("3.A6.2_1",[1,"A6.2_1",1,true]); AGR.STDCOMP("3.Fi22",[1,"Fi22",1,true]); AGR.STDCOMP("3.Fi22.2",[1,"Fi22.2",1,true]); AGR.STDCOMP("3.G2(3)",[1,"G2(3)",1,true]); AGR.STDCOMP("3.J3",[1,"J3",1,true]); AGR.STDCOMP("3.J3.2",[1,"J3.2",1,true]); AGR.STDCOMP("3.L3(4)",[1,"L3(4)",1,true]); AGR.STDCOMP("3.M22",[1,"M22",1,true]); AGR.STDCOMP("3.M22.2",[1,"M22.2",1,true]); AGR.STDCOMP("3.McL",[1,"McL",1,true]); AGR.STDCOMP("3.McL.2",[1,"McL.2",1,true]); AGR.STDCOMP("3.U3(8)",[1,"U3(8)",1,true]); AGR.STDCOMP("4.M22",[1,"M22",1,true]); AGR.STDCOMP("4.M22.2",[1,"M22.2",1,true]); AGR.STDCOMP("4_1.L3(4)",[1,"L3(4)",1,true]); AGR.STDCOMP("4_2.L3(4)",[1,"L3(4)",1,true]); AGR.STDCOMP("5^3.L3(5)",[2,"L3(5)",1,false]); AGR.STDCOMP("6.A6",[1,"A6",1,true]); AGR.STDCOMP("6.A6.2_1",[1,"A6.2_1",1,true]); AGR.STDCOMP("6.Fi22",[1,"2.Fi22",1,true]); AGR.STDCOMP("6.Fi22",[1,"Fi22",1,true]); AGR.STDCOMP("6.Fi22.2",[1,"3.Fi22.2",1,true]); AGR.STDCOMP("6.Fi22.2",[1,"Fi22.2",1,true]); AGR.STDCOMP("6.L3(4)",[1,"L3(4)",1,true]); AGR.STDCOMP("6.M22",[1,"M22",1,true]); AGR.STDCOMP("6.M22.2",[1,"M22.2",1,true]); AGR.STDCOMP("Isoclinic(2.A14.2)",[1,"A14.2",1,true]); AGR.STDCOMP("Isoclinic(2.A5.2)",[1,"A5.2",1,true]); AGR.STDCOMP("Isoclinic(2.L3(2).2)",[1,"L3(2).2",1,true]); AGR.STDCOMP("Isoclinic(2.M12.2)",[1,"M12.2",1,true]); ############################################################################# ## ## Store information about the rings over which characteristic zero ## representations are written if known. ## Note that the filenames do not contain this information, ## so it has to be stored explicitly. ## AGR.RNG("2A5G1-Ar2aB0","Field([E(5)])"); AGR.RNG("2A5G1-Ar4aB0","Field([Sqrt(-1)])"); AGR.RNG("2A5G1-Ar4aB2","Field([Sqrt(-6)])"); AGR.RNG("2A5G1-Ar6B0","Field([Sqrt(-1)])"); AGR.RNG("2A5G1-Ar6B1","Field([Sqrt(-3)])"); AGR.RNG("2A5G1-Hr1aB0","QuaternionAlgebra([Sqrt(5)])"); AGR.RNG("2A6G1-Ar4B0","Field([Sqrt(-3)])"); AGR.RNG("2A6G1-Ar4aB0","Field([Sqrt(-3)])"); AGR.RNG("2A6G1-Hr2aB0","QuaternionAlgebra([Sqrt(3)])"); AGR.RNG("2A7G1-Ar20aB0","Field([Sqrt(-7)])"); AGR.RNG("2A7G1-Ar4aB0","Field([Sqrt(-7)])"); AGR.RNG("2A7G1-Ar4bB0","Field([Sqrt(-7)])"); AGR.RNG("2A9G1-Ar8aB0","Field([E(7)])"); AGR.RNG("2G24G1-Ar12B0","Field([Sqrt(-1)])"); AGR.RNG("2L2101G1-Ar102aB0","Field([E(100)])"); AGR.RNG("2L2103G1-Ar104aB0","Field([E(51)])"); AGR.RNG("2L2107G1-Ar108aB0","Field([E(53)])"); AGR.RNG("2L2109G1-Ar110aB0","Field([E(108)])"); AGR.RNG("2L2113G1-Ar114aB0","Field([E(112)])"); AGR.RNG("2L2127G1-Ar128aB0","Field([E(63)])"); AGR.RNG("2L2131G1-Ar132aB0","Field([E(65)])"); AGR.RNG("2L2137G1-Ar138aB0","Field([E(136)])"); AGR.RNG("2L2139G1-Ar140aB0","Field([E(69)])"); AGR.RNG("2L2149G1-Ar150aB0","Field([E(148)])"); AGR.RNG("2L2151G1-Ar152aB0","Field([E(75)])"); AGR.RNG("2L2157G1-Ar158aB0","Field([E(156)])"); AGR.RNG("2L2163G1-Ar164aB0","Field([E(81)])"); AGR.RNG("2L2167G1-Ar168aB0","Field([E(83)])"); AGR.RNG("2L2173G1-Ar174aB0","Field([E(172)])"); AGR.RNG("2L2179G1-Ar180aB0","Field([E(89)])"); AGR.RNG("2L2181G1-Ar182aB0","Field([E(180)])"); AGR.RNG("2L2191G1-Ar192aB0","Field([E(95)])"); AGR.RNG("2L2193G1-Ar194aB0","Field([E(192)])"); AGR.RNG("2L2197G1-Ar198aB0","Field([E(196)])"); AGR.RNG("2L2199G1-Ar200aB0","Field([E(99)])"); AGR.RNG("2L2211G1-Ar212aB0","Field([E(105)])"); AGR.RNG("2L2223G1-Ar224aB0","Field([E(111)])"); AGR.RNG("2L2227G1-Ar228aB0","Field([E(113)])"); AGR.RNG("2L2229G1-Ar230aB0","Field([E(228)])"); AGR.RNG("2L2233G1-Ar234aB0","Field([E(232)])"); AGR.RNG("2L2239G1-Ar240aB0","Field([E(119)])"); AGR.RNG("2L2241G1-Ar242aB0","Field([E(240)])"); AGR.RNG("2L231G1-Ar32aB0","Field([E(15)])"); AGR.RNG("2L237G1-Ar38aB0","Field([E(36)])"); AGR.RNG("2L241G1-Ar42aB0","Field([E(40)])"); AGR.RNG("2L243G1-Ar44aB0","Field([E(21)])"); AGR.RNG("2L247G1-Ar48aB0","Field([E(23)])"); AGR.RNG("2L253G1-Ar54aB0","Field([E(52)])"); AGR.RNG("2L259G1-Ar60aB0","Field([E(29)])"); AGR.RNG("2L261G1-Ar62aB0","Field([E(60)])"); AGR.RNG("2L267G1-Ar68aB0","Field([E(33)])"); AGR.RNG("2L271G1-Ar72aB0","Field([E(35)])"); AGR.RNG("2L273G1-Ar74aB0","Field([E(72)])"); AGR.RNG("2L279G1-Ar80aB0","Field([E(39)])"); AGR.RNG("2L283G1-Ar84aB0","Field([E(41)])"); AGR.RNG("2L289G1-Ar90aB0","Field([E(88)])"); AGR.RNG("2L297G1-Ar98aB0","Field([E(96)])"); AGR.RNG("2S5G1-Ar4bB0","Field([Sqrt(-3)])"); AGR.RNG("2S5iG1-Ar4aB1","Field([Sqrt(-2)])"); AGR.RNG("2S5iG1-Ar4aB2","Field([Sqrt(-5)])"); AGR.RNG("2U42G1-Ar20aB0","Field([Sqrt(-3)])"); AGR.RNG("2U42G1-Ar20bB0","Field([Sqrt(-3)])"); AGR.RNG("2U42G1-Ar20cB0","Field([Sqrt(-3)])"); AGR.RNG("2U42G1-Ar36aB0","Field([Sqrt(-3)])"); AGR.RNG("2U42G1-Ar36bB0","Field([Sqrt(-3)])"); AGR.RNG("2U42G1-Ar4aB0","Field([Sqrt(-3)])"); AGR.RNG("2U42G1-Ar4bB0","Field([Sqrt(-3)])"); AGR.RNG("2U42G1-Ar60bB0","Field([Sqrt(-3)])"); AGR.RNG("2aM20G1-Ar12aB0","Field([Sqrt(5)])"); AGR.RNG("2aM20G1-Ar12bB0","Field([Sqrt(5)])"); AGR.RNG("2aM20G1-Ar12bB1","Field([Sqrt(5)])"); AGR.RNG("3A6G1-Ar15B0","Field([EY(15,1)])"); AGR.RNG("3A6G1-Ar3aB0","Field([EY(15,1)])"); AGR.RNG("3A6G1-Ar6B0","Field([Sqrt(-3)])"); AGR.RNG("3A6G1-Ar9B0","Field([Sqrt(-3)])"); AGR.RNG("3A7G1-Ar15aB0","Field([Sqrt(-3)])"); AGR.RNG("3A7G1-Ar15bB0","Field([Sqrt(-3)])"); AGR.RNG("3A7G1-Ar21aB0","Field([Sqrt(-3)])"); AGR.RNG("3A7G1-Ar21bB0","Field([Sqrt(-3)])"); AGR.RNG("3A7G1-Ar6B0","Field([Sqrt(-3)])"); AGR.RNG("4bM20G1-Ar20aB0","Field([Sqrt(-1)])"); AGR.RNG("4bM20G1-Ar4aB0","Field([Sqrt(-1)])"); AGR.RNG("4bM20G1-Ar4aB1","Field([Sqrt(-1)])"); AGR.RNG("6A6G1-Ar12B0","Field([EY(15,1)])"); AGR.RNG("6L34G1-Ar6aB0","Field([Sqrt(-3)])"); AGR.RNG("A5G1-Ar3aB0","Field([Sqrt(5)])"); AGR.RNG("A5G1-Ar3bB0","Field([Sqrt(5)])"); AGR.RNG("A6G1-Ar8aB0","Field([Sqrt(5)])"); AGR.RNG("A6G1-Ar8bB0","Field([Sqrt(5)])"); AGR.RNG("G23d2G1-Ar14B0","Field([Sqrt(-3)])"); AGR.RNG("J2G1-Ar14aB0","Field([Sqrt(5)])"); AGR.RNG("J2G1-Ar14bB0","Field([Sqrt(5)])"); AGR.RNG("J2G1-Ar21aB0","Field([Sqrt(5)])"); AGR.RNG("J2G1-Ar21bB0","Field([Sqrt(5)])"); AGR.RNG("L2101G1-Ar102aB0","Field([E(25)])"); AGR.RNG("L2103G1-Ar104aB0","Field([E(51)])"); AGR.RNG("L2107G1-Ar108aB0","Field([E(53)])"); AGR.RNG("L2109G1-Ar110aB0","Field([E(27)])"); AGR.RNG("L2113G1-Ar114aB0","Field([E(56)])"); AGR.RNG("L211G1-Ar12aB0","Field([E(5)])"); AGR.RNG("L211G1-Ar12bB0","Field([E(5)])"); AGR.RNG("L211G1-Ar5aB0","Field([Sqrt(-11)])"); AGR.RNG("L211G1-Ar5bB0","Field([Sqrt(-11)])"); AGR.RNG("L2127G1-Ar128aB0","Field([E(63)])"); AGR.RNG("L2128G1-Ar129aB0","Field([E(127)])"); AGR.RNG("L2131G1-Ar132aB0","Field([E(65)])"); AGR.RNG("L2137G1-Ar138aB0","Field([E(68)])"); AGR.RNG("L2139G1-Ar140aB0","Field([E(69)])"); AGR.RNG("L213G1-Ar12aB0","Field([EY(7)])"); AGR.RNG("L213G1-Ar12bB0","Field([EY(7)])"); AGR.RNG("L213G1-Ar12cB0","Field([EY(7)])"); AGR.RNG("L2149G1-Ar150aB0","Field([E(37)])"); AGR.RNG("L2151G1-Ar152aB0","Field([E(75)])"); AGR.RNG("L2157G1-Ar158aB0","Field([E(39)])"); AGR.RNG("L2163G1-Ar164aB0","Field([E(81)])"); AGR.RNG("L2167G1-Ar168aB0","Field([E(83)])"); AGR.RNG("L2173G1-Ar174aB0","Field([E(43)])"); AGR.RNG("L2179G1-Ar180aB0","Field([E(89)])"); AGR.RNG("L217G1-Ar9aB0","Field([Sqrt(17)])"); AGR.RNG("L217G1-Ar9bB0","Field([Sqrt(17)])"); AGR.RNG("L2181G1-Ar182aB0","Field([E(45)])"); AGR.RNG("L2191G1-Ar192aB0","Field([E(95)])"); AGR.RNG("L2193G1-Ar194aB0","Field([E(96)])"); AGR.RNG("L2197G1-Ar198aB0","Field([E(49)])"); AGR.RNG("L2199G1-Ar200aB0","Field([E(99)])"); AGR.RNG("L2211G1-Ar212aB0","Field([E(105)])"); AGR.RNG("L2223G1-Ar224aB0","Field([E(111)])"); AGR.RNG("L2227G1-Ar228aB0","Field([E(113)])"); AGR.RNG("L2229G1-Ar230aB0","Field([E(57)])"); AGR.RNG("L2233G1-Ar234aB0","Field([E(116)])"); AGR.RNG("L2239G1-Ar240aB0","Field([E(119)])"); AGR.RNG("L223G1-Ar24aB0","Field([E(11)])"); AGR.RNG("L223G1-Ar24bB0","Field([E(11)])"); AGR.RNG("L223G1-Ar24cB0","Field([E(11)])"); AGR.RNG("L223G1-Ar24dB0","Field([E(11)])"); AGR.RNG("L223G1-Ar24eB0","Field([E(11)])"); AGR.RNG("L2241G1-Ar242aB0","Field([E(120)])"); AGR.RNG("L227G1-Ar13aB0","Field([Sqrt(-3)])"); AGR.RNG("L227G1-Ar13bB0","Field([Sqrt(-3)])"); AGR.RNG("L227G1-Ar28aB0","Field([E(13)])"); AGR.RNG("L227G1-Ar28bB0","Field([E(13)])"); AGR.RNG("L227G1-Ar28cB0","Field([E(13)])"); AGR.RNG("L227G1-Ar28dB0","Field([E(13)])"); AGR.RNG("L227G1-Ar28eB0","Field([E(13)])"); AGR.RNG("L227G1-Ar28fB0","Field([E(13)])"); AGR.RNG("L229G1-Ar30aB0","Field([E(7)])"); AGR.RNG("L229G1-Ar30bB0","Field([E(7)])"); AGR.RNG("L229G1-Ar30cB0","Field([E(7)])"); AGR.RNG("L229G1-Ar30dB0","Field([E(7)])"); AGR.RNG("L229G1-Ar30eB0","Field([E(7)])"); AGR.RNG("L229G1-Ar30fB0","Field([E(7)])"); AGR.RNG("L231G1-Ar32aB0","Field([E(15)])"); AGR.RNG("L231G1-Ar32bB0","Field([E(5)])"); AGR.RNG("L231G1-Ar32cB0","Field([E(5)])"); AGR.RNG("L231G1-Ar32dB0","Field([E(15)])"); AGR.RNG("L231G1-Ar32eB0","Field([E(15)])"); AGR.RNG("L231G1-Ar32fB0","Field([E(15)])"); AGR.RNG("L231G1-Ar32gB0","Field([E(15)])"); AGR.RNG("L232G1-Ar33aB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33bB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33cB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33dB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33eB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33fB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33gB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33hB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33iB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33jB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33kB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33lB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33mB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33nB0","Field([E(31)])"); AGR.RNG("L232G1-Ar33oB0","Field([E(31)])"); AGR.RNG("L237G1-Ar38aB0","Field([E(9)])"); AGR.RNG("L241G1-Ar42aB0","Field([E(20)])"); AGR.RNG("L243G1-Ar44aB0","Field([E(21)])"); AGR.RNG("L247G1-Ar48aB0","Field([E(23)])"); AGR.RNG("L253G1-Ar54aB0","Field([E(13)])"); AGR.RNG("L259G1-Ar60aB0","Field([E(29)])"); AGR.RNG("L261G1-Ar62aB0","Field([E(15)])"); AGR.RNG("L264G1-Ar65aB0","Field([E(63)])"); AGR.RNG("L267G1-Ar68aB0","Field([E(33)])"); AGR.RNG("L271G1-Ar72aB0","Field([E(35)])"); AGR.RNG("L273G1-Ar74aB0","Field([E(36)])"); AGR.RNG("L279G1-Ar80aB0","Field([E(39)])"); AGR.RNG("L27G1-Ar3aB0","Field([Sqrt(-7)])"); AGR.RNG("L27G1-Ar3bB0","Field([Sqrt(-7)])"); AGR.RNG("L283G1-Ar84aB0","Field([E(41)])"); AGR.RNG("L289G1-Ar90aB0","Field([E(44)])"); AGR.RNG("L28G1-Ar7bB0","Field([EY(9)])"); AGR.RNG("L28G1-Ar7cB0","Field([EY(9)])"); AGR.RNG("L28G1-Ar7dB0","Field([EY(9)])"); AGR.RNG("L28G1-Ar9aB0","Field([EY(7)])"); AGR.RNG("L28G1-Ar9bB0","Field([EY(7)])"); AGR.RNG("L28G1-Ar9cB0","Field([EY(7)])"); AGR.RNG("L297G1-Ar98aB0","Field([E(48)])"); AGR.RNG("L311G1-Ar133bB0","Field([E(5)])"); AGR.RNG("L311G1-Ar133cB0","Field([E(5)])"); AGR.RNG("L311G1-Ar133dB0","Field([E(5)])"); AGR.RNG("L311G1-Ar133eB0","Field([E(5)])"); AGR.RNG("L311G1-Ar133fB0","Field([E(5)])"); AGR.RNG("L311G1-Ar133gB0","Field([E(5)])"); AGR.RNG("L311G1-Ar133hB0","Field([E(5)])"); AGR.RNG("L311G1-Ar133iB0","Field([E(5)])"); AGR.RNG("L313G1-Ar183bB0","Field([Sqrt(-1)])"); AGR.RNG("L313G1-Ar183cB0","Field([Sqrt(-1)])"); AGR.RNG("L33G1-Ar26bB0","Field([Sqrt(-2)])"); AGR.RNG("L33G1-Ar26cB0","Field([Sqrt(-2)])"); AGR.RNG("L34G1-Ar63aB0","Field([Sqrt(5)])"); AGR.RNG("L34G1-Ar63bB0","Field([Sqrt(5)])"); AGR.RNG("L35G1-Ar124cB0","Field([Sqrt(-1)])"); AGR.RNG("L35G1-Ar124dB0","Field([Sqrt(-1)])"); AGR.RNG("L35G1-Ar124eB0","Field([Sqrt(-1)])"); AGR.RNG("L35G1-Ar124fB0","Field([Sqrt(-1)])"); AGR.RNG("L35G1-Ar124gB0","Field([E(24)])"); AGR.RNG("L35G1-Ar124hB0","Field([E(24)])"); AGR.RNG("L35G1-Ar124iB0","Field([E(24)])"); AGR.RNG("L35G1-Ar124jB0","Field([E(24)])"); AGR.RNG("L35G1-Ar155bB0","Field([Sqrt(-1)])"); AGR.RNG("L35G1-Ar155cB0","Field([Sqrt(-1)])"); AGR.RNG("L35G1-Ar31bB0","Field([Sqrt(-1)])"); AGR.RNG("L35G1-Ar31cB0","Field([Sqrt(-1)])"); AGR.RNG("L38G1-Ar73aB0","Field([E(7)])"); AGR.RNG("L38G1-Ar73bB0","Field([E(7)])"); AGR.RNG("L38G1-Ar73cB0","Field([E(7)])"); AGR.RNG("L38G1-Ar73dB0","Field([E(7)])"); AGR.RNG("L38G1-Ar73eB0","Field([E(7)])"); AGR.RNG("L38G1-Ar73fB0","Field([E(7)])"); AGR.RNG("L44G1-Ar85aB0","Field([Sqrt(-3)])"); AGR.RNG("L44G1-Ar85bB0","Field([Sqrt(-3)])"); AGR.RNG("L52d2G1-Ar30B0","Field([Sqrt(2)])"); AGR.RNG("M11G1-Ar10bB0","Field([Sqrt(-2)])"); AGR.RNG("M11G1-Ar10cB0","Field([Sqrt(-2)])"); AGR.RNG("S44G1-Ar204aB0","Field([Sqrt(5)])"); AGR.RNG("S44G1-Ar204bB0","Field([Sqrt(5)])"); AGR.RNG("S44G1-Ar51aB0","Field([Sqrt(5)])"); AGR.RNG("S44G1-Ar51bB0","Field([Sqrt(5)])"); AGR.RNG("S45G1-Ar13aB0","Field([Sqrt(5)])"); AGR.RNG("S45G1-Ar13bB0","Field([Sqrt(5)])"); AGR.RNG("S47G1-Ar25aB0","Field([Sqrt(-7)])"); AGR.RNG("S47G1-Ar25bB0","Field([Sqrt(-7)])"); AGR.RNG("S63G1-Ar13aB0","Field([Sqrt(-3)])"); AGR.RNG("S63G1-Ar13bB0","Field([Sqrt(-3)])"); AGR.RNG("S63G1-Ar78B0","Field([Sqrt(-3)])"); AGR.RNG("S63G1-Ar91aB0","Field([Sqrt(-3)])"); AGR.RNG("S63G1-Ar91bB0","Field([Sqrt(-3)])"); AGR.RNG("Sz8G1-Ar14aB0","Field([Sqrt(-1)])"); AGR.RNG("Sz8G1-Ar14bB0","Field([Sqrt(-1)])"); AGR.RNG("Sz8G1-Ar65aB0","Field([E(7)])"); AGR.RNG("Sz8G1-Ar65bB0","Field([E(7)])"); AGR.RNG("Sz8G1-Ar65cB0","Field([E(7)])"); AGR.RNG("U33G1-Ar21bB0","Field([Sqrt(-1)])"); AGR.RNG("U33G1-Ar21cB0","Field([Sqrt(-1)])"); AGR.RNG("U33G1-Ar28aB0","Field([Sqrt(-1)])"); AGR.RNG("U33G1-Ar28bB0","Field([Sqrt(-1)])"); AGR.RNG("U33G1-Ar6B0","Field([Sqrt(-1)])"); AGR.RNG("U33G1-Ar7bB0","Field([Sqrt(-1)])"); AGR.RNG("U33G1-Ar7cB0","Field([Sqrt(-1)])"); AGR.RNG("U34G1-Ar12B0","Field([E(13)])"); AGR.RNG("U34G1-Ar13aB0","Field([E(5)])"); AGR.RNG("U34G1-Ar13bB0","Field([E(5)])"); AGR.RNG("U34G1-Ar13cB0","Field([E(5)])"); AGR.RNG("U34G1-Ar13dB0","Field([E(5)])"); AGR.RNG("U34G1-Ar52aB0","Field([E(5)])"); AGR.RNG("U34G1-Ar52bB0","Field([E(5)])"); AGR.RNG("U34G1-Ar52cB0","Field([E(5)])"); AGR.RNG("U34G1-Ar52dB0","Field([E(5)])"); AGR.RNG("U42G1-Ar10B0","Field([Sqrt(-3)])"); AGR.RNG("U42G1-Ar10aB0","Field([Sqrt(-3)])"); AGR.RNG("U42G1-Ar10bB0","Field([Sqrt(-3)])"); AGR.RNG("U42G1-Ar30bB0","Field([Sqrt(-3)])"); AGR.RNG("U42G1-Ar30cB0","Field([Sqrt(-3)])"); AGR.RNG("U42G1-Ar40aB0","Field([Sqrt(-3)])"); AGR.RNG("U42G1-Ar40bB0","Field([Sqrt(-3)])"); AGR.RNG("U42G1-Ar45aB0","Field([Sqrt(-3)])"); AGR.RNG("U42G1-Ar45bB0","Field([Sqrt(-3)])"); AGR.RNG("U42G1-Ar5aB0","Field([Sqrt(-3)])"); AGR.RNG("U42G1-Ar5bB0","Field([Sqrt(-3)])"); AGR.RNG("U52G1-Ar66aB0","Field([Sqrt(-3)])"); AGR.RNG("U52G1-Ar66bB0","Field([Sqrt(-3)])"); ############################################################################# ## ## Store information which straight line programs for restricting to maximal ## subgroups of a group can be used also for restricting to maximal ## subgroups of downward extensions. ## AGR.TOCEXT("12M22",1,1,["M22G1-max1W1"]); AGR.TOCEXT("12M22",1,2,["M22G1-max2W1"]); AGR.TOCEXT("12M22",1,3,["M22G1-max3W1"]); AGR.TOCEXT("12M22",1,4,["M22G1-max4W1"]); AGR.TOCEXT("12M22",1,5,["M22G1-max5W1","M22"]); AGR.TOCEXT("12M22",1,6,["M22G1-max6W1","M22"]); AGR.TOCEXT("12M22",1,7,["M22G1-max7W1"]); AGR.TOCEXT("12M22",1,8,["M22G1-max8W1","M22"]); AGR.TOCEXT("12aL34",1,1,["L34G1-max1W1"]); AGR.TOCEXT("12aL34",1,2,["L34G1-max2W1"]); AGR.TOCEXT("12aL34",1,3,["L34G1-max3W1","L3(4)"]); AGR.TOCEXT("12aL34",1,6,["L34G1-max6W1","L3(4)"]); AGR.TOCEXT("12aL34",1,7,["L34G1-max7W1","L3(4)"]); AGR.TOCEXT("12aL34",1,8,["L34G1-max8W1","L3(4)"]); AGR.TOCEXT("12aL34",1,9,["L34G1-max9W1"]); AGR.TOCEXT("12bL34",1,1,["L34G1-max1W1"]); AGR.TOCEXT("12bL34",1,2,["L34G1-max2W1"]); AGR.TOCEXT("12bL34",1,3,["L34G1-max3W1","L3(4)"]); AGR.TOCEXT("12bL34",1,6,["L34G1-max6W1","L3(4)"]); AGR.TOCEXT("12bL34",1,7,["L34G1-max7W1","L3(4)"]); AGR.TOCEXT("12bL34",1,8,["L34G1-max8W1","L3(4)"]); AGR.TOCEXT("12bL34",1,9,["L34G1-max9W1"]); AGR.TOCEXT("2A5",1,1,["A5G1-max1W1"]); AGR.TOCEXT("2A5",1,2,["A5G1-max2W1"]); AGR.TOCEXT("2A5",1,3,["A5G1-max3W1"]); AGR.TOCEXT("2A6",1,1,["A6G1-max1W1"]); AGR.TOCEXT("2A6",1,2,["A6G1-max2W1"]); AGR.TOCEXT("2A6",1,3,["A6G1-max3W1"]); AGR.TOCEXT("2A6",1,4,["A6G1-max4W1"]); AGR.TOCEXT("2A6",1,5,["A6G1-max5W1"]); AGR.TOCEXT("2F22",1,1,["F22G1-max1W1"]); AGR.TOCEXT("2F22",1,10,["F22G1-max10W1"]); AGR.TOCEXT("2F22",1,11,["F22G1-max11W1"]); AGR.TOCEXT("2F22",1,12,["F22G1-max12W1","Fi22"]); AGR.TOCEXT("2F22",1,13,["F22G1-max13W2","Fi22"]); AGR.TOCEXT("2F22",1,14,["F22G1-max14W1","Fi22"]); AGR.TOCEXT("2F22",1,2,["F22G1-max2W1"]); AGR.TOCEXT("2F22",1,3,["F22G1-max3W1"]); AGR.TOCEXT("2F22",1,4,["F22G1-max4W1","Fi22"]); AGR.TOCEXT("2F22",1,5,["F22G1-max5W1"]); AGR.TOCEXT("2F22",1,6,["F22G1-max6W1"]); AGR.TOCEXT("2F22",1,7,["F22G1-max7W1"]); AGR.TOCEXT("2F22",1,8,["F22G1-max8W1"]); AGR.TOCEXT("2F22",1,9,["F22G1-max9W1","Fi22"]); AGR.TOCEXT("2F22d2",1,1,["F22d2G1-max1W1"]); AGR.TOCEXT("2F22d2",1,13,["F22d2G1-max13W1"]); AGR.TOCEXT("2F22d2",1,2,["F22d2G1-max2W1"]); AGR.TOCEXT("2HS",1,1,["HSG1-max1W1"]); AGR.TOCEXT("2HS",1,10,["HSG1-max10W1"]); AGR.TOCEXT("2HS",1,11,["HSG1-max11W1"]); AGR.TOCEXT("2HS",1,12,["HSG1-max12W1"]); AGR.TOCEXT("2HS",1,2,["HSG1-max2W1"]); AGR.TOCEXT("2HS",1,3,["HSG1-max3W1"]); AGR.TOCEXT("2HS",1,4,["HSG1-max4W1"]); AGR.TOCEXT("2HS",1,5,["HSG1-max5W1"]); AGR.TOCEXT("2HS",1,6,["HSG1-max6W1"]); AGR.TOCEXT("2HS",1,7,["HSG1-max7W1"]); AGR.TOCEXT("2HS",1,8,["HSG1-max8W1","HS"]); AGR.TOCEXT("2HS",1,9,["HSG1-max9W1","HS"]); AGR.TOCEXT("2HSd2",1,1,["HSd2G1-max1W1"]); AGR.TOCEXT("2HSd2",1,10,["HSd2G1-max10W1"]); AGR.TOCEXT("2HSd2",1,2,["HSd2G1-max2W1"]); AGR.TOCEXT("2HSd2",1,3,["HSd2G1-max3W1"]); AGR.TOCEXT("2HSd2",1,4,["HSd2G1-max4W1"]); AGR.TOCEXT("2HSd2",1,5,["HSd2G1-max5W1"]); AGR.TOCEXT("2HSd2",1,6,["HSd2G1-max6W1"]); AGR.TOCEXT("2HSd2",1,7,["HSd2G1-max7W1"]); AGR.TOCEXT("2HSd2",1,8,["HSd2G1-max8W1"]); AGR.TOCEXT("2HSd2",1,9,["HSd2G1-max9W1"]); AGR.TOCEXT("2J2",1,1,["J2G1-max1W1","J2"]); AGR.TOCEXT("2J2",1,2,["J2G1-max2W1"]); AGR.TOCEXT("2J2",1,3,["J2G1-max3W1"]); AGR.TOCEXT("2J2",1,4,["J2G1-max4W1"]); AGR.TOCEXT("2J2",1,5,["J2G1-max5W1"]); AGR.TOCEXT("2J2",1,6,["J2G1-max6W1"]); AGR.TOCEXT("2J2",1,7,["J2G1-max7W1"]); AGR.TOCEXT("2J2",1,8,["J2G1-max8W1"]); AGR.TOCEXT("2J2",1,9,["J2G1-max9W1"]); AGR.TOCEXT("2L27",1,1,["L27G1-max1W1"]); AGR.TOCEXT("2L27",1,2,["L27G1-max2W1"]); AGR.TOCEXT("2L27",1,3,["L27G1-max3W1","L3(2)"]); AGR.TOCEXT("2L27d2",1,1,["L27d2G1-max1W1"]); AGR.TOCEXT("2L27d2",1,2,["L27d2G1-max2W1"]); AGR.TOCEXT("2L27d2",1,3,["L27d2G1-max3W1"]); AGR.TOCEXT("2L27d2",1,4,["L27d2G1-max4W1"]); AGR.TOCEXT("2L27d2i",1,1,["L27d2G1-max1W1"]); AGR.TOCEXT("2L27d2i",1,2,["L27d2G1-max2W1","L3(2).2"]); AGR.TOCEXT("2L27d2i",1,3,["L27d2G1-max3W1"]); AGR.TOCEXT("2L27d2i",1,4,["L27d2G1-max4W1"]); AGR.TOCEXT("2L34",1,1,["L34G1-max1W1"]); AGR.TOCEXT("2L34",1,2,["L34G1-max2W1"]); AGR.TOCEXT("2L34",1,3,["L34G1-max3W1","L3(4)"]); AGR.TOCEXT("2L34",1,6,["L34G1-max6W1","L3(4)"]); AGR.TOCEXT("2L34",1,7,["L34G1-max7W1"]); AGR.TOCEXT("2L34",1,8,["L34G1-max8W1"]); AGR.TOCEXT("2L34",1,9,["L34G1-max9W1"]); AGR.TOCEXT("2M12",1,1,["M12G1-max1W1","M12"]); AGR.TOCEXT("2M12",1,10,["M12G1-max10W1"]); AGR.TOCEXT("2M12",1,11,["M12G1-max11W1"]); AGR.TOCEXT("2M12",1,2,["M12G1-max2W1","M12"]); AGR.TOCEXT("2M12",1,3,["M12G1-max3W1"]); AGR.TOCEXT("2M12",1,4,["M12G1-max4W1"]); AGR.TOCEXT("2M12",1,5,["M12G1-max5W1"]); AGR.TOCEXT("2M12",1,6,["M12G1-max6W1"]); AGR.TOCEXT("2M12",1,7,["M12G1-max7W1"]); AGR.TOCEXT("2M12",1,8,["M12G1-max8W1"]); AGR.TOCEXT("2M12",1,9,["M12G1-max9W1"]); AGR.TOCEXT("2M12d2",1,2,["M12d2G1-max2W1","M12.2"]); AGR.TOCEXT("2M12d2",1,3,["M12d2G1-max3W1"]); AGR.TOCEXT("2M12d2",1,4,["M12d2G1-max4W1"]); AGR.TOCEXT("2M12d2",1,5,["M12d2G1-max5W1"]); AGR.TOCEXT("2M12d2",1,6,["M12d2G1-max6W1"]); AGR.TOCEXT("2M12d2",1,7,["M12d2G1-max7W1","M12.2"]); AGR.TOCEXT("2M12d2",1,8,["M12d2G1-max8W1"]); AGR.TOCEXT("2M12d2",1,9,["M12d2G1-max9W1"]); AGR.TOCEXT("2M22",1,1,["M22G1-max1W1"]); AGR.TOCEXT("2M22",1,2,["M22G1-max2W1"]); AGR.TOCEXT("2M22",1,3,["M22G1-max3W1"]); AGR.TOCEXT("2M22",1,4,["M22G1-max4W1"]); AGR.TOCEXT("2M22",1,5,["M22G1-max5W1"]); AGR.TOCEXT("2M22",1,6,["M22G1-max6W1"]); AGR.TOCEXT("2M22",1,7,["M22G1-max7W1"]); AGR.TOCEXT("2M22",1,8,["M22G1-max8W1"]); AGR.TOCEXT("2M22d2",1,1,["M22d2G1-max1W1"]); AGR.TOCEXT("2M22d2",1,2,["M22d2G1-max2W1"]); AGR.TOCEXT("2M22d2",1,3,["M22d2G1-max3W1"]); AGR.TOCEXT("2M22d2",1,4,["M22d2G1-max4W1"]); AGR.TOCEXT("2M22d2",1,5,["M22d2G1-max5W1"]); AGR.TOCEXT("2M22d2",1,6,["M22d2G1-max6W1"]); AGR.TOCEXT("2M22d2",1,7,["M22d2G1-max7W1","M22.2"]); AGR.TOCEXT("2S5",1,1,["S5G1-max1W1"]); AGR.TOCEXT("2S5",1,2,["S5G1-max2W1"]); AGR.TOCEXT("2S5",1,3,["S5G1-max3W1"]); AGR.TOCEXT("2S5",1,4,["S5G1-max4W1"]); AGR.TOCEXT("2S5i",1,1,["S5G1-max1W1"]); AGR.TOCEXT("2S5i",1,2,["S5G1-max2W1"]); AGR.TOCEXT("2S5i",1,3,["S5G1-max3W1"]); AGR.TOCEXT("2S5i",1,4,["S5G1-max4W1"]); AGR.TOCEXT("2S6",1,1,["S6G1-max1W1"]); AGR.TOCEXT("2S6",1,2,["S6G1-max2W1"]); AGR.TOCEXT("2S6",1,3,["S6G1-max3W1"]); AGR.TOCEXT("2S6",1,4,["S6G1-max4W1"]); AGR.TOCEXT("2S6",1,5,["S6G1-max5W1"]); AGR.TOCEXT("2S6",1,6,["S6G1-max6W1"]); AGR.TOCEXT("2S62",1,1,["S62G1-max1W1"]); AGR.TOCEXT("2S62",1,2,["S62G1-max2W1"]); AGR.TOCEXT("2S62",1,3,["S62G1-max3W1"]); AGR.TOCEXT("2S62",1,4,["S62G1-max4W1","S6(2)"]); AGR.TOCEXT("2S62",1,5,["S62G1-max5W1"]); AGR.TOCEXT("2S62",1,6,["S62G1-max6W1"]); AGR.TOCEXT("2S62",1,7,["S62G1-max7W1"]); AGR.TOCEXT("2S62",1,8,["S62G1-max8W1","S6(2)"]); AGR.TOCEXT("2Sz8",1,1,["Sz8G1-max1W1"]); AGR.TOCEXT("2Sz8",1,2,["Sz8G1-max2W1"]); AGR.TOCEXT("2Sz8",1,3,["Sz8G1-max3W1"]); AGR.TOCEXT("2Sz8",1,4,["Sz8G1-max4W1","Sz(8)"]); AGR.TOCEXT("3A6",1,1,["A6G1-max1W1"]); AGR.TOCEXT("3A6",1,2,["A6G1-max2W1"]); AGR.TOCEXT("3A6",1,3,["A6G1-max3W1"]); AGR.TOCEXT("3A6",1,4,["A6G1-max4W1"]); AGR.TOCEXT("3A6",1,5,["A6G1-max5W1"]); AGR.TOCEXT("3G23",1,1,["G23G1-max1W1","G2(3)"]); AGR.TOCEXT("3G23",1,10,["G23G1-max10W1"]); AGR.TOCEXT("3G23",1,2,["G23G1-max2W1","G2(3)"]); AGR.TOCEXT("3G23",1,3,["G23G1-max3W1"]); AGR.TOCEXT("3G23",1,4,["G23G1-max4W1"]); AGR.TOCEXT("3G23",1,5,["G23G1-max5W1"]); AGR.TOCEXT("3G23",1,6,["G23G1-max6W1"]); AGR.TOCEXT("3G23",1,7,["G23G1-max7W1","G2(3)"]); AGR.TOCEXT("3G23",1,8,["G23G1-max8W1"]); AGR.TOCEXT("3G23",1,9,["G23G1-max9W1"]); AGR.TOCEXT("3L34",1,1,["L34G1-max1W1"]); AGR.TOCEXT("3L34",1,2,["L34G1-max2W1"]); AGR.TOCEXT("3L34",1,3,["L34G1-max3W1"]); AGR.TOCEXT("3L34",1,6,["L34G1-max6W1","L3(4)"]); AGR.TOCEXT("3L34",1,7,["L34G1-max7W1","L3(4)"]); AGR.TOCEXT("3L34",1,8,["L34G1-max8W1","L3(4)"]); AGR.TOCEXT("3L34",1,9,["L34G1-max9W1"]); AGR.TOCEXT("3M22",1,1,["M22G1-max1W1"]); AGR.TOCEXT("3M22",1,2,["M22G1-max2W1"]); AGR.TOCEXT("3M22",1,3,["M22G1-max3W1"]); AGR.TOCEXT("3M22",1,4,["M22G1-max4W1"]); AGR.TOCEXT("3M22",1,5,["M22G1-max5W1","M22"]); AGR.TOCEXT("3M22",1,6,["M22G1-max6W1","M22"]); AGR.TOCEXT("3M22",1,7,["M22G1-max7W1"]); AGR.TOCEXT("3M22",1,8,["M22G1-max8W1","M22"]); AGR.TOCEXT("3M22d2",1,1,["M22d2G1-max1W1"]); AGR.TOCEXT("3M22d2",1,2,["M22d2G1-max2W1"]); AGR.TOCEXT("3M22d2",1,3,["M22d2G1-max3W1"]); AGR.TOCEXT("3M22d2",1,4,["M22d2G1-max4W1"]); AGR.TOCEXT("3M22d2",1,5,["M22d2G1-max5W1","M22.2"]); AGR.TOCEXT("3M22d2",1,6,["M22d2G1-max6W1"]); AGR.TOCEXT("3M22d2",1,7,["M22d2G1-max7W1","M22.2"]); AGR.TOCEXT("3McL",1,1,["McLG1-max1W1"]); AGR.TOCEXT("3McL",1,10,["McLG1-max10W1"]); AGR.TOCEXT("3McL",1,11,["McLG1-max11W1","McL"]); AGR.TOCEXT("3McL",1,12,["McLG1-max12W1"]); AGR.TOCEXT("3McL",1,2,["McLG1-max2W1"]); AGR.TOCEXT("3McL",1,3,["McLG1-max3W1"]); AGR.TOCEXT("3McL",1,4,["McLG1-max4W1"]); AGR.TOCEXT("3McL",1,5,["McLG1-max5W1"]); AGR.TOCEXT("3McL",1,6,["McLG1-max6W1"]); AGR.TOCEXT("3McL",1,7,["McLG1-max7W1"]); AGR.TOCEXT("3McL",1,8,["McLG1-max8W1","McL"]); AGR.TOCEXT("3McL",1,9,["McLG1-max9W1"]); AGR.TOCEXT("3McLd2",1,1,["McLd2G1-max1W1"]); AGR.TOCEXT("3McLd2",1,10,["McLd2G1-max10W1"]); AGR.TOCEXT("3McLd2",1,2,["McLd2G1-max2W1"]); AGR.TOCEXT("3McLd2",1,3,["McLd2G1-max3W1"]); AGR.TOCEXT("3McLd2",1,4,["McLd2G1-max4W1"]); AGR.TOCEXT("3McLd2",1,5,["McLd2G1-max5W1"]); AGR.TOCEXT("3McLd2",1,6,["McLd2G1-max6W1"]); AGR.TOCEXT("3McLd2",1,7,["McLd2G1-max7W1"]); AGR.TOCEXT("3McLd2",1,8,["McLd2G1-max8W1"]); AGR.TOCEXT("3McLd2",1,9,["McLd2G1-max9W1"]); AGR.TOCEXT("3S6",1,1,["S6G1-max1W1"]); AGR.TOCEXT("3S6",1,2,["S6G1-max2W1","A6.2_1"]); AGR.TOCEXT("3S6",1,3,["S6G1-max3W1","A6.2_1"]); AGR.TOCEXT("3S6",1,4,["S6G1-max4W1"]); AGR.TOCEXT("3S6",1,5,["S6G1-max5W1","A6.2_1"]); AGR.TOCEXT("3S6",1,6,["S6G1-max6W1","A6.2_1"]); AGR.TOCEXT("4M22",1,1,["M22G1-max1W1"]); AGR.TOCEXT("4M22",1,2,["M22G1-max2W1"]); AGR.TOCEXT("4M22",1,3,["M22G1-max3W1"]); AGR.TOCEXT("4M22",1,4,["M22G1-max4W1"]); AGR.TOCEXT("4M22",1,5,["M22G1-max5W1"]); AGR.TOCEXT("4M22",1,6,["M22G1-max6W1"]); AGR.TOCEXT("4M22",1,7,["M22G1-max7W1"]); AGR.TOCEXT("4M22",1,8,["M22G1-max8W1"]); AGR.TOCEXT("4Sz8d3",1,1,["Sz8d3G1-max1W1"]); AGR.TOCEXT("4Sz8d3",1,2,["Sz8d3G1-max2W1"]); AGR.TOCEXT("4Sz8d3",1,3,["Sz8d3G1-max3W1"]); AGR.TOCEXT("4Sz8d3",1,4,["Sz8d3G1-max4W1","Sz(8).3"]); AGR.TOCEXT("4Sz8d3",1,5,["Sz8d3G1-max5W1"]); AGR.TOCEXT("4aL34",1,1,["L34G1-max1W1"]); AGR.TOCEXT("4aL34",1,2,["L34G1-max2W1"]); AGR.TOCEXT("4aL34",1,3,["L34G1-max3W1","L3(4)"]); AGR.TOCEXT("4aL34",1,6,["L34G1-max6W1","L3(4)"]); AGR.TOCEXT("4aL34",1,7,["L34G1-max7W1"]); AGR.TOCEXT("4aL34",1,8,["L34G1-max8W1"]); AGR.TOCEXT("4aL34",1,9,["L34G1-max9W1"]); AGR.TOCEXT("4bL34",1,1,["L34G1-max1W1"]); AGR.TOCEXT("4bL34",1,2,["L34G1-max2W1"]); AGR.TOCEXT("4bL34",1,3,["L34G1-max3W1","L3(4)"]); AGR.TOCEXT("4bL34",1,6,["L34G1-max6W1","L3(4)"]); AGR.TOCEXT("4bL34",1,7,["L34G1-max7W1"]); AGR.TOCEXT("4bL34",1,8,["L34G1-max8W1"]); AGR.TOCEXT("4bL34",1,9,["L34G1-max9W1"]); AGR.TOCEXT("6A6",1,1,["A6G1-max1W1"]); AGR.TOCEXT("6A6",1,2,["A6G1-max2W1"]); AGR.TOCEXT("6A6",1,3,["A6G1-max3W1"]); AGR.TOCEXT("6A6",1,4,["A6G1-max4W1"]); AGR.TOCEXT("6A6",1,5,["A6G1-max5W1"]); AGR.TOCEXT("6L34",1,1,["L34G1-max1W1"]); AGR.TOCEXT("6L34",1,2,["L34G1-max2W1"]); AGR.TOCEXT("6L34",1,3,["L34G1-max3W1","L3(4)"]); AGR.TOCEXT("6L34",1,6,["L34G1-max6W1","L3(4)"]); AGR.TOCEXT("6L34",1,7,["L34G1-max7W1","L3(4)"]); AGR.TOCEXT("6L34",1,8,["L34G1-max8W1","L3(4)"]); AGR.TOCEXT("6L34",1,9,["L34G1-max9W1"]); AGR.TOCEXT("6M22",1,1,["M22G1-max1W1"]); AGR.TOCEXT("6M22",1,2,["M22G1-max2W1"]); AGR.TOCEXT("6M22",1,3,["M22G1-max3W1"]); AGR.TOCEXT("6M22",1,4,["M22G1-max4W1"]); AGR.TOCEXT("6M22",1,5,["M22G1-max5W1","M22"]); AGR.TOCEXT("6M22",1,6,["M22G1-max6W1","M22"]); AGR.TOCEXT("6M22",1,7,["M22G1-max7W1"]); AGR.TOCEXT("6M22",1,8,["M22G1-max8W1","M22"]); AGR.TOCEXT("6M22d2",1,1,["M22d2G1-max1W1"]); AGR.TOCEXT("6M22d2",1,2,["M22d2G1-max2W1"]); AGR.TOCEXT("6M22d2",1,3,["M22d2G1-max3W1"]); AGR.TOCEXT("6M22d2",1,4,["M22d2G1-max4W1"]); AGR.TOCEXT("6M22d2",1,5,["M22d2G1-max5W1","M22.2"]); AGR.TOCEXT("6M22d2",1,6,["M22d2G1-max6W1"]); AGR.TOCEXT("6M22d2",1,7,["M22d2G1-max7W1","M22.2"]); AGR.TOCEXT("6S6",1,1,["S6G1-max1W1"]); AGR.TOCEXT("6S6",1,2,["S6G1-max2W1","A6.2_1"]); AGR.TOCEXT("6S6",1,3,["S6G1-max3W1","A6.2_1"]); AGR.TOCEXT("6S6",1,4,["S6G1-max4W1"]); AGR.TOCEXT("6S6",1,5,["S6G1-max5W1","A6.2_1"]); AGR.TOCEXT("6S6",1,6,["S6G1-max6W1","A6.2_1"]); ############################################################################# ## ## Store information about the point stabilizers of permutation ## representations if known. ## Note that the filenames do not contain this information, ## so it has to be stored explicitly. ## AGR.API("12M22G1-p31680aB0",[1,256,"imprim","L3(2) < 3x2.(2^3:L3(2)x2)"]); AGR.API("12U62G1-p4704B0",[0,[2016,2688]]); AGR.API("12U62G1-p8064B0",[1,19,"imprim","U5(2) < 2^2x3xU5(2)"]); AGR.API("12aL34G1-p1440B0",[1,28,"imprim","L2(7) < 12xL2(7)"]); AGR.API("12bL34G1-p1440B0",[1,34,"imprim","L2(7) < 12xL2(7)"]); AGR.API("24A8G1-p128B0",[1,4,"imprim","A7 < 2^4:A7"]); AGR.API("24A8G1-p30B0",[1,3,"imprim","4^3:L3(2) < 2^4.2^3.L3(2)"]); AGR.API("2A11G1-p5040B0",[1,8,"imprim","M11 < 2xM11"]); AGR.API("2A5G1-p24B0",[1,8,"imprim","5 < 2.D10"]); AGR.API("2A5G1-p40B0",[1,16,"imprim","3 < 2.S3"]); AGR.API("2A6G1-p144B0",[1,32,"imprim","5 < 2.A5"]); AGR.API("2A6G1-p240aB0",[1,88,"imprim","3 < 3^2:8"]); AGR.API("2A6G1-p240bB0",[1,88,"imprim","3 < 3^2:8"]); AGR.API("2A6G1-p80B0",[1,16,"imprim","3^2 < 3^2:8"]); AGR.API("2A7G1-p240B0",[1,20,"imprim","7:3 < 2.L3(2)"]); AGR.API("2A8G1-p240aB0",[1,10,"imprim","L3(2) < 2^(1+3):L3(2)"]); AGR.API("2A8G1-p240bB0",[1,7,"imprim","2^3:7:3 < 2^(1+3):L3(2)"]); AGR.API("2A8G1-p240cB0",[1,7,"imprim","2^3:7:3 < 2^(1+3):L3(2)"]); AGR.API("2Co1G1-p196560B0",[1,7,"imprim","Co2 < 2xCo2"]); AGR.API("2F22G1-p123552B0",[1,6,"imprim","O8+(2):S3 < O8+(2):S3x2"]); AGR.API("2F22G1-p28160B0",[1,5,"imprim","O7(3) < 2xO7(3)"]); AGR.API("2F22d2G1-p56320B0",[1,9,"imprim","O7(3) < 2xO7(3)"]); AGR.API("2F42G1-p139776B0",[1,9,"imprim","S8(2) < 2xS8(2)"]); AGR.API("2HSG1-p11200aB0",[1,16,"imprim","M11 < 2xM11"]); AGR.API("2HSG1-p4400B0",[1,13,"imprim","A8 < Isoclinic(S8x2)"]); AGR.API("2HSG1-p704B0",[1,6,"imprim","U3(5) < Isoclinic(U3(5).2x2)"]); AGR.API("2HSd2G1-p1408B0",[1,11,"imprim","U3(5) < U3(5).2"]); AGR.API("2J2G1-p1120B0",[1,20,"imprim","3.A6 < (2x3.A6).2"]); AGR.API("2J2G1-p200B0",[1,5,"imprim","U3(3) < 2xU3(3)"]); AGR.API("2L219G1-p40B0",[1,4,"imprim","19:9 < 2x19:9"]); AGR.API("2L27G1-p112B0",[1,40,"imprim","3 < 2x7:3"]); AGR.API("2L27G1-p16B0",[1,4,"imprim","7:3 < 2x7:3"]); AGR.API("2L27G1-p336B0",[1,336,"imprim","1 < 2x7:3"]); AGR.API("2L27G1-p48B0",[1,12,"imprim","7 < 2x7:3"]); AGR.API("2L27d2G1-p224B0",[1,80,"imprim","3 < 2.L2(7)"]); AGR.API("2L27d2G1-p32B0",[1,8,"imprim","7:3 < 2.L2(7)"]); AGR.API("2L27d2G1-p672B0",[1,672,"imprim","1 < 2.L2(7)"]); AGR.API("2L27d2G1-p96B0",[1,24,"imprim","7 < 2.L2(7)"]); AGR.API("2L27d2iG1-p112aB0",[1,23,"imprim","S3 < 2.D12"]); AGR.API("2L27d2iG1-p112bB0",[1,21,"imprim","6 < 2x7:6"]); AGR.API("2L27d2iG1-p16aB0",[1,3,"imprim","7:6 < 2x7:6"]); AGR.API("2L27d2iG1-p16bB0",[1,3,"imprim","7:6 < 2x7:6"]); AGR.API("2L27d2iG1-p224B0",[1,80,"imprim","3 < 2.L2(7)"]); AGR.API("2L27d2iG1-p32B0",[1,8,"imprim","7:3 < 2.L2(7)"]); AGR.API("2L27d2iG1-p336B0",[1,171,"imprim","2 < 2.D12"]); AGR.API("2L27d2iG1-p48aB0",[1,9,"imprim","D14 < 2x7:6"]); AGR.API("2L27d2iG1-p48bB0",[1,9,"imprim","D14 < 2x7:6"]); AGR.API("2L27d2iG1-p672B0",[1,672,"imprim","1 < 2.L2(7)"]); AGR.API("2L27d2iG1-p96B0",[1,24,"imprim","7 < 2.L2(7)"]); AGR.API("2L34G1-p112aB0",[1,6,"imprim","A6 < 2xA6"]); AGR.API("2L34G1-p112bB0",[1,5,"imprim","A6 < 2xA6"]); AGR.API("2L34G1-p112cB0",[1,5,"imprim","A6 < 2xA6"]); AGR.API("2L34G1-p240aB0",[1,8,"imprim","L2(7) < 2xL2(7)"]); AGR.API("2L34G1-p240bB0",[1,7,"imprim","L2(7) < 2xL2(7)"]); AGR.API("2L34G1-p240cB0",[1,7,"imprim","L2(7) < 2xL2(7)"]); AGR.API("2M12G1-p24aB0",[1,3,"imprim","M11 < 2xM11"]); AGR.API("2M12d2G1-p48B0",[1,5,"imprim","M11 < 2.M12"]); AGR.API("2M22G1-p352aB0",[1,5,"imprim","A7 < 2xA7"]); AGR.API("2M22G1-p660B0",[1,7,"imprim","2^3:L3(2) < 2x2^3:L3(2)"]); AGR.API("2O73G1-p2160B0",[1,5,"imprim","G2(3) < 2xG2(3)"]); AGR.API("2O8p3G1-p2160aB0",[1,5,"imprim","O7(3) < 2xO7(3)"]); AGR.API("2O8p3G1-p2160bB0",[1,5,"imprim","O7(3) < 2xO7(3)"]); AGR.API("2O8p3G1-p2240B0",[1,5,"imprim","3^6:L4(3) < 2x3^6:L4(3)"]); AGR.API("2RuG1-p16240B0",[1,9,"imprim","2F4(2)' < Isoclinic(2F4(2)'.2x2)"]); AGR.API("2S45G1-p624B0",[1,9,"imprim","5^(1+2)_+:2A5 < 5^(1+2)_+:(4x2.A5)"]); AGR.API("2S5G1-p40aB0",[1,11,"imprim","S3 < 2.S4"]); AGR.API("2S5G1-p40bB0",[1,9,"imprim","6 < 2.(2xS3)"]); AGR.API("2S5G1-p48B0",[1,16,"imprim","5 < 2.A5"]); AGR.API("2S5iG1-p48B0",[1,16,"imprim","5 < 2.A5"]); AGR.API("2S5iG1-p80B0",[1,32,"imprim","3 < 2.A5"]); AGR.API("2S62G1-p1920B0",[1,10,"imprim","L2(8).3 < 2xL2(8).3"]); AGR.API("2S62G1-p2160B0",[1,13,"imprim","2^3.L3(2) < 2^7.L3(2)"]); AGR.API("2S62G1-p240aB0",[1,4,"imprim","U3(3).2 < 2xU3(3).2"]); AGR.API("2S62G1-p240bB0",[1,5,"imprim","U3(3).2 < 2xU3(3).2"]); AGR.API("2S62G1-p480B0",[1,8,"imprim","U3(3) < 2xU3(3).2"]); AGR.API("2S63d2G1-p728B0",[1,4,"imprim","3^(1+4)_+:2U4(2) < 2x3^(1+4)_+:2U4(2)"]); AGR.API("2S6G1-p240aB0",[1,56,"imprim","S3 < 2.S5"]); AGR.API("2S6G1-p288B0",[1,64,"imprim","5 < 2.S5"]); AGR.API("2S6G1-p80B0",[1,10,"imprim","3xS3 < 3^2:QD16"]); AGR.API("2SuzG1-p65520B0",[1,10,"imprim","U5(2) < 2xU5(2)"]); AGR.API("2Sz8G1-p1040B0",[1,23,"imprim","2^3:7 < 2^(4+3):7"]); AGR.API("2U42G1-p240B0",[1,9,"imprim","3^(1+2)_+:Q8 < 2x3^(1+2)_+:2A4"]); AGR.API("2U42G1-p80B0",[1,5,"imprim","3^(1+2)_+:2A4 < 2x3^(1+2)_+:2A4"]); AGR.API("2U42d2G1-p240B0",[1,6,"imprim","3^(1+2)_+:QD16 < 2x3^(1+2)_+:2S4"]); AGR.API("2U62G1-p12672aB0",[1,7,"imprim","S6(2) < 2xS6(2)"]); AGR.API("2U62G1-p12672bB0",[1,6,"imprim","S6(2) < 2xS6(2)"]); AGR.API("2U62G1-p12672cB0",[1,6,"imprim","S6(2) < 2xS6(2)"]); AGR.API("2U62G1-p1344B0",[1,5,"imprim","U5(2) < 2xU5(2)"]); AGR.API("2U62G1-p2816aB0",[1,5,"imprim","U4(3).2_2 < 2xU4(3).2_2"]); AGR.API("2U62G1-p2816bB0",[1,5,"imprim","U4(3).2_2 < 2xU4(3).2_2"]); AGR.API("2U62G1-p41472B0",[1,15,"imprim","M22 < 2xM22"]); AGR.API("2U62G1-p5632B0",[1,9,"imprim","U4(3) < 2xU4(3).2_2"]); AGR.API("2aM20G1-p12aB0",[1,3,"imprim","2^4:D10 < 2x2^4:D10"]); AGR.API("2aM20G1-p12bB0",[1,3,"imprim","2^4:D10 < 2x2^4:D10"]); AGR.API("2aM20G1-p20aB0",[1,4,"imprim","2^4:S3 < 2x2^4:S3"]); AGR.API("2aM20G1-p20bB0",[1,4,"imprim","2^4:S3 < 2x2^4:S3"]); AGR.API("2bM20G1-p120aB0",[1,64,"imprim","2^4 < 2^5.A4"]); AGR.API("2cM20G1-p24B0",[1,6,"imprim","2^4:5 < 2x2^4:5"]); AGR.API("3A6G1-p18aB0",[1,4,"imprim","A5 < 3xA5"]); AGR.API("3A6G1-p18bB0",[1,4,"imprim","A5 < 3xA5"]); AGR.API("3A6G1-p45aB0",[1,7,"imprim","S4 < 3xS4"]); AGR.API("3A6G1-p45bB0",[1,7,"imprim","S4 < 3xS4"]); AGR.API("3A7G1-p315B0",[1,28,"imprim","S4 < 3.A6"]); AGR.API("3A7G1-p45aB0",[1,4,"imprim","L2(7) < 3xL2(7)"]); AGR.API("3A7G1-p45bB0",[1,4,"imprim","L2(7) < 3xL2(7)"]); AGR.API("3A7G1-p63B0",[1,7,"imprim","S5 < 3xS5"]); AGR.API("3F22G1-p185328B0",[1,10,"imprim","O8+(2):S3 < 3xO8+(2):S3"]); AGR.API("3F22d2G1-p185328B0",[1,7,"imprim","O8+(2):S3x2 < S3xO8+(2):S3"]); AGR.API("3F24G1-p920808B0",[1,7,"imprim","Fi23 < 3xFi23"]); AGR.API("3F24d2G1-p920808B0",[1,5,"imprim","Fi23x2 < Fi23xS3"]); AGR.API("3G23G1-p1134B0",[1,8,"imprim","L3(3).2 < 3xL3(3).2"]); AGR.API("3L34G1-p360aB0",[1,10,"imprim","L2(7) < 3xL2(7)"]); AGR.API("3L34G1-p360bB0",[1,10,"imprim","L2(7) < 3xL2(7)"]); AGR.API("3L34G1-p360cB0",[1,10,"imprim","L2(7) < 3xL2(7)"]); AGR.API("3L34G1-p63aB0",[1,4,"imprim","2^4:A5 < 3x2^4:A5"]); AGR.API("3L34G1-p63bB0",[1,4,"imprim","2^4:A5 < 3x2^4:A5"]); AGR.API("3M22G1-p2016B0",[1,16,"imprim","L2(11) < 3xL2(11)"]); AGR.API("3M22G1-p693B0",[1,10,"imprim","2^4:S5 < 3x2^4:S5"]); AGR.API("3M22G1-p990B0",[1,13,"imprim","2^3:L3(2) < 3x2^3:L3(2)"]); AGR.API("3McLG1-p103950B0",[1,36,"imprim","U4(2) < 3_2.U4(3)"]); AGR.API("3McLG1-p340200B0",[1,111,"imprim","M11 < 3xM11"]); AGR.API("3McLG1-p66825B0",[1,14,"imprim","2.A8 < 3x2.A8"]); AGR.API("3ONG1-p368280B0",[1,11,"imprim","L3(7).2 < 3xL3(7).2"]); AGR.API("3ONd2G1-p736560B0",[1,19,"imprim","L3(7).2 < 3.ON"]); AGR.API("3S6G1-p18aB0",[1,3,"imprim","S5 < (3xA5):2"]); AGR.API("3S6G1-p18bB0",[1,3,"imprim","S5 < (3xA5):2"]); AGR.API("3S6G1-p45aB0",[1,5,"imprim","S4x2 < S4xS3"]); AGR.API("3S6G1-p45bB0",[1,5,"imprim","S4x2 < S4xS3"]); AGR.API("3S7G1-p63B0",[1,5,"imprim","S5x2 < S5xS3"]); AGR.API("3S7G1-p90B0",[1,8,"imprim","L2(7) < 3.A7"]); AGR.API("3SuzG1-p405405B0",[1,23,"imprim","2^(1+6)_-.U4(2) < 3x2^(1+6)_-.U4(2)"]); AGR.API("3SuzG1-p5346B0",[1,7,"imprim","G2(4) < 3xG2(4)"]); AGR.API("3SuzG1-p98280B0",[1,14,"imprim","U5(2) < 3xU5(2)"]); AGR.API("3Suzd2G1-p5346B0",[1,5,"imprim","G2(4).2 < (3xG2(4)).2"]); AGR.API("3U38G1-p32832B0",[1,145,"imprim","L2(8) < 9xL2(8)"]); AGR.API("3U38G1-p4617B0",[1,18,"imprim","2^(3+6):7 < 2^(3+6):63"]); AGR.API("3U62G1-p18711B0",[1,11,"imprim","2^(4+8):(S3xA5) < 3x2^(4+8):(S3xA5)"]); AGR.API("3U62G1-p19008aB0",[1,10,"imprim","S6(2) < 3xS6(2)"]); AGR.API("3U62G1-p19008bB0",[1,10,"imprim","S6(2) < 3xS6(2)"]); AGR.API("3U62G1-p19008cB0",[1,10,"imprim","S6(2) < 3xS6(2)"]); AGR.API("3U62G1-p2016B0",[1,7,"imprim","U5(2) < 3xU5(2)"]); AGR.API("3U62G1-p2079B0",[1,7,"imprim","2^(1+8)_+:U4(2) < 3x2^(1+8)_+:U4(2)"]); AGR.API("4M22G1-p4928aB0",[1,40,"imprim","A6 < 4_1.L3(4)"]); AGR.API("4M22G1-p4928bB0",[1,40,"imprim","A6 < (4xA6).2_3"]); AGR.API("4Sz8d3G1-p2080B0",[1,19,"imprim","2^3:7:3 < 2^2.2^(3+3):7:3"]); AGR.API("4U62G1-p2688B0",[1,9,"imprim","U5(2) < 2^2xU5(2)"]); AGR.API("4aL34G1-p224B0",[1,8,"imprim","A6 < 4xA6"]); AGR.API("4aL34G1-p480B0",[1,12,"imprim","L2(7) < 4xL2(7)"]); AGR.API("4bL34G1-p224B0",[1,10,"imprim","A6 < 4xA6"]); AGR.API("4bL34G1-p480B0",[1,14,"imprim","L2(7) < 4xL2(7)"]); AGR.API("6A6G1-p432B0",[1,96,"imprim","5 < 3x2.A5"]); AGR.API("6A6G1-p720aB0",[1,248,"imprim","3 < 3x2.A5"]); AGR.API("6A7G1-p720B0",[1,44,"imprim","7:3 < 3x2.L3(2)"]); AGR.API("6L34G1-p720aB0",[1,20,"imprim","L2(7) < 6xL2(7)"]); AGR.API("6L34G1-p720bB0",[1,17,"imprim","L2(7) < 6xL2(7)"]); AGR.API("6L34G1-p720cB0",[1,17,"imprim","L2(7) < 6xL2(7)"]); AGR.API("6M22G1-p1980B0",[1,17,"imprim","2^3:L3(2) < 6x2^3:L3(2)"]); AGR.API("6S6G1-p720aB0",[1,136,"imprim","S3 < (3x2.A5):2"]); AGR.API("6SuzG1-p196560B0",[1,26,"imprim","U5(2) < 6xU5(2)"]); AGR.API("6U62G1-p38016aB0",[1,17,"imprim","S6(2) < 6xS6(2)"]); AGR.API("6U62G1-p38016bB0",[1,14,"imprim","S6(2) < 6xS6(2)"]); AGR.API("6U62G1-p38016cB0",[1,14,"imprim","S6(2) < 6xS6(2)"]); AGR.API("6U62G1-p4032B0",[1,11,"imprim","U5(2) < 6xU5(2)"]); AGR.API("A10G1-p10B0",[8,2,"prim","A9",1]); AGR.API("A10G1-p120B0",[1,4,"prim","(A7x3):2",3]); AGR.API("A10G1-p126B0",[1,3,"prim","(A5xA5):4",4]); AGR.API("A10G1-p210B0",[1,5,"prim","(A6xA4):2",5]); AGR.API("A10G1-p2520B0",[1,12,"prim","A6.2_3",7]); AGR.API("A10G1-p45B0",[1,3,"prim","S8",2]); AGR.API("A10G1-p945B0",[1,7,"prim","2^4:S5",6]); AGR.API("A11G1-p11B0",[9,2,"prim","A10",1]); AGR.API("A11G1-p165B0",[1,4,"prim","(A8x3):2",3]); AGR.API("A11G1-p2520aB0",[1,5,"prim","M11",6]); AGR.API("A11G1-p2520bB0",[1,5,"prim","M11",7]); AGR.API("A11G1-p330B0",[1,5,"prim","(A7xA4):2",4]); AGR.API("A11G1-p462B0",[1,6,"prim","(A6xA5):2",5]); AGR.API("A11G1-p55B0",[1,3,"prim","S9",2]); AGR.API("A12G1-p12B0",[10,2,"prim","A11",1]); AGR.API("A12G1-p220B0",[1,4,"prim","(A9x3):2",3]); AGR.API("A12G1-p2520B0",[1,4,"prim","M12",7]); AGR.API("A12G1-p462B0",[1,4,"prim","(A6xA6):2^2",4]); AGR.API("A12G1-p495B0",[1,5,"prim","(A8xA4):2",5]); AGR.API("A12G1-p66B0",[1,3,"prim","S10",2]); AGR.API("A12G1-p792B0",[1,6,"prim","(A7xA5):2",6]); AGR.API("A13G1-p13B0",[11,2,"prim","A12",1]); AGR.API("A13G1-p78B0",[1,3,"prim","S11",2]); AGR.API("A14G1-p1001B0",[1,5,"prim","(A10xA4):2",4]); AGR.API("A14G1-p14B0",[12,2,"prim","A13",1]); AGR.API("A14G1-p1716B0",[1,4,"prim","(A7xA7):2^2",5]); AGR.API("A14G1-p2002B0",[1,6,"prim","(A9xA5):2",6]); AGR.API("A14G1-p3003B0",[1,7,"prim","(A8xA6):2",7]); AGR.API("A14G1-p364B0",[1,4,"prim","(A11x3):2",3]); AGR.API("A14G1-p91B0",[1,3,"prim","S12",2]); AGR.API("A15G1-p105B0",[1,3,"prim","S13",2]); AGR.API("A15G1-p1365B0",[1,5,"prim","(A11xA4):2",4]); AGR.API("A15G1-p15B0",[13,2,"prim","A14",1]); AGR.API("A15G1-p455B0",[1,4,"prim","(A12x3):2",3]); AGR.API("A16G1-p120B0",[1,3,"prim","S14",2]); AGR.API("A16G1-p16B0",[14,2,"prim","A15",1]); AGR.API("A16G1-p1820B0",[1,5,"prim","(A12xA4):2",4]); AGR.API("A16G1-p560B0",[1,4,"prim","(A13x3):2",3]); AGR.API("A17G1-p136B0",[1,3,"prim","S15",2]); AGR.API("A17G1-p17B0",[15,2,"prim","A16",1]); AGR.API("A17G1-p2380B0",[1,5,"prim","(A13xA4):2",4]); AGR.API("A17G1-p680B0",[1,4,"prim","(A14x3):2",3]); AGR.API("A18G1-p153B0",[1,3,"prim","S16",2]); AGR.API("A18G1-p18B0",[16,2,"prim","A17",1]); AGR.API("A18G1-p3060B0",[1,5,"prim","(A14xA4):2",4]); AGR.API("A18G1-p816B0",[1,4,"prim","(A15x3):2",3]); AGR.API("A19G1-p171B0",[1,3,"prim","S17",2]); AGR.API("A19G1-p19B0",[17,2,"prim","A18",1]); AGR.API("A19G1-p969B0",[1,4,"prim","(A16x3):2",3]); AGR.API("A20G1-p190B0",[1,3,"prim","S18",2]); AGR.API("A20G1-p20B0",[18,2,"prim","A19",1]); AGR.API("A21G1-p210B0",[1,3,"prim","S19",2]); AGR.API("A21G1-p21B0",[19,2,"prim","A20",1]); AGR.API("A22G1-p22B0",[20,2,"prim","A21",1]); AGR.API("A22G1-p231B0",[1,3,"prim","S20",2]); AGR.API("A23G1-p23B0",[21,2,"prim","A22",1]); AGR.API("A23G1-p253B0",[1,3,"prim","S21",2]); AGR.API("A5G1-p10B0",[1,3,"prim","S3",3]); AGR.API("A5G1-p5B0",[3,2,"prim","A4",1]); AGR.API("A5G1-p6B0",[2,2,"prim","D10",2]); AGR.API("A6G1-p10B0",[2,2,"prim","3^2:4",3]); AGR.API("A6G1-p15aB0",[1,3,"prim","S4",4]); AGR.API("A6G1-p15bB0",[1,3,"prim","S4",5]); AGR.API("A6G1-p6aB0",[4,2,"prim","A5",1]); AGR.API("A6G1-p6bB0",[4,2,"prim","A5",2]); AGR.API("A6V4G1-p10B0",[3,2,"prim","3^2:Q8.2",4]); AGR.API("A7G1-p7B0",[5,2,"prim","A6",1]); AGR.API("A8G1-p15aB0",[2,2,"prim","2^3:L3(2)",2]); AGR.API("A8G1-p15bB0",[2,2,"prim","2^3:L3(2)",3]); AGR.API("A8G1-p8B0",[6,2,"prim","A7",1]); AGR.API("A9G1-p120aB0",[1,3,"prim","L2(8):3",4]); AGR.API("A9G1-p120bB0",[1,3,"prim","L2(8):3",5]); AGR.API("A9G1-p126B0",[1,5,"prim","(A5xA4):2",6]); AGR.API("A9G1-p280B0",[1,5,"prim","3^3:S4",7]); AGR.API("A9G1-p36B0",[1,3,"prim","S7",2]); AGR.API("A9G1-p840B0",[1,12,"prim","3^2:2A4",8]); AGR.API("A9G1-p84B0",[1,4,"prim","(A6x3):2_1",3]); AGR.API("A9G1-p9B0",[7,2,"prim","A8",1]); AGR.API("Co1G1-p98280B0",[1,4,"prim","Co2",1]); AGR.API("Co2G1-p2300B0",[1,3,"prim","U6(2).2",1]); AGR.API("Co2G1-p4600B0",[1,5,"imprim","U6(2) < U6(2).2"]); AGR.API("Co3G1-p11178B0",[1,5,"prim","HS",2]); AGR.API("Co3G1-p128800B0",[1,6,"prim","3^5:(2xM11)",5]); AGR.API("Co3G1-p276B0",[2,2,"prim","McL.2",1]); AGR.API("Co3G1-p37950B0",[1,8,"prim","U4(3).(2^2)_{133}",3]); AGR.API("Co3G1-p48600B0",[1,8,"prim","M23",4]); AGR.API("Co3G1-p552B0",[1,4,"imprim","McL < McL.2"]); AGR.API("F22G1-p14080bB0",[1,3,"prim","O7(3)",3]); AGR.API("F22G1-p142155B0",[1,8,"prim","2^10:M22",5]); AGR.API("F22G1-p3510B0",[1,3,"prim","2.U6(2)",1]); AGR.API("F22G1-p61776B0",[1,4,"prim","O8+(2):S3",4]); AGR.API("F22G1-p694980B0",[1,10,"prim","2^6:S6(2)",6]); AGR.API("F22d2G1-p3510B0",[1,3,"prim","2.U6(2).2",2]); AGR.API("F23G1-p137632B0",[1,3,"prim","O8+(3):S3",2]); AGR.API("F23G1-p275264B0",[1,5,"imprim","O8+(3).3 < O8+(3):S3"]); AGR.API("F23G1-p31671B0",[1,3,"prim","2.Fi22",1]); AGR.API("F24G1-p306936B0",[1,3,"prim","Fi23",1]); AGR.API("F24d2G1-p306936B0",[1,3,"prim","Fi23x2",2]); AGR.API("F42G1-p69888aB0",[1,5,"prim","S8(2)",3]); AGR.API("G23d2G1-p756B0",[1,6,"imprim","L3(3) < L3(3):2"]); AGR.API("G24G1-p1365aB0",[1,4,"prim","2^(2+8):(3xA5)",2]); AGR.API("G24G1-p1365bB0",[1,4,"prim","2^(4+6):(A5x3)",3]); AGR.API("G24G1-p2016B0",[1,3,"prim","U3(4).2",4]); AGR.API("G24G1-p20800B0",[1,14,"prim","U3(3).2",6]); AGR.API("G24G1-p2080B0",[1,4,"prim","3.L3(4).2_3",5]); AGR.API("G24G1-p416B0",[1,3,"prim","J2",1]); AGR.API("G25G1-p3906aB0",[1,4,"prim","5^(1+4)_+:GL(2,5)",1]); AGR.API("G25G1-p3906bB0",[1,4,"prim","5^(2+3):GL2(5)",2]); AGR.API("G25G1-p7750B0",[1,4,"prim","3.U3(5).2",3]); AGR.API("G25G1-p7875B0",[1,5,"prim","L3(5).2",4]); AGR.API("HNG1-p1140000B0",[1,12,"prim","A12",1]); AGR.API("HSG1-p100B0",[1,3,"prim","M22",1]); AGR.API("HSG1-p1100aB0",[1,5,"prim","L3(4).2_1",4]); AGR.API("HSG1-p1100bB0",[1,5,"prim","A8.2",5]); AGR.API("HSG1-p15400B0",[1,27,"prim","2xA6.2^2",11]); AGR.API("HSG1-p176bB0",[2,2,"prim","U3(5):2",3]); AGR.API("HSG1-p3850B0",[1,12,"prim","2^4.S6",6]); AGR.API("HSG1-p4125B0",[1,9,"prim","4^3:L3(2)",7]); AGR.API("HSG1-p5600aB0",[1,9,"prim","M11",8]); AGR.API("HSd2G1-p100B0",[1,3,"prim","M22.2",2]); AGR.API("HSd2G1-p1100bB0",[1,5,"prim","S8x2",4]); AGR.API("HSd2G1-p15400B0",[1,20,"prim","(2xA6.2^2).2",8]); AGR.API("HSd2G1-p352B0",[1,4,"imprim","U3(5).2 < HS"]); AGR.API("HeG1-p2058B0",[1,5,"prim","S4(4):2",1]); AGR.API("HeG1-p244800B0",[1,36,"prim","7^2:2L2(7)",6]); AGR.API("HeG1-p29155B0",[1,12,"prim","2^6:3.S6",3]); AGR.API("HeG1-p8330B0",[1,7,"prim","2^2.L3(4).S3",2]); AGR.API("Hed2G1-p2058B0",[1,4,"prim","S4(4):4",2]); AGR.API("Hed2G1-p8330B0",[1,6,"prim","2^2.L3(4).D12",3]); AGR.API("J1G1-p1045B0",[1,11,"prim","2^3:7:3",2]); AGR.API("J1G1-p1463B0",[1,22,"prim","2xA5",3]); AGR.API("J1G1-p1540B0",[1,21,"prim","19:6",4]); AGR.API("J1G1-p1596B0",[1,19,"prim","11:10",5]); AGR.API("J1G1-p266B0",[1,5,"prim","L2(11)",1]); AGR.API("J1G1-p2926B0",[1,67,"prim","D6xD10",6]); AGR.API("J1G1-p4180B0",[1,107,"prim","7:6",7]); AGR.API("J2G1-p1008B0",[1,11,"prim","A5xD10",6]); AGR.API("J2G1-p100B0",[1,3,"prim","U3(3)",1]); AGR.API("J2G1-p1800B0",[1,18,"prim","L3(2).2",7]); AGR.API("J2G1-p280B0",[1,4,"prim","3.A6.2_2",2]); AGR.API("J2G1-p315B0",[1,6,"prim","2^(1+4)_-:A5",3]); AGR.API("J2G1-p525B0",[1,6,"prim","2^(2+4):(3xS3)",4]); AGR.API("J2G1-p840B0",[1,7,"prim","A4xA5",5]); AGR.API("J2d2G1-p100B0",[1,3,"prim","U3(3).2",2]); AGR.API("J3G1-p14688aB0",[1,14,"prim","L2(19)",2]); AGR.API("J3G1-p14688bB0",[1,14,"prim","L2(19)",3]); AGR.API("J3G1-p17442B0",[1,19,"prim","2^4:(3xA5)",4]); AGR.API("J3G1-p20520B0",[1,22,"prim","L2(17)",5]); AGR.API("J3G1-p23256B0",[1,28,"prim","(3xA6):2_2",6]); AGR.API("J3G1-p25840B0",[1,20,"prim","3^2.3^(1+2)_+:8",7]); AGR.API("J3G1-p26163B0",[1,27,"prim","2^(1+4)_-:A5",8]); AGR.API("J3G1-p43605B0",[1,57,"prim","2^(2+4).(3xS3)",9]); AGR.API("J3G1-p6156B0",[1,8,"prim","L2(16).2",1]); AGR.API("J3d2G1-p6156B0",[1,7,"prim","L2(16).4",2]); AGR.API("L211G1-p11aB0",[2,2,"prim","A5",1]); AGR.API("L211G1-p11bB0",[2,2,"prim","A5",2]); AGR.API("L211G1-p12B0",[2,2,"prim","11:5",3]); AGR.API("L211G1-p55B0",[1,9,"prim","S3x2",4]); AGR.API("L211d2G1-p12B0",[3,2,"prim","11:10",2]); AGR.API("L211d2G1-p22B0",[1,4,"imprim","A5 < L2(11)"]); AGR.API("L211d2G1-p55aB0",[1,6,"prim","D24",3]); AGR.API("L211d2G1-p55bB0",[1,6,"prim","S4",4]); AGR.API("L211d2G1-p66B0",[1,7,"prim","D20",5]); AGR.API("L213G1-p14B0",[2,2,"prim","13:6",1]); AGR.API("L213d2G1-p14B0",[3,2,"prim","13:12",2]); AGR.API("L213d2G1-p78B0",[1,7,"prim","D28",3]); AGR.API("L213d2G1-p91aB0",[1,8,"prim","D24",4]); AGR.API("L216G1-p17B0",[3,2,"prim","2^4:15",1]); AGR.API("L217G1-p18B0",[2,2,"prim","17:8",1]); AGR.API("L217d2G1-p18B0",[3,2,"prim","17:16",2]); AGR.API("L219G1-p171B0",[1,15,"prim","D20",4]); AGR.API("L219G1-p190B0",[1,16,"prim","D18",5]); AGR.API("L219G1-p20B0",[2,2,"prim","19:9",1]); AGR.API("L219G1-p57aB0",[1,4,"prim","A5",2]); AGR.API("L219G1-p57bB0",[1,4,"prim","A5",3]); AGR.API("L219d2G1-p114B0",[1,8,"imprim","A5 < L2(19)"]); AGR.API("L219d2G1-p171B0",[1,10,"prim","D40",3]); AGR.API("L219d2G1-p190B0",[1,11,"prim","D36",4]); AGR.API("L219d2G1-p20B0",[3,2,"prim","19:18",2]); AGR.API("L219d2G1-p285B0",[1,18,"prim","S4",5]); AGR.API("L223G1-p24B0",[2,2,"prim","23:11",1]); AGR.API("L227G1-p28B0",[2,2,"prim","3^3:13",1]); AGR.API("L229G1-p30B0",[2,2,"prim","29:14",1]); AGR.API("L231G1-p32B0",[2,2,"prim","31:15",1]); AGR.API("L232G1-p33B0",[3,2,"prim","2^5:31",1]); AGR.API("L232G1-p496B0",[1,16,"prim","D66",2]); AGR.API("L232G1-p528B0",[1,17,"prim","D62",3]); AGR.API("L232d5G1-p33B0",[3,2,"prim","2^5:31:5",2]); AGR.API("L232d5G1-p496B0",[1,4,"prim","33:10",3]); AGR.API("L232d5G1-p528B0",[1,5,"prim","31:10",4]); AGR.API("L249G1-p1176B0",[1,36,"prim","D50",6]); AGR.API("L249G1-p1225B0",[1,39,"prim","D48",7]); AGR.API("L249G1-p175aB0",[1,5,"prim","L3(2).2",2]); AGR.API("L249G1-p175bB0",[1,5,"prim","L3(2).2",3]); AGR.API("L249G1-p50B0",[2,2,"prim","7^2:24",1]); AGR.API("L249G1-p980aB0",[1,24,"prim","A5",4]); AGR.API("L249G1-p980bB0",[1,24,"prim","A5",5]); AGR.API("L27G1-p14aB0",[1,3,"imprim","A4 < S4"]); AGR.API("L27G1-p14bB0",[1,3,"imprim","A4 < S4"]); AGR.API("L27G1-p168B0",[1,168,"imprim","1 < S4"]); AGR.API("L27G1-p21B0",[1,6,"imprim","D8 < S4"]); AGR.API("L27G1-p24B0",[1,6,"imprim","7 < 7:3"]); AGR.API("L27G1-p28B0",[1,7,"imprim","S3 < S4"]); AGR.API("L27G1-p42aB0",[1,15,"imprim","2^2 < S4"]); AGR.API("L27G1-p42bB0",[1,15,"imprim","2^2 < S4"]); AGR.API("L27G1-p42cB0",[1,12,"imprim","4 < S4"]); AGR.API("L27G1-p56B0",[1,20,"imprim","3 < S4"]); AGR.API("L27G1-p7aB0",[2,2,"prim","S4",1]); AGR.API("L27G1-p7bB0",[2,2,"prim","S4",2]); AGR.API("L27G1-p84B0",[1,44,"imprim","2 < S4"]); AGR.API("L27G1-p8B0",[2,2,"prim","7:3",3]); AGR.API("L27d2G1-p112B0",[1,40,"imprim","3 < 7:3"]); AGR.API("L27d2G1-p14B0",[1,4,"imprim","S4 < L2(7)"]); AGR.API("L27d2G1-p168aB0",[1,88,"imprim","2 < S4"]); AGR.API("L27d2G1-p168bB0",[1,87,"imprim","2 < D12"]); AGR.API("L27d2G1-p16B0",[1,4,"imprim","7:3 < 7:6"]); AGR.API("L27d2G1-p21B0",[1,4,"prim","D16",3]); AGR.API("L27d2G1-p24B0",[1,6,"imprim","D14 < 7:6"]); AGR.API("L27d2G1-p28B0",[1,5,"prim","D12",4]); AGR.API("L27d2G1-p28bB0",[1,6,"imprim","A4 < S4"]); AGR.API("L27d2G1-p336B0",[1,336,"imprim","1 < L2(7)"]); AGR.API("L27d2G1-p42aB0",[1,12,"imprim","D8 < S4"]); AGR.API("L27d2G1-p42bB0",[1,9,"imprim","D8 < D16"]); AGR.API("L27d2G1-p42cB0",[1,7,"imprim","8 < D16"]); AGR.API("L27d2G1-p48B0",[1,12,"imprim","7 < 7:6"]); AGR.API("L27d2G1-p56aB0",[1,14,"imprim","S3 < S4"]); AGR.API("L27d2G1-p56bB0",[1,13,"imprim","S3 < D12"]); AGR.API("L27d2G1-p56cB0",[1,11,"imprim","6 < D12"]); AGR.API("L27d2G1-p84aB0",[1,30,"imprim","2^2 < S4"]); AGR.API("L27d2G1-p84bB0",[1,25,"imprim","2^2 < D12"]); AGR.API("L27d2G1-p84cB0",[1,24,"imprim","4 < S4"]); AGR.API("L27d2G1-p8B0",[3,2,"prim","7:6",2]); AGR.API("L28G1-p28B0",[1,4,"prim","D18",2]); AGR.API("L28G1-p36B0",[1,5,"prim","D14",3]); AGR.API("L28G1-p9B0",[3,2,"prim","2^3:7",1]); AGR.API("L28d3G1-p28B0",[2,2,"prim","9:6",3]); AGR.API("L28d3G1-p36B0",[1,3,"prim","7:6",4]); AGR.API("L28d3G1-p9B0",[3,2,"prim","2^3:7:3",2]); AGR.API("L311G1-p133B0",[2,2,"prim","11^2:(5x2L2(11).2)",1]); AGR.API("L313G1-p183aB0",[2,2,"prim","13^2:GL(2,13)",1]); AGR.API("L313G1-p183bB0",[2,2,"prim","13^2:GL(2,13)",2]); AGR.API("L33G1-p13aB0",[2,2,"prim","3^2:2S4",1]); AGR.API("L33G1-p13bB0",[2,2,"prim","3^2:2S4",2]); AGR.API("L33G1-p144B0",[1,8,"prim","13:3",3]); AGR.API("L33G1-p234B0",[1,18,"prim","S4",4]); AGR.API("L33d2G1-p117B0",[1,6,"prim","2S4:2",3]); AGR.API("L33d2G1-p144B0",[1,6,"prim","13:6",4]); AGR.API("L33d2G1-p234B0",[1,12,"prim","S4x2",5]); AGR.API("L33d2G1-p26B0",[1,4,"imprim","3^2:2S4 < L3(3)"]); AGR.API("L33d2G1-p52B0",[1,4,"prim","3^(1+2)_+:D8",2]); AGR.API("L34G1-p120aB0",[1,4,"prim","L3(2)",6]); AGR.API("L34G1-p120bB0",[1,4,"prim","L3(2)",7]); AGR.API("L34G1-p120cB0",[1,4,"prim","L3(2)",8]); AGR.API("L34G1-p21aB0",[2,2,"prim","2^4:A5",1]); AGR.API("L34G1-p21bB0",[2,2,"prim","2^4:A5",2]); AGR.API("L34G1-p280B0",[1,8,"prim","3^2:Q8",9]); AGR.API("L34G1-p56aB0",[1,3,"prim","A6",3]); AGR.API("L34G1-p56bB0",[1,3,"prim","A6",4]); AGR.API("L34G1-p56cB0",[1,3,"prim","A6",5]); AGR.API("L35G1-p31aB0",[2,2,"prim","5^2:GL2(5)",1]); AGR.API("L35G1-p31bB0",[2,2,"prim","5^2:GL2(5)",2]); AGR.API("L35d2G1-p186B0",[1,4,"prim","5^(1+2)_+:[2^5]",2]); AGR.API("L35d2G1-p3100B0",[1,32,"prim","S5x2",4]); AGR.API("L35d2G1-p3875B0",[1,35,"prim","4^2:D12",5]); AGR.API("L35d2G1-p4000B0",[1,35,"prim","31:6",6]); AGR.API("L35d2G1-p62B0",[1,4,"imprim","5^2:GL2(5) < L3(5)"]); AGR.API("L35d2G1-p775B0",[1,8,"prim","4S5.2",3]); AGR.API("L37G1-p57B0",[2,2,"prim","7^2:2.L2(7).2",1]); AGR.API("L38G1-p56064B0",[1,220,"prim","7^2:S3",3]); AGR.API("L38G1-p73aB0",[2,2,"prim","2^6:(7xL2(8))",1]); AGR.API("L38G1-p73bB0",[2,2,"prim","2^6:(7xL2(8))",2]); AGR.API("L38G1-p75264B0",[1,372,"prim","73:3",4]); AGR.API("L38G1-p98112B0",[1,653,"prim","L3(2)",5]); AGR.API("L38d2G1-p146B0",[1,4,"imprim","2^6:(7xL2(8)) < L3(8)"]); AGR.API("L38d2G1-p4672B0",[1,11,"prim","D14xL2(8)",3]); AGR.API("L38d2G1-p56064B0",[1,125,"prim","7^2:D12",4]); AGR.API("L38d2G1-p657B0",[1,4,"prim","2^(3+6):7^2:2",2]); AGR.API("L38d2G1-p75264B0",[1,216,"prim","73:6",5]); AGR.API("L38d2G1-p98112B0",[1,335,"prim","L2(7).2",6]); AGR.API("L38d3G1-p219aB0",[1,6,"imprim","2^6:(7xL2(8)) < 2^6:(7xL2(8)):3"]); AGR.API("L38d3G1-p219bB0",[1,6,"imprim","2^6:(7xL2(8)) < 2^6:(7xL2(8)):3"]); AGR.API("L38d3G1-p56064B0",[1,80,"prim","7^2:(3xS3)",4]); AGR.API("L38d3G1-p73aB0",[2,2,"prim","2^6:(7xL2(8)):3",2]); AGR.API("L38d3G1-p73bB0",[2,2,"prim","2^6:(7xL2(8)):3",3]); AGR.API("L38d3G1-p75264B0",[1,126,"prim","73:9",5]); AGR.API("L38d3G1-p98112B0",[1,381,"imprim","L2(8) < 2^6:(7xL2(8)):3"]); AGR.API("L38d6G1-p438B0",[1,12,"imprim","2^6:(7xL2(8)) < L3(8)"]); AGR.API("L38d6G1-p4672B0",[1,7,"prim","(D14xL2(8)):3",3]); AGR.API("L38d6G1-p56064B0",[1,47,"prim","7^2:(6xS3)",4]); AGR.API("L38d6G1-p657B0",[1,4,"prim","2^(3+6):7^2:6",2]); AGR.API("L38d6G1-p75264B0",[1,74,"prim","73:18",5]); AGR.API("L38d6G1-p98112B0",[1,119,"prim","L2(7).2x3",6]); AGR.API("L44G1-p85aB0",[2,2,"prim","2^6:GL(3,4)",1]); AGR.API("L44G1-p85bB0",[2,2,"prim","2^6:GL(3,4)",2]); AGR.API("L45G1-p156aB0",[2,2,"prim","5^3:L3(5)",1]); AGR.API("L45G1-p156bB0",[2,2,"prim","5^3:L3(5)",2]); AGR.API("L52G1-p155aB0",[1,3,"prim","2^6:(S3xL3(2))",3]); AGR.API("L52G1-p31aB0",[2,2,"prim","2^4:L4(2)",1]); AGR.API("L52d2G1-p62B0",[1,4,"imprim","2^4:L4(2) < L5(2)"]); AGR.API("L62G1-p63aB0",[2,2,"prim","2^5:L5(2)",1]); AGR.API("L62d2G1-p126B0",[1,4,"imprim","2^5:L5(2) < L6(2)"]); AGR.API("L72G1-p127aB0",[2,2,"prim","2^6:L6(2)",1]); AGR.API("L72G1-p127bB0",[2,2,"prim","2^6:L6(2)",1]); AGR.API("L72d2G2-p254B0",[1,4,"imprim","2^6:L6(2) < L7(2)"]); AGR.API("M10G1-p10B0",[3,2,"prim","3^2:Q8",2]); AGR.API("M11G1-p11B0",[4,2,"prim","A6.2_3",1]); AGR.API("M11G1-p12B0",[3,2,"prim","L2(11)",2]); AGR.API("M11G1-p165B0",[1,8,"prim","2.S4",5]); AGR.API("M11G1-p55B0",[1,3,"prim","3^2:Q8.2",3]); AGR.API("M11G1-p66B0",[1,4,"prim","S5",4]); AGR.API("M12G1-p12aB0",[5,2,"prim","M11",1]); AGR.API("M12G1-p12bB0",[5,2,"prim","M11",2]); AGR.API("M12G1-p66aB0",[1,3,"prim","A6.2^2",3]); AGR.API("M12G1-p66bB0",[1,3,"prim","A6.2^2",4]); AGR.API("M12d2G1-p24B0",[1,3,"imprim","M11 < M12"]); AGR.API("M20G1-p20aB0",[1,3,"imprim","2^4:3 < 2^4:A4"]); AGR.API("M20G1-p20bB0",[1,3,"imprim","4^2:3 < 2^4:A4"]); AGR.API("M20G1-p20cB0",[1,3,"imprim","4^2:3 < 2^4:A4"]); AGR.API("M20G1-p20dB0",[1,3,"imprim","4^2:3 < 2^4:A4"]); AGR.API("M22G1-p176aB0",[1,3,"prim","A7",3]); AGR.API("M22G1-p176bB0",[1,3,"prim","A7",4]); AGR.API("M22G1-p22B0",[3,2,"prim","L3(4)",1]); AGR.API("M22G1-p231B0",[1,4,"prim","2^4:S5",5]); AGR.API("M22G1-p330B0",[1,5,"prim","2^3:L3(2)",6]); AGR.API("M22G1-p462aB0",[1,5,"imprim","2^4:A5 < 2^4:A6"]); AGR.API("M22G1-p462bB0",[1,8,"imprim","2^4:A5 < L3(4), 2^4:S5"]); AGR.API("M22G1-p462cB0",[1,8,"imprim","2^4:A5 < L3(4), 2^4:A6"]); AGR.API("M22G1-p616B0",[1,5,"prim","A6.2_3",7]); AGR.API("M22G1-p672B0",[1,6,"prim","L2(11)",8]); AGR.API("M22G1-p770B0",[1,9,"imprim","(A4xA4):4 < 2^4:A6"]); AGR.API("M22G1-p77B0",[1,3,"prim","2^4:A6",2]); AGR.API("M22d2G1-p22B0",[3,2,"prim","L3(4).2_2",2]); AGR.API("M22d2G1-p231B0",[1,4,"prim","2^5:S5",4]); AGR.API("M22d2G1-p330B0",[1,5,"prim","2x2^3:L3(2)",5]); AGR.API("M22d2G1-p352B0",[1,6,"imprim","A7 < M22"]); AGR.API("M22d2G1-p616B0",[1,5,"prim","A6.2^2",6]); AGR.API("M22d2G1-p672B0",[1,6,"prim","L2(11).2",7]); AGR.API("M22d2G1-p77B0",[1,3,"prim","2^4:S6",3]); AGR.API("M23G1-p1288B0",[1,4,"prim","M11",5]); AGR.API("M23G1-p1771B0",[1,8,"prim","2^4:(3xA5):2",6]); AGR.API("M23G1-p23B0",[4,2,"prim","M22",1]); AGR.API("M23G1-p253aB0",[1,3,"prim","L3(4).2_2",2]); AGR.API("M23G1-p253bB0",[1,3,"prim","2^4:A7",3]); AGR.API("M23G1-p40320B0",[1,164,"prim","23:11",7]); AGR.API("M23G1-p506B0",[1,4,"prim","A8",4]); AGR.API("M24G1-p1288B0",[1,3,"prim","M12.2",4]); AGR.API("M24G1-p1771B0",[1,4,"prim","2^6:3.S6",5]); AGR.API("M24G1-p2024B0",[1,5,"prim","L3(4).S3",6]); AGR.API("M24G1-p24B0",[5,2,"prim","M23",1]); AGR.API("M24G1-p276B0",[1,3,"prim","M22.2",2]); AGR.API("M24G1-p3795B0",[1,5,"prim","2^6:(L3(2)xS3)",7]); AGR.API("M24G1-p759B0",[1,4,"prim","2^4:A8",3]); AGR.API("McLG1-p113400B0",[1,39,"prim","M11",11]); AGR.API("McLG1-p15400aB0",[1,5,"prim","3^(1+4)_+:2S5",5]); AGR.API("McLG1-p15400bB0",[1,10,"prim","3^4:M10",6]); AGR.API("McLG1-p2025aB0",[1,4,"prim","M22",2]); AGR.API("McLG1-p2025bB0",[1,4,"prim","M22",3]); AGR.API("McLG1-p22275aB0",[1,13,"prim","L3(4).2_2",7]); AGR.API("McLG1-p22275bB0",[1,6,"prim","2.A8",8]); AGR.API("McLG1-p22275cB0",[1,13,"prim","2^4:A7",10]); AGR.API("McLG1-p22275dB0",[1,13,"prim","2^4:A7",9]); AGR.API("McLG1-p275B0",[1,3,"prim","U4(3)",1]); AGR.API("McLG1-p299376B0",[1,114,"prim","5^(1+2)_+:3:8",12]); AGR.API("McLG1-p7128B0",[1,5,"prim","U3(5)",4]); AGR.API("McLd2G1-p22275aB0",[1,11,"prim","L3(4).2^2",6]); AGR.API("McLd2G1-p275B0",[1,3,"prim","U4(3).2_3",2]); AGR.API("McLd2G1-p4050B0",[1,8,"imprim","M22 < McL"]); AGR.API("McLd2G1-p44550B0",[1,26,"imprim","2^4:A7 < McL"]); AGR.API("McLd2G1-p7128B0",[1,5,"prim","U3(5).2",3]); AGR.API("Mmax13G0-p3369B0",[0,[9,3360]]); AGR.API("Mmax15q1G0-p6561B0",[1,4,"imprim","3^6:(L3(3)xSD16) < 3^(2+6):(L3(3)xSD16)"]); AGR.API("Mmax15q2G0-p1404B0",[1,10,"imprim","3^(5+4):(3^2.2.S4x2^2) < 3^(6+6):(3^2.2.S4xSD16)"]); AGR.API("Mmax15q3G0-p108B0",[1,4,"imprim","2x3^3.(L3(3)x2) < 3^6:(L3(3)xD8)"]); AGR.API("Mmax16G0-p78125B0",[1,6,"imprim","2.J2.4 < (5x2.J2).4"]); AGR.API("Mmax17G0-p2065B0",[0,[7,2058]]); AGR.API("Mmax18G0-p17B0",[0,[5,12]]); AGR.API("Mmax19G0-p46500B0",[1,115,"imprim","5^(2+2).(2x5^2:(4x2)) < 5^(3+3).(2x5^2:GL2(5))"]); AGR.API("Mmax19G0-p7750B0",[1,7,"imprim","5^(2+3).GL2(5) < 5^(3+3).(2x5^2:GL2(5))"]); AGR.API("Mmax19G0-p96875B0",[1,28,"imprim","5^3.(2xGL2(5)) < 5^(3+3).(2x5^2:GL2(5))"]); AGR.API("Mmax20G0-p30B0",[1,3,"imprim","(A6xA6x3^2:4).(2xD8) < (A6xA6xA6).(2xD8)"]); AGR.API("Mmax21G0-p3653B0",[0,[5,3648]]); AGR.API("Mmax21G0-p518B0",[0,[5,513]]); AGR.API("Mmax22G0-p15625B0",[1,9,"imprim","5^2:(S3xGL2(5)) < 5^4:(S3xGL2(5))"]); AGR.API("Mmax22G0-p750B0",[1,5,"imprim","5^(3+2):(S3x4x5:4) < 5^(2+2+4):(S3x4x5:4)"]); AGR.API("Mmax23G0-p184B0",[0,[14,170]]); AGR.API("Mmax23G0-p524B0",[0,[14,510]]); AGR.API("Mmax24G0-p16807B0",[1,8,"imprim","3x2.S7 < (7:3x2.A7).2"]); AGR.API("Mmax25G0-p151B0",[0,[25,126]]); AGR.API("Mmax26G0-p36B0",[0,[12,24]]); AGR.API("Mmax27G0-p17B0",[0,[7,10]]); AGR.API("Mmax28G0-p625B0",[2,2,"prim","(3x2.L2(25)).2","???"]); AGR.API("Mmax29G0-p2401B0",[1,5,"imprim","(7:3xSL2(7)):2 < 7^3:GL2(7)"]); AGR.API("Mmax29G0-p392B0",[1,4,"imprim","7^(1+2)_+:(6x7:6) < 7^(2+1+2):(6x7:6)"]); AGR.API("Mmax30G0-p21B0",[0,[10,11]]); AGR.API("Mmax31G0-p15B0",[1,3,"imprim","S4x(S5xS5):2 < S5x(S5xS5):2"]); AGR.API("Mmax32G0-p24B0",[1,3,"imprim","(L2(11)x11:5):2 < (L2(11)xL2(11)):2"]); AGR.API("Mmax33G0-p169B0",[2,2,"prim","2.L2(13).4","???"]); AGR.API("Mmax34G0-p57B0",[0,[8,49]]); AGR.API("Mmax35G0-p39B0",[0,[13,26]]); AGR.API("Mmax36G0-p2197B0",[1,11,"imprim","3x4S4 < (13x4S4):3"]); AGR.API("Mmax39G0-p121B0",[2,2,"prim","5x2A5",5]); AGR.API("Mmax41G0-p49B0",[2,2,"prim","2.L2(7)",4]); AGR.API("Mmax43G0-p41B0",[2,2,"prim","40",3]); AGR.API("O10m2G1-p495B0",[1,3,"prim","2^8:O8-(2)",1]); AGR.API("O10m2G1-p528B0",[1,3,"prim","S8(2)",2]); AGR.API("O10m2d2G1-p104448B0",[1,6,"prim","S12",8]); AGR.API("O10m2d2G1-p495B0",[1,3,"prim","2^8:O8-(2):2",2]); AGR.API("O10m2d2G1-p528B0",[1,3,"prim","S8(2)x2",3]); AGR.API("O10p2G1-p19840B0",[1,5,"prim","(3xO8-(2)):2",5]); AGR.API("O10p2G1-p2295aB0",[1,3,"prim","2^10:L5(2)",3]); AGR.API("O10p2G1-p2295bB0",[1,3,"prim","2^10:L5(2)",4]); AGR.API("O10p2G1-p23715B0",[1,6,"prim","2^(1+12)_+:(S3xA8)",6]); AGR.API("O10p2G1-p39680B0",[1,8,"imprim","3xO8-(2)"]); AGR.API("O10p2G1-p496B0",[1,3,"prim","S8(2)",1]); AGR.API("O10p2G1-p527B0",[1,3,"prim","2^8:O8+(2)",2]); AGR.API("O10p2d2G1-p4590B0",[1,6,"imprim","2^10:L5(2) < O10+(2)"]); AGR.API("O10p2d2G1-p496B0",[1,3,"prim","S8(2)x2",2]); AGR.API("O10p2d2G1-p527B0",[1,3,"prim","2^8:O8+(2):2",3]); AGR.API("O73G1-p1080aB0",[1,3,"prim","G2(3)",4]); AGR.API("O73G1-p1080bB0",[1,3,"prim","G2(3)",5]); AGR.API("O73G1-p1120B0",[1,4,"prim","3^(3+3):L3(3)",6]); AGR.API("O73G1-p351B0",[1,3,"prim","2.U4(3).2_2",1]); AGR.API("O73G1-p3640B0",[1,5,"prim","3^(1+6)_+:(2A4xA4).2",9]); AGR.API("O73G1-p364B0",[1,3,"prim","3^5:U4(2):2",2]); AGR.API("O73G1-p378B0",[1,3,"prim","L4(3).2_2",3]); AGR.API("O73d2G1-p351B0",[1,3,"prim","2.U4(3).(2^2)_{122}",2]); AGR.API("O8m2G1-p1071B0",[1,5,"prim","2^(1+8)_+:(S3xA5)",4]); AGR.API("O8m2G1-p119B0",[1,3,"prim","2^6:U4(2)",1]); AGR.API("O8m2G1-p136B0",[1,3,"prim","S6(2)",2]); AGR.API("O8m2G1-p1632B0",[1,5,"prim","(3xA8):2",5]); AGR.API("O8m2G1-p24192B0",[1,16,"prim","L2(16):2",6]); AGR.API("O8m2G1-p45696B0",[1,47,"prim","(S3xS3xA5):2",7]); AGR.API("O8m2G1-p765B0",[1,4,"prim","2^(3+6):(L3(2)x3)",3]); AGR.API("O8m2d2G1-p119B0",[1,3,"prim","2^6:U4(2):2",2]); AGR.API("O8m3G1-p1066B0",[1,3,"prim","3^6:2.U4(3).2",1]); AGR.API("O8m3V4G1-p1066B0",[1,3,"prim","3^6:2.U4(3).D8",4]); AGR.API("O8m3d2aG1-p1066B0",[1,3,"prim","3^6:2.U4(3).(2^2)_{122}",2]); AGR.API("O8m3d2cG1-p1066B0",[1,3,"prim","3^6:2.U4(3).(2^2)_{133}",2]); AGR.API("O8m3d2cG2-p1066B0",[1,3,"prim","3^6:2.U4(3).(2^2)_{133}",2]); AGR.API("O8p3G1-p1080aB0",[1,3,"prim","O7(3)",1]); AGR.API("O8p3G1-p1080bB0",[1,3,"prim","O7(3)",2]); AGR.API("O8p3G1-p1080cB0",[1,3,"prim","O7(3)",3]); AGR.API("O8p3G1-p1080dB0",[1,3,"prim","O7(3)",4]); AGR.API("O8p3G1-p1080eB0",[1,3,"prim","O7(3)",5]); AGR.API("O8p3G1-p1080fB0",[1,3,"prim","O7(3)",6]); AGR.API("O8p3G1-p1120aB0",[1,3,"prim","3^6:L4(3)",7]); AGR.API("O8p3G1-p1120bB0",[1,3,"prim","3^6:L4(3)",8]); AGR.API("O8p3G1-p1120cB0",[1,3,"prim","3^6:L4(3)",9]); AGR.API("O8p3G1-p28431aB0",[1,6,"prim","O8+(2)",10]); AGR.API("O8p3G1-p28431bB0",[1,6,"prim","O8+(2)",11]); AGR.API("O8p3G1-p28431cB0",[1,6,"prim","O8+(2)",12]); AGR.API("O8p3G1-p28431dB0",[1,6,"prim","O8+(2)",13]); AGR.API("O8p3G1-p36400B0",[1,7,"prim","3^(1+8)_+:2(A4xA4xA4).2",14]); AGR.API("O8p3S4G2-p3360B0",[1,5,"imprim","3^6:L4(3).D8 < O8+(3).D8"]); AGR.API("O8p3S4G2-p6480B0",[1,6,"imprim","O7(3).2x2 < O8+(3).(2^2)_{122}"]); AGR.API("ONG1-p122760aB0",[1,5,"prim","L3(7).2",1]); AGR.API("ONd2G1-p245520B0",[1,9,"imprim","L3(7).2 < ON"]); AGR.API("PGL29G1-p10B0",[3,2,"prim","3^2:8",2]); AGR.API("R27G1-p19684B0",[2,2,"prim","3^(3+6):26",1]); AGR.API("R27d3G1-p19684B0",[2,2,"prim","3^(3+6):26:3",2]); AGR.API("RuG1-p4060B0",[1,3,"prim","2F4(2)'.2",1]); AGR.API("S102G1-p1023B0",[1,3,"prim","2^9.S8(2)",3]); AGR.API("S102G1-p1056B0",[1,4,"imprim","O10+(2) < O10+(2).2"]); AGR.API("S102G1-p496B0",[2,2,"prim","O10-(2).2",1]); AGR.API("S102G1-p528B0",[2,2,"prim","O10+(2).2",2]); AGR.API("S102G1-p992B0",[1,4,"imprim","O10-(2) < O10-(2).2"]); AGR.API("S10G1-p10B0",[10,2,"prim","S9",2]); AGR.API("S11G1-p11B0",[11,2,"prim","S10",2]); AGR.API("S12G1-p10395B0",[1,11,"prim","2^5:S6",9]); AGR.API("S12G1-p12B0",[12,2,"prim","S11",2]); AGR.API("S12G1-p15400B0",[1,12,"prim","3^4:2^3.S4",10]); AGR.API("S12G1-p220B0",[1,4,"prim","(A9x3):2",4]); AGR.API("S12G1-p462B0",[1,4,"prim","(A6xA6):2^2",5]); AGR.API("S12G1-p495B0",[1,5,"prim","(A8xA4):2",6]); AGR.API("S12G1-p5040B0",[1,8,"imprim","M12 < A12"]); AGR.API("S12G1-p5775B0",[1,9,"prim","2^6:3^3:S4",8]); AGR.API("S12G1-p66B0",[1,3,"prim","S10",3]); AGR.API("S12G1-p792B0",[1,6,"prim","(A7xA5):2",7]); AGR.API("S13G1-p13B0",[13,2,"prim","S12",2]); AGR.API("S13G1-p78B0",[1,3,"prim","S11x2",3]); AGR.API("S14G1-p1001B0",[1,5,"prim","S10xS4",5]); AGR.API("S14G1-p14B0",[14,2,"prim","S13",2]); AGR.API("S14G1-p1716B0",[1,4,"prim","(S7xS7):2",6]); AGR.API("S14G1-p2002B0",[1,6,"prim","S9xS5",7]); AGR.API("S14G1-p3003B0",[1,7,"prim","S8xS6",8]); AGR.API("S14G1-p364B0",[1,4,"prim","S11xS3",4]); AGR.API("S14G1-p91B0",[1,3,"prim","S12x2",3]); AGR.API("S15G1-p105B0",[1,3,"prim","S13x2",3]); AGR.API("S15G1-p1365B0",[1,5,"prim","S11xS4",5]); AGR.API("S15G1-p15B0",[15,2,"prim","S14",2]); AGR.API("S15G1-p455B0",[1,4,"prim","S12xS3",4]); AGR.API("S16G1-p120B0",[1,3,"prim","S14x2",3]); AGR.API("S16G1-p16B0",[16,2,"prim","S15",2]); AGR.API("S16G1-p1820B0",[1,5,"prim","S12xS4",5]); AGR.API("S16G1-p560B0",[1,4,"prim","S13xS3",4]); AGR.API("S17G1-p136B0",[1,3,"prim","S15x2",3]); AGR.API("S17G1-p17B0",[17,2,"prim","S16",2]); AGR.API("S17G1-p2380B0",[1,5,"prim","S13xS4",5]); AGR.API("S17G1-p680B0",[1,4,"prim","S14xS3",4]); AGR.API("S18G1-p153B0",[1,3,"prim","S16x2",3]); AGR.API("S18G1-p18B0",[18,2,"prim","S17",2]); AGR.API("S18G1-p3060B0",[1,5,"prim","S14xS4",5]); AGR.API("S18G1-p816B0",[1,4,"prim","S15xS3",4]); AGR.API("S19G1-p171B0",[1,3,"prim","S17x2",3]); AGR.API("S19G1-p19B0",[19,2,"prim","S18",2]); AGR.API("S19G1-p969B0",[1,4,"prim","S16xS3",4]); AGR.API("S20G1-p190B0",[1,3,"prim","S18x2",3]); AGR.API("S20G1-p20B0",[20,2,"prim","S19",2]); AGR.API("S21G1-p210B0",[1,3,"prim","S19x2",3]); AGR.API("S21G1-p21B0",[21,2,"prim","S20",2]); AGR.API("S22G1-p22B0",[22,2,"prim","S21",2]); AGR.API("S22G1-p231B0",[1,3,"prim","S20x2",3]); AGR.API("S23G1-p23B0",[23,2,"prim","S22",2]); AGR.API("S23G1-p253B0",[1,3,"prim","S21x2",3]); AGR.API("S44G1-p120bB0",[1,3,"prim","L2(16):2",4]); AGR.API("S44G1-p85aB0",[1,3,"prim","2^6:(3xA5)",1]); AGR.API("S44d4G1-p170B0",[1,5,"imprim","2^6:(3xA5):2 < S4(4).2"]); AGR.API("S45G1-p156aB0",[1,3,"prim","5^(1+2)_+:4A5",1]); AGR.API("S45G1-p156bB0",[1,3,"prim","5^3:(2xA5).2",2]); AGR.API("S45G1-p300B0",[1,4,"prim","L2(25):2_2",3]); AGR.API("S45G1-p325B0",[1,4,"prim","2.(A5xA5).2",4]); AGR.API("S47G1-p1176B0",[1,5,"prim","L2(49).2_2",3]); AGR.API("S47G1-p1225B0",[1,5,"prim","2.(L2(7)xL2(7)).2",4]); AGR.API("S47G1-p400aB0",[1,3,"prim","7^(1+2)_+.(3xSL(2,7))",1]); AGR.API("S47G1-p400bB0",[1,3,"prim","7^3:(3xPGL(2,7))",2]); AGR.API("S47d2G1-p400aB0",[1,3,"prim","7^(1+2)_+:GL(2,7)",1]); AGR.API("S47d2G1-p400bB0",[1,3,"prim","7^3:(6xPGL(2,7))",2]); AGR.API("S5G1-p10B0",[1,3,"prim","S3x2",4]); AGR.API("S5G1-p5B0",[5,2,"prim","S4",2]); AGR.API("S5G1-p6B0",[3,2,"prim","5:4",3]); AGR.API("S62G1-p120B0",[1,3,"prim","U3(3):2",4]); AGR.API("S62G1-p126B0",[1,5,"imprim","2^5:A6 < 2^5:S6"]); AGR.API("S62G1-p135B0",[1,4,"prim","2^6:L3(2)",5]); AGR.API("S62G1-p240B0",[1,5,"imprim","U3(3) < U3(3):2"]); AGR.API("S62G1-p288B0",[1,5,"imprim","S7 < S8"]); AGR.API("S62G1-p28B0",[2,2,"prim","U4(2).2",1]); AGR.API("S62G1-p315B0",[1,5,"prim","2.[2^6]:(S3xS3)",6]); AGR.API("S62G1-p336B0",[1,5,"prim","S3xS6",7]); AGR.API("S62G1-p36B0",[2,2,"prim","S8",2]); AGR.API("S62G1-p378aB0",[1,8,"imprim","2x2^4:S5 < 2^5:S6"]); AGR.API("S62G1-p378bB0",[1,6,"imprim","2^5:S5 < 2^5:S6"]); AGR.API("S62G1-p56B0",[1,4,"imprim","U4(2) < U4(2).2"]); AGR.API("S62G1-p63B0",[1,3,"prim","2^5:S6",3]); AGR.API("S62G1-p72B0",[1,4,"imprim","A8 < S8"]); AGR.API("S62G1-p960B0",[1,6,"prim","L2(8).3",8]); AGR.API("S63G1-p1120B0",[1,4,"prim","3^6:L3(3)",2]); AGR.API("S63G1-p3640B0",[1,5,"prim","3^(3+4):2(S4xA4)",3]); AGR.API("S63G1-p364B0",[1,3,"prim","3^(1+4)_+.2U4(2)",1]); AGR.API("S63G1-p7371B0",[1,6,"prim","2.(A4xU4(2))",4]); AGR.API("S63d2G1-p1120B0",[1,4,"prim","3^6:(L3(3)x2)",3]); AGR.API("S63d2G1-p3640B0",[1,5,"prim","3^(3+4):2(S4xS4)",4]); AGR.API("S63d2G1-p364B0",[1,3,"prim","3^(1+4)_+:2.U4(2).2",2]); AGR.API("S63d2G1-p7371B0",[1,6,"prim","2(A4xU4(2)).2",5]); AGR.API("S6G1-p10B0",[2,2,"prim","3^2:D8",4]); AGR.API("S6G1-p15aB0",[1,3,"prim","S4x2",5]); AGR.API("S6G1-p15bB0",[1,3,"prim","S4x2",6]); AGR.API("S6G1-p6aB0",[6,2,"prim","A5.2",2]); AGR.API("S6G1-p6bB0",[6,2,"prim","A5.2",3]); AGR.API("S7G1-p120B0",[1,7,"prim","7:6",5]); AGR.API("S7G1-p21B0",[1,3,"prim","S5x2",3]); AGR.API("S7G1-p30B0",[1,4,"imprim","L2(7) < A7"]); AGR.API("S7G1-p35B0",[1,4,"prim","S4xS3",4]); AGR.API("S7G1-p7B0",[7,2,"prim","S6",2]); AGR.API("S82G1-p120B0",[2,2,"prim","O8-(2).2",1]); AGR.API("S82G1-p136B0",[2,2,"prim","O8+(2).2",2]); AGR.API("S82G1-p2295B0",[1,5,"prim","2^10:A8",4]); AGR.API("S82G1-p240B0",[1,4,"imprim","O8-(2) < O8-(2).2"]); AGR.API("S82G1-p255B0",[1,3,"prim","2^7:S6(2)",3]); AGR.API("S82G1-p272B0",[1,4,"imprim","O8+(2) < O8+(2).2"]); AGR.API("S82G1-p5355B0",[1,6,"prim","2^(3+8):(S3xS6)",5]); AGR.API("S8G1-p8B0",[8,2,"prim","S7",2]); AGR.API("S9G1-p9B0",[9,2,"prim","S8",2]); AGR.API("SuzG1-p135135B0",[1,9,"prim","2^(1+6)_-.U4(2)",4]); AGR.API("SuzG1-p1782B0",[1,3,"prim","G2(4)",1]); AGR.API("SuzG1-p22880B0",[1,5,"prim","3_2.U4(3).2_3'",2]); AGR.API("SuzG1-p232960B0",[1,13,"prim","3^5:M11",5]); AGR.API("SuzG1-p32760B0",[1,6,"prim","U5(2)",3]); AGR.API("SuzG1-p370656B0",[1,15,"prim","J2:2",6]); AGR.API("SuzG1-p405405B0",[1,13,"prim","2^(4+6):3A6",7]); AGR.API("Suzd2G1-p1782B0",[1,3,"prim","G2(4):2",2]); AGR.API("Sz32G1-p1025B0",[2,2,"prim","2^(5+5):31",1]); AGR.API("Sz32G1-p198400B0",[1,1282,"prim","41:4",2]); AGR.API("Sz32d5G1-p1025B0",[2,2,"prim","2^(5+5):31:5",2]); AGR.API("Sz8G1-p1456B0",[1,79,"prim","5:4",3]); AGR.API("Sz8G1-p2080B0",[1,165,"prim","D14",4]); AGR.API("Sz8G1-p520B0",[1,12,"imprim","2^3:7 < 2^(3+3):7"]); AGR.API("Sz8G1-p560B0",[1,17,"prim","13:4",2]); AGR.API("Sz8G1-p65B0",[2,2,"prim","2^(3+3):7",1]); AGR.API("Sz8d3G1-p1456B0",[1,27,"prim","5:4x3",4]); AGR.API("Sz8d3G1-p2080B0",[1,59,"prim","7:6",5]); AGR.API("Sz8d3G1-p520B0",[1,8,"imprim","2^3:7:3 < 2^(3+3):7:3"]); AGR.API("Sz8d3G1-p560B0",[1,7,"prim","13:12",3]); AGR.API("Sz8d3G1-p65B0",[2,2,"prim","2^(3+3):7:3",2]); AGR.API("TD42G1-p819B0",[1,4,"prim","2^(1+8)_+:L2(8)",1]); AGR.API("TF42G1-p12480B0",[1,24,"prim","A6.2^2",7]); AGR.API("TF42G1-p14976B0",[1,25,"prim","5^2:4A4",8]); AGR.API("TF42G1-p1600B0",[1,4,"prim","L3(3).2",1]); AGR.API("TF42G1-p1755B0",[1,5,"prim","2.[2^8]:5:4",3]); AGR.API("TF42G1-p2304B0",[1,7,"prim","L2(25)",4]); AGR.API("TF42G1-p2925B0",[1,6,"prim","2^2.[2^8]:S3",5]); AGR.API("TF42d2G1-p1755B0",[1,5,"prim","2.[2^9]:5:4",2]); AGR.API("TF42d2G1-p2304B0",[1,6,"prim","L2(25).2_3",3]); AGR.API("U311G1-p1332B0",[2,2,"prim","11^(1+2)_+:40",1]); AGR.API("U311d2G1-p1332B0",[2,2,"prim","11^(1+2)_+:(5x8:2)",2]); AGR.API("U313G1-p2198B0",[2,2,"prim","13^(1+2)_+:168",1]); AGR.API("U316G1-p4097B0",[2,2,"prim","2^(4+8):255",1]); AGR.API("U33G1-p28B0",[2,2,"prim","3^(1+2)_+:8",1]); AGR.API("U33G1-p36B0",[1,4,"prim","L2(7)",2]); AGR.API("U33G1-p63aB0",[1,4,"prim","4.S4",3]); AGR.API("U33G1-p63bB0",[1,5,"prim","4^2:S3",4]); AGR.API("U33d2G1-p63bB0",[1,4,"prim","4^2:D12",5]); AGR.API("U34G1-p1600B0",[1,48,"prim","13:3",4]); AGR.API("U34G1-p208B0",[1,5,"prim","5xA5",2]); AGR.API("U34G1-p416B0",[1,9,"prim","5^2:S3",3]); AGR.API("U34G1-p65B0",[2,2,"prim","2^(2+4):15",1]); AGR.API("U34d2G1-p1600B0",[1,28,"prim","13:6",5]); AGR.API("U34d2G1-p208B0",[1,5,"prim","A5xD10",3]); AGR.API("U34d2G1-p416B0",[1,7,"prim","5^2:D12",4]); AGR.API("U34d2G1-p65B0",[2,2,"prim","2^(2+4):(3xD10)",2]); AGR.API("U34d4G1-p1600B0",[1,15,"prim","13:12",5]); AGR.API("U34d4G1-p208B0",[1,4,"prim","(D10xA5).2",3]); AGR.API("U34d4G1-p416B0",[1,5,"prim","5^2:(4xS3)",4]); AGR.API("U34d4G1-p65B0",[2,2,"prim","2^(2+4):(3xD10).2",2]); AGR.API("U35G1-p50B0",[1,3,"prim","A7",1]); AGR.API("U35d2G1-p126B0",[2,2,"prim","5^(1+2)_+:8:2",3]); AGR.API("U35d2G1-p175B0",[1,4,"prim","A6.2^2",4]); AGR.API("U35d2G1-p50B0",[1,3,"prim","S7",2]); AGR.API("U35d2G1-p525B0",[1,7,"prim","2S5.2",5]); AGR.API("U35d2G1-p750B0",[1,9,"prim","L2(7).2",6]); AGR.API("U37G1-p1032B0",[1,6,"imprim","7^(1+2):16 < 7^(1+2):48"]); AGR.API("U37G1-p1376B0",[1,8,"imprim","7^(1+2):12 < 7^(1+2):48"]); AGR.API("U37G1-p14749B0",[1,60,"prim","8^2:S3",3]); AGR.API("U37G1-p16856B0",[1,114,"prim","L2(7):2",4]); AGR.API("U37G1-p2064B0",[1,12,"imprim","7^(1+2):8 < 7^(1+2):48"]); AGR.API("U37G1-p2107B0",[1,8,"prim","2(L2(7)x4).2",2]); AGR.API("U37G1-p344B0",[2,2,"prim","7^(1+2):48",1]); AGR.API("U37G1-p43904B0",[1,362,"prim","43:3",5]); AGR.API("U37G1-p688B0",[1,4,"imprim","7^(1+2):24 < 7^(1+2):48"]); AGR.API("U38E9G1-p3648B0",[1,5,"prim","(9xL2(8)):3",3]); AGR.API("U38E9G1-p513B0",[2,2,"prim","2^(3+6):63:3",2]); AGR.API("U38G1-p3648B0",[1,11,"prim","3xL2(8)",2]); AGR.API("U38G1-p513B0",[2,2,"prim","2^(3+6):21",1]); AGR.API("U38S3G1-p3648B0",[1,9,"prim","D18xL2(8)",4]); AGR.API("U38S3G1-p513B0",[2,2,"prim","2^(3+6):(7xD18)",3]); AGR.API("U38S3x3G1-p3648B0",[1,5,"prim","(D18xL2(8)):3",5]); AGR.API("U38S3x3G1-p513B0",[2,2,"prim","2^(3+6):(7xD18):3",4]); AGR.API("U38d2G1-p3648B0",[1,10,"prim","S3xL2(8)",3]); AGR.API("U38d2G1-p513B0",[2,2,"prim","2^(3+6):(7xS3)",2]); AGR.API("U38d3aG1-p3648B0",[1,7,"prim","3xL2(8):3",3]); AGR.API("U38d3aG1-p513B0",[2,2,"prim","2^(3+6):(7:3x3)",2]); AGR.API("U38d3bG1-p3648B0",[1,9,"prim","9xL2(8)",3]); AGR.API("U38d3bG1-p513B0",[2,2,"prim","2^(3+6):63",2]); AGR.API("U38d3cG1-p3648B0",[1,5,"prim","L2(8):9",3]); AGR.API("U38d3cG1-p513B0",[2,2,"prim","2^(3+6):7:9",2]); AGR.API("U38d6G1-p3648B0",[1,6,"prim","S3xL2(8):3",4]); AGR.API("U38d6G1-p513B0",[2,2,"prim","2^(3+6):(7:3xS3)",3]); AGR.API("U39G1-p730B0",[2,2,"prim","3^(2+4):80",1]); AGR.API("U42G1-p27B0",[1,3,"prim","2^4:A5",1]); AGR.API("U42G1-p36B0",[1,3,"prim","S6",2]); AGR.API("U42G1-p40aB0",[1,3,"prim","3^(1+2)+:2A4",3]); AGR.API("U42G1-p40bB0",[1,3,"prim","3^3:S4",4]); AGR.API("U42G1-p45B0",[1,3,"prim","2.(A4xA4).2",5]); AGR.API("U42d2G1-p27B0",[1,3,"prim","2^4:S5",2]); AGR.API("U42d2G1-p36B0",[1,3,"prim","S6x2",3]); AGR.API("U42d2G1-p40aB0",[1,3,"prim","3^(1+2)_+:2S4",4]); AGR.API("U42d2G1-p40bB0",[1,3,"prim","3^3:(S4x2)",5]); AGR.API("U42d2G1-p45B0",[1,3,"prim","2.(A4xA4).2^2",6]); AGR.API("U43D8G1-p112B0",[1,3,"prim","3^4:(2xA6.2^2)",4]); AGR.API("U43D8G1-p1134B0",[1,8,"imprim","2^5:S6 < U4(3).(2^2)_{122}"]); AGR.API("U43D8G1-p252B0",[1,5,"imprim","U4(2).2x2 < U4(3).(2^2)_{122}"]); AGR.API("U43D8G1-p280B0",[1,3,"prim","3^(1+4)_+.2^(1+4)_-.D12",5]); AGR.API("U43D8G1-p2835B0",[1,9,"prim","4(S4xS4).2^2",7]); AGR.API("U43D8G1-p324B0",[1,5,"imprim","L3(4):2^2 < U4(3).(2^2)_{133}"]); AGR.API("U43D8G1-p4536B0",[1,15,"prim","(A6.2^2x2).2",8]); AGR.API("U43D8G1-p5184B0",[1,17,"imprim","S7 < U4(3).(2^2)_{122}"]); AGR.API("U43D8G1-p540B0",[1,4,"prim","(U3(3)x4):2",6]); AGR.API("U43D8G1-p8505B0",[1,22,"prim","4^3.(2xS4)",9]); AGR.API("U43D8G1-p9072B0",[1,24,"imprim","A6.2^2x2 < (A6.2^2x2).2"]); AGR.API("U44G1-p1040B0",[1,5,"prim","S4(4)",2]); AGR.API("U44G1-p1105B0",[1,3,"prim","2^(2+8):(15xA5)",3]); AGR.API("U44G1-p325B0",[1,3,"prim","2^8:(3xL2(16))",1]); AGR.API("U44G1-p3264B0",[1,5,"prim","5xU3(4)",4]); AGR.API("U45G1-p1575B0",[1,4,"prim","S4(5).2",2]); AGR.API("U45G1-p756B0",[1,3,"prim","5^4:(L2(25)x4)",1]); AGR.API("U52G1-p1408B0",[1,7,"prim","3^4:S5",4]); AGR.API("U52G1-p165B0",[1,3,"prim","2^(1+6):3^(1+2):2A4",1]); AGR.API("U52G1-p176B0",[1,3,"prim","3xU4(2)",2]); AGR.API("U52G1-p20736B0",[1,76,"prim","L2(11)",6]); AGR.API("U52G1-p297B0",[1,3,"prim","2^(4+4):(3xA5)",3]); AGR.API("U52G1-p3520B0",[1,12,"prim","S3x3^(1+2)+:2A4",5]); AGR.API("U52d2G1-p1408B0",[1,6,"prim","3^4:(2xS5)",5]); AGR.API("U52d2G1-p165B0",[1,3,"prim","2^(1+6)_-:3^(1+2)_+:2S4",2]); AGR.API("U52d2G1-p176B0",[1,3,"prim","(3xU4(2)):2",3]); AGR.API("U52d2G1-p20736B0",[1,43,"prim","L2(11).2",7]); AGR.API("U52d2G1-p297B0",[1,3,"prim","2^(4+4):(3xA5):2",4]); AGR.API("U52d2G1-p3520B0",[1,12,"prim","S3x3^(1+2)_+:2S4",6]); AGR.API("U62G1-p12474B0",[1,8,"imprim","2^(4+8):(3xA5) < 2^(4+8):(S3xA5)"]); AGR.API("U62G1-p1408aB0",[1,3,"prim","U4(3).2_2",4]); AGR.API("U62G1-p1408bB0",[1,3,"prim","U4(3).2_2",5]); AGR.API("U62G1-p1408cB0",[1,3,"prim","U4(3).2_2",6]); AGR.API("U62G1-p20736aB0",[1,8,"prim","M22",11]); AGR.API("U62G1-p20736bB0",[1,8,"prim","M22",12]); AGR.API("U62G1-p20736cB0",[1,8,"prim","M22",13]); AGR.API("U62G1-p2816aB0",[1,5,"imprim","U4(3) < U4(3).2_2"]); AGR.API("U62G1-p2816bB0",[1,5,"imprim","U4(3) < U4(3).2_2"]); AGR.API("U62G1-p2816cB0",[1,5,"imprim","U4(3) < U4(3).2_2"]); AGR.API("U62G1-p59136B0",[1,15,"prim","S3xU4(2)",14]); AGR.API("U62G1-p6237B0",[1,5,"prim","2^(4+8):(S3xA5)",7]); AGR.API("U62G1-p6336aB0",[1,4,"prim","S6(2)",8]); AGR.API("U62G1-p6336bB0",[1,4,"prim","S6(2)",9]); AGR.API("U62G1-p6336cB0",[1,4,"prim","S6(2)",10]); AGR.API("U62G1-p672B0",[1,3,"prim","U5(2)",1]); AGR.API("U62G1-p693B0",[1,3,"prim","2^(1+8)_+:U4(2)",2]); AGR.API("U62G1-p891B0",[1,4,"prim","2^9.L3(4)",3]); AGR.API("U62S3G1-p693B0",[1,3,"prim","2^(1+8)_+:(U4(2)x3):2",4]); AGR.API("U62S3G1-p891B0",[1,4,"prim","2^9.L3(4).S3",5]); AGR.API("U62d2G1-p1408B0",[1,3,"prim","U4(3).(2^2)_{122}",5]); AGR.API("U62d2G1-p20736B0",[1,8,"prim","M22.2",8]); AGR.API("U62d2G1-p6237B0",[1,5,"prim","2^(4+8).(S3xS5)",6]); AGR.API("U62d2G1-p6336B0",[1,4,"prim","S6(2)x2",7]); AGR.API("U62d2G1-p672B0",[1,3,"prim","U5(2).2",2]); AGR.API("U62d2G1-p693B0",[1,3,"prim","2^(1+8)_+:U4(2).2",3]); AGR.API("U62d2G1-p891B0",[1,4,"prim","2^9.L3(4).2",4]); ############################################################################# ## ## precomputed character data ## AGR.CHAR("2F4(2)'","TF42G1-Zr52B0",0,[2,3],"26ab"); AGR.CHAR("2F4(2)'","TF42G1-Zr78B0",0,6,"78a"); AGR.CHAR("2F4(2)'","TF42G1-f13r27aB0",13,4,"27a"); AGR.CHAR("2F4(2)'","TF42G1-f13r27bB0",13,5,"27b"); AGR.CHAR("2F4(2)'","TF42G1-f13r52B0",13,[2,3],"26ab"); AGR.CHAR("2F4(2)'","TF42G1-f13r78B0",13,6,"78a"); AGR.CHAR("2F4(2)'","TF42G1-f169r26B0",13,2,"26a"); AGR.CHAR("2F4(2)'","TF42G1-f25r109aB0",5,7,"109a"); AGR.CHAR("2F4(2)'","TF42G1-f25r109bB0",5,8,"109b"); AGR.CHAR("2F4(2)'","TF42G1-f25r26aB0",5,2,"26a"); AGR.CHAR("2F4(2)'","TF42G1-f25r26bB0",5,3,"26b"); AGR.CHAR("2F4(2)'","TF42G1-f2r246B0",2,3,"246a"); AGR.CHAR("2F4(2)'","TF42G1-f2r26B0",2,2,"26a"); AGR.CHAR("2F4(2)'","TF42G1-f3r124aB0",3,7,"124a"); AGR.CHAR("2F4(2)'","TF42G1-f3r124bB0",3,8,"124b"); AGR.CHAR("2F4(2)'","TF42G1-f3r26aB0",3,2,"26a"); AGR.CHAR("2F4(2)'","TF42G1-f3r26bB0",3,3,"26b"); AGR.CHAR("2F4(2)'","TF42G1-f3r54B0",3,[4,5],"27ab"); AGR.CHAR("2F4(2)'","TF42G1-f3r77B0",3,6,"77a"); AGR.CHAR("2F4(2)'","TF42G1-f4r2048aB0",2,4,"2048a"); AGR.CHAR("2F4(2)'","TF42G1-f5r218B0",5,[7,8],"109ab"); AGR.CHAR("2F4(2)'","TF42G1-f5r27aB0",5,4,"27a"); AGR.CHAR("2F4(2)'","TF42G1-f5r27bB0",5,5,"27b"); AGR.CHAR("2F4(2)'","TF42G1-f5r52B0",5,[2,3],"26ab"); AGR.CHAR("2F4(2)'","TF42G1-f5r78B0",5,6,"78a"); AGR.CHAR("2F4(2)'","TF42G1-f9r27aB0",3,4,"27a"); AGR.CHAR("2F4(2)'","TF42G1-f9r27bB0",3,5,"27b"); AGR.CHAR("2F4(2)'","TF42G1-p12480B0",0,[1,6,[9,3],12,13,14,[15,2],16,17,18,19,21,22],"1a+78a+351a^3+624ab+650a+675a^2+702ab+1300ab+2048ab"); AGR.CHAR("2F4(2)'","TF42G1-p14976B0",0,[1,8,[9,2],12,13,14,[15,2],16,17,[18,2],[19,2],21,22],"1a+325a+351a^2+624ab+650a+675a^2+702ab+1300a^2b^2+2048ab"); AGR.CHAR("2F4(2)'","TF42G1-p1600B0",0,[1,9,12,13],"1a+351a+624ab"); AGR.CHAR("2F4(2)'","TF42G1-p1755B0",0,[1,6,9,14,15],"1a+78a+351a+650a+675a"); AGR.CHAR("2F4(2)'","TF42G1-p2304B0",0,[1,4,5,9,12,13,14],"1a+27ab+351a+624ab+650a"); AGR.CHAR("2F4(2)'","TF42G1-p2925B0",0,[1,9,12,13,14,15],"1a+351a+624ab+650a+675a"); AGR.CHAR("3D4(2)","TD42G1-Zr196B0",0,4,"196a"); AGR.CHAR("3D4(2)","TD42G1-Zr26B0",0,2,"26a"); AGR.CHAR("3D4(2)","TD42G1-Zr52B0",0,3,"52a"); AGR.CHAR("3D4(2)","TD42G1-f13r26B0",13,2,"26a"); AGR.CHAR("3D4(2)","TD42G1-f27r351aB0",3,6,"351a"); AGR.CHAR("3D4(2)","TD42G1-f27r351bB0",3,7,"351b"); AGR.CHAR("3D4(2)","TD42G1-f27r351cB0",3,8,"351c"); AGR.CHAR("3D4(2)","TD42G1-f2r26B0",2,5,"26a"); AGR.CHAR("3D4(2)","TD42G1-f3r1053B0",3,10,"1053a"); AGR.CHAR("3D4(2)","TD42G1-f3r196B0",3,4,"196a"); AGR.CHAR("3D4(2)","TD42G1-f3r25B0",3,2,"25a"); AGR.CHAR("3D4(2)","TD42G1-f3r324B0",3,5,"324a"); AGR.CHAR("3D4(2)","TD42G1-f3r441B0",3,9,"441a"); AGR.CHAR("3D4(2)","TD42G1-f3r52B0",3,3,"52a"); AGR.CHAR("3D4(2)","TD42G1-f7r26B0",7,2,"26a"); AGR.CHAR("3D4(2)","TD42G1-f7r298B0",7,6,"298a"); AGR.CHAR("3D4(2)","TD42G1-f8r8aB0",2,2,"8a"); AGR.CHAR("3D4(2)","TD42G1-p819B0",0,[1,2,6,10],"1a+26a+324a+468a"); AGR.CHAR("3D4(2).3","TD42d3G1-f13r26aB0",13,4); AGR.CHAR("3D4(2).3","TD42d3G1-f2r144B0",2,8); AGR.CHAR("3D4(2).3","TD42d3G1-f2r246aB0",2,10); AGR.CHAR("3D4(2).3","TD42d3G1-f2r24B0",2,4); AGR.CHAR("3D4(2).3","TD42d3G1-f2r26B0",2,5); AGR.CHAR("3D4(2).3","TD42d3G1-f2r480B0",2,9); AGR.CHAR("3D4(2).3","TD42d3G1-f3r196B0",3,4); AGR.CHAR("3D4(2).3","TD42d3G1-f3r52B0",3,3); AGR.CHAR("3D4(2).3","TD42d3G1-f7r26aB0",7,4); AGR.CHAR("3D4(2).3","TD42d3G1-f7r273aB0",7,13); AGR.CHAR("3D4(2).3","TD42d3G1-f7r298aB0",7,16); AGR.CHAR("3D4(2).3","TD42d3G1-f7r467aB0",7,19); AGR.CHAR("3D4(2).3","TD42d3G1-f7r52aB0",7,7); AGR.CHAR("Co1","Co1G1-f11r276B0",11,2,"276a"); AGR.CHAR("Co1","Co1G1-f11r299B0",11,3,"299a"); AGR.CHAR("Co1","Co1G1-f13r276B0",13,2,"276a"); AGR.CHAR("Co1","Co1G1-f13r299B0",13,3,"299a"); AGR.CHAR("Co1","Co1G1-f23r276B0",23,2,"276a"); AGR.CHAR("Co1","Co1G1-f23r299B0",23,3,"299a"); AGR.CHAR("Co1","Co1G1-f7r276B0",7,2,"276a"); AGR.CHAR("Co1","Co1G1-f7r299B0",7,3,"299a"); AGR.CHAR("Co1","Co1G1-p98280B0",0,[1,3,6,10],"1a+299a+17250a+80730a"); AGR.CHAR("Co2","Co2G1-Zr23B0",0,2,"23a"); AGR.CHAR("Co2","Co2G1-f11r23B0",11,2,"23a"); AGR.CHAR("Co2","Co2G1-f11r253B0",11,3,"253a"); AGR.CHAR("Co2","Co2G1-f11r275B0",11,4,"275a"); AGR.CHAR("Co2","Co2G1-f23r23B0",23,2,"23a"); AGR.CHAR("Co2","Co2G1-f23r253B0",23,3,"253a"); AGR.CHAR("Co2","Co2G1-f23r274B0",23,4,"274a"); AGR.CHAR("Co2","Co2G1-f2r22B0",2,2,"22a"); AGR.CHAR("Co2","Co2G1-f2r230B0",2,3,"230a"); AGR.CHAR("Co2","Co2G1-f2r24B0",2,[[1,2],2],"1a^2+22a"); AGR.CHAR("Co2","Co2G1-f2r748aB0",2,4,"748a"); AGR.CHAR("Co2","Co2G1-f2r748bB0",2,5,"748b"); AGR.CHAR("Co2","Co2G1-f3r23B0",3,2,"23a"); AGR.CHAR("Co2","Co2G1-f3r253B0",3,3,"253a"); AGR.CHAR("Co2","Co2G1-f3r275B0",3,4,"275a"); AGR.CHAR("Co2","Co2G1-f5r23B0",5,2,"23a"); AGR.CHAR("Co2","Co2G1-f5r253B0",5,3,"253a"); AGR.CHAR("Co2","Co2G1-f5r275B0",5,4,"275a"); AGR.CHAR("Co2","Co2G1-f7r23B0",7,2,"23a"); AGR.CHAR("Co2","Co2G1-f7r253B0",7,3,"253a"); AGR.CHAR("Co2","Co2G1-f7r275B0",7,4,"275a"); AGR.CHAR("Co2","Co2G1-p2300B0",0,[1,4,6],"1a+275a+2024a"); AGR.CHAR("Co2","Co2G1-p4600B0",0,[1,2,4,6,7],"1a+23a+275a+2024a+2277a"); AGR.CHAR("Co3","Co3G1-Zr23B0",0,2,"23a"); AGR.CHAR("Co3","Co3G1-f11r23B0",11,2,"23a"); AGR.CHAR("Co3","Co3G1-f11r253aB0",11,3,"253a"); AGR.CHAR("Co3","Co3G1-f11r253bB0",11,4,"253b"); AGR.CHAR("Co3","Co3G1-f11r275B0",11,5,"275a"); AGR.CHAR("Co3","Co3G1-f11r896B0",11,6,"896a"); AGR.CHAR("Co3","Co3G1-f23r23B0",23,2,"23a"); AGR.CHAR("Co3","Co3G1-f23r253aB0",23,3,"253a"); AGR.CHAR("Co3","Co3G1-f23r253bB0",23,4,"253b"); AGR.CHAR("Co3","Co3G1-f23r274B0",23,5,"274a"); AGR.CHAR("Co3","Co3G1-f23r896bB0",23,7,"896b"); AGR.CHAR("Co3","Co3G1-f2r22B0",2,2,"22a"); AGR.CHAR("Co3","Co3G1-f2r230B0",2,3,"230a"); AGR.CHAR("Co3","Co3G1-f3r126aB0",3,3,"126a"); AGR.CHAR("Co3","Co3G1-f3r126bB0",3,4,"126b"); AGR.CHAR("Co3","Co3G1-f3r22B0",3,2,"22a"); AGR.CHAR("Co3","Co3G1-f3r231aB0",3,5,"231a"); AGR.CHAR("Co3","Co3G1-f3r231bB0",3,6,"231b"); AGR.CHAR("Co3","Co3G1-f3r770aB0",3,7,"770a"); AGR.CHAR("Co3","Co3G1-f3r770bB0",3,8,"770b"); AGR.CHAR("Co3","Co3G1-f49r896aB0",7,6,"896a"); AGR.CHAR("Co3","Co3G1-f4r896aB0",2,4,"896a"); AGR.CHAR("Co3","Co3G1-f5r230B0",5,3,"230a"); AGR.CHAR("Co3","Co3G1-f5r23B0",5,2,"23a"); AGR.CHAR("Co3","Co3G1-f5r253B0",5,4,"253a"); AGR.CHAR("Co3","Co3G1-f5r275B0",5,5,"275a"); AGR.CHAR("Co3","Co3G1-f5r896bB0",5,7,"896b"); AGR.CHAR("Co3","Co3G1-f7r23B0",7,2,"23a"); AGR.CHAR("Co3","Co3G1-f7r253aB0",7,3,"253a"); AGR.CHAR("Co3","Co3G1-f7r253bB0",7,4,"253b"); AGR.CHAR("Co3","Co3G1-f7r275B0",7,5,"275a"); AGR.CHAR("Co3","Co3G1-p11178B0",0,[1,2,5,9,15],"1a+23a+275a+2024a+8855a"); AGR.CHAR("Co3","Co3G1-p128800B0",0,[1,5,13,15,20,31],"1a+275a+5544a+8855a+23000a+91125a"); AGR.CHAR("Co3","Co3G1-p276B0",0,[1,5],"1a+275a"); AGR.CHAR("Co3","Co3G1-p37950B0",0,[1,[5,2],13,15,20],"1a+275a^2+5544a+8855a+23000a"); AGR.CHAR("Co3","Co3G1-p48600B0",0,[1,2,4,5,9,13,15,24],"1a+23a+253b+275a+2024a+5544a+8855a+31625c"); AGR.CHAR("Co3","Co3G1-p552B0",0,[1,2,4,5],"1a+23a+253b+275a"); AGR.CHAR("Fi22","F22G1-Zr78B0",0,2,"78a"); AGR.CHAR("Fi22","F22G1-f11r429B0",11,3,"429a"); AGR.CHAR("Fi22","F22G1-f11r78B0",11,2,"78a"); AGR.CHAR("Fi22","F22G1-f13r429B0",13,3,"429a"); AGR.CHAR("Fi22","F22G1-f13r78B0",13,2,"78a"); AGR.CHAR("Fi22","F22G1-f2r350B0",2,3,"350a"); AGR.CHAR("Fi22","F22G1-f2r572B0",2,4,"572a"); AGR.CHAR("Fi22","F22G1-f2r78B0",2,2,"78a"); AGR.CHAR("Fi22","F22G1-f3r351B0",3,3,"351a"); AGR.CHAR("Fi22","F22G1-f3r77B0",3,2,"77a"); AGR.CHAR("Fi22","F22G1-f3r924B0",3,4,"924a"); AGR.CHAR("Fi22","F22G1-f5r428B0",5,3,"428a"); AGR.CHAR("Fi22","F22G1-f5r78B0",5,2,"78a"); AGR.CHAR("Fi22","F22G1-f7r429B0",7,3,"429a"); AGR.CHAR("Fi22","F22G1-f7r78B0",7,2,"78a"); AGR.CHAR("Fi22","F22G1-p14080bB0",0,[1,3,9],"1a+429a+13650a"); AGR.CHAR("Fi22","F22G1-p142155B0",0,[1,2,3,5,7,10,11,17],"1a+78a+429a+1430a+3080a+30030a+32032a+75075a"); AGR.CHAR("Fi22","F22G1-p3510B0",0,[1,3,7],"1a+429a+3080a"); AGR.CHAR("Fi22","F22G1-p61776B0",0,[1,7,9,13],"1a+3080a+13650a+45045a"); AGR.CHAR("Fi22","F22G1-p694980B0",0,[1,3,5,7,9,10,13,17,25,28],"1a+429a+1430a+3080a+13650a+30030a+45045a+75075a+205920a+320320a"); AGR.CHAR("Fi23","F23G1-f11r782B0",11,2,"782a"); AGR.CHAR("Fi23","F23G1-f13r782B0",13,2,"782a"); AGR.CHAR("Fi23","F23G1-f2r1494B0",2,3,"1494a"); AGR.CHAR("Fi23","F23G1-f2r782B0",2,2,"782a"); AGR.CHAR("Fi23","F23G1-f5r782B0",5,2,"782a"); AGR.CHAR("Fi23","F23G1-f7r782B0",7,2,"782a"); AGR.CHAR("Fi23","F23G1-p137632B0",0,[1,6,8],"1a+30888a+106743a"); AGR.CHAR("Fi23","F23G1-p275264B0",0,[1,5,6,8,9],"1a+25806a+30888a+106743a+111826a"); AGR.CHAR("Fi23","F23G1-p31671B0",0,[1,2,6],"1a+782a+30888a"); AGR.CHAR("G2(3)","G23G1-Zr104B0",0,9,"104a"); AGR.CHAR("G2(3)","G23G1-Zr128B0",0,[3,4],"64ab"); AGR.CHAR("G2(3)","G23G1-Zr14B0",0,2,"14a"); AGR.CHAR("G2(3)","G23G1-Zr168B0",0,10,"168a"); AGR.CHAR("G2(3)","G23G1-Zr182aB0",0,11,"182a"); AGR.CHAR("G2(3)","G23G1-Zr182bB0",0,12,"182b"); AGR.CHAR("G2(3)","G23G1-Zr78B0",0,5,"78a"); AGR.CHAR("G2(3)","G23G1-Zr91aB0",0,6,"91a"); AGR.CHAR("G2(3)","G23G1-Zr91bB0",0,7,"91b"); AGR.CHAR("G2(3)","G23G1-Zr91cB0",0,8,"91c"); AGR.CHAR("G2(3)","G23G1-f2r14B0",2,2,"14a"); AGR.CHAR("G2(3)","G23G1-f2r378B0",2,9,"378a"); AGR.CHAR("G2(3)","G23G1-f2r78B0",2,5,"78a"); AGR.CHAR("G2(3)","G23G1-f2r90aB0",2,6,"90a"); AGR.CHAR("G2(3)","G23G1-f2r90bB0",2,7,"90b"); AGR.CHAR("G2(3)","G23G1-f2r90cB0",2,8,"90c"); AGR.CHAR("G2(3)","G23G1-f3r189aB0",3,7,"189a"); AGR.CHAR("G2(3)","G23G1-f3r189bB0",3,8,"189b"); AGR.CHAR("G2(3)","G23G1-f3r27aB0",3,5,"27b"); AGR.CHAR("G2(3)","G23G1-f3r27bB0",3,4,"27a"); AGR.CHAR("G2(3)","G23G1-f3r49B0",3,6,"49a"); AGR.CHAR("G2(3)","G23G1-f3r729B0",3,9,"729a"); AGR.CHAR("G2(3)","G23G1-f3r7aB0",3,2,"7a"); AGR.CHAR("G2(3)","G23G1-f3r7bB0",3,3,"7b"); AGR.CHAR("G2(3)","G23G1-f4r64aB0",2,3,"64a"); AGR.CHAR("G2(3).2","G23d2G1-Ar14B0",0,3); AGR.CHAR("G2(3).2","G23d2G1-f13r14B0",13,3); AGR.CHAR("G2(3).2","G23d2G1-f13r434aB0",13,21); AGR.CHAR("G2(3).2","G23d2G1-f2r14B0",2,2); AGR.CHAR("G2(3).2","G23d2G1-f3r14B0",3,3); AGR.CHAR("G2(3).2","G23d2G1-f7r14B0",7,3); AGR.CHAR("G2(3).2","G23d2G1-p756B0",0,[1,2,13,14,15,18]); AGR.CHAR("G2(4)","G24G1-Zr350B0",0,6,"350a"); AGR.CHAR("G2(4)","G24G1-Zr65B0",0,2,"65a"); AGR.CHAR("G2(4)","G24G1-Zr78B0",0,3,"78a"); AGR.CHAR("G2(4)","G24G1-f13r65B0",13,2,"65a"); AGR.CHAR("G2(4)","G24G1-f13r78B0",13,3,"78a"); AGR.CHAR("G2(4)","G24G1-f2r196B0",2,11,"196a"); AGR.CHAR("G2(4)","G24G1-f2r36B0",2,6,"36a"); AGR.CHAR("G2(4)","G24G1-f3r286B0",3,4,"286a"); AGR.CHAR("G2(4)","G24G1-f3r64B0",3,2,"64a"); AGR.CHAR("G2(4)","G24G1-f3r78B0",3,3,"78a"); AGR.CHAR("G2(4)","G24G1-f4r14aB0",2,4,"14a"); AGR.CHAR("G2(4)","G24G1-f4r14bB0",2,5,"14b"); AGR.CHAR("G2(4)","G24G1-f4r384aB0",2,12,"384a"); AGR.CHAR("G2(4)","G24G1-f4r64aB0",2,7,"64a"); AGR.CHAR("G2(4)","G24G1-f4r64bB0",2,8,"64b"); AGR.CHAR("G2(4)","G24G1-f4r6aB0",2,2,"6a"); AGR.CHAR("G2(4)","G24G1-f4r6bB0",2,3,"6b"); AGR.CHAR("G2(4)","G24G1-f4r84aB0",2,10,"84b"); AGR.CHAR("G2(4)","G24G1-f4r84bB0",2,9,"84a"); AGR.CHAR("G2(4)","G24G1-f4r896aB0",2,14,"896a"); AGR.CHAR("G2(4)","G24G1-f5r350B0",5,6,"350a"); AGR.CHAR("G2(4)","G24G1-f5r363aB0",5,7,"363a"); AGR.CHAR("G2(4)","G24G1-f5r650B0",5,10,"650a"); AGR.CHAR("G2(4)","G24G1-f5r65B0",5,2,"65a"); AGR.CHAR("G2(4)","G24G1-f5r78B0",5,3,"78a"); AGR.CHAR("G2(4)","G24G1-f7r65B0",7,2,"65a"); AGR.CHAR("G2(4)","G24G1-f7r78B0",7,3,"78a"); AGR.CHAR("G2(4)","G24G1-p1365aB0",0,[1,6,7,10],"1a+350a+364a+650a"); AGR.CHAR("G2(4)","G24G1-p1365bB0",0,[1,6,8,10],"1a+350a+364b+650a"); AGR.CHAR("G2(4)","G24G1-p2016B0",0,[1,10,16],"1a+650a+1365a"); AGR.CHAR("G2(4)","G24G1-p20800B0",0,[1,2,[6,2],7,8,15,16,19,28,29,32],"1a+65a+350a^2+364ab+1300a+1365a+2925c+4096a+4160a+5460a"); AGR.CHAR("G2(4)","G24G1-p2080B0",0,[1,6,8,16],"1a+350a+364b+1365a"); AGR.CHAR("G2(4)","G24G1-p416B0",0,[1,2,6],"1a+65a+350a"); AGR.CHAR("G2(4).2","G24d2G1-f13r65B0",13,4); AGR.CHAR("G2(4).2","G24d2G1-f2r128B0",2,5); AGR.CHAR("G2(4).2","G24d2G1-f2r12B0",2,2); AGR.CHAR("G2(4).2","G24d2G1-f2r168B0",2,6); AGR.CHAR("G2(4).2","G24d2G1-f2r196B0",2,7); AGR.CHAR("G2(4).2","G24d2G1-f2r28B0",2,3); AGR.CHAR("G2(4).2","G24d2G1-f2r36B0",2,4); AGR.CHAR("G2(4).2","G24d2G1-f2r768B0",2,8); AGR.CHAR("G2(4).2","G24d2G1-f3r64B0",3,3); AGR.CHAR("G2(4).2","G24d2G1-f5r65B0",5,4); AGR.CHAR("HN","HNG1-f11r133aB0",11,2,"133a"); AGR.CHAR("HN","HNG1-f11r133bB0",11,3,"133b"); AGR.CHAR("HN","HNG1-f11r760B0",11,4,"760a"); AGR.CHAR("HN","HNG1-f19r133aB0",19,2,"133a"); AGR.CHAR("HN","HNG1-f19r133bB0",19,3,"133b"); AGR.CHAR("HN","HNG1-f19r760B0",19,4,"760a"); AGR.CHAR("HN","HNG1-f2r760B0",2,4,"760a"); AGR.CHAR("HN","HNG1-f3r760B0",3,4,"760a"); AGR.CHAR("HN","HNG1-f49r133aB0",7,2,"133a"); AGR.CHAR("HN","HNG1-f49r133bB0",7,3,"133b"); AGR.CHAR("HN","HNG1-f4r132aB0",2,2,"132a"); AGR.CHAR("HN","HNG1-f4r132bB0",2,3,"132b"); AGR.CHAR("HN","HNG1-f4r133B0",2,[1,2],"1a+132a"); AGR.CHAR("HN","HNG1-f4r2650aB0",2,6,"2650b"); AGR.CHAR("HN","HNG1-f5r133B0",5,2,"133a"); AGR.CHAR("HN","HNG1-f5r626B0",5,3,"626a"); AGR.CHAR("HN","HNG1-f5r627B0",5,[1,3],"1a+626a"); AGR.CHAR("HN","HNG1-f7r760B0",7,4,"760a"); AGR.CHAR("HN","HNG1-f9r133aB0",3,2,"133a"); AGR.CHAR("HN","HNG1-f9r133bB0",3,3,"133b"); AGR.CHAR("HN","HNG1-p1140000B0",0,[1,2,3,4,5,8,10,11,12,18,20,23],"1a+133ab+760a+3344a+8910a+16929a+35112ab+267520a+365750a+406296a"); AGR.CHAR("HS","HSG1-Zr154aB0",0,4,"154a"); AGR.CHAR("HS","HSG1-Zr154bB0",0,5,"154b"); AGR.CHAR("HS","HSG1-Zr154cB0",0,6,"154c"); AGR.CHAR("HS","HSG1-Zr175B0",0,7,"175a"); AGR.CHAR("HS","HSG1-Zr22B0",0,2,"22a"); AGR.CHAR("HS","HSG1-Zr231B0",0,8,"231a"); AGR.CHAR("HS","HSG1-Zr77B0",0,3,"77a"); AGR.CHAR("HS","HSG1-f11r154aB0",11,4,"154a"); AGR.CHAR("HS","HSG1-f11r154bB0",11,5,"154b"); AGR.CHAR("HS","HSG1-f11r154cB0",11,6,"154c"); AGR.CHAR("HS","HSG1-f11r174B0",11,7,"174a"); AGR.CHAR("HS","HSG1-f11r22B0",11,2,"22a"); AGR.CHAR("HS","HSG1-f11r231B0",11,8,"231a"); AGR.CHAR("HS","HSG1-f11r693B0",11,9,"693a"); AGR.CHAR("HS","HSG1-f11r770aB0",11,10,"770a"); AGR.CHAR("HS","HSG1-f11r77B0",11,3,"77a"); AGR.CHAR("HS","HSG1-f11r825B0",11,13,"825a"); AGR.CHAR("HS","HSG1-f11r854B0",11,14,"854a"); AGR.CHAR("HS","HSG1-f11r896B0",11,15,"896a"); AGR.CHAR("HS","HSG1-f121r770bB0",11,11,"770b"); AGR.CHAR("HS","HSG1-f121r770cB0",11,12,"770c"); AGR.CHAR("HS","HSG1-f2r1000B0",2,8,"1000a"); AGR.CHAR("HS","HSG1-f2r132B0",2,4,"132a"); AGR.CHAR("HS","HSG1-f2r20B0",2,2,"20a"); AGR.CHAR("HS","HSG1-f2r518B0",2,5,"518a"); AGR.CHAR("HS","HSG1-f2r56B0",2,3,"56a"); AGR.CHAR("HS","HSG1-f3r154aB0",3,6,"154a"); AGR.CHAR("HS","HSG1-f3r154bB0",3,7,"154b"); AGR.CHAR("HS","HSG1-f3r154cB0",3,8,"154c"); AGR.CHAR("HS","HSG1-f3r22B0",3,2,"22a"); AGR.CHAR("HS","HSG1-f3r231B0",3,9,"231a"); AGR.CHAR("HS","HSG1-f3r321B0",3,10,"321a"); AGR.CHAR("HS","HSG1-f3r49aB0",3,3,"49a"); AGR.CHAR("HS","HSG1-f3r49bB0",3,4,"49b"); AGR.CHAR("HS","HSG1-f3r693B0",3,11,"693a"); AGR.CHAR("HS","HSG1-f3r748B0",3,12,"748a"); AGR.CHAR("HS","HSG1-f3r770aB0",3,13,"770a"); AGR.CHAR("HS","HSG1-f3r77B0",3,5,"77a"); AGR.CHAR("HS","HSG1-f3r825B0",3,15,"825a"); AGR.CHAR("HS","HSG1-f49r896aB0",7,15,"896a"); AGR.CHAR("HS","HSG1-f49r896bB0",7,16,"896b"); AGR.CHAR("HS","HSG1-f4r896aB0",2,6,"896a"); AGR.CHAR("HS","HSG1-f4r896bB0",2,7,"896b"); AGR.CHAR("HS","HSG1-f5r133aB0",5,5,"133a"); AGR.CHAR("HS","HSG1-f5r133bB0",5,6,"133b"); AGR.CHAR("HS","HSG1-f5r175B0",5,7,"175a"); AGR.CHAR("HS","HSG1-f5r210B0",5,8,"210a"); AGR.CHAR("HS","HSG1-f5r21B0",5,2,"21a"); AGR.CHAR("HS","HSG1-f5r280aB0",5,9,"280a"); AGR.CHAR("HS","HSG1-f5r518B0",5,11,"518a"); AGR.CHAR("HS","HSG1-f5r55B0",5,3,"55a"); AGR.CHAR("HS","HSG1-f5r650B0",5,12,"650a"); AGR.CHAR("HS","HSG1-f5r98B0",5,4,"98a"); AGR.CHAR("HS","HSG1-f7r154aB0",7,4,"154a"); AGR.CHAR("HS","HSG1-f7r154bB0",7,5,"154b"); AGR.CHAR("HS","HSG1-f7r154cB0",7,6,"154c"); AGR.CHAR("HS","HSG1-f7r175B0",7,7,"175a"); AGR.CHAR("HS","HSG1-f7r22B0",7,2,"22a"); AGR.CHAR("HS","HSG1-f7r231B0",7,8,"231a"); AGR.CHAR("HS","HSG1-f7r605B0",7,9,"605a"); AGR.CHAR("HS","HSG1-f7r693B0",7,10,"693a"); AGR.CHAR("HS","HSG1-f7r770aB0",7,11,"770a"); AGR.CHAR("HS","HSG1-f7r770bB0",7,12,"770b"); AGR.CHAR("HS","HSG1-f7r770cB0",7,13,"770c"); AGR.CHAR("HS","HSG1-f7r77B0",7,3,"77a"); AGR.CHAR("HS","HSG1-f7r803B0",7,14,"803a"); AGR.CHAR("HS","HSG1-p100B0",0,[1,2,3],"1a+22a+77a"); AGR.CHAR("HS","HSG1-p1100aB0",0,[1,2,3,7,13],"1a+22a+77a+175a+825a"); AGR.CHAR("HS","HSG1-p1100bB0",0,[1,3,4,7,9],"1a+77a+154a+175a+693a"); AGR.CHAR("HS","HSG1-p15400B0",0,[1,3,4,[7,3],[9,2],13,14,15,16,17,18,19,[22,2]],"1a+77a+154a+175a^3+693a^2+825a+896ab+1056a+1386a+1408a+1750a+2520a^2"); AGR.CHAR("HS","HSG1-p176bB0",0,[1,7],"1a+175a"); AGR.CHAR("HS","HSG1-p3850B0",0,[1,2,[3,2],4,7,9,10,13,16],"1a+22a+77a^2+154a+175a+693a+770a+825a+1056a"); AGR.CHAR("HS","HSG1-p4125B0",0,[1,2,3,4,7,9,10,13,18],"1a+22a+77a+154a+175a+693a+770a+825a+1408a"); AGR.CHAR("HS","HSG1-p5600aB0",0,[1,2,3,5,7,10,13,16,22],"1a+22a+77a+154b+175a+770a+825a+1056a+2520a"); AGR.CHAR("He","HeG1-Zr102B0",0,[2,3],"51ab"); AGR.CHAR("He","HeG1-f17r102B0",17,[2,3],"51ab"); AGR.CHAR("He","HeG1-f17r306B0",17,[4,5],"153ab"); AGR.CHAR("He","HeG1-f17r680B0",17,6,"680a"); AGR.CHAR("He","HeG1-f2r680B0",2,8,"680a"); AGR.CHAR("He","HeG1-f3r679B0",3,6,"679a"); AGR.CHAR("He","HeG1-f5r680B0",5,7,"680a"); AGR.CHAR("He","HeG1-f7r153B0",7,3,"153a"); AGR.CHAR("He","HeG1-f7r426B0",7,4,"426a"); AGR.CHAR("He","HeG1-f7r50B0",7,2,"50a"); AGR.CHAR("He","HeG1-f7r798B0",7,5,"798a"); AGR.CHAR("He","HeG1-p2058B0",0,[1,2,3,6,9],"1a+51ab+680a+1275a"); AGR.CHAR("He","HeG1-p244800B0",0,[1,4,5,12,13,14,[15,2],16,[19,2],[22,2],23,24,[26,2],[27,2],[28,2],29,30,31],"1a+153ab+1920a+4080a+4352a+6272a^2+6528a+7650a^2+10880a^2+11475ab+13720a^2+14400a^2+17493a^2+20825a+21504ab"); AGR.CHAR("He","HeG1-p29155B0",0,[1,2,3,6,[9,2],12,14,19,25],"1a+51ab+680a+1275a^2+1920a+4352a+7650a+11900a"); AGR.CHAR("He","HeG1-p8330B0",0,[1,2,3,6,9,12,14],"1a+51ab+680a+1275a+1920a+4352a"); AGR.CHAR("J1","J1G1-Zr112B0",0,[2,3],"56ab"); AGR.CHAR("J1","J1G1-Zr133aB0",0,12,"133a"); AGR.CHAR("J1","J1G1-Zr154aB0",0,[7,8],"77bc"); AGR.CHAR("J1","J1G1-Zr209B0",0,15,"209a"); AGR.CHAR("J1","J1G1-Zr266B0",0,[13,14],"133bc"); AGR.CHAR("J1","J1G1-Zr360B0",0,[9,10,11],"120abc"); AGR.CHAR("J1","J1G1-Zr76aB0",0,4,"76a"); AGR.CHAR("J1","J1G1-Zr76bB0",0,5,"76b"); AGR.CHAR("J1","J1G1-Zr77aB0",0,6,"77a"); AGR.CHAR("J1","J1G1-f11r106B0",11,12,"106a"); AGR.CHAR("J1","J1G1-f11r119B0",11,13,"119a"); AGR.CHAR("J1","J1G1-f11r14B0",11,3,"14a"); AGR.CHAR("J1","J1G1-f11r209B0",11,14,"209a"); AGR.CHAR("J1","J1G1-f11r27B0",11,4,"27a"); AGR.CHAR("J1","J1G1-f11r49B0",11,5,"49a"); AGR.CHAR("J1","J1G1-f11r56B0",11,6,"56a"); AGR.CHAR("J1","J1G1-f11r64B0",11,7,"64a"); AGR.CHAR("J1","J1G1-f11r69B0",11,8,"69a"); AGR.CHAR("J1","J1G1-f11r77aB0",11,9,"77a"); AGR.CHAR("J1","J1G1-f11r77bB0",11,10,"77b"); AGR.CHAR("J1","J1G1-f11r77cB0",11,11,"77c"); AGR.CHAR("J1","J1G1-f11r7B0",11,2,"7a"); AGR.CHAR("J1","J1G1-f125r120aB0",5,6,"120a"); AGR.CHAR("J1","J1G1-f125r120bB0",5,7,"120b"); AGR.CHAR("J1","J1G1-f125r120cB0",5,8,"120c"); AGR.CHAR("J1","J1G1-f19r133aB0",19,9,"133a"); AGR.CHAR("J1","J1G1-f19r133bB0",19,10,"133b"); AGR.CHAR("J1","J1G1-f19r133cB0",19,11,"133c"); AGR.CHAR("J1","J1G1-f19r209B0",19,12,"209a"); AGR.CHAR("J1","J1G1-f19r22B0",19,2,"22a"); AGR.CHAR("J1","J1G1-f19r34B0",19,3,"34a"); AGR.CHAR("J1","J1G1-f19r43B0",19,4,"43a"); AGR.CHAR("J1","J1G1-f19r55B0",19,5,"55a"); AGR.CHAR("J1","J1G1-f19r76aB0",19,6,"76a"); AGR.CHAR("J1","J1G1-f19r76bB0",19,7,"76b"); AGR.CHAR("J1","J1G1-f19r77B0",19,8,"77a"); AGR.CHAR("J1","J1G1-f27r120aB0",3,8,"120a"); AGR.CHAR("J1","J1G1-f27r120bB0",3,9,"120b"); AGR.CHAR("J1","J1G1-f27r120cB0",3,10,"120c"); AGR.CHAR("J1","J1G1-f2r112aB0",2,[3,4],"56ab"); AGR.CHAR("J1","J1G1-f2r112bB0",2,[5,6],"56cd"); AGR.CHAR("J1","J1G1-f2r20B0",2,2,"20a"); AGR.CHAR("J1","J1G1-f2r360B0",2,[9,10,11],"120abc"); AGR.CHAR("J1","J1G1-f2r76aB0",2,7,"76a"); AGR.CHAR("J1","J1G1-f2r76bB0",2,8,"76b"); AGR.CHAR("J1","J1G1-f3r112B0",3,[2,3],"56ab"); AGR.CHAR("J1","J1G1-f3r133B0",3,11,"133a"); AGR.CHAR("J1","J1G1-f3r154B0",3,[6,7],"77ab"); AGR.CHAR("J1","J1G1-f3r360B0",3,[8,9,10],"120abc"); AGR.CHAR("J1","J1G1-f3r76aB0",3,4,"76a"); AGR.CHAR("J1","J1G1-f3r76bB0",3,5,"76b"); AGR.CHAR("J1","J1G1-f49r133bB0",7,13,"133b"); AGR.CHAR("J1","J1G1-f49r133cB0",7,14,"133c"); AGR.CHAR("J1","J1G1-f49r56aB0",7,4,"56a"); AGR.CHAR("J1","J1G1-f49r56bB0",7,5,"56b"); AGR.CHAR("J1","J1G1-f49r77bB0",7,8,"77b"); AGR.CHAR("J1","J1G1-f49r77cB0",7,9,"77c"); AGR.CHAR("J1","J1G1-f4r56aB0",2,3,"56a"); AGR.CHAR("J1","J1G1-f4r56bB0",2,4,"56b"); AGR.CHAR("J1","J1G1-f4r56cB0",2,5,"56c"); AGR.CHAR("J1","J1G1-f4r56dB0",2,6,"56d"); AGR.CHAR("J1","J1G1-f5r133B0",5,9,"133a"); AGR.CHAR("J1","J1G1-f5r360B0",5,[6,7,8],"120abc"); AGR.CHAR("J1","J1G1-f5r56B0",5,2,"56a"); AGR.CHAR("J1","J1G1-f5r76aB0",5,3,"76a"); AGR.CHAR("J1","J1G1-f5r76bB0",5,4,"76b"); AGR.CHAR("J1","J1G1-f5r77B0",5,5,"77a"); AGR.CHAR("J1","J1G1-f7r112B0",7,[4,5],"56ab"); AGR.CHAR("J1","J1G1-f7r120B0",7,11,"120a"); AGR.CHAR("J1","J1G1-f7r133aB0",7,12,"133a"); AGR.CHAR("J1","J1G1-f7r154B0",7,[8,9],"77bc"); AGR.CHAR("J1","J1G1-f7r266B0",7,[13,14],"133bc"); AGR.CHAR("J1","J1G1-f7r31B0",7,2,"31a"); AGR.CHAR("J1","J1G1-f7r45B0",7,3,"45a"); AGR.CHAR("J1","J1G1-f7r75B0",7,6,"75a"); AGR.CHAR("J1","J1G1-f7r77aB0",7,7,"77a"); AGR.CHAR("J1","J1G1-f7r89B0",7,10,"89a"); AGR.CHAR("J1","J1G1-f8r120aB0",2,9,"120a"); AGR.CHAR("J1","J1G1-f8r120bB0",2,10,"120b"); AGR.CHAR("J1","J1G1-f8r120cB0",2,11,"120c"); AGR.CHAR("J1","J1G1-f9r56aB0",3,2,"56a"); AGR.CHAR("J1","J1G1-f9r56bB0",3,3,"56b"); AGR.CHAR("J1","J1G1-f9r77aB0",3,6,"77a"); AGR.CHAR("J1","J1G1-f9r77bB0",3,7,"77b"); AGR.CHAR("J1","J1G1-p1045B0",0,[1,2,3,4,7,8,9,10,11,12,15],"1a+56ab+76a+77bc+120abc+133a+209a"); AGR.CHAR("J1","J1G1-p1463B0",0,[1,2,3,[4,2],[6,2],9,10,11,[12,2],[15,2]],"1a+56ab+76a^2+77a^2+120abc+133a^2+209a^2"); AGR.CHAR("J1","J1G1-p1540B0",0,[1,2,3,[4,2],6,7,8,9,10,11,[12,2],[15,2]],"1a+56ab+76a^2+77abc+120abc+133a^2+209a^2"); AGR.CHAR("J1","J1G1-p1596B0",0,[1,2,3,4,5,[6,2],9,10,11,12,13,14,[15,2]],"1a+56ab+76ab+77a^2+120abc+133abc+209a^2"); AGR.CHAR("J1","J1G1-p266B0",0,[1,2,3,4,6],"1a+56ab+76a+77a"); AGR.CHAR("J1","J1G1-p2926B0",0,[1,2,3,[4,3],[6,3],[9,2],[10,2],[11,2],[12,4],13,14,[15,4]],"1a+56ab+76a^3+77a^3+120a^2b^2c^2+133a^4bc+209a^4"); AGR.CHAR("J1","J1G1-p4180B0",0,[1,[2,2],[3,2],[4,3],5,[6,2],[7,2],[8,2],[9,3],[10,3],[11,3],[12,4],[13,2],[14,2],[15,5]],"1a+56a^2b^2+76a^3b+77a^2b^2c^2+120a^3b^3c^3+133a^4b^2c^2+209a^5"); AGR.CHAR("J2","J2G1-Ar14aB0",0,2,"14a"); AGR.CHAR("J2","J2G1-Ar14bB0",0,3,"14b"); AGR.CHAR("J2","J2G1-Ar21aB0",0,4,"21a"); AGR.CHAR("J2","J2G1-Ar21bB0",0,5,"21b"); AGR.CHAR("J2","J2G1-Zr126B0",0,11,"126a"); AGR.CHAR("J2","J2G1-Zr140B0",0,[8,9],"70ab"); AGR.CHAR("J2","J2G1-Zr160B0",0,12,"160a"); AGR.CHAR("J2","J2G1-Zr175B0",0,13,"175a"); AGR.CHAR("J2","J2G1-Zr225B0",0,18,"225a"); AGR.CHAR("J2","J2G1-Zr28B0",0,[2,3],"14ab"); AGR.CHAR("J2","J2G1-Zr36B0",0,6,"36a"); AGR.CHAR("J2","J2G1-Zr378B0",0,[14,15],"189ab"); AGR.CHAR("J2","J2G1-Zr42B0",0,[4,5],"21ab"); AGR.CHAR("J2","J2G1-Zr448B0",0,[16,17],"224ab"); AGR.CHAR("J2","J2G1-Zr63B0",0,7,"63a"); AGR.CHAR("J2","J2G1-Zr90B0",0,10,"90a"); AGR.CHAR("J2","J2G1-f2r160B0",2,10,"160a"); AGR.CHAR("J2","J2G1-f2r36B0",2,6,"36a"); AGR.CHAR("J2","J2G1-f2r84B0",2,9,"84a"); AGR.CHAR("J2","J2G1-f3r133B0",3,11,"133a"); AGR.CHAR("J2","J2G1-f3r225B0",3,14,"225a"); AGR.CHAR("J2","J2G1-f3r36B0",3,6,"36a"); AGR.CHAR("J2","J2G1-f3r63B0",3,9,"63a"); AGR.CHAR("J2","J2G1-f3r90B0",3,10,"90a"); AGR.CHAR("J2","J2G1-f49r14aB0",7,2,"14a"); AGR.CHAR("J2","J2G1-f49r189aB0",7,15,"189a"); AGR.CHAR("J2","J2G1-f49r21aB0",7,4,"21a"); AGR.CHAR("J2","J2G1-f49r224bB0",7,19,"224b"); AGR.CHAR("J2","J2G1-f49r70aB0",7,8,"70a"); AGR.CHAR("J2","J2G1-f4r14aB0",2,4,"14a"); AGR.CHAR("J2","J2G1-f4r64aB0",2,7,"64a"); AGR.CHAR("J2","J2G1-f4r6aB0",2,2,"6a"); AGR.CHAR("J2","J2G1-f5r14B0",5,2,"14a"); AGR.CHAR("J2","J2G1-f5r175B0",5,8,"175a"); AGR.CHAR("J2","J2G1-f5r189B0",5,9,"189a"); AGR.CHAR("J2","J2G1-f5r21B0",5,3,"21a"); AGR.CHAR("J2","J2G1-f5r225B0",5,10,"225a"); AGR.CHAR("J2","J2G1-f5r300B0",5,11,"300a"); AGR.CHAR("J2","J2G1-f5r41B0",5,4,"41a"); AGR.CHAR("J2","J2G1-f5r70B0",5,5,"70a"); AGR.CHAR("J2","J2G1-f5r85B0",5,6,"85a"); AGR.CHAR("J2","J2G1-f5r90B0",5,7,"90a"); AGR.CHAR("J2","J2G1-f7r101B0",7,11,"101a"); AGR.CHAR("J2","J2G1-f7r124B0",7,12,"124a"); AGR.CHAR("J2","J2G1-f7r126B0",7,13,"126a"); AGR.CHAR("J2","J2G1-f7r175B0",7,14,"175a"); AGR.CHAR("J2","J2G1-f7r199B0",7,17,"199a"); AGR.CHAR("J2","J2G1-f7r336B0",7,20,"336a"); AGR.CHAR("J2","J2G1-f7r36B0",7,6,"36a"); AGR.CHAR("J2","J2G1-f7r63B0",7,7,"63a"); AGR.CHAR("J2","J2G1-f7r89B0",7,10,"89a"); AGR.CHAR("J2","J2G1-f9r13aB0",3,2,"13a"); AGR.CHAR("J2","J2G1-f9r189aB0",3,12,"189a"); AGR.CHAR("J2","J2G1-f9r21aB0",3,4,"21a"); AGR.CHAR("J2","J2G1-f9r57aB0",3,7,"57a"); AGR.CHAR("J2","J2G1-p1008B0",0,[1,2,3,[10,2],11,12,18,19],"1a+14ab+90a^2+126a+160a+225a+288a"); AGR.CHAR("J2","J2G1-p100B0",0,[1,6,7],"1a+36a+63a"); AGR.CHAR("J2","J2G1-p1800B0",0,[1,6,[7,2],10,[11,2],12,13,19,[21,2]],"1a+36a+63a^2+90a+126a^2+160a+175a+288a+336a^2"); AGR.CHAR("J2","J2G1-p280B0",0,[1,7,10,11],"1a+63a+90a+126a"); AGR.CHAR("J2","J2G1-p315B0",0,[1,2,3,6,10,12],"1a+14ab+36a+90a+160a"); AGR.CHAR("J2","J2G1-p525B0",0,[1,6,7,10,12,13],"1a+36a+63a+90a+160a+175a"); AGR.CHAR("J2","J2G1-p840B0",0,[1,7,10,11,12,13,18],"1a+63a+90a+126a+160a+175a+225a"); AGR.CHAR("J2.2","J2d2G1-f2r128B0",2,5); AGR.CHAR("J2.2","J2d2G1-f2r12B0",2,2); AGR.CHAR("J2.2","J2d2G1-f2r160B0",2,7); AGR.CHAR("J2.2","J2d2G1-f2r28B0",2,3); AGR.CHAR("J2.2","J2d2G1-f2r36B0",2,4); AGR.CHAR("J2.2","J2d2G1-f2r84B0",2,6); AGR.CHAR("J2.2","J2d2G1-f3r114B0",3,7); AGR.CHAR("J2.2","J2d2G1-f3r133aB0",3,12); AGR.CHAR("J2.2","J2d2G1-f3r225aB0",3,15); AGR.CHAR("J2.2","J2d2G1-f3r26B0",3,3); AGR.CHAR("J2.2","J2d2G1-f3r36aB0",3,5); AGR.CHAR("J2.2","J2d2G1-f3r378B0",3,14); AGR.CHAR("J2.2","J2d2G1-f3r42B0",3,4); AGR.CHAR("J2.2","J2d2G1-f3r63aB0",3,8); AGR.CHAR("J2.2","J2d2G1-f3r90aB0",3,10); AGR.CHAR("J2.2","J2d2G1-f49r336aB0",7,24); AGR.CHAR("J2.2","J2d2G1-f5r14aB0",5,3); AGR.CHAR("J2.2","J2d2G1-f5r175aB0",5,15); AGR.CHAR("J2.2","J2d2G1-f5r189aB0",5,17); AGR.CHAR("J2.2","J2d2G1-f5r21aB0",5,5); AGR.CHAR("J2.2","J2d2G1-f5r225aB0",5,19); AGR.CHAR("J2.2","J2d2G1-f5r300aB0",5,21); AGR.CHAR("J2.2","J2d2G1-f5r41aB0",5,7); AGR.CHAR("J2.2","J2d2G1-f5r70aB0",5,9); AGR.CHAR("J2.2","J2d2G1-f5r85aB0",5,11); AGR.CHAR("J2.2","J2d2G1-f5r90aB0",5,13); AGR.CHAR("J2.2","J2d2G1-f7r101aB0",7,12); AGR.CHAR("J2.2","J2d2G1-f7r124aB0",7,14); AGR.CHAR("J2.2","J2d2G1-f7r126aB0",7,16); AGR.CHAR("J2.2","J2d2G1-f7r140aB0",7,9); AGR.CHAR("J2.2","J2d2G1-f7r175aB0",7,18); AGR.CHAR("J2.2","J2d2G1-f7r199aB0",7,21); AGR.CHAR("J2.2","J2d2G1-f7r28B0",7,3); AGR.CHAR("J2.2","J2d2G1-f7r28aB0",7,3); AGR.CHAR("J2.2","J2d2G1-f7r36aB0",7,5); AGR.CHAR("J2.2","J2d2G1-f7r378aB0",7,20); AGR.CHAR("J2.2","J2d2G1-f7r42aB0",7,4); AGR.CHAR("J2.2","J2d2G1-f7r448aB0",7,23); AGR.CHAR("J2.2","J2d2G1-f7r63aB0",7,7); AGR.CHAR("J2.2","J2d2G1-f7r89aB0",7,10); AGR.CHAR("J2.2","J2d2G1-p100B0",0,[1,5,7]); AGR.CHAR("J3","J3G1-Zr170B0",0,[2,3],"85ab"); AGR.CHAR("J3","J3G1-f17r1292B0",17,[8,9],"646ab"); AGR.CHAR("J3","J3G1-f17r324B0",17,6,"324a"); AGR.CHAR("J3","J3G1-f17r379B0",17,7,"379a"); AGR.CHAR("J3","J3G1-f17r646cB0",17,[4,5],"323ab"); AGR.CHAR("J3","J3G1-f17r761B0",17,10,"761a"); AGR.CHAR("J3","J3G1-f17r816B0",17,11,"816a"); AGR.CHAR("J3","J3G1-f17r836B0",17,12,"836a"); AGR.CHAR("J3","J3G1-f17r85bB0",17,3,"85b"); AGR.CHAR("J3","J3G1-f19r1001B0",19,11,"1001a"); AGR.CHAR("J3","J3G1-f19r323aB0",19,5,"323a"); AGR.CHAR("J3","J3G1-f19r646aB0",19,7,"646a"); AGR.CHAR("J3","J3G1-f19r85B0",19,2,"85a"); AGR.CHAR("J3","J3G1-f19r919B0",19,10,"919a"); AGR.CHAR("J3","J3G1-f2r244B0",2,7,"244a"); AGR.CHAR("J3","J3G1-f2r248B0",2,[4,5,6],"80a+84ab"); AGR.CHAR("J3","J3G1-f2r80B0",2,4,"80a"); AGR.CHAR("J3","J3G1-f2r966B0",2,10,"966a"); AGR.CHAR("J3","J3G1-f3r324B0",3,8,"324a"); AGR.CHAR("J3","J3G1-f3r934B0",3,9,"934a"); AGR.CHAR("J3","J3G1-f4r322aB0",2,8,"322a"); AGR.CHAR("J3","J3G1-f4r78bB0",2,3,"78b"); AGR.CHAR("J3","J3G1-f4r84aB0",2,5,"84a"); AGR.CHAR("J3","J3G1-f5r323B0",5,4,"323a"); AGR.CHAR("J3","J3G1-f5r646B0",5,5,"646a"); AGR.CHAR("J3","J3G1-f5r816B0",5,6,"816a"); AGR.CHAR("J3","J3G1-f5r85aB0",5,2,"85a"); AGR.CHAR("J3","J3G1-f9r153bB0",3,7,"153b"); AGR.CHAR("J3","J3G1-f9r18bB0",3,3,"18b"); AGR.CHAR("J3","J3G1-f9r84bB0",3,5,"84b"); AGR.CHAR("J3","J3G1-p14688aB0",0,[1,2,3,[10,2],11,12,13,14,15,16,19],"1a+85ab+1140a^2+1215ab+1615a+1920abc+2432a"); AGR.CHAR("J3","J3G1-p14688bB0",0,[1,2,3,[10,2],11,12,13,14,15,16,19],"1a+85ab+1140a^2+1215ab+1615a+1920abc+2432a"); AGR.CHAR("J3","J3G1-p17442B0",0,[1,4,5,6,[9,2],[10,2],11,12,13,14,15,16,20],"1a+323ab+324a+816a^2+1140a^2+1215ab+1615a+1920abc+2754a"); AGR.CHAR("J3","J3G1-p20520B0",0,[1,2,3,6,[10,2],[11,2],[12,2],13,14,15,16,19,21],"1a+85ab+324a+1140a^2+1215a^2b^2+1615a+1920abc+2432a+3078a"); AGR.CHAR("J3","J3G1-p23256B0",0,[1,4,5,6,[10,3],[11,2],[12,2],13,14,15,16,17,18,20],"1a+323ab+324a+1140a^3+1215a^2b^2+1615a+1920abc+1938ab+2754a"); AGR.CHAR("J3","J3G1-p25840B0",0,[1,6,10,[11,2],[12,2],13,14,15,16,17,18,19,20,21],"1a+324a+1140a+1215a^2b^2+1615a+1920abc+1938ab+2432a+2754a+3078a"); AGR.CHAR("J3","J3G1-p26163B0",0,[1,4,5,6,[10,2],[11,2],[12,2],[13,2],14,15,16,17,18,19,20],"1a+323ab+324a+1140a^2+1215a^2b^2+1615a^2+1920abc+1938ab+2432a+2754a"); AGR.CHAR("J3","J3G1-p43605B0",0,[1,4,5,[6,2],[9,2],[10,3],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],17,18,19,[20,3],21],"1a+323ab+324a^2+816a^2+1140a^3+1215a^2b^2+1615a^2+1920a^2b^2c^2+1938ab+2432a+2754a^3+3078a"); AGR.CHAR("J3","J3G1-p6156B0",0,[1,4,5,6,10,11,12,13],"1a+323ab+324a+1140a+1215ab+1615a"); AGR.CHAR("J3.2","J3d2G1-f17r170aB0",17,3); AGR.CHAR("J3.2","J3d2G1-f17r324aB0",17,5); AGR.CHAR("J3.2","J3d2G1-f17r379aB0",17,7); AGR.CHAR("J3.2","J3d2G1-f17r646aB0",17,4); AGR.CHAR("J3.2","J3d2G1-f17r836aB0",17,14); AGR.CHAR("J3.2","J3d2G1-f19r1001aB0",19,15); AGR.CHAR("J3.2","J3d2G1-f19r110aB0",19,5); AGR.CHAR("J3.2","J3d2G1-f19r1214aB0",19,19); AGR.CHAR("J3.2","J3d2G1-f19r214aB0",19,7); AGR.CHAR("J3.2","J3d2G1-f19r214bB0",19,8); AGR.CHAR("J3.2","J3d2G1-f19r646aB0",19,9); AGR.CHAR("J3.2","J3d2G1-f19r706aB0",19,11); AGR.CHAR("J3.2","J3d2G1-f19r85aB0",19,3); AGR.CHAR("J3.2","J3d2G1-f19r919aB0",19,13); AGR.CHAR("J3.2","J3d2G1-f2r168aB0",2,4); AGR.CHAR("J3.2","J3d2G1-f2r644aB0",2,6); AGR.CHAR("J3.2","J3d2G1-f3r168aB0",3,4); AGR.CHAR("J3.2","J3d2G1-f3r306aB0",3,5); AGR.CHAR("J3.2","J3d2G1-f3r324aB0",3,6); AGR.CHAR("J3.2","J3d2G1-f3r36B0",3,3); AGR.CHAR("J3.2","J3d2G1-f3r36aB0",3,3); AGR.CHAR("J3.2","J3d2G1-f3r934aB0",3,8); AGR.CHAR("J3.2","J3d2G1-f5r170aB0",5,3); AGR.CHAR("J3.2","J3d2G1-f5r323bB0",5,5); AGR.CHAR("J3.2","J3d2G1-f5r646aB0",5,6); AGR.CHAR("J3.2","J3d2G1-f5r816aB0",5,8); AGR.CHAR("J3.2","J3d2G1-p6156B0",0,[1,4,6,10,13,15,16]); AGR.CHAR("L2(11)","L211G1-Ar12aB0",0,7,"12a"); AGR.CHAR("L2(11)","L211G1-Ar12bB0",0,8,"12b"); AGR.CHAR("L2(11)","L211G1-Ar5aB0",0,2,"5a"); AGR.CHAR("L2(11)","L211G1-Ar5bB0",0,3,"5b"); AGR.CHAR("L2(11)","L211G1-Zr10aB0",0,4,"10a"); AGR.CHAR("L2(11)","L211G1-Zr10bB0",0,5,"10b"); AGR.CHAR("L2(11)","L211G1-Zr10cB0",0,[2,3],"5ab"); AGR.CHAR("L2(11)","L211G1-Zr11B0",0,6,"11a"); AGR.CHAR("L2(11)","L211G1-f11r11B0",11,6,"11a"); AGR.CHAR("L2(11)","L211G1-f11r3B0",11,2,"3a"); AGR.CHAR("L2(11)","L211G1-f11r5B0",11,3,"5a"); AGR.CHAR("L2(11)","L211G1-f11r7B0",11,4,"7a"); AGR.CHAR("L2(11)","L211G1-f11r9B0",11,5,"9a"); AGR.CHAR("L2(11)","L211G1-f2r10B0",2,4,"10a"); AGR.CHAR("L2(11)","L211G1-f2r10bB0",2,[2,3],"5ab"); AGR.CHAR("L2(11)","L211G1-f2r24B0",2,[5,6],"12ab"); AGR.CHAR("L2(11)","L211G1-f3r10B0",3,4,"10a"); AGR.CHAR("L2(11)","L211G1-f3r24B0",3,[5,6],"12ab"); AGR.CHAR("L2(11)","L211G1-f3r5aB0",3,2,"5a"); AGR.CHAR("L2(11)","L211G1-f3r5bB0",3,3,"5b"); AGR.CHAR("L2(11)","L211G1-f4r12aB0",2,5,"12a"); AGR.CHAR("L2(11)","L211G1-f4r12bB0",2,6,"12b"); AGR.CHAR("L2(11)","L211G1-f4r5aB0",2,2,"5a"); AGR.CHAR("L2(11)","L211G1-f4r5bB0",2,3,"5b"); AGR.CHAR("L2(11)","L211G1-f5r10aB0",5,4,"10a"); AGR.CHAR("L2(11)","L211G1-f5r10bB0",5,5,"10b"); AGR.CHAR("L2(11)","L211G1-f5r11B0",5,6,"11a"); AGR.CHAR("L2(11)","L211G1-f5r5aB0",5,2,"5a"); AGR.CHAR("L2(11)","L211G1-f5r5bB0",5,3,"5b"); AGR.CHAR("L2(11)","L211G1-f9r12aB0",3,5,"12a"); AGR.CHAR("L2(11)","L211G1-f9r12bB0",3,6,"12b"); AGR.CHAR("L2(11)","L211G1-p11aB0",0,[1,5],"1a+10b"); AGR.CHAR("L2(11)","L211G1-p11bB0",0,[1,5],"1a+10b"); AGR.CHAR("L2(11)","L211G1-p12B0",0,[1,6],"1a+11a"); AGR.CHAR("L2(11)","L211G1-p55B0",0,[1,2,3,[5,2],7,8],"1a+5ab+10b^2+12ab"); AGR.CHAR("L2(11).2","L211d2G1-f11r11B0",11,11); AGR.CHAR("L2(11).2","L211d2G1-f11r3B0",11,3); AGR.CHAR("L2(11).2","L211d2G1-f11r5B0",11,5); AGR.CHAR("L2(11).2","L211d2G1-f11r7B0",11,7); AGR.CHAR("L2(11).2","L211d2G1-f11r9B0",11,9); AGR.CHAR("L2(11).2","L211d2G1-f2r10aB0",2,2); AGR.CHAR("L2(11).2","L211d2G1-f2r10bB0",2,3); AGR.CHAR("L2(11).2","L211d2G1-f4r12aB0",2,4); AGR.CHAR("L2(11).2","L211d2G1-f4r12bB0",2,5); AGR.CHAR("L2(11).2","L211d2G1-p12B0",0,[1,8]); AGR.CHAR("L2(11).2","L211d2G1-p22B0",0,[1,2,6,7]); AGR.CHAR("L2(11).2","L211d2G1-p55aB0",0,[1,4,6,7,10,12]); AGR.CHAR("L2(11).2","L211d2G1-p55bB0",0,[1,3,6,7,10,12]); AGR.CHAR("L2(11).2","L211d2G1-p66B0",0,[1,3,6,7,8,10,12]); AGR.CHAR("L2(13)","L213G1-Ar12aB0",0,4,"12a"); AGR.CHAR("L2(13)","L213G1-Ar12bB0",0,5,"12b"); AGR.CHAR("L2(13)","L213G1-Ar12cB0",0,6,"12c"); AGR.CHAR("L2(13)","L213G1-Zr13B0",0,7,"13a"); AGR.CHAR("L2(13)","L213G1-Zr14aB0",0,8,"14a"); AGR.CHAR("L2(13)","L213G1-Zr14bB0",0,9,"14b"); AGR.CHAR("L2(13)","L213G1-Zr14cB0",0,[2,3],"7ab"); AGR.CHAR("L2(13)","L213G1-Zr36B0",0,[4,5,6],"12abc"); AGR.CHAR("L2(13)","L213G1-f13r11B0",13,6,"11a"); AGR.CHAR("L2(13)","L213G1-f13r13B0",13,7,"13a"); AGR.CHAR("L2(13)","L213G1-f13r3B0",13,2,"3a"); AGR.CHAR("L2(13)","L213G1-f13r5B0",13,3,"5a"); AGR.CHAR("L2(13)","L213G1-f13r7B0",13,4,"7a"); AGR.CHAR("L2(13)","L213G1-f13r9B0",13,5,"9a"); AGR.CHAR("L2(13)","L213G1-f2r14B0",2,7,"14a"); AGR.CHAR("L2(13)","L213G1-f3r13B0",3,7,"13a"); AGR.CHAR("L2(13)","L213G1-f4r6aB0",2,3,"6b"); AGR.CHAR("L2(13)","L213G1-f4r6bB0",2,2,"6a"); AGR.CHAR("L2(13)","L213G1-f7r12B0",7,4,"12a"); AGR.CHAR("L2(13)","L213G1-f8r12aB0",2,4,"12a"); AGR.CHAR("L2(13)","L213G1-f8r12bB0",2,5,"12b"); AGR.CHAR("L2(13)","L213G1-f8r12cB0",2,6,"12c"); AGR.CHAR("L2(13)","L213G1-p14B0",0,[1,7],"1a+13a"); AGR.CHAR("L2(13).2","L213d2G1-f13r3aB0",13,3); AGR.CHAR("L2(13).2","L213d2G1-f2r12aB0",2,2); AGR.CHAR("L2(13).2","L213d2G1-f2r14B0",2,6); AGR.CHAR("L2(13).2","L213d2G1-p14B0",0,[1,11]); AGR.CHAR("L2(13).2","L213d2G1-p78B0",0,[1,4,6,8,10,12,13]); AGR.CHAR("L2(13).2","L213d2G1-p91aB0",0,[1,4,6,8,10,11,12,13]); AGR.CHAR("L2(16)","L216G1-Zr120B0",0,[2,3,4,5,6,7,8,9],"15abcdefgh"); AGR.CHAR("L2(16)","L216G1-Zr16B0",0,10,"16a"); AGR.CHAR("L2(16)","L216G1-Zr17aB0",0,11,"17a"); AGR.CHAR("L2(16)","L216G1-Zr34B0",0,[12,13],"17bc"); AGR.CHAR("L2(16)","L216G1-Zr68B0",0,[14,15,16,17],"17defg"); AGR.CHAR("L2(16)","L216G1-f16r2aB0",2,2,"2a"); AGR.CHAR("L2(16)","L216G1-f17r15B0",17,2,"15a"); AGR.CHAR("L2(16)","L216G1-f17r17B0",17,3,"17a"); AGR.CHAR("L2(16)","L216G1-f17r34B0",17,[4,5],"17bc"); AGR.CHAR("L2(16)","L216G1-f17r68B0",17,[6,7,8,9],"17defg"); AGR.CHAR("L2(16)","L216G1-f3r16B0",3,10,"16a"); AGR.CHAR("L2(16)","L216G1-f5r16B0",5,10,"16a"); AGR.CHAR("L2(16)","L216G1-f9r17aB0",3,11,"17a"); AGR.CHAR("L2(16)","L216G1-f9r17bB0",3,12,"17b"); AGR.CHAR("L2(16)","L216G1-p17B0",0,[1,10],"1a+16a"); AGR.CHAR("L2(16).2","L216d2G1-f4r4aB0",2,2); AGR.CHAR("L2(16).4","L216d4G1-f17r15aB0",17,5); AGR.CHAR("L2(16).4","L216d4G1-f17r17aB0",17,9); AGR.CHAR("L2(16).4","L216d4G1-f17r34aB0",17,13); AGR.CHAR("L2(16).4","L216d4G1-f17r68B0",17,15); AGR.CHAR("L2(16).4","L216d4G1-f25r60aB0",5,5); AGR.CHAR("L2(16).4","L216d4G1-f25r60bB0",5,6); AGR.CHAR("L2(16).4","L216d4G1-f2r16aB0",2,4); AGR.CHAR("L2(16).4","L216d4G1-f2r16bB0",2,6); AGR.CHAR("L2(16).4","L216d4G1-f2r32B0",2,5); AGR.CHAR("L2(16).4","L216d4G1-f2r8aB0",2,2); AGR.CHAR("L2(16).4","L216d4G1-f2r8bB0",2,3); AGR.CHAR("L2(16).4","L216d4G1-f3r16aB0",3,7); AGR.CHAR("L2(16).4","L216d4G1-f5r16aB0",5,7); AGR.CHAR("L2(16).4","L216d4G1-f5r17aB0",5,11); AGR.CHAR("L2(16).4","L216d4G1-f9r60aB0",3,5); AGR.CHAR("L2(16).4","L216d4G1-f9r60bB0",3,6); AGR.CHAR("L2(17)","L217G1-Ar9aB0",0,2,"9a"); AGR.CHAR("L2(17)","L217G1-Ar9bB0",0,3,"9b"); AGR.CHAR("L2(17)","L217G1-Zr16aB0",0,4,"16a"); AGR.CHAR("L2(17)","L217G1-Zr17B0",0,8,"17a"); AGR.CHAR("L2(17)","L217G1-Zr18aB0",0,9,"18a"); AGR.CHAR("L2(17)","L217G1-Zr18dB0",0,[2,3],"9ab"); AGR.CHAR("L2(17)","L217G1-Zr48B0",0,[5,6,7],"16bcd"); AGR.CHAR("L2(17)","L217G1-f17r11B0",17,6,"11a"); AGR.CHAR("L2(17)","L217G1-f17r13B0",17,7,"13a"); AGR.CHAR("L2(17)","L217G1-f17r15B0",17,8,"15a"); AGR.CHAR("L2(17)","L217G1-f17r17B0",17,9,"17a"); AGR.CHAR("L2(17)","L217G1-f17r3B0",17,2,"3a"); AGR.CHAR("L2(17)","L217G1-f17r5B0",17,3,"5a"); AGR.CHAR("L2(17)","L217G1-f17r7B0",17,4,"7a"); AGR.CHAR("L2(17)","L217G1-f17r9B0",17,5,"9a"); AGR.CHAR("L2(17)","L217G1-f2r16aB0",2,4,"16a"); AGR.CHAR("L2(17)","L217G1-f2r48B0",2,[5,6,7],"16bcd"); AGR.CHAR("L2(17)","L217G1-f2r8aB0",2,2,"8a"); AGR.CHAR("L2(17)","L217G1-f2r8bB0",2,3,"8b"); AGR.CHAR("L2(17)","L217G1-f3r16B0",3,4,"16a"); AGR.CHAR("L2(17)","L217G1-f3r18aB0",3,5,"18a"); AGR.CHAR("L2(17)","L217G1-f8r16bB0",2,5,"16b"); AGR.CHAR("L2(17)","L217G1-f8r16cB0",2,6,"16c"); AGR.CHAR("L2(17)","L217G1-f8r16dB0",2,7,"16d"); AGR.CHAR("L2(17)","L217G1-f9r18bB0",3,6,"18b"); AGR.CHAR("L2(17)","L217G1-f9r18cB0",3,7,"18c"); AGR.CHAR("L2(17)","L217G1-f9r9aB0",3,2,"9a"); AGR.CHAR("L2(17)","L217G1-f9r9bB0",3,3,"9b"); AGR.CHAR("L2(17)","L217G1-p18B0",0,[1,8],"1a+17a"); AGR.CHAR("L2(19)","L219G1-Zr18eB0",0,[2,3],"9ab"); AGR.CHAR("L2(19)","L219G1-Zr19B0",0,8,"19a"); AGR.CHAR("L2(19)","L219G1-Zr20aB0",0,9,"20a"); AGR.CHAR("L2(19)","L219G1-Zr36aB0",0,[4,5],"18ab"); AGR.CHAR("L2(19)","L219G1-f125r20bB0",5,6,"20b"); AGR.CHAR("L2(19)","L219G1-f125r20cB0",5,7,"20c"); AGR.CHAR("L2(19)","L219G1-f125r20dB0",5,8,"20d"); AGR.CHAR("L2(19)","L219G1-f19r11B0",19,6,"11a"); AGR.CHAR("L2(19)","L219G1-f19r13B0",19,7,"13a"); AGR.CHAR("L2(19)","L219G1-f19r15B0",19,8,"15a"); AGR.CHAR("L2(19)","L219G1-f19r17B0",19,9,"17a"); AGR.CHAR("L2(19)","L219G1-f19r19B0",19,10,"19a"); AGR.CHAR("L2(19)","L219G1-f19r3B0",19,2,"3a"); AGR.CHAR("L2(19)","L219G1-f19r5B0",19,3,"5a"); AGR.CHAR("L2(19)","L219G1-f19r7B0",19,4,"7a"); AGR.CHAR("L2(19)","L219G1-f19r9B0",19,5,"9a"); AGR.CHAR("L2(19)","L219G1-f2r20aB0",2,6,"20a"); AGR.CHAR("L2(19)","L219G1-f3r19B0",3,8,"19a"); AGR.CHAR("L2(19)","L219G1-f4r18aB0",2,4,"18a"); AGR.CHAR("L2(19)","L219G1-f4r18bB0",2,5,"18b"); AGR.CHAR("L2(19)","L219G1-f4r9aB0",2,2,"9a"); AGR.CHAR("L2(19)","L219G1-f4r9bB0",2,3,"9b"); AGR.CHAR("L2(19)","L219G1-f5r18B0",5,4,"18a"); AGR.CHAR("L2(19)","L219G1-f5r20aB0",5,5,"20a"); AGR.CHAR("L2(19)","L219G1-f5r9aB0",5,2,"9a"); AGR.CHAR("L2(19)","L219G1-f5r9bB0",5,3,"9b"); AGR.CHAR("L2(19)","L219G1-f8r20bB0",2,7,"20b"); AGR.CHAR("L2(19)","L219G1-f8r20cB0",2,8,"20c"); AGR.CHAR("L2(19)","L219G1-f8r20dB0",2,9,"20d"); AGR.CHAR("L2(19)","L219G1-f9r18aB0",3,4,"18a"); AGR.CHAR("L2(19)","L219G1-f9r18bB0",3,5,"18b"); AGR.CHAR("L2(19)","L219G1-f9r18cB0",3,6,"18c"); AGR.CHAR("L2(19)","L219G1-f9r18dB0",3,7,"18d"); AGR.CHAR("L2(19)","L219G1-f9r9aB0",3,2,"9a"); AGR.CHAR("L2(19)","L219G1-f9r9bB0",3,3,"9b"); AGR.CHAR("L2(19)","L219G1-p171B0",0,[1,2,3,[6,2],[7,2],9,10,11,12],"1a+9ab+18c^2d^2+20abcd"); AGR.CHAR("L2(19)","L219G1-p190B0",0,[1,2,3,[6,2],[7,2],8,9,10,11,12],"1a+9ab+18c^2d^2+19a+20abcd"); AGR.CHAR("L2(19)","L219G1-p20B0",0,[1,8],"1a+19a"); AGR.CHAR("L2(19)","L219G1-p57aB0",0,[1,6,7,9],"1a+18cd+20a"); AGR.CHAR("L2(19)","L219G1-p57bB0",0,[1,6,7,9],"1a+18cd+20a"); AGR.CHAR("L2(19).2","L219d2G1-f19r3B0",19,3); AGR.CHAR("L2(19).2","L219d2G1-p114B0",0,[1,2,8,9,10,11,14,15]); AGR.CHAR("L2(19).2","L219d2G1-p171B0",0,[1,3,8,9,10,11,14,16,18,20]); AGR.CHAR("L2(19).2","L219d2G1-p190B0",0,[1,3,8,9,10,11,12,14,16,18,20]); AGR.CHAR("L2(19).2","L219d2G1-p20B0",0,[1,12]); AGR.CHAR("L2(19).2","L219d2G1-p285B0",0,[1,3,4,6,8,9,10,11,12,13,[14,2],15,16,18,20]); AGR.CHAR("L2(23)","L223G1-Ar24aB0",0,10,"24a"); AGR.CHAR("L2(23)","L223G1-Ar24bB0",0,11,"24b"); AGR.CHAR("L2(23)","L223G1-Ar24cB0",0,12,"24c"); AGR.CHAR("L2(23)","L223G1-Ar24dB0",0,13,"24d"); AGR.CHAR("L2(23)","L223G1-Ar24eB0",0,14,"24e"); AGR.CHAR("L2(23)","L223G1-Zr22aB0",0,4,"22a"); AGR.CHAR("L2(23)","L223G1-Zr22bB0",0,5,"22b"); AGR.CHAR("L2(23)","L223G1-Zr22cB0",0,6,"22c"); AGR.CHAR("L2(23)","L223G1-Zr23B0",0,9,"23a"); AGR.CHAR("L2(23)","L223G1-f11r23B0",11,9,"23a"); AGR.CHAR("L2(23)","L223G1-f23r11B0",23,6,"11a"); AGR.CHAR("L2(23)","L223G1-f23r13B0",23,7,"13a"); AGR.CHAR("L2(23)","L223G1-f23r15B0",23,8,"15a"); AGR.CHAR("L2(23)","L223G1-f23r17B0",23,9,"17a"); AGR.CHAR("L2(23)","L223G1-f23r19B0",23,10,"19a"); AGR.CHAR("L2(23)","L223G1-f23r21B0",23,11,"21a"); AGR.CHAR("L2(23)","L223G1-f23r23B0",23,12,"23a"); AGR.CHAR("L2(23)","L223G1-f23r3B0",23,2,"3a"); AGR.CHAR("L2(23)","L223G1-f23r5B0",23,3,"5a"); AGR.CHAR("L2(23)","L223G1-f23r7B0",23,4,"7a"); AGR.CHAR("L2(23)","L223G1-f23r9B0",23,5,"9a"); AGR.CHAR("L2(23)","L223G1-f2r11aB0",2,2,"11a"); AGR.CHAR("L2(23)","L223G1-f2r11bB0",2,3,"11b"); AGR.CHAR("L2(23)","L223G1-f2r22B0",2,4,"22a"); AGR.CHAR("L2(23)","L223G1-f32r24aB0",2,5,"24a"); AGR.CHAR("L2(23)","L223G1-f32r24bB0",2,6,"24b"); AGR.CHAR("L2(23)","L223G1-f32r24cB0",2,7,"24c"); AGR.CHAR("L2(23)","L223G1-f32r24dB0",2,8,"24d"); AGR.CHAR("L2(23)","L223G1-f32r24eB0",2,9,"24e"); AGR.CHAR("L2(23)","L223G1-f3r22aB0",3,4,"22a"); AGR.CHAR("L2(23)","L223G1-p24B0",0,[1,9],"1a+23a"); AGR.CHAR("L2(23).2","L223d2G1-f23r3aB0",23,3); AGR.CHAR("L2(23).2","L223d2G1-f2r22aB0",2,2); AGR.CHAR("L2(27)","L227G1-Ar13aB0",0,2,"13a"); AGR.CHAR("L2(27)","L227G1-Ar13bB0",0,3,"13b"); AGR.CHAR("L2(27)","L227G1-Ar28aB0",0,11,"28a"); AGR.CHAR("L2(27)","L227G1-Ar28bB0",0,12,"28b"); AGR.CHAR("L2(27)","L227G1-Ar28cB0",0,13,"28c"); AGR.CHAR("L2(27)","L227G1-Ar28dB0",0,14,"28d"); AGR.CHAR("L2(27)","L227G1-Ar28eB0",0,15,"28e"); AGR.CHAR("L2(27)","L227G1-Ar28fB0",0,16,"28f"); AGR.CHAR("L2(27)","L227G1-Zr26gB0",0,[2,3],"13ab"); AGR.CHAR("L2(27)","L227G1-Zr27B0",0,10,"27a"); AGR.CHAR("L2(27)","L227G1-Zr78aB0",0,[4,5,6],"26abc"); AGR.CHAR("L2(27)","L227G1-f13r27B0",13,10,"27a"); AGR.CHAR("L2(27)","L227G1-f27r3aB0",3,2,"3a"); AGR.CHAR("L2(27)","L227G1-f3r27B0",3,14,"27a"); AGR.CHAR("L2(27)","L227G1-f4r13aB0",2,2,"13a"); AGR.CHAR("L2(27)","L227G1-f4r13bB0",2,3,"13b"); AGR.CHAR("L2(27)","L227G1-f7r26B0",7,4,"26a"); AGR.CHAR("L2(27)","L227G1-p28B0",0,[1,10],"1a+27a"); AGR.CHAR("L2(29)","L229G1-Ar30aB0",0,12,"30a"); AGR.CHAR("L2(29)","L229G1-Ar30bB0",0,13,"30b"); AGR.CHAR("L2(29)","L229G1-Ar30cB0",0,14,"30c"); AGR.CHAR("L2(29)","L229G1-Ar30dB0",0,15,"30d"); AGR.CHAR("L2(29)","L229G1-Ar30eB0",0,16,"30e"); AGR.CHAR("L2(29)","L229G1-Ar30fB0",0,17,"30f"); AGR.CHAR("L2(29)","L229G1-Zr112B0",0,[7,8,9,10],"28defg"); AGR.CHAR("L2(29)","L229G1-Zr28aB0",0,4,"28a"); AGR.CHAR("L2(29)","L229G1-Zr29B0",0,11,"29a"); AGR.CHAR("L2(29)","L229G1-Zr30gB0",0,[2,3],"15ab"); AGR.CHAR("L2(29)","L229G1-Zr56B0",0,[5,6],"28bc"); AGR.CHAR("L2(29)","L229G1-f29r11B0",29,6,"11a"); AGR.CHAR("L2(29)","L229G1-f29r13B0",29,7,"13a"); AGR.CHAR("L2(29)","L229G1-f29r15B0",29,8,"15a"); AGR.CHAR("L2(29)","L229G1-f29r17B0",29,9,"17a"); AGR.CHAR("L2(29)","L229G1-f29r19B0",29,10,"19a"); AGR.CHAR("L2(29)","L229G1-f29r21B0",29,11,"21a"); AGR.CHAR("L2(29)","L229G1-f29r23B0",29,12,"23a"); AGR.CHAR("L2(29)","L229G1-f29r25B0",29,13,"25a"); AGR.CHAR("L2(29)","L229G1-f29r27B0",29,14,"27a"); AGR.CHAR("L2(29)","L229G1-f29r29B0",29,15,"29a"); AGR.CHAR("L2(29)","L229G1-f29r3B0",29,2,"3a"); AGR.CHAR("L2(29)","L229G1-f29r5B0",29,3,"5a"); AGR.CHAR("L2(29)","L229G1-f29r7B0",29,4,"7a"); AGR.CHAR("L2(29)","L229G1-f29r9B0",29,5,"9a"); AGR.CHAR("L2(29)","L229G1-f3r28aB0",3,4,"28a"); AGR.CHAR("L2(29)","L229G1-f4r14aB0",2,2,"14a"); AGR.CHAR("L2(29)","L229G1-f4r14bB0",2,3,"14b"); AGR.CHAR("L2(29)","L229G1-f5r28bB0",5,5,"28b"); AGR.CHAR("L2(29)","L229G1-f7r29B0",7,11,"29a"); AGR.CHAR("L2(29)","L229G1-p30B0",0,[1,11],"1a+29a"); AGR.CHAR("L2(31)","L231G1-Ar32aB0",0,16,"32e"); AGR.CHAR("L2(31)","L231G1-Ar32bB0",0,13,"32b"); AGR.CHAR("L2(31)","L231G1-Ar32cB0",0,14,"32c"); AGR.CHAR("L2(31)","L231G1-Ar32dB0",0,15,"32d"); AGR.CHAR("L2(31)","L231G1-Ar32eB0",0,16,"32e"); AGR.CHAR("L2(31)","L231G1-Ar32fB0",0,17,"32f"); AGR.CHAR("L2(31)","L231G1-Ar32gB0",0,18,"32g"); AGR.CHAR("L2(31)","L231G1-Zr120B0",0,[7,8,9,10],"30defg"); AGR.CHAR("L2(31)","L231G1-Zr30aB0",0,4,"30a"); AGR.CHAR("L2(31)","L231G1-Zr30hB0",0,[2,3],"15ab"); AGR.CHAR("L2(31)","L231G1-Zr31B0",0,11,"31a"); AGR.CHAR("L2(31)","L231G1-Zr32aB0",0,12,"32a"); AGR.CHAR("L2(31)","L231G1-Zr60B0",0,[5,6],"30bc"); AGR.CHAR("L2(31)","L231G1-f16r32dB0",2,7,"32d"); AGR.CHAR("L2(31)","L231G1-f16r32eB0",2,8,"32e"); AGR.CHAR("L2(31)","L231G1-f16r32fB0",2,9,"32f"); AGR.CHAR("L2(31)","L231G1-f16r32gB0",2,10,"32g"); AGR.CHAR("L2(31)","L231G1-f2r15aB0",2,2,"15a"); AGR.CHAR("L2(31)","L231G1-f2r15bB0",2,3,"15b"); AGR.CHAR("L2(31)","L231G1-f2r32B0",2,4,"32a"); AGR.CHAR("L2(31)","L231G1-f31r31B0",31,16,"31a"); AGR.CHAR("L2(31)","L231G1-f31r3B0",31,2,"3a"); AGR.CHAR("L2(31)","L231G1-f3r31B0",3,11,"31a"); AGR.CHAR("L2(31)","L231G1-f4r32bB0",2,5,"32b"); AGR.CHAR("L2(31)","L231G1-f4r32cB0",2,6,"32c"); AGR.CHAR("L2(31)","L231G1-f5r31B0",5,11,"31a"); AGR.CHAR("L2(31)","L231G1-p32B0",0,[1,11],"1a+31a"); AGR.CHAR("L2(32)","L232G1-Ar33aB0",0,19,"33a"); AGR.CHAR("L2(32)","L232G1-Ar33bB0",0,20,"33b"); AGR.CHAR("L2(32)","L232G1-Ar33cB0",0,21,"33c"); AGR.CHAR("L2(32)","L232G1-Ar33dB0",0,22,"33d"); AGR.CHAR("L2(32)","L232G1-Ar33eB0",0,23,"33e"); AGR.CHAR("L2(32)","L232G1-Ar33fB0",0,24,"33f"); AGR.CHAR("L2(32)","L232G1-Ar33gB0",0,25,"33g"); AGR.CHAR("L2(32)","L232G1-Ar33hB0",0,26,"33h"); AGR.CHAR("L2(32)","L232G1-Ar33iB0",0,27,"33i"); AGR.CHAR("L2(32)","L232G1-Ar33jB0",0,28,"33j"); AGR.CHAR("L2(32)","L232G1-Ar33kB0",0,29,"33k"); AGR.CHAR("L2(32)","L232G1-Ar33lB0",0,30,"33l"); AGR.CHAR("L2(32)","L232G1-Ar33mB0",0,31,"33m"); AGR.CHAR("L2(32)","L232G1-Ar33nB0",0,32,"33n"); AGR.CHAR("L2(32)","L232G1-Ar33oB0",0,33,"33o"); AGR.CHAR("L2(32)","L232G1-Zr155B0",0,[3,4,5,6,7],"31bcdef"); AGR.CHAR("L2(32)","L232G1-Zr310B0",0,[8,9,10,11,12,13,14,15,16,17],"31ghijklmnop"); AGR.CHAR("L2(32)","L232G1-Zr31aB0",0,2,"31a"); AGR.CHAR("L2(32)","L232G1-Zr32B0",0,18,"32a"); AGR.CHAR("L2(32)","L232G1-f11r31bB0",11,3,"31b"); AGR.CHAR("L2(32)","L232G1-f31r32B0",31,18,"32a"); AGR.CHAR("L2(32)","L232G1-f32r2aB0",2,2,"2a"); AGR.CHAR("L2(32)","L232G1-f3r31aB0",3,2,"31a"); AGR.CHAR("L2(32)","L232G1-p33B0",0,[1,18],"1a+32a"); AGR.CHAR("L2(32)","L232G1-p496B0",0,[1,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"1a+33abcdefghijklmno"); AGR.CHAR("L2(32)","L232G1-p528B0",0,[1,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33],"1a+32a+33abcdefghijklmno"); AGR.CHAR("L2(32).5","L232d5G1-f2r10B0",2,6); AGR.CHAR("L2(32).5","L232d5G1-f2r20aB0",2,7); AGR.CHAR("L2(32).5","L232d5G1-f2r20bB0",2,8); AGR.CHAR("L2(32).5","L232d5G1-f2r32B0",2,12); AGR.CHAR("L2(32).5","L232d5G1-f2r40aB0",2,9); AGR.CHAR("L2(32).5","L232d5G1-f2r40bB0",2,10); AGR.CHAR("L2(32).5","L232d5G1-f2r80B0",2,11); AGR.CHAR("L2(32).5","L232d5G1-p33B0",0,[1,14]); AGR.CHAR("L2(32).5","L232d5G1-p496B0",0,[1,19,20,21]); AGR.CHAR("L2(32).5","L232d5G1-p528B0",0,[1,14,19,20,21]); AGR.CHAR("L2(8)","L28G1-Ar7bB0",0,3,"7b"); AGR.CHAR("L2(8)","L28G1-Ar7cB0",0,4,"7c"); AGR.CHAR("L2(8)","L28G1-Ar7dB0",0,5,"7d"); AGR.CHAR("L2(8)","L28G1-Ar9aB0",0,7,"9a"); AGR.CHAR("L2(8)","L28G1-Ar9bB0",0,8,"9b"); AGR.CHAR("L2(8)","L28G1-Ar9cB0",0,9,"9c"); AGR.CHAR("L2(8)","L28G1-Zr27B0",0,[7,8,9],"9abc"); AGR.CHAR("L2(8)","L28G1-Zr7aB0",0,2,"7a"); AGR.CHAR("L2(8)","L28G1-Zr8B0",0,6,"8a"); AGR.CHAR("L2(8)","L28G1-f27r9aB0",3,3,"9a"); AGR.CHAR("L2(8)","L28G1-f27r9bB0",3,4,"9b"); AGR.CHAR("L2(8)","L28G1-f27r9cB0",3,5,"9c"); AGR.CHAR("L2(8)","L28G1-f2r12B0",2,[5,6,7],"4abc"); AGR.CHAR("L2(8)","L28G1-f2r6B0",2,[2,3,4],"2abc"); AGR.CHAR("L2(8)","L28G1-f2r8B0",2,8,"8a"); AGR.CHAR("L2(8)","L28G1-f3r27B0",3,[3,4,5],"9abc"); AGR.CHAR("L2(8)","L28G1-f3r7B0",3,2,"7a"); AGR.CHAR("L2(8)","L28G1-f7r21B0",7,[3,4,5],"7bcd"); AGR.CHAR("L2(8)","L28G1-f7r7aB0",7,2,"7a"); AGR.CHAR("L2(8)","L28G1-f7r8B0",7,6,"8a"); AGR.CHAR("L2(8)","L28G1-f8r2aB0",2,2,"2a"); AGR.CHAR("L2(8)","L28G1-f8r2bB0",2,3,"2b"); AGR.CHAR("L2(8)","L28G1-f8r2cB0",2,4,"2c"); AGR.CHAR("L2(8)","L28G1-f8r4aB0",2,5,"4a"); AGR.CHAR("L2(8)","L28G1-f8r4bB0",2,6,"4b"); AGR.CHAR("L2(8)","L28G1-f8r4cB0",2,7,"4c"); AGR.CHAR("L2(8)","L28G1-p28B0",0,[1,7,8,9],"1a+9abc"); AGR.CHAR("L2(8)","L28G1-p36B0",0,[1,6,7,8,9],"1a+8a+9abc"); AGR.CHAR("L2(8)","L28G1-p9B0",0,[1,6],"1a+8a"); AGR.CHAR("L2(8).3","L28d3G1-Zr21B0",0,7); AGR.CHAR("L2(8).3","L28d3G1-Zr27B0",0,11); AGR.CHAR("L2(8).3","L28d3G1-Zr7B0",0,4); AGR.CHAR("L2(8).3","L28d3G1-Zr8B0",0,8); AGR.CHAR("L2(8).3","L28d3G1-f2r12B0",2,5); AGR.CHAR("L2(8).3","L28d3G1-f2r6B0",2,4); AGR.CHAR("L2(8).3","L28d3G1-f2r8B0",2,6); AGR.CHAR("L2(8).3","L28d3G1-f3r27B0",3,3); AGR.CHAR("L2(8).3","L28d3G1-f3r7B0",3,2); AGR.CHAR("L2(8).3","L28d3G1-f7r21B0",7,7); AGR.CHAR("L2(8).3","L28d3G1-f7r7B0",7,4); AGR.CHAR("L2(8).3","L28d3G1-f7r8B0",7,8); AGR.CHAR("L2(8).3","L28d3G1-p28B0",0,[1,11]); AGR.CHAR("L2(8).3","L28d3G1-p36B0",0,[1,8,11]); AGR.CHAR("L2(8).3","L28d3G1-p9B0",0,[1,8]); AGR.CHAR("L3(4).2_1","L34d2aG1-f2r16aB0",2,2); AGR.CHAR("L3(4).2_1","L34d2aG1-f2r18aB0",2,3); AGR.CHAR("L3(4).2_1","L34d2aG1-f2r64aB0",2,4); AGR.CHAR("L3(4).2_1","L34d2aG1-f3r126aB0",3,12); AGR.CHAR("L3(4).2_1","L34d2aG1-f3r15aB0",3,3); AGR.CHAR("L3(4).2_1","L34d2aG1-f3r15bB0",3,5); AGR.CHAR("L3(4).2_1","L34d2aG1-f3r15cB0",3,7); AGR.CHAR("L3(4).2_1","L34d2aG1-f3r19aB0",3,9); AGR.CHAR("L3(4).2_1","L34d2aG1-f3r90aB0",3,11); AGR.CHAR("L3(4).2_1","L34d2aG1-f5r20aB0",5,3); AGR.CHAR("L3(4).2_1","L34d2aG1-f5r35aB0",5,5); AGR.CHAR("L3(4).2_1","L34d2aG1-f5r35bB0",5,7); AGR.CHAR("L3(4).2_1","L34d2aG1-f5r35cB0",5,9); AGR.CHAR("L3(4).2_1","L34d2aG1-f5r63aB0",5,12); AGR.CHAR("L3(4).2_1","L34d2aG1-f5r90aB0",5,11); AGR.CHAR("L3(4).2_1","L34d2aG1-f7r126aB0",7,13); AGR.CHAR("L3(4).2_1","L34d2aG1-f7r19aB0",7,3); AGR.CHAR("L3(4).2_1","L34d2aG1-f7r35aB0",7,5); AGR.CHAR("L3(4).2_1","L34d2aG1-f7r35bB0",7,7); AGR.CHAR("L3(4).2_1","L34d2aG1-f7r35cB0",7,9); AGR.CHAR("L3(4).2_1","L34d2aG1-f7r45aB0",7,11); AGR.CHAR("L3(7)","L37G1-Zr152aB0",0,4,"152a"); AGR.CHAR("L3(7)","L37G1-Zr152bB0",0,5,"152b"); AGR.CHAR("L3(7)","L37G1-Zr152cB0",0,6,"152c"); AGR.CHAR("L3(7)","L37G1-Zr56B0",0,2,"56a"); AGR.CHAR("L3(7)","L37G1-Zr57B0",0,3,"57a"); AGR.CHAR("L3(7)","L37G1-f2r152aB0",2,3,"152a"); AGR.CHAR("L3(7)","L37G1-f3r342aB0",3,13,"342a"); AGR.CHAR("L3(7)","L37G1-f3r399B0",3,20,"399a"); AGR.CHAR("L3(7)","L37G1-f3r55B0",3,2,"55a"); AGR.CHAR("L3(7)","L37G1-f3r57B0",3,3,"57a"); AGR.CHAR("L3(7)","L37G1-f3r96aB0",3,4,"96a"); AGR.CHAR("L3(7)","L37G1-f3r96bB0",3,5,"96b"); AGR.CHAR("L3(7)","L37G1-f3r96cB0",3,6,"96c"); AGR.CHAR("L3(7)","L37G1-f7r10aB0",7,3,"10a"); AGR.CHAR("L3(7)","L37G1-f7r10bB0",7,4,"10b"); AGR.CHAR("L3(7)","L37G1-f7r27B0",7,5,"27a"); AGR.CHAR("L3(7)","L37G1-f7r8B0",7,2,"8a"); AGR.CHAR("L3(7)","L37G1-p57B0",0,[1,2],"1a+56a"); AGR.CHAR("L3(7).2","L37d2G1-f2r152B0",2,3); AGR.CHAR("L3(7).2","L37d2G1-f2r342B0",2,8); AGR.CHAR("L3(7).2","L37d2G1-f2r56B0",2,2); AGR.CHAR("L3(7).2","L37d2G1-f3r192B0",3,9); AGR.CHAR("L3(7).2","L37d2G1-f3r399B0",3,21); AGR.CHAR("L3(7).2","L37d2G1-f3r55B0",3,3); AGR.CHAR("L3(7).2","L37d2G1-f3r57B0",3,5); AGR.CHAR("L3(7).2","L37d2G1-f3r96B0",3,7); AGR.CHAR("L3(7).2","L37d2G1-f7r343B0",7,18); AGR.CHAR("L3(7).2","L37d2G1-f7r56B0",7,8); AGR.CHAR("L3(8)","L38G1-Zr72B0",0,2,"72a"); AGR.CHAR("L3(8)","L38G1-f2r27B0",2,35,"27a"); AGR.CHAR("L3(8)","L38G1-f2r512B0",2,64,"512a"); AGR.CHAR("L3(8)","L38G1-f343r511B0",7,28,"511b"); AGR.CHAR("L3(8)","L38G1-f3r511B0",3,33,"511a"); AGR.CHAR("L3(8)","L38G1-f3r72B0",3,2,"72a"); AGR.CHAR("L3(8)","L38G1-f73r441B0",73,9,"441a"); AGR.CHAR("L3(8)","L38G1-f73r511aB0",73,10,"511a"); AGR.CHAR("L3(8)","L38G1-f73r511bB0",73,11,"511b"); AGR.CHAR("L3(8)","L38G1-f73r71B0",73,2,"71a"); AGR.CHAR("L3(8)","L38G1-f7r511B0",7,27,"511a"); AGR.CHAR("L3(8)","L38G1-f7r512B0",7,31,"512a"); AGR.CHAR("L3(8)","L38G1-f7r72B0",7,2,"72a"); AGR.CHAR("L3(8)","L38G1-p56064B0",0,[1,[2,2],3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,[34,2],[35,2],[36,2],37,38,39,40,41,42,[43,2],[44,2],[45,2],[46,2],[47,2],[48,2],[49,2],[50,2],[51,2],[52,2],[53,2],[54,2],[55,2],[56,2],[57,2],[58,2],[59,2],[60,2],[61,2],[62,2],[63,2],[64,2],[65,2],[66,2],[67,2],[68,3],[69,3],[70,4],[71,4],[72,4]],"1a+72a^2+73abcdef+441abcdefghijklmnopqrstuvwx+511ab^2c^2d^2efghijk^2l^2m^2n^2o^2p^2q^2r^2s^2t^2u^2v^2w^2x^2y^2z^2(a')^2(b')^2+512a^2+584a^2b^2c^2d^2e^2f^2+657a^3b^3c^4d^4e^4"); AGR.CHAR("L3(8)","L38G1-p73aB0",0,[1,2],"1a+72a"); AGR.CHAR("L3(8)","L38G1-p73bB0",0,[1,2],"1a+72a"); AGR.CHAR("L3(8)","L38G1-p75264B0",0,[1,3,4,5,6,7,8,[9,2],[10,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[25,2],[26,2],[27,2],[28,2],[29,2],[30,2],[31,2],[32,2],33,[34,3],[35,3],[36,3],37,38,39,40,41,42,[43,3],[44,3],[45,3],[46,3],[47,3],[48,3],[49,3],[50,3],[51,3],[52,3],[53,3],[54,3],[55,3],[56,3],[57,3],[58,3],[59,3],[60,3],[61,2],[62,2],[63,2],[64,2],[65,2],[66,2],[67,2],[68,3],[69,3],[70,3],[71,3],[72,3]],"1a+73abcdef+441a^2b^2c^2d^2e^2f^2g^2h^2i^2j^2k^2l^2m^2n^2o^2p^2q^2r^2s^2t^2u^2v^2w^2x^2+511ab^3c^3d^3efghijk^3l^3m^3n^3o^3p^3q^3r^3s^3t^3u^3v^3w^3x^3y^3z^3(a')^3(b')^3+512a^2+584a^2b^2c^2d^2e^2f^2+657a^3b^3c^3d^3e^3"); AGR.CHAR("L3(8)","L38G1-p98112B0",0,[1,[2,2],[3,2],[4,2],[5,2],[6,2],[7,2],[8,2],[9,2],[10,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],[20,2],[21,2],[22,2],[23,2],[24,2],[25,2],[26,2],[27,2],[28,2],[29,2],[30,2],[31,2],[32,2],[33,2],[34,3],[35,3],[36,3],[37,2],[38,2],[39,2],[40,2],[41,2],[42,2],[43,3],[44,3],[45,3],[46,3],[47,3],[48,3],[49,3],[50,3],[51,3],[52,3],[53,3],[54,3],[55,3],[56,3],[57,3],[58,3],[59,3],[60,3],[61,3],[62,4],[63,4],[64,4],[65,4],[66,4],[67,4],[68,7],[69,7],[70,6],[71,6],[72,6]],"1a+72a^2+73a^2b^2c^2d^2e^2f^2+441a^2b^2c^2d^2e^2f^2g^2h^2i^2j^2k^2l^2m^2n^2o^2p^2q^2r^2s^2t^2u^2v^2w^2x^2+511a^2b^3c^3d^3e^2f^2g^2h^2i^2j^2k^3l^3m^3n^3o^3p^3q^3r^3s^3t^3u^3v^3w^3x^3y^3z^3(a')^3(b')^3+512a^3+584a^4b^4c^4d^4e^4f^4+657a^7b^7c^6d^6e^6"); AGR.CHAR("L3(8).2","L38d2G1-f2r54B0",2,20); AGR.CHAR("L3(8).2","L38d2G1-f3r511B0",3,20); AGR.CHAR("L3(8).2","L38d2G1-f73r511aB0",73,10); AGR.CHAR("L3(8).2","L38d2G1-f7r512B0",7,25); AGR.CHAR("L3(8).2","L38d2G1-p146B0",0,[1,2,3,4]); AGR.CHAR("L3(8).2","L38d2G1-p4672B0",0,[1,3,4,20,22,24,26,40,46,48,50]); AGR.CHAR("L3(8).2","L38d2G1-p56064B0",0,[1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,[22,2],[24,2],[26,2],28,29,30,[31,2],[32,2],[33,2],[34,2],[35,2],[36,2],[37,2],[38,2],[39,2],[40,2],[42,2],[43,2],[44,2],[45,3],[46,3],47,[48,3],49,[50,3],51]); AGR.CHAR("L3(8).2","L38d2G1-p657B0",0,[1,3,4,40]); AGR.CHAR("L3(8).2","L38d2G1-p75264B0",0,[1,5,6,7,[8,2],[9,2],[10,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],20,[22,3],[24,3],[26,3],28,29,30,[31,3],[32,3],[33,3],[34,3],[35,3],[36,3],[37,3],[38,3],[39,3],[40,2],[42,2],[43,2],[44,2],[45,3],[46,3],[48,3],[50,3]]); AGR.CHAR("L3(8).2","L38d2G1-p98112B0",0,[1,3,4,[5,2],[6,2],[7,2],[8,2],[9,2],[10,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],[17,2],[18,2],[19,2],20,21,[22,2],23,[24,2],25,[26,2],27,[28,2],[29,2],[30,2],[31,3],[32,3],[33,3],[34,3],[35,3],[36,3],[37,3],[38,3],[39,3],[40,2],41,[42,4],[43,4],[44,4],[45,7],[46,4],[47,2],[48,4],[49,2],[50,4],[51,2]]); AGR.CHAR("L3(8).3","L38d3G1-f2r192B0",2,23); AGR.CHAR("L3(8).3","L38d3G1-f2r216aB0",2,24); AGR.CHAR("L3(8).3","L38d3G1-f2r216bB0",2,26); AGR.CHAR("L3(8).3","L38d3G1-f2r24B0",2,6); AGR.CHAR("L3(8).3","L38d3G1-f2r27aB0",2,7); AGR.CHAR("L3(8).3","L38d3G1-f2r27bB0",2,10); AGR.CHAR("L3(8).3","L38d3G1-f2r27cB0",2,15); AGR.CHAR("L3(8).3","L38d3G1-f2r576B0",2,28); AGR.CHAR("L3(8).3","L38d3G1-f2r72aB0",2,11); AGR.CHAR("L3(8).3","L38d3G1-f2r72bB0",2,13); AGR.CHAR("L3(8).3","L38d3G1-f2r81B0",2,21); AGR.CHAR("L3(8).3","L38d3G1-f2r9B0",2,4); AGR.CHAR("L3(8).3","L38d3G1-f3r511B0",3,13); AGR.CHAR("L3(8).3","L38d3G1-f3r72B0",3,2); AGR.CHAR("L3(8).3","L38d3G1-f73r441B0",73,9); AGR.CHAR("L3(8).3","L38d3G1-f73r511aB0",73,12); AGR.CHAR("L3(8).3","L38d3G1-f73r71B0",73,4); AGR.CHAR("L3(8).3","L38d3G1-f7r511B0",7,15); AGR.CHAR("L3(8).3","L38d3G1-f7r512B0",7,19); AGR.CHAR("L3(8).3","L38d3G1-f7r72B0",7,4); AGR.CHAR("L3(8).3","L38d3G1-p219aB0",0,[1,2,3,4,5,6]); AGR.CHAR("L3(8).3","L38d3G1-p219bB0",0,[1,2,3,4,5,6]); AGR.CHAR("L3(8).3","L38d3G1-p56064B0",0,[1,[4,2],7,8,9,10,11,12,13,14,15,16,17,[20,2],21,22,[23,2],[24,2],[25,2],[26,2],[27,2],[28,2],[29,2],[32,2],[33,2],34,35,36,37,38,39,[40,4]]); AGR.CHAR("L3(8).3","L38d3G1-p73aB0",0,[1,4]); AGR.CHAR("L3(8).3","L38d3G1-p73bB0",0,[1,4]); AGR.CHAR("L3(8).3","L38d3G1-p75264B0",0,[1,7,8,[9,2],[10,2],[11,2],[12,2],[13,2],[14,2],[15,2],[16,2],17,[20,3],21,22,[23,3],[24,3],[25,3],[26,3],[27,3],[28,3],30,31,[32,2],[33,2],34,35,36,37,38,39,[40,3]]); AGR.CHAR("L3(8).3","L38d3G1-p98112B0",0,[1,2,3,[4,2],[5,2],[6,2],[7,6],[8,6],17,18,19,[20,3],[21,3],[22,3],[23,3],[24,3],[25,3],[26,3],[27,3],[28,3],29,30,31,[32,6],[33,6],[34,3],[35,3],[36,3],[37,3],[38,3],[39,3],[40,9]]); AGR.CHAR("L3(8).6","L38d6G1-f2r1152B0",2,17); AGR.CHAR("L3(8).6","L38d6G1-f2r144aB0",2,8); AGR.CHAR("L3(8).6","L38d6G1-f2r144bB0",2,9); AGR.CHAR("L3(8).6","L38d6G1-f2r162B0",2,13); AGR.CHAR("L3(8).6","L38d6G1-f2r18B0",2,4); AGR.CHAR("L3(8).6","L38d6G1-f2r192B0",2,14); AGR.CHAR("L3(8).6","L38d6G1-f2r24B0",2,5); AGR.CHAR("L3(8).6","L38d6G1-f2r432aB0",2,15); AGR.CHAR("L3(8).6","L38d6G1-f2r432bB0",2,16); AGR.CHAR("L3(8).6","L38d6G1-f2r512B0",2,18); AGR.CHAR("L3(8).6","L38d6G1-f2r54aB0",2,6); AGR.CHAR("L3(8).6","L38d6G1-f2r54bB0",2,7); AGR.CHAR("L3(8).6","L38d6G1-f3r511B0",3,10); AGR.CHAR("L3(8).6","L38d6G1-f73r511aB0",73,20); AGR.CHAR("L3(8).6","L38d6G1-f7r511B0",7,17); AGR.CHAR("L3(8).6","L38d6G1-f7r512B0",7,25); AGR.CHAR("L3(8).6","L38d6G1-p438B0",0,[1,2,3,4,5,6,7,8,9,10,11,12]); AGR.CHAR("L3(8).6","L38d6G1-p4672B0",0,[1,7,10,18,24,30,40]); AGR.CHAR("L3(8).6","L38d6G1-p56064B0",0,[1,7,10,13,14,15,16,17,18,[24,2],26,[27,2],[28,2],[29,2],[30,2],[36,2],37,38,39,[40,3],41]); AGR.CHAR("L3(8).6","L38d6G1-p657B0",0,[1,7,10,30]); AGR.CHAR("L3(8).6","L38d6G1-p75264B0",0,[1,13,[14,2],[15,2],[16,2],[17,2],18,[24,3],26,[27,3],[28,3],[29,3],32,34,[36,2],37,38,39,[40,3]]); AGR.CHAR("L3(8).6","L38d6G1-p98112B0",0,[1,7,10,[13,2],[14,2],[15,2],[16,2],[17,2],18,21,[24,2],25,[26,2],[27,3],[28,3],[29,3],[30,2],33,[36,4],[37,3],[38,2],[39,2],[40,4],[41,2]]); AGR.CHAR("L5(2)","L52G1-Zr124B0",0,3,"124a"); AGR.CHAR("L5(2)","L52G1-Zr155B0",0,4,"155a"); AGR.CHAR("L5(2)","L52G1-Zr217B0",0,5,"217a"); AGR.CHAR("L5(2)","L52G1-Zr30B0",0,2,"30a"); AGR.CHAR("L5(2)","L52G1-f2r10aB0",2,4,"10a"); AGR.CHAR("L5(2)","L52G1-f2r10bB0",2,5,"10b"); AGR.CHAR("L5(2)","L52G1-f2r24B0",2,6,"24a"); AGR.CHAR("L5(2)","L52G1-f2r5aB0",2,2,"5a"); AGR.CHAR("L5(2)","L52G1-f2r5bB0",2,3,"5b"); AGR.CHAR("L5(2)","L52G1-f31r251B0",31,6,"251a"); AGR.CHAR("L5(2)","L52G1-f31r29B0",31,2,"29a"); AGR.CHAR("L5(2)","L52G1-f3r124B0",3,3,"124a"); AGR.CHAR("L5(2)","L52G1-f3r155B0",3,4,"155a"); AGR.CHAR("L5(2)","L52G1-f3r30B0",3,2,"30a"); AGR.CHAR("L5(2)","L52G1-f5r123B0",5,3,"123a"); AGR.CHAR("L5(2)","L52G1-f5r155B0",5,4,"155a"); AGR.CHAR("L5(2)","L52G1-f5r280B0",5,6,"280a"); AGR.CHAR("L5(2)","L52G1-f5r30B0",5,2,"30a"); AGR.CHAR("L5(2)","L52G1-f7r280B0",7,6,"280a"); AGR.CHAR("L5(2)","L52G1-f7r30B0",7,2,"30a"); AGR.CHAR("L5(2)","L52G1-f7r94B0",7,3,"94a"); AGR.CHAR("L5(2)","L52G1-p155aB0",0,[1,2,3],"1a+30a+124a"); AGR.CHAR("L5(2)","L52G1-p31aB0",0,[1,2],"1a+30a"); AGR.CHAR("M11","M11G1-Ar10bB0",0,3,"10b"); AGR.CHAR("M11","M11G1-Ar10cB0",0,4,"10c"); AGR.CHAR("M11","M11G1-Zr10aB0",0,2,"10a"); AGR.CHAR("M11","M11G1-Zr11B0",0,5,"11a"); AGR.CHAR("M11","M11G1-Zr20B0",0,[3,4],"10bc"); AGR.CHAR("M11","M11G1-Zr32B0",0,[6,7],"16ab"); AGR.CHAR("M11","M11G1-Zr44B0",0,8,"44a"); AGR.CHAR("M11","M11G1-Zr45B0",0,9,"45a"); AGR.CHAR("M11","M11G1-Zr55B0",0,10,"55a"); AGR.CHAR("M11","M11G1-f11r10aB0",11,3,"10a"); AGR.CHAR("M11","M11G1-f11r10bB0",11,4,"10b"); AGR.CHAR("M11","M11G1-f11r11B0",11,5,"11a"); AGR.CHAR("M11","M11G1-f11r16B0",11,6,"16a"); AGR.CHAR("M11","M11G1-f11r44B0",11,7,"44a"); AGR.CHAR("M11","M11G1-f11r55B0",11,8,"55a"); AGR.CHAR("M11","M11G1-f11r9B0",11,2,"9a"); AGR.CHAR("M11","M11G1-f25r10bB0",5,3,"10b"); AGR.CHAR("M11","M11G1-f25r10cB0",5,4,"10c"); AGR.CHAR("M11","M11G1-f2r10B0",2,2,"10a"); AGR.CHAR("M11","M11G1-f2r32B0",2,[3,4],"16ab"); AGR.CHAR("M11","M11G1-f2r44B0",2,5,"44a"); AGR.CHAR("M11","M11G1-f3r10aB0",3,4,"10a"); AGR.CHAR("M11","M11G1-f3r10bB0",3,5,"10b"); AGR.CHAR("M11","M11G1-f3r10cB0",3,6,"10c"); AGR.CHAR("M11","M11G1-f3r24B0",3,7,"24a"); AGR.CHAR("M11","M11G1-f3r45B0",3,8,"45a"); AGR.CHAR("M11","M11G1-f3r5aB0",3,2,"5a"); AGR.CHAR("M11","M11G1-f3r5bB0",3,3,"5b"); AGR.CHAR("M11","M11G1-f4r16aB0",2,3,"16a"); AGR.CHAR("M11","M11G1-f4r16bB0",2,4,"16b"); AGR.CHAR("M11","M11G1-f5r10aB0",5,2,"10a"); AGR.CHAR("M11","M11G1-f5r11B0",5,5,"11a"); AGR.CHAR("M11","M11G1-f5r16aB0",5,6,"16a"); AGR.CHAR("M11","M11G1-f5r16bB0",5,7,"16b"); AGR.CHAR("M11","M11G1-f5r20B0",5,[3,4],"10bc"); AGR.CHAR("M11","M11G1-f5r45B0",5,8,"45a"); AGR.CHAR("M11","M11G1-f5r55B0",5,9,"55a"); AGR.CHAR("M11","M11G1-p11B0",0,[1,2],"1a+10a"); AGR.CHAR("M11","M11G1-p12B0",0,[1,5],"1a+11a"); AGR.CHAR("M11","M11G1-p165B0",0,[1,2,5,[8,2],10],"1a+10a+11a+44a^2+55a"); AGR.CHAR("M11","M11G1-p55B0",0,[1,2,8],"1a+10a+44a"); AGR.CHAR("M11","M11G1-p66B0",0,[1,2,5,8],"1a+10a+11a+44a"); AGR.CHAR("M12","M12G1-Zr11aB0",0,2,"11a"); AGR.CHAR("M12","M12G1-Zr11bB0",0,3,"11b"); AGR.CHAR("M12","M12G1-Zr120B0",0,13,"120a"); AGR.CHAR("M12","M12G1-Zr144B0",0,14,"144a"); AGR.CHAR("M12","M12G1-Zr176B0",0,15,"176a"); AGR.CHAR("M12","M12G1-Zr32B0",0,[4,5],"16ab"); AGR.CHAR("M12","M12G1-Zr45B0",0,6,"45a"); AGR.CHAR("M12","M12G1-Zr54B0",0,7,"54a"); AGR.CHAR("M12","M12G1-Zr55aB0",0,8,"55a"); AGR.CHAR("M12","M12G1-Zr55bB0",0,9,"55b"); AGR.CHAR("M12","M12G1-Zr55cB0",0,10,"55c"); AGR.CHAR("M12","M12G1-Zr66B0",0,11,"66a"); AGR.CHAR("M12","M12G1-Zr99B0",0,12,"99a"); AGR.CHAR("M12","M12G1-f11r11aB0",11,2,"11a"); AGR.CHAR("M12","M12G1-f11r16B0",11,4,"16a"); AGR.CHAR("M12","M12G1-f11r176B0",11,13,"176a"); AGR.CHAR("M12","M12G1-f11r29B0",11,5,"29a"); AGR.CHAR("M12","M12G1-f11r53B0",11,6,"53a"); AGR.CHAR("M12","M12G1-f11r55aB0",11,7,"55a"); AGR.CHAR("M12","M12G1-f11r55cB0",11,9,"55c"); AGR.CHAR("M12","M12G1-f11r66B0",11,10,"66a"); AGR.CHAR("M12","M12G1-f11r91B0",11,11,"91a"); AGR.CHAR("M12","M12G1-f11r99B0",11,12,"99a"); AGR.CHAR("M12","M12G1-f2r10B0",2,2,"10a"); AGR.CHAR("M12","M12G1-f2r144B0",2,6,"144a"); AGR.CHAR("M12","M12G1-f2r44B0",2,5,"44a"); AGR.CHAR("M12","M12G1-f3r10aB0",3,2,"10a"); AGR.CHAR("M12","M12G1-f3r15bB0",3,5,"15b"); AGR.CHAR("M12","M12G1-f3r34B0",3,6,"34a"); AGR.CHAR("M12","M12G1-f3r45aB0",3,7,"45a"); AGR.CHAR("M12","M12G1-f3r45bB0",3,8,"45b"); AGR.CHAR("M12","M12G1-f3r54B0",3,10,"54a"); AGR.CHAR("M12","M12G1-f3r99B0",3,11,"99a"); AGR.CHAR("M12","M12G1-f4r16aB0",2,3,"16a"); AGR.CHAR("M12","M12G1-f4r16bB0",2,4,"16b"); AGR.CHAR("M12","M12G1-f5r11aB0",5,2,"11a"); AGR.CHAR("M12","M12G1-f5r120B0",5,13,"120a"); AGR.CHAR("M12","M12G1-f5r16bB0",5,5,"16b"); AGR.CHAR("M12","M12G1-f5r45B0",5,6,"45a"); AGR.CHAR("M12","M12G1-f5r55aB0",5,7,"55a"); AGR.CHAR("M12","M12G1-f5r55cB0",5,9,"55c"); AGR.CHAR("M12","M12G1-f5r66B0",5,10,"66a"); AGR.CHAR("M12","M12G1-f5r78B0",5,11,"78a"); AGR.CHAR("M12","M12G1-f5r98B0",5,12,"98a"); AGR.CHAR("M12","M12G1-p12aB0",0,[1,2],"1a+11a"); AGR.CHAR("M12","M12G1-p12bB0",0,[1,3],"1a+11b"); AGR.CHAR("M12","M12G1-p66aB0",0,[1,2,7],"1a+11a+54a"); AGR.CHAR("M12","M12G1-p66bB0",0,[1,3,7],"1a+11b+54a"); AGR.CHAR("M12.2","M12d2G1-f11r110aB0",11,12); AGR.CHAR("M12.2","M12d2G1-f11r16aB0",11,4); AGR.CHAR("M12.2","M12d2G1-f11r176aB0",11,19); AGR.CHAR("M12.2","M12d2G1-f11r22aB0",11,3); AGR.CHAR("M12.2","M12d2G1-f11r29aB0",11,6); AGR.CHAR("M12.2","M12d2G1-f11r53aB0",11,8); AGR.CHAR("M12.2","M12d2G1-f11r55aB0",11,10); AGR.CHAR("M12.2","M12d2G1-f11r66aB0",11,13); AGR.CHAR("M12.2","M12d2G1-f11r91aB0",11,15); AGR.CHAR("M12.2","M12d2G1-f11r99aB0",11,17); AGR.CHAR("M12.2","M12d2G1-f25r120aB0",5,16); AGR.CHAR("M12.2","M12d2G1-f2r10B0",2,2); AGR.CHAR("M12.2","M12d2G1-f2r144B0",2,5); AGR.CHAR("M12.2","M12d2G1-f2r32B0",2,3); AGR.CHAR("M12.2","M12d2G1-f2r44B0",2,4); AGR.CHAR("M12.2","M12d2G1-f3r20aB0",3,3); AGR.CHAR("M12.2","M12d2G1-f3r30aB0",3,4); AGR.CHAR("M12.2","M12d2G1-f3r34aB0",3,5); AGR.CHAR("M12.2","M12d2G1-f3r45aB0",3,7); AGR.CHAR("M12.2","M12d2G1-f3r90aB0",3,9); AGR.CHAR("M12.2","M12d2G1-f3r99aB0",3,12); AGR.CHAR("M12.2","M12d2G1-f5r110aB0",5,9); AGR.CHAR("M12.2","M12d2G1-f5r22aB0",5,3); AGR.CHAR("M12.2","M12d2G1-f5r32aB0",5,4); AGR.CHAR("M12.2","M12d2G1-f5r45aB0",5,5); AGR.CHAR("M12.2","M12d2G1-f5r55aB0",5,7); AGR.CHAR("M12.2","M12d2G1-f5r66aB0",5,10); AGR.CHAR("M12.2","M12d2G1-f5r78aB0",5,12); AGR.CHAR("M12.2","M12d2G1-f5r98aB0",5,14); AGR.CHAR("M12.2","M12d2G1-f9r54aB0",3,10); AGR.CHAR("M12.2","M12d2G1-p24B0",0,[1,2,3]); AGR.CHAR("M22","M22G1-Zr154B0",0,7,"154a"); AGR.CHAR("M22","M22G1-Zr210B0",0,8,"210a"); AGR.CHAR("M22","M22G1-Zr21B0",0,2,"21a"); AGR.CHAR("M22","M22G1-Zr231B0",0,9,"231a"); AGR.CHAR("M22","M22G1-Zr55B0",0,5,"55a"); AGR.CHAR("M22","M22G1-Zr99B0",0,6,"99a"); AGR.CHAR("M22","M22G1-f11r154B0",11,7,"154a"); AGR.CHAR("M22","M22G1-f11r190B0",11,8,"190a"); AGR.CHAR("M22","M22G1-f11r20B0",11,2,"20a"); AGR.CHAR("M22","M22G1-f11r231B0",11,9,"231a"); AGR.CHAR("M22","M22G1-f11r385B0",11,10,"385a"); AGR.CHAR("M22","M22G1-f11r45aB0",11,3,"45a"); AGR.CHAR("M22","M22G1-f11r45bB0",11,4,"45b"); AGR.CHAR("M22","M22G1-f11r55B0",11,5,"55a"); AGR.CHAR("M22","M22G1-f11r99B0",11,6,"99a"); AGR.CHAR("M22","M22G1-f25r45aB0",5,3,"45a"); AGR.CHAR("M22","M22G1-f2r10aB0",2,2,"10a"); AGR.CHAR("M22","M22G1-f2r10bB0",2,3,"10b"); AGR.CHAR("M22","M22G1-f2r34B0",2,4,"34a"); AGR.CHAR("M22","M22G1-f2r98B0",2,7,"98a"); AGR.CHAR("M22","M22G1-f3r210B0",3,9,"210a"); AGR.CHAR("M22","M22G1-f3r21B0",3,2,"21a"); AGR.CHAR("M22","M22G1-f3r231B0",3,10,"231a"); AGR.CHAR("M22","M22G1-f3r49aB0",3,5,"49a"); AGR.CHAR("M22","M22G1-f3r49bB0",3,6,"49b"); AGR.CHAR("M22","M22G1-f3r55B0",3,7,"55a"); AGR.CHAR("M22","M22G1-f3r99B0",3,8,"99a"); AGR.CHAR("M22","M22G1-f49r280aB0",7,8,"280a"); AGR.CHAR("M22","M22G1-f49r280bB0",7,9,"280b"); AGR.CHAR("M22","M22G1-f4r70aB0",2,5,"70a"); AGR.CHAR("M22","M22G1-f4r70bB0",2,6,"70b"); AGR.CHAR("M22","M22G1-f5r133B0",5,7,"133a"); AGR.CHAR("M22","M22G1-f5r210B0",5,8,"210a"); AGR.CHAR("M22","M22G1-f5r21B0",5,2,"21a"); AGR.CHAR("M22","M22G1-f5r280aB0",5,9,"280a"); AGR.CHAR("M22","M22G1-f5r385B0",5,11,"385a"); AGR.CHAR("M22","M22G1-f5r55B0",5,5,"55a"); AGR.CHAR("M22","M22G1-f5r98B0",5,6,"98a"); AGR.CHAR("M22","M22G1-f7r154B0",7,5,"154a"); AGR.CHAR("M22","M22G1-f7r210B0",7,6,"210a"); AGR.CHAR("M22","M22G1-f7r21B0",7,2,"21a"); AGR.CHAR("M22","M22G1-f7r231B0",7,7,"231a"); AGR.CHAR("M22","M22G1-f7r385B0",7,10,"385a"); AGR.CHAR("M22","M22G1-f7r45B0",7,3,"45a"); AGR.CHAR("M22","M22G1-f7r54B0",7,4,"54a"); AGR.CHAR("M22","M22G1-f9r45aB0",3,3,"45a"); AGR.CHAR("M22","M22G1-p176aB0",0,[1,2,7],"1a+21a+154a"); AGR.CHAR("M22","M22G1-p176bB0",0,[1,2,7],"1a+21a+154a"); AGR.CHAR("M22","M22G1-p22B0",0,[1,2],"1a+21a"); AGR.CHAR("M22","M22G1-p231B0",0,[1,2,5,7],"1a+21a+55a+154a"); AGR.CHAR("M22","M22G1-p330B0",0,[1,2,5,6,7],"1a+21a+55a+99a+154a"); AGR.CHAR("M22","M22G1-p462aB0",0,[1,2,5,7,9],"1a+21a+55a+154a+231a"); AGR.CHAR("M22","M22G1-p462bB0",0,[1,[2,2],5,7,8],"1a+21a^2+55a+154a+210a"); AGR.CHAR("M22","M22G1-p462cB0",0,[1,[2,2],5,7,8],"1a+21a^2+55a+154a+210a"); AGR.CHAR("M22","M22G1-p616B0",0,[1,2,5,7,12],"1a+21a+55a+154a+385a"); AGR.CHAR("M22","M22G1-p672B0",0,[1,2,5,7,8,9],"1a+21a+55a+154a+210a+231a"); AGR.CHAR("M22","M22G1-p770B0",0,[1,2,[5,2],6,7,12],"1a+21a+55a^2+99a+154a+385a"); AGR.CHAR("M22","M22G1-p77B0",0,[1,2,5],"1a+21a+55a"); AGR.CHAR("M22.2","M22d2G1-f11r154aB0",11,13); AGR.CHAR("M22.2","M22d2G1-f11r190aB0",11,15); AGR.CHAR("M22.2","M22d2G1-f11r20aB0",11,3); AGR.CHAR("M22.2","M22d2G1-f11r231aB0",11,17); AGR.CHAR("M22.2","M22d2G1-f11r385aB0",11,19); AGR.CHAR("M22.2","M22d2G1-f11r45aB0",11,5); AGR.CHAR("M22.2","M22d2G1-f11r45bB0",11,7); AGR.CHAR("M22.2","M22d2G1-f11r55aB0",11,9); AGR.CHAR("M22.2","M22d2G1-f11r99aB0",11,11); AGR.CHAR("M22.2","M22d2G1-f25r45aB0",5,5); AGR.CHAR("M22.2","M22d2G1-f25r45bB0",5,7); AGR.CHAR("M22.2","M22d2G1-f2r10aB0",2,2); AGR.CHAR("M22.2","M22d2G1-f2r10bB0",2,3); AGR.CHAR("M22.2","M22d2G1-f2r140B0",2,5); AGR.CHAR("M22.2","M22d2G1-f2r34B0",2,4); AGR.CHAR("M22.2","M22d2G1-f2r98B0",2,6); AGR.CHAR("M22.2","M22d2G1-f3r210aB0",3,14); AGR.CHAR("M22.2","M22d2G1-f3r21aB0",3,3); AGR.CHAR("M22.2","M22d2G1-f3r231aB0",3,16); AGR.CHAR("M22.2","M22d2G1-f3r55aB0",3,10); AGR.CHAR("M22.2","M22d2G1-f3r98B0",3,9); AGR.CHAR("M22.2","M22d2G1-f3r99aB0",3,12); AGR.CHAR("M22.2","M22d2G1-f5r133aB0",5,13); AGR.CHAR("M22.2","M22d2G1-f5r210aB0",5,15); AGR.CHAR("M22.2","M22d2G1-f5r21aB0",5,3); AGR.CHAR("M22.2","M22d2G1-f5r385aB0",5,18); AGR.CHAR("M22.2","M22d2G1-f5r55aB0",5,9); AGR.CHAR("M22.2","M22d2G1-f5r560B0",5,17); AGR.CHAR("M22.2","M22d2G1-f5r98aB0",5,11); AGR.CHAR("M22.2","M22d2G1-f7r154aB0",7,9); AGR.CHAR("M22.2","M22d2G1-f7r210aB0",7,11); AGR.CHAR("M22.2","M22d2G1-f7r21aB0",7,3); AGR.CHAR("M22.2","M22d2G1-f7r231aB0",7,13); AGR.CHAR("M22.2","M22d2G1-f7r385aB0",7,16); AGR.CHAR("M22.2","M22d2G1-f7r45aB0",7,5); AGR.CHAR("M22.2","M22d2G1-f7r54aB0",7,7); AGR.CHAR("M22.2","M22d2G1-f7r560B0",7,15); AGR.CHAR("M22.2","M22d2G1-f9r45aB0",3,5); AGR.CHAR("M22.2","M22d2G1-f9r45bB0",3,7); AGR.CHAR("M22.2","M22d2G1-p22B0",0,[1,3]); AGR.CHAR("M22.2","M22d2G1-p231B0",0,[1,3,9,13]); AGR.CHAR("M22.2","M22d2G1-p330B0",0,[1,3,9,11,13]); AGR.CHAR("M22.2","M22d2G1-p352B0",0,[1,2,3,4,13,14]); AGR.CHAR("M22.2","M22d2G1-p616B0",0,[1,3,9,13,20]); AGR.CHAR("M22.2","M22d2G1-p672B0",0,[1,4,9,13,16,18]); AGR.CHAR("M22.2","M22d2G1-p77B0",0,[1,3,9]); AGR.CHAR("M23","M23G1-Zr22B0",0,2,"22a"); AGR.CHAR("M23","M23G1-Zr230B0",0,5,"230a"); AGR.CHAR("M23","M23G1-Zr231aB0",0,6,"231a"); AGR.CHAR("M23","M23G1-f11r229B0",11,5,"229a"); AGR.CHAR("M23","M23G1-f11r22B0",11,2,"22a"); AGR.CHAR("M23","M23G1-f11r231aB0",11,6,"231a"); AGR.CHAR("M23","M23G1-f11r253B0",11,9,"253a"); AGR.CHAR("M23","M23G1-f11r45bB0",11,4,"45b"); AGR.CHAR("M23","M23G1-f11r806B0",11,12,"806a"); AGR.CHAR("M23","M23G1-f11r990aB0",11,13,"990a"); AGR.CHAR("M23","M23G1-f121r231bB0",11,7,"231b"); AGR.CHAR("M23","M23G1-f121r231cB0",11,8,"231c"); AGR.CHAR("M23","M23G1-f121r770aB0",11,10,"770a"); AGR.CHAR("M23","M23G1-f121r770bB0",11,11,"770b"); AGR.CHAR("M23","M23G1-f23r210B0",23,5,"210a"); AGR.CHAR("M23","M23G1-f23r21B0",23,2,"21a"); AGR.CHAR("M23","M23G1-f23r230B0",23,6,"230a"); AGR.CHAR("M23","M23G1-f23r231aB0",23,7,"231a"); AGR.CHAR("M23","M23G1-f23r253B0",23,9,"253a"); AGR.CHAR("M23","M23G1-f23r280B0",23,10,"280a"); AGR.CHAR("M23","M23G1-f23r45bB0",23,4,"45b"); AGR.CHAR("M23","M23G1-f23r665bB0",23,13,"665b"); AGR.CHAR("M23","M23G1-f25r45aB0",5,4,"45b"); AGR.CHAR("M23","M23G1-f25r770B0",5,8,"770a"); AGR.CHAR("M23","M23G1-f25r990aB0",5,13,"990b"); AGR.CHAR("M23","M23G1-f2r11aB0",2,2,"11a"); AGR.CHAR("M23","M23G1-f2r11bB0",2,3,"11b"); AGR.CHAR("M23","M23G1-f2r120B0",2,6,"120a"); AGR.CHAR("M23","M23G1-f2r220aB0",2,7,"220a"); AGR.CHAR("M23","M23G1-f2r220bB0",2,8,"220b"); AGR.CHAR("M23","M23G1-f2r252B0",2,9,"252a"); AGR.CHAR("M23","M23G1-f2r44aB0",2,4,"44a"); AGR.CHAR("M23","M23G1-f2r44bB0",2,5,"44b"); AGR.CHAR("M23","M23G1-f3r104aB0",3,5,"104a"); AGR.CHAR("M23","M23G1-f3r104bB0",3,6,"104b"); AGR.CHAR("M23","M23G1-f3r22B0",3,2,"22a"); AGR.CHAR("M23","M23G1-f3r231B0",3,7,"231a"); AGR.CHAR("M23","M23G1-f3r253B0",3,8,"253a"); AGR.CHAR("M23","M23G1-f3r770aB0",3,9,"770a"); AGR.CHAR("M23","M23G1-f49r231bB0",7,6,"231b"); AGR.CHAR("M23","M23G1-f49r231cB0",7,7,"231c"); AGR.CHAR("M23","M23G1-f49r770aB0",7,8,"770a"); AGR.CHAR("M23","M23G1-f49r770bB0",7,9,"770b"); AGR.CHAR("M23","M23G1-f49r896aB0",7,10,"896a"); AGR.CHAR("M23","M23G1-f49r896bB0",7,11,"896b"); AGR.CHAR("M23","M23G1-f4r896aB0",2,10,"896a"); AGR.CHAR("M23","M23G1-f4r896bB0",2,11,"896b"); AGR.CHAR("M23","M23G1-f5r22B0",5,2,"22a"); AGR.CHAR("M23","M23G1-f5r230B0",5,5,"230a"); AGR.CHAR("M23","M23G1-f5r231aB0",5,6,"231a"); AGR.CHAR("M23","M23G1-f5r231bB0",5,7,"231b"); AGR.CHAR("M23","M23G1-f5r896aB0",5,10,"896a"); AGR.CHAR("M23","M23G1-f7r208B0",7,4,"208a"); AGR.CHAR("M23","M23G1-f7r22B0",7,2,"22a"); AGR.CHAR("M23","M23G1-f7r231aB0",7,5,"231a"); AGR.CHAR("M23","M23G1-f7r45B0",7,3,"45a"); AGR.CHAR("M23","M23G1-f7r990B0",7,12,"990a"); AGR.CHAR("M23","M23G1-f9r45bB0",3,4,"45b"); AGR.CHAR("M23","M23G1-f9r990bB0",3,12,"990b"); AGR.CHAR("M23","M23G1-p1288B0",0,[1,2,5,16],"1a+22a+230a+1035a"); AGR.CHAR("M23","M23G1-p1771B0",0,[1,2,[5,2],9,16],"1a+22a+230a^2+253a+1035a"); AGR.CHAR("M23","M23G1-p23B0",0,[1,2],"1a+22a"); AGR.CHAR("M23","M23G1-p253aB0",0,[1,2,5],"1a+22a+230a"); AGR.CHAR("M23","M23G1-p253bB0",0,[1,2,5],"1a+22a+230a"); AGR.CHAR("M23","M23G1-p40320B0",0,[1,3,4,6,7,8,9,[10,3],[11,3],[12,3],[13,3],[14,4],[15,4],[16,5],[17,8]],"1a+45ab+231abc+253a+770a^3b^3+896a^3b^3+990a^4b^4+1035a^5+2024a^8"); AGR.CHAR("M23","M23G1-p506B0",0,[1,2,5,9],"1a+22a+230a+253a"); AGR.CHAR("M24","M24G1-Zr23B0",0,2,"23a"); AGR.CHAR("M24","M24G1-f11r229B0",11,5,"229a"); AGR.CHAR("M24","M24G1-f11r23B0",11,2,"23a"); AGR.CHAR("M24","M24G1-f11r253B0",11,8,"253a"); AGR.CHAR("M24","M24G1-f11r45B0",11,3,"45a"); AGR.CHAR("M24","M24G1-f11r482B0",11,9,"482a"); AGR.CHAR("M24","M24G1-f11r806B0",11,12,"806a"); AGR.CHAR("M24","M24G1-f11r990bB0",11,14,"990b"); AGR.CHAR("M24","M24G1-f121r231bB0",11,7,"231b"); AGR.CHAR("M24","M24G1-f121r770aB0",11,10,"770a"); AGR.CHAR("M24","M24G1-f23r231bB0",23,6,"231b"); AGR.CHAR("M24","M24G1-f23r23B0",23,2,"23a"); AGR.CHAR("M24","M24G1-f23r251B0",23,7,"251a"); AGR.CHAR("M24","M24G1-f23r253B0",23,8,"253a"); AGR.CHAR("M24","M24G1-f23r45B0",23,3,"45a"); AGR.CHAR("M24","M24G1-f23r483B0",23,9,"483a"); AGR.CHAR("M24","M24G1-f23r770B0",23,10,"770a"); AGR.CHAR("M24","M24G1-f23r990bB0",23,12,"990b"); AGR.CHAR("M24","M24G1-f25r45aB0",5,3,"45a"); AGR.CHAR("M24","M24G1-f25r45bB0",5,4,"45b"); AGR.CHAR("M24","M24G1-f25r770aB0",5,8,"770a"); AGR.CHAR("M24","M24G1-f25r990aB0",5,10,"990a"); AGR.CHAR("M24","M24G1-f2r11aB0",2,2,"11a"); AGR.CHAR("M24","M24G1-f2r11bB0",2,3,"11b"); AGR.CHAR("M24","M24G1-f2r120B0",2,6,"120a"); AGR.CHAR("M24","M24G1-f2r1242B0",2,12,"1242a"); AGR.CHAR("M24","M24G1-f2r1792B0",2,13,"1792a"); AGR.CHAR("M24","M24G1-f2r220aB0",2,7,"220a"); AGR.CHAR("M24","M24G1-f2r220bB0",2,8,"220b"); AGR.CHAR("M24","M24G1-f2r252B0",2,9,"252a"); AGR.CHAR("M24","M24G1-f2r320aB0",2,10,"320a"); AGR.CHAR("M24","M24G1-f2r320bB0",2,11,"320b"); AGR.CHAR("M24","M24G1-f2r44aB0",2,4,"44a"); AGR.CHAR("M24","M24G1-f2r44bB0",2,5,"44b"); AGR.CHAR("M24","M24G1-f3r22B0",3,2,"22a"); AGR.CHAR("M24","M24G1-f3r231B0",3,5,"231a"); AGR.CHAR("M24","M24G1-f3r252B0",3,6,"252a"); AGR.CHAR("M24","M24G1-f3r483B0",3,7,"483a"); AGR.CHAR("M24","M24G1-f3r770aB0",3,8,"770a"); AGR.CHAR("M24","M24G1-f3r770bB0",3,9,"770b"); AGR.CHAR("M24","M24G1-f49r231bB0",7,5,"231b"); AGR.CHAR("M24","M24G1-f49r770aB0",7,9,"770a"); AGR.CHAR("M24","M24G1-f5r231B0",5,5,"231a"); AGR.CHAR("M24","M24G1-f5r23B0",5,2,"23a"); AGR.CHAR("M24","M24G1-f5r252B0",5,6,"252a"); AGR.CHAR("M24","M24G1-f5r253B0",5,7,"253a"); AGR.CHAR("M24","M24G1-f7r23B0",7,2,"23a"); AGR.CHAR("M24","M24G1-f7r252B0",7,6,"252a"); AGR.CHAR("M24","M24G1-f7r253B0",7,7,"253a"); AGR.CHAR("M24","M24G1-f7r45B0",7,3,"45a"); AGR.CHAR("M24","M24G1-f7r483B0",7,8,"483a"); AGR.CHAR("M24","M24G1-f7r990B0",7,11,"990a"); AGR.CHAR("M24","M24G1-f9r45aB0",3,3,"45a"); AGR.CHAR("M24","M24G1-f9r45bB0",3,4,"45b"); AGR.CHAR("M24","M24G1-f9r990bB0",3,11,"990b"); AGR.CHAR("M24","M24G1-p1288B0",0,[1,7,14],"1a+252a+1035a"); AGR.CHAR("M24","M24G1-p1771B0",0,[1,7,9,14],"1a+252a+483a+1035a"); AGR.CHAR("M24","M24G1-p2024B0",0,[1,2,7,9,17],"1a+23a+252a+483a+1265a"); AGR.CHAR("M24","M24G1-p24B0",0,[1,2],"1a+23a"); AGR.CHAR("M24","M24G1-p276B0",0,[1,2,7],"1a+23a+252a"); AGR.CHAR("M24","M24G1-p3795B0",0,[1,7,9,14,19],"1a+252a+483a+1035a+2024a"); AGR.CHAR("M24","M24G1-p759B0",0,[1,2,7,9],"1a+23a+252a+483a"); AGR.CHAR("McL","McLG1-Zr231B0",0,3,"231a"); AGR.CHAR("McL","McLG1-f11r22B0",11,2,"22a"); AGR.CHAR("McL","McLG1-f11r231B0",11,3,"231a"); AGR.CHAR("McL","McLG1-f11r251B0",11,4,"251a"); AGR.CHAR("McL","McLG1-f11r896B0",11,7,"896a"); AGR.CHAR("McL","McLG1-f121r770aB0",11,5,"770a"); AGR.CHAR("McL","McLG1-f121r770bB0",11,6,"770b"); AGR.CHAR("McL","McLG1-f23r896bB0",23,8,"896b"); AGR.CHAR("McL","McLG1-f25r1200aB0",5,8,"1200a"); AGR.CHAR("McL","McLG1-f2r22B0",2,2,"22a"); AGR.CHAR("McL","McLG1-f2r230B0",2,3,"230a"); AGR.CHAR("McL","McLG1-f2r748aB0",2,4,"748a"); AGR.CHAR("McL","McLG1-f2r748bB0",2,5,"748b"); AGR.CHAR("McL","McLG1-f3r104aB0",3,3,"104a"); AGR.CHAR("McL","McLG1-f3r104bB0",3,4,"104b"); AGR.CHAR("McL","McLG1-f3r210B0",3,5,"210a"); AGR.CHAR("McL","McLG1-f3r21B0",3,2,"21a"); AGR.CHAR("McL","McLG1-f3r560B0",3,6,"560a"); AGR.CHAR("McL","McLG1-f49r770aB0",7,5,"770a"); AGR.CHAR("McL","McLG1-f49r770bB0",7,6,"770b"); AGR.CHAR("McL","McLG1-f49r896aB0",7,7,"896a"); AGR.CHAR("McL","McLG1-f49r896bB0",7,8,"896b"); AGR.CHAR("McL","McLG1-f4r896aB0",2,6,"896a"); AGR.CHAR("McL","McLG1-f4r896bB0",2,7,"896b"); AGR.CHAR("McL","McLG1-f5r210B0",5,3,"210a"); AGR.CHAR("McL","McLG1-f5r21B0",5,2,"21a"); AGR.CHAR("McL","McLG1-f5r230B0",5,4,"230a"); AGR.CHAR("McL","McLG1-f5r560B0",5,5,"560a"); AGR.CHAR("McL","McLG1-f5r896bB0",5,7,"896b"); AGR.CHAR("McL","McLG1-f7r22B0",7,2,"22a"); AGR.CHAR("McL","McLG1-f7r231B0",7,3,"231a"); AGR.CHAR("McL","McLG1-f7r252B0",7,4,"252a"); AGR.CHAR("McL","McLG1-f9r605aB0",3,7,"605a"); AGR.CHAR("McL","McLG1-f9r605bB0",3,8,"605b"); AGR.CHAR("McL","McLG1-p113400B0",0,[1,2,[4,2],[9,3],[10,2],12,[14,2],18,19,[20,3],21,22,23,24],"1a+22a+252a^2+1750a^3+3520a^2+4500a+5103a^2+8250ab+9625a^3+9856ab+10395ab"); AGR.CHAR("McL","McLG1-p15400aB0",0,[1,4,12,14,15],"1a+252a+4500a+5103a+5544a"); AGR.CHAR("McL","McLG1-p15400bB0",0,[1,2,[4,2],9,10,12,14],"1a+22a+252a^2+1750a+3520a+4500a+5103a"); AGR.CHAR("McL","McLG1-p2025aB0",0,[1,2,4,9],"1a+22a+252a+1750a"); AGR.CHAR("McL","McLG1-p2025bB0",0,[1,2,4,9],"1a+22a+252a+1750a"); AGR.CHAR("McL","McLG1-p22275aB0",0,[1,2,[4,2],[9,2],10,14,20],"1a+22a+252a^2+1750a^2+3520a+5103a+9625a"); AGR.CHAR("McL","McLG1-p22275bB0",0,[1,4,9,14,15,20],"1a+252a+1750a+5103a+5544a+9625a"); AGR.CHAR("McL","McLG1-p22275cB0",0,[1,2,[4,2],[9,2],10,14,20],"1a+22a+252a^2+1750a^2+3520a+5103a+9625a"); AGR.CHAR("McL","McLG1-p22275dB0",0,[1,2,[4,2],[9,2],10,14,20],"1a+22a+252a^2+1750a^2+3520a+5103a+9625a"); AGR.CHAR("McL","McLG1-p275B0",0,[1,2,4],"1a+22a+252a"); AGR.CHAR("McL","McLG1-p299376B0",0,[1,4,7,8,9,10,[12,3],[13,2],[14,3],[15,2],[16,2],[17,2],[18,3],[19,3],[20,4],[21,2],[22,2],[23,4],[24,4]],"1a+252a+896ab+1750a+3520a+4500a^3+4752a^2+5103a^3+5544a^2+8019a^2b^2+8250a^3b^3+9625a^4+9856a^2b^2+10395a^4b^4"); AGR.CHAR("McL","McLG1-p7128B0",0,[1,2,4,9,14],"1a+22a+252a+1750a+5103a"); AGR.CHAR("McL.2","McLd2G1-f11r22aB0",11,3); AGR.CHAR("McL.2","McLd2G1-f11r231aB0",11,5); AGR.CHAR("McL.2","McLd2G1-f11r251aB0",11,7); AGR.CHAR("McL.2","McLd2G1-f11r896aB0",11,10); AGR.CHAR("McL.2","McLd2G1-f2r1496aB0",2,4); AGR.CHAR("McL.2","McLd2G1-f2r22B0",2,2); AGR.CHAR("McL.2","McLd2G1-f2r230aB0",2,3); AGR.CHAR("McL.2","McLd2G1-f3r104aB0",3,5); AGR.CHAR("McL.2","McLd2G1-f3r104bB0",3,7); AGR.CHAR("McL.2","McLd2G1-f3r210aB0",3,9); AGR.CHAR("McL.2","McLd2G1-f3r21aB0",3,3); AGR.CHAR("McL.2","McLd2G1-f3r560aB0",3,11); AGR.CHAR("McL.2","McLd2G1-f49r896aB0",7,10); AGR.CHAR("McL.2","McLd2G1-f5r210aB0",5,5); AGR.CHAR("McL.2","McLd2G1-f5r21aB0",5,3); AGR.CHAR("McL.2","McLd2G1-f5r230aB0",5,7); AGR.CHAR("McL.2","McLd2G1-f5r560aB0",5,9); AGR.CHAR("McL.2","McLd2G1-f5r896aB0",5,11); AGR.CHAR("McL.2","McLd2G1-f5r896bB0",5,13); AGR.CHAR("McL.2","McLd2G1-f7r22aB0",7,3); AGR.CHAR("McL.2","McLd2G1-f7r231aB0",7,5); AGR.CHAR("McL.2","McLd2G1-f7r252aB0",7,7); AGR.CHAR("McL.2","McLd2G1-p22275aB0",0,[1,3,[7,2],14,15,16,24,30]); AGR.CHAR("McL.2","McLd2G1-p275B0",0,[1,3,7]); AGR.CHAR("McL.2","McLd2G1-p4050B0",0,[1,2,3,4,7,8,14,15]); AGR.CHAR("McL.2","McLd2G1-p44550B0",0,[1,2,3,4,[7,2],[8,2],[14,2],[15,2],16,17,24,25,30,31]); AGR.CHAR("McL.2","McLd2G1-p7128B0",0,[1,4,7,14,24]); AGR.CHAR("O8-(2)","O8m2G1-Zr204aB0",0,5,"204a"); AGR.CHAR("O8-(2)","O8m2G1-Zr204bB0",0,6,"204b"); AGR.CHAR("O8-(2)","O8m2G1-Zr34B0",0,2,"34a"); AGR.CHAR("O8-(2)","O8m2G1-Zr51B0",0,3,"51a"); AGR.CHAR("O8-(2)","O8m2G1-Zr84B0",0,4,"84a"); AGR.CHAR("O8-(2)","O8m2G1-f17r34B0",17,2,"34a"); AGR.CHAR("O8-(2)","O8m2G1-f17r51B0",17,3,"51a"); AGR.CHAR("O8-(2)","O8m2G1-f17r83B0",17,4,"83a"); AGR.CHAR("O8-(2)","O8m2G1-f2r26B0",2,5,"26a"); AGR.CHAR("O8-(2)","O8m2G1-f2r48B0",2,6,"48a"); AGR.CHAR("O8-(2)","O8m2G1-f2r8B0",2,2,"8a"); AGR.CHAR("O8-(2)","O8m2G1-f3r34B0",3,2,"34a"); AGR.CHAR("O8-(2)","O8m2G1-f3r50B0",3,3,"50a"); AGR.CHAR("O8-(2)","O8m2G1-f4r48bB0",2,7,"48b"); AGR.CHAR("O8-(2)","O8m2G1-f4r48cB0",2,8,"48c"); AGR.CHAR("O8-(2)","O8m2G1-f4r8bB0",2,3,"8b"); AGR.CHAR("O8-(2)","O8m2G1-f4r8cB0",2,4,"8c"); AGR.CHAR("O8-(2)","O8m2G1-f5r34B0",5,2,"34a"); AGR.CHAR("O8-(2)","O8m2G1-f5r51B0",5,3,"51a"); AGR.CHAR("O8-(2)","O8m2G1-f5r84B0",5,4,"84a"); AGR.CHAR("O8-(2)","O8m2G1-f7r33B0",7,2,"33a"); AGR.CHAR("O8-(2)","O8m2G1-f7r51B0",7,3,"51a"); AGR.CHAR("O8-(2)","O8m2G1-f7r84B0",7,4,"84a"); AGR.CHAR("O8-(2)","O8m2G1-p1071B0",0,[1,2,4,8,9],"1a+34a+84a+476ab"); AGR.CHAR("O8-(2)","O8m2G1-p119B0",0,[1,2,4],"1a+34a+84a"); AGR.CHAR("O8-(2)","O8m2G1-p136B0",0,[1,3,4],"1a+51a+84a"); AGR.CHAR("O8-(2)","O8m2G1-p1632B0",0,[1,3,4,8,13],"1a+51a+84a+476a+1020a"); AGR.CHAR("O8-(2)","O8m2G1-p24192B0",0,[1,2,3,8,9,10,11,12,13,14,23,24,33,34,37,38],"1a+34a+51a+476ab+595a+714ab+1020a+1071a+2142cd+2856ab+4284a+4760a"); AGR.CHAR("O8-(2)","O8m2G1-p45696B0",0,[1,2,3,[4,2],[8,2],[9,2],10,11,12,[13,3],14,[19,2],23,24,25,[33,2],34,[35,2],36,37,38],"1a+34a+51a+84a^2+476a^2b^2+595a+714ab+1020a^3+1071a+1344a^2+2142cd+2176a+2856a^2b+3264a^2+4096a+4284a+4760a"); AGR.CHAR("O8-(2)","O8m2G1-p765B0",0,[1,4,6,8],"1a+84a+204b+476a"); AGR.CHAR("O8-(2).2","O8m2d2G1-f3r34B0",3,3); AGR.CHAR("O8-(2).2","O8m2d2G1-f3r50B0",3,5); AGR.CHAR("O8-(2).2","O8m2d2G1-p119B0",0,[1,3,7]); AGR.CHAR("ON","ONG1-f3r495B0",3,6,"495b"); AGR.CHAR("ON","ONG1-f3r684B0",3,[3,4],"342ab"); AGR.CHAR("ON","ONG1-p122760aB0",0,[1,2,7,9,11],"1a+10944a+26752a+32395b+52668a"); AGR.CHAR("R(27)","R27G1-f27r7aB0",3,2,"7a"); AGR.CHAR("R(27)","R27G1-f2r702B0",2,2,"702a"); AGR.CHAR("R(27)","R27G1-p19684B0",0,[1,20],"1a+19683a"); AGR.CHAR("R(27).3","R27d3G1-f2r702B0",2,4); AGR.CHAR("R(27).3","R27d3G1-f3r21B0",3,2); AGR.CHAR("R(27).3","R27d3G1-f4r741B0",2,12); AGR.CHAR("R(27).3","R27d3G1-p19684B0",0,[1,34]); AGR.CHAR("Ru","RuG1-f13r378B0",13,2,"378a"); AGR.CHAR("Ru","RuG1-f13r406B0",13,4,"406a"); AGR.CHAR("Ru","RuG1-f13r783B0",13,5,"783a"); AGR.CHAR("Ru","RuG1-f29r378B0",29,3,"378b"); AGR.CHAR("Ru","RuG1-f29r406B0",29,4,"406a"); AGR.CHAR("Ru","RuG1-f29r783B0",29,5,"783a"); AGR.CHAR("Ru","RuG1-f2r1246B0",2,4,"1246a"); AGR.CHAR("Ru","RuG1-f2r28B0",2,2,"28a"); AGR.CHAR("Ru","RuG1-f2r376B0",2,3,"376a"); AGR.CHAR("Ru","RuG1-f3r406B0",3,4,"406a"); AGR.CHAR("Ru","RuG1-f3r783B0",3,5,"783a"); AGR.CHAR("Ru","RuG1-f49r378B0",7,2,"378a"); AGR.CHAR("Ru","RuG1-f5r133B0",5,2,"133a"); AGR.CHAR("Ru","RuG1-f5r273B0",5,3,"273a"); AGR.CHAR("Ru","RuG1-f5r378B0",5,4,"378a"); AGR.CHAR("Ru","RuG1-f5r783B0",5,6,"783a"); AGR.CHAR("Ru","RuG1-f7r406B0",7,4,"406a"); AGR.CHAR("Ru","RuG1-f7r782B0",7,5,"782a"); AGR.CHAR("Ru","RuG1-f9r378B0",3,3,"378b"); AGR.CHAR("Ru","RuG1-p4060B0",0,[1,5,6],"1a+783a+3276a"); AGR.CHAR("S6(2)","S62G1-Zr105aB0",0,12,"105a"); AGR.CHAR("S6(2)","S62G1-Zr105bB0",0,13,"105b"); AGR.CHAR("S6(2)","S62G1-Zr105cB0",0,14,"105c"); AGR.CHAR("S6(2)","S62G1-Zr120B0",0,15,"120a"); AGR.CHAR("S6(2)","S62G1-Zr15B0",0,3,"15a"); AGR.CHAR("S6(2)","S62G1-Zr168B0",0,16,"168a"); AGR.CHAR("S6(2)","S62G1-Zr189aB0",0,17,"189a"); AGR.CHAR("S6(2)","S62G1-Zr189bB0",0,18,"189b"); AGR.CHAR("S6(2)","S62G1-Zr189cB0",0,19,"189c"); AGR.CHAR("S6(2)","S62G1-Zr210aB0",0,20,"210a"); AGR.CHAR("S6(2)","S62G1-Zr210bB0",0,21,"210b"); AGR.CHAR("S6(2)","S62G1-Zr216B0",0,22,"216a"); AGR.CHAR("S6(2)","S62G1-Zr21aB0",0,4,"21a"); AGR.CHAR("S6(2)","S62G1-Zr21bB0",0,5,"21b"); AGR.CHAR("S6(2)","S62G1-Zr27B0",0,6,"27a"); AGR.CHAR("S6(2)","S62G1-Zr35aB0",0,7,"35a"); AGR.CHAR("S6(2)","S62G1-Zr35bB0",0,8,"35b"); AGR.CHAR("S6(2)","S62G1-Zr56B0",0,9,"56a"); AGR.CHAR("S6(2)","S62G1-Zr70B0",0,10,"70a"); AGR.CHAR("S6(2)","S62G1-Zr7B0",0,2,"7a"); AGR.CHAR("S6(2)","S62G1-Zr84B0",0,11,"84a"); AGR.CHAR("S6(2)","S62G1-f2r112B0",2,7,"112a"); AGR.CHAR("S6(2)","S62G1-f2r14B0",2,4,"14a"); AGR.CHAR("S6(2)","S62G1-f2r48B0",2,5,"48a"); AGR.CHAR("S6(2)","S62G1-f2r512B0",2,8,"512a"); AGR.CHAR("S6(2)","S62G1-f2r64B0",2,6,"64a"); AGR.CHAR("S6(2)","S62G1-f2r6B0",2,2,"6a"); AGR.CHAR("S6(2)","S62G1-f2r8B0",2,3,"8a"); AGR.CHAR("S6(2)","S62G1-f3r14B0",3,3,"14a"); AGR.CHAR("S6(2)","S62G1-f3r189aB0",3,11,"189a"); AGR.CHAR("S6(2)","S62G1-f3r189bB0",3,12,"189b"); AGR.CHAR("S6(2)","S62G1-f3r189cB0",3,13,"189c"); AGR.CHAR("S6(2)","S62G1-f3r196B0",3,14,"196a"); AGR.CHAR("S6(2)","S62G1-f3r21B0",3,4,"21a"); AGR.CHAR("S6(2)","S62G1-f3r27B0",3,5,"27a"); AGR.CHAR("S6(2)","S62G1-f3r34B0",3,6,"34a"); AGR.CHAR("S6(2)","S62G1-f3r35B0",3,7,"35a"); AGR.CHAR("S6(2)","S62G1-f3r405B0",3,15,"405a"); AGR.CHAR("S6(2)","S62G1-f3r49B0",3,8,"49a"); AGR.CHAR("S6(2)","S62G1-f3r7B0",3,2,"7a"); AGR.CHAR("S6(2)","S62G1-f3r91B0",3,9,"91a"); AGR.CHAR("S6(2)","S62G1-f3r98B0",3,10,"98a"); AGR.CHAR("S6(2)","S62G1-p120B0",0,[1,7,11],"1a+35a+84a"); AGR.CHAR("S6(2)","S62G1-p126B0",0,[1,2,6,8,9],"1a+7a+27a+35b+56a"); AGR.CHAR("S6(2)","S62G1-p135B0",0,[1,3,8,11],"1a+15a+35b+84a"); AGR.CHAR("S6(2)","S62G1-p240B0",0,[1,3,7,11,14],"1a+15a+35a+84a+105c"); AGR.CHAR("S6(2)","S62G1-p288B0",0,[1,6,8,13,15],"1a+27a+35b+105b+120a"); AGR.CHAR("S6(2)","S62G1-p28B0",0,[1,6],"1a+27a"); AGR.CHAR("S6(2)","S62G1-p315B0",0,[1,6,8,11,16],"1a+27a+35b+84a+168a"); AGR.CHAR("S6(2)","S62G1-p336B0",0,[1,6,8,13,16],"1a+27a+35b+105b+168a"); AGR.CHAR("S6(2)","S62G1-p36B0",0,[1,8],"1a+35b"); AGR.CHAR("S6(2)","S62G1-p378aB0",0,[1,[6,2],8,15,16],"1a+27a^2+35b+120a+168a"); AGR.CHAR("S6(2)","S62G1-p378bB0",0,[1,3,6,8,11,22],"1a+15a+27a+35b+84a+216a"); AGR.CHAR("S6(2)","S62G1-p56B0",0,[1,2,5,6],"1a+7a+21b+27a"); AGR.CHAR("S6(2)","S62G1-p63B0",0,[1,6,8],"1a+27a+35b"); AGR.CHAR("S6(2)","S62G1-p72B0",0,[1,3,5,8],"1a+15a+21b+35b"); AGR.CHAR("S6(2)","S62G1-p960B0",0,[1,10,11,13,23,29],"1a+70a+84a+105b+280a+420a"); AGR.CHAR("Suz","SuzG1-Zr143B0",0,2,"143a"); AGR.CHAR("Suz","SuzG1-f11r143B0",11,2,"143a"); AGR.CHAR("Suz","SuzG1-f11r364B0",11,3,"364a"); AGR.CHAR("Suz","SuzG1-f11r779B0",11,4,"779a"); AGR.CHAR("Suz","SuzG1-f13r143B0",13,2,"143a"); AGR.CHAR("Suz","SuzG1-f13r364B0",13,3,"364a"); AGR.CHAR("Suz","SuzG1-f13r780B0",13,4,"780a"); AGR.CHAR("Suz","SuzG1-f2r142B0",2,4,"142a"); AGR.CHAR("Suz","SuzG1-f2r638B0",2,7,"638a"); AGR.CHAR("Suz","SuzG1-f3r286B0",3,4,"286a"); AGR.CHAR("Suz","SuzG1-f3r429B0",3,5,"429a"); AGR.CHAR("Suz","SuzG1-f3r649B0",3,6,"649a"); AGR.CHAR("Suz","SuzG1-f3r64B0",3,2,"64a"); AGR.CHAR("Suz","SuzG1-f3r78B0",3,3,"78a"); AGR.CHAR("Suz","SuzG1-f5r143B0",5,2,"143a"); AGR.CHAR("Suz","SuzG1-f5r363B0",5,3,"363a"); AGR.CHAR("Suz","SuzG1-f5r780B0",5,4,"780a"); AGR.CHAR("Suz","SuzG1-f7r143B0",7,2,"143a"); AGR.CHAR("Suz","SuzG1-f7r364B0",7,3,"364a"); AGR.CHAR("Suz","SuzG1-f7r780B0",7,4,"780a"); AGR.CHAR("Suz","SuzG1-p135135B0",0,[1,2,4,6,9,12,16,17,27],"1a+143a+780a+3432a+5940a+14300a+18954a+25025a+66560a"); AGR.CHAR("Suz","SuzG1-p1782B0",0,[1,4,5],"1a+780a+1001a"); AGR.CHAR("Suz","SuzG1-p22880B0",0,[1,3,4,9,15],"1a+364a+780a+5940a+15795a"); AGR.CHAR("Suz","SuzG1-p232960B0",0,[1,[3,2],9,11,12,13,14,15,23,33],"1a+364a^2+5940a+12012a+14300a+15015ab+15795a+54054a+100100a"); AGR.CHAR("Suz","SuzG1-p32760B0",0,[1,2,3,9,11,12],"1a+143a+364a+5940a+12012a+14300a"); AGR.CHAR("Suz","SuzG1-p370656B0",0,[1,[4,2],5,6,9,15,16,17,24,27,29,30],"1a+780a^2+1001a+3432a+5940a+15795a+18954a+25025a+64064a+66560a+79872a+88452a"); AGR.CHAR("Suz","SuzG1-p405405B0",0,[1,3,4,5,9,11,12,15,17,27,28,30,33],"1a+364a+780a+1001a+5940a+12012a+14300a+15795a+25025a+66560a+75075a+88452a+100100a"); AGR.CHAR("Sz(32)","Sz32G1-f41r124bB0",41,3,"124b"); AGR.CHAR("Sz(32)","Sz32G1-f5r124aB0",5,2,"124a"); AGR.CHAR("Sz(32)","Sz32G1-p1025B0",0,[1,14],"1a+1024a"); AGR.CHAR("Sz(32)","Sz32G1-p198400B0",0,[1,[4,6],[5,6],[6,6],[7,6],[8,6],[9,6],[10,6],[11,6],[12,6],[13,6],[14,6],[15,7],[16,7],[17,7],[18,7],[19,7],[20,7],[21,7],[22,7],[23,7],[24,7],[25,7],[26,7],[27,7],[28,7],[29,7],[30,5],[31,5],[32,5],[33,5],[34,5],[35,5]],"1a+775a^6b^6c^6d^6e^6f^6g^6h^6i^6j^6+1024a^6+1025a^7b^7c^7d^7e^7f^7g^7h^7i^7j^7k^7l^7m^7n^7o^7+1271a^5b^5c^5d^5e^5f^5"); AGR.CHAR("Sz(8)","Sz8G1-Ar14aB0",0,2,"14a"); AGR.CHAR("Sz(8)","Sz8G1-Ar14bB0",0,3,"14b"); AGR.CHAR("Sz(8)","Sz8G1-Ar65aB0",0,8,"65a"); AGR.CHAR("Sz(8)","Sz8G1-Ar65bB0",0,9,"65b"); AGR.CHAR("Sz(8)","Sz8G1-Ar65cB0",0,10,"65c"); AGR.CHAR("Sz(8)","Sz8G1-Zr64B0",0,7,"64a"); AGR.CHAR("Sz(8)","Sz8G1-Zr91B0",0,11,"91a"); AGR.CHAR("Sz(8)","Sz8G1-f125r65aB0",5,8,"65a"); AGR.CHAR("Sz(8)","Sz8G1-f125r65bB0",5,10,"65c"); AGR.CHAR("Sz(8)","Sz8G1-f125r65cB0",5,9,"65b"); AGR.CHAR("Sz(8)","Sz8G1-f13r14aB0",13,2,"14a"); AGR.CHAR("Sz(8)","Sz8G1-f13r14bB0",13,3,"14b"); AGR.CHAR("Sz(8)","Sz8G1-f13r35B0",13,4,"35a"); AGR.CHAR("Sz(8)","Sz8G1-f13r65aB0",13,5,"65a"); AGR.CHAR("Sz(8)","Sz8G1-f13r65bB0",13,6,"65b"); AGR.CHAR("Sz(8)","Sz8G1-f13r65cB0",13,7,"65c"); AGR.CHAR("Sz(8)","Sz8G1-f13r91B0",13,8,"91a"); AGR.CHAR("Sz(8)","Sz8G1-f2r64B0",2,8,"64a"); AGR.CHAR("Sz(8)","Sz8G1-f49r14aB0",7,2,"14a"); AGR.CHAR("Sz(8)","Sz8G1-f5r14aB0",5,2,"14a"); AGR.CHAR("Sz(8)","Sz8G1-f5r14bB0",5,3,"14b"); AGR.CHAR("Sz(8)","Sz8G1-f5r195B0",5,[8,9,10],"65abc"); AGR.CHAR("Sz(8)","Sz8G1-f5r35aB0",5,4,"35a"); AGR.CHAR("Sz(8)","Sz8G1-f5r35bB0",5,5,"35b"); AGR.CHAR("Sz(8)","Sz8G1-f5r35cB0",5,6,"35c"); AGR.CHAR("Sz(8)","Sz8G1-f5r63B0",5,7,"63a"); AGR.CHAR("Sz(8)","Sz8G1-f7r105B0",7,[4,5,6],"35abc"); AGR.CHAR("Sz(8)","Sz8G1-f7r64B0",7,7,"64a"); AGR.CHAR("Sz(8)","Sz8G1-f7r91B0",7,8,"91a"); AGR.CHAR("Sz(8)","Sz8G1-f8r16aB0",2,5,"16a"); AGR.CHAR("Sz(8)","Sz8G1-f8r4aB0",2,2,"4a"); AGR.CHAR("Sz(8)","Sz8G1-p1456B0",0,[1,[4,2],[5,2],[6,2],[7,3],[8,4],[9,4],[10,4],[11,3]],"1a+35a^2b^2c^2+64a^3+65a^4b^4c^4+91a^3"); AGR.CHAR("Sz(8)","Sz8G1-p2080B0",0,[1,[4,4],[5,4],[6,4],[7,5],[8,5],[9,5],[10,5],[11,4]],"1a+35a^4b^4c^4+64a^5+65a^5b^5c^5+91a^4"); AGR.CHAR("Sz(8)","Sz8G1-p520B0",0,[1,4,5,6,[7,2],8,9,10,11],"1a+35abc+64a^2+65abc+91a"); AGR.CHAR("Sz(8)","Sz8G1-p560B0",0,[1,4,5,6,7,[8,2],[9,2],[10,2]],"1a+35abc+64a+65a^2b^2c^2"); AGR.CHAR("Sz(8)","Sz8G1-p65B0",0,[1,7],"1a+64a"); AGR.CHAR("Sz(8).3","Sz8d3G1-f13r14B0",13,4); AGR.CHAR("Sz(8).3","Sz8d3G1-f2r12B0",2,4); AGR.CHAR("Sz(8).3","Sz8d3G1-f2r48B0",2,5); AGR.CHAR("Sz(8).3","Sz8d3G1-f2r64B0",2,6); AGR.CHAR("Sz(8).3","Sz8d3G1-f49r14B0",7,4); AGR.CHAR("Sz(8).3","Sz8d3G1-f5r105B0",5,10); AGR.CHAR("Sz(8).3","Sz8d3G1-f5r14B0",5,4); AGR.CHAR("Sz(8).3","Sz8d3G1-f5r195B0",5,14); AGR.CHAR("Sz(8).3","Sz8d3G1-f5r63B0",5,11); AGR.CHAR("Sz(8).3","Sz8d3G1-p1456B0",0,[1,[10,2],11,12,13,[14,4],15,16,17]); AGR.CHAR("Sz(8).3","Sz8d3G1-p2080B0",0,[1,[10,4],[11,3],12,13,[14,5],[15,2],16,17]); AGR.CHAR("Sz(8).3","Sz8d3G1-p520B0",0,[1,10,[11,2],14,15]); AGR.CHAR("Sz(8).3","Sz8d3G1-p560B0",0,[1,10,11,[14,2]]); AGR.CHAR("Sz(8).3","Sz8d3G1-p65B0",0,[1,11]); AGR.CHAR("Th","ThG1-f13r248B0",13,2,"248a"); AGR.CHAR("U4(2)","U42G1-Ar10B0",0,5,"10a"); AGR.CHAR("U4(2)","U42G1-Ar10aB0",0,5,"10a"); AGR.CHAR("U4(2)","U42G1-Ar10bB0",0,6,"10b"); AGR.CHAR("U4(2)","U42G1-Ar30bB0",0,12,"30b"); AGR.CHAR("U4(2)","U42G1-Ar30cB0",0,13,"30c"); AGR.CHAR("U4(2)","U42G1-Ar40aB0",0,14,"40a"); AGR.CHAR("U4(2)","U42G1-Ar40bB0",0,15,"40b"); AGR.CHAR("U4(2)","U42G1-Ar45aB0",0,16,"45a"); AGR.CHAR("U4(2)","U42G1-Ar45bB0",0,17,"45b"); AGR.CHAR("U4(2)","U42G1-Ar5aB0",0,2,"5a"); AGR.CHAR("U4(2)","U42G1-Ar5bB0",0,3,"5b"); AGR.CHAR("U4(2)","U42G1-Zr15aB0",0,7,"15a"); AGR.CHAR("U4(2)","U42G1-Zr15bB0",0,8,"15b"); AGR.CHAR("U4(2)","U42G1-Zr20B0",0,9,"20a"); AGR.CHAR("U4(2)","U42G1-Zr24B0",0,10,"24a"); AGR.CHAR("U4(2)","U42G1-Zr30aB0",0,11,"30a"); AGR.CHAR("U4(2)","U42G1-Zr60B0",0,18,"60a"); AGR.CHAR("U4(2)","U42G1-Zr64B0",0,19,"64a"); AGR.CHAR("U4(2)","U42G1-Zr6B0",0,4,"6a"); AGR.CHAR("U4(2)","U42G1-Zr80B0",0,[14,15],"40ab"); AGR.CHAR("U4(2)","U42G1-Zr81B0",0,20,"81a"); AGR.CHAR("U4(2)","U42G1-f25r10bB0",5,6,"10b"); AGR.CHAR("U4(2)","U42G1-f25r5aB0",5,2,"5a"); AGR.CHAR("U4(2)","U42G1-f3r10B0",3,3,"10a"); AGR.CHAR("U4(2)","U42G1-f3r14B0",3,4,"14a"); AGR.CHAR("U4(2)","U42G1-f3r25B0",3,5,"25a"); AGR.CHAR("U4(2)","U42G1-f3r5B0",3,2,"5a"); AGR.CHAR("U4(2)","U42G1-f3r81B0",3,6,"81a"); AGR.CHAR("U4(2)","U42G1-f4r4aB0",2,2,"4a"); AGR.CHAR("U4(2)","U42G1-f5r6B0",5,4,"6a"); AGR.CHAR("U4(2)","U42G1-p27B0",0,[1,4,9],"1a+6a+20a"); AGR.CHAR("U4(2)","U42G1-p36B0",0,[1,8,9],"1a+15b+20a"); AGR.CHAR("U4(2)","U42G1-p40aB0",0,[1,7,10],"1a+15a+24a"); AGR.CHAR("U4(2)","U42G1-p40bB0",0,[1,8,10],"1a+15b+24a"); AGR.CHAR("U4(2)","U42G1-p45B0",0,[1,9,10],"1a+20a+24a"); AGR.CHAR("U4(2).2","U42d2G1-f2r14B0",2,4); AGR.CHAR("U4(2).2","U42d2G1-f2r40B0",2,5); AGR.CHAR("U4(2).2","U42d2G1-f2r64B0",2,6); AGR.CHAR("U4(2).2","U42d2G1-f2r6B0",2,3); AGR.CHAR("U4(2).2","U42d2G1-f2r8B0",2,2); AGR.CHAR("U4(2).2","U42d2G1-f3r5B0",3,3); AGR.CHAR("U4(2).2","U42d2G1-p27B0",0,[1,4,11]); AGR.CHAR("U4(2).2","U42d2G1-p36B0",0,[1,9,11]); AGR.CHAR("U4(2).2","U42d2G1-p40aB0",0,[1,8,13]); AGR.CHAR("U4(2).2","U42d2G1-p40bB0",0,[1,9,13]); AGR.CHAR("U4(2).2","U42d2G1-p45B0",0,[1,11,13]); AGR.CHAR("U5(2)","U52G1-Ar66aB0",0,9,"66a"); AGR.CHAR("U5(2)","U52G1-Ar66bB0",0,10,"66b"); AGR.CHAR("U5(2)","U52G1-Zr120B0",0,16,"120a"); AGR.CHAR("U5(2)","U52G1-Zr165B0",0,17,"165a"); AGR.CHAR("U5(2)","U52G1-Zr176B0",0,18,"176a"); AGR.CHAR("U5(2)","U52G1-Zr55B0",0,6,"55a"); AGR.CHAR("U5(2)","U52G1-f11r119B0",11,16,"119a"); AGR.CHAR("U5(2)","U52G1-f11r176B0",11,18,"176a"); AGR.CHAR("U5(2)","U52G1-f11r44B0",11,5,"44a"); AGR.CHAR("U5(2)","U52G1-f2r24B0",2,6,"24a"); AGR.CHAR("U5(2)","U52G1-f2r74B0",2,11,"74a"); AGR.CHAR("U5(2)","U52G1-f3r100B0",3,5,"100a"); AGR.CHAR("U5(2)","U52G1-f3r10B0",3,2,"10a"); AGR.CHAR("U5(2)","U52G1-f3r110B0",3,6,"110a"); AGR.CHAR("U5(2)","U52G1-f3r44B0",3,3,"44a"); AGR.CHAR("U5(2)","U52G1-f3r55B0",3,4,"55a"); AGR.CHAR("U5(2)","U52G1-f4r10aB0",2,4,"10a"); AGR.CHAR("U5(2)","U52G1-f4r10bB0",2,5,"10b"); AGR.CHAR("U5(2)","U52G1-f4r5aB0",2,2,"5a"); AGR.CHAR("U5(2)","U52G1-f4r5bB0",2,3,"5b"); AGR.CHAR("U5(2)","U52G1-f5r120B0",5,16,"120a"); AGR.CHAR("U5(2)","U52G1-f5r176B0",5,18,"176a"); AGR.CHAR("U5(2)","U52G1-f5r43B0",5,5,"43a"); AGR.CHAR("U5(2)","U52G1-f5r55aB0",5,6,"55a"); AGR.CHAR("U5(2)","U52G1-p1408B0",0,[1,6,9,10,16,28,35],"1a+55a+66ab+120a+440a+660a"); AGR.CHAR("U5(2)","U52G1-p165B0",0,[1,5,16],"1a+44a+120a"); AGR.CHAR("U5(2)","U52G1-p176B0",0,[1,6,16],"1a+55a+120a"); AGR.CHAR("U5(2)","U52G1-p20736B0",0,[1,3,4,6,[9,2],[10,2],14,15,16,[18,3],[21,2],[22,2],28,29,30,[31,2],[32,2],[35,3],36,37,[38,2],[39,2],[43,2],[44,2],[45,2],46,47],"1a+11ab+55a+66a^2b^2+110de+120a+176a^3+220c^2d^2+440abc+495a^2b^2+660a^3+704ab+880a^2b^2+990a^2b^2+1024a^2+1215ab"); AGR.CHAR("U5(2)","U52G1-p297B0",0,[1,16,18],"1a+120a+176a"); AGR.CHAR("U5(2)","U52G1-p3520B0",0,[1,5,6,[16,2],17,28,35,40,45],"1a+44a+55a+120a^2+165a+440a+660a+891a+1024a"); AGR.CHAR("U5(2).2","U52d2G1-f2r1024B0",2,10); AGR.CHAR("U5(2).2","U52d2G1-f2r10B0",2,2); AGR.CHAR("U5(2).2","U52d2G1-f2r20B0",2,3); AGR.CHAR("U5(2).2","U52d2G1-f2r24B0",2,4); AGR.CHAR("U5(2).2","U52d2G1-f2r320B0",2,8); AGR.CHAR("U5(2).2","U52d2G1-f2r560B0",2,9); AGR.CHAR("U5(2).2","U52d2G1-f2r74B0",2,7); AGR.CHAR("U5(2).2","U52d2G1-f2r80aB0",2,5); AGR.CHAR("U5(2).2","U52d2G1-f2r80bB0",2,6); AGR.CHAR("U5(2).2","U52d2G1-f3r10aB0",3,4); AGR.CHAR("U5(2).2","U52d2G1-p1408B0",0,[1,8,11,16,28,33]); AGR.CHAR("U5(2).2","U52d2G1-p165B0",0,[1,6,16]); AGR.CHAR("U5(2).2","U52d2G1-p176B0",0,[1,8,16]); AGR.CHAR("U5(2).2","U52d2G1-p20736B0",0,[1,5,8,[11,2],15,16,[20,2],21,[23,2],28,30,[31,2],[33,2],34,35,[36,2],[40,2],[41,2],43]); AGR.CHAR("U5(2).2","U52d2G1-p297B0",0,[1,16,20]); AGR.CHAR("U5(2).2","U52d2G1-p3520B0",0,[1,6,8,[16,2],18,28,33,37,41]); AtlasOfGroupRepresentationsInfo.TableOfContents.( "remote" ).lastupdated:= "25-Mar-2016, 13:25:41.000 UTC"; ############################################################################# ## #E atlasrep/gap/test.g0000644000175000017500000034060212677270572012735 0ustar samsam############################################################################# ## #W test.g GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains functions to test the data available in the ## ATLAS of Group Representations. ## ############################################################################# ## ## <#GAPDoc Label="tests"> ## The fact that the &ATLAS; of Group Representations is designed as an ## open database ## (see Section ) ## makes it especially desirable to have consistency checks available ## which can be run automatically ## whenever new data are added by the developers of the &ATLAS;. ## The tests described in Section ## can be used ## also for data from private extensions of the package ## (see Chapter ), ## Section lists tests ## which do not have this property. ##

## All these tests apply only to the local table of contents ## (see Section ) ## or to private extensions. ## So only those data files are checked that are actually available ## in the local &GAP; installation. ## No files are fetched from servers during these tests. ## The required space and time for running these tests ## depend on the amount of locally available data. ##

## The file tst/testall.g of the package ## contains statements ## for executing a collection of such sanity checks; ## one can run them by calling ## ReadPackage( "AtlasRep", "tst/testall.g" ). ## If no problem occurs then &GAP; prints only lines starting with one of ## the following. ##

## ##

## Some of the checks compute and verify additional data, ## such as information about point stabilizers of permutation ## representations. ## In these cases, output lines starting with #E are error messages ## that point to inconsistencies, ## whereas output lines starting with #I inform about data that have ## been computed and were not yet stored, or about stored data that were not ## verified. ##

## The examples in the package manual form a part of the tests, ## they are collected in the file tst/docxpl.tst of the package. ## ## ## Sanity Checks for a Table of Contents ## ## The following tests can be used to check the data that belong to a given ## table of contents. ## Each of these tests is given by a function with optional argument ## tocid, the identifying string that had been entered as the second ## argument of ## . ## The contents of the local dataword directory can be checked by ## entering "local", which is also the default for tocid. ## The function returns false if an error occurs, ## otherwise true. ## Currently the following tests of this kind are available. ##

## ## <#Include Label="test:AGR.Test.Words"> ## <#Include Label="test:AGR.Test.FileHeaders"> ## <#Include Label="test:AGR.Test.Files"> ## <#Include Label="test:AGR.Test.BinaryFormat"> ## <#Include Label="test:AGR.Test.Primitivity"> ## <#Include Label="test:AGR.Test.Characters"> ## ## ## ## ## ## Other Sanity Checks ## ## The tests described in this section are not intended for checking data ## from private extensions of the AtlasRep package. ## Each of the tests is given by a function without arguments that ## returns false if a contradiction was found during the test, ## and true otherwise. ## Additionally, certain messages are printed ## when contradictions between stored and computed data are found, ## when stored data cannot be verified computationally, ## or when the computations yield improvements of the stored data. ## Currently the following tests of this kind are available. ##

## ## <#Include Label="test:AGR.Test.GroupOrders"> ## <#Include Label="test:AGR.Test.MaxesOrders"> ## <#Include Label="test:AGR.Test.MaxesStructure"> ## <#Include Label="test:AGR.Test.StdCompatibility"> ## <#Include Label="test:AGR.Test.CompatibleMaxes"> ## <#Include Label="test:AGR.Test.ClassScripts"> ## <#Include Label="test:AGR.Test.CycToCcls"> ## <#Include Label="test:AGR.Test.Standardization"> ## <#Include Label="test:AGR.Test.StdTomLib"> ## <#Include Label="test:AGR.Test.KernelGenerators"> ## <#Include Label="test:AGR.Test.MinimalDegrees"> ## ## ## ## <#/GAPDoc> ## if not IsPackageMarkedForLoading( "TomLib", "" ) then HasStandardGeneratorsInfo:= "dummy"; IsStandardGeneratorsOfGroup:= "dummy"; LIBTOMKNOWN:= "dummy"; StandardGeneratorsInfo:= "dummy"; fi; if not IsPackageMarkedForLoading( "CTblLib", "" ) then ConstructionInfoCharacterTable:= "dummy"; HasConstructionInfoCharacterTable:= "dummy"; LibInfoCharacterTable:= "dummy"; fi; if IsBound( StructureDescriptionCharacterTableName ) then AGR.StructureDescriptionCharacterTableName:= StructureDescriptionCharacterTableName; else AGR.StructureDescriptionCharacterTableName:= name -> name; fi; ############################################################################# ## #V AGR.Test ## AGR.Test:= rec(); ############################################################################# ## #V AGR.Test.HardCases #V AGR.Test.HardCases.MaxNumberMaxes #V AGR.Test.HardCases.MaxNumberStd #V AGR.Test.MaxTestDegree ## ## This is a record whose components belong to the various tests, ## and list data which shall be omitted from the tests ## because they would be too space or time consuming. ## ## In the test loops, we assume upper bounds on the numbers of available ## maximal subgroups and standardizations, ## and we perform some tests only if a sufficiently small permutation ## representation is available. ## AGR.Test.HardCases:= rec(); AGR.Test.HardCases.MaxNumberMaxes:= 50; AGR.Test.HardCases.MaxNumberStd:= 2; AGR.Test.MaxTestDegree:= 10^5; ############################################################################# ## #F AGR.Test.Words( [[, ]][,][] ) ## ## <#GAPDoc Label="test:AGR.Test.Words"> ## AGR.Test.Words( [tocid] ) ## ## processes all straight line programs that are stored in the directory ## with identifier tocid, ## using the function stored in the TestWords component of the ## data type in question. ## ## <#/GAPDoc> ## AGR.Test.HardCases.TestWords:= [ [ "find", [ "B", "HN", "S417", "F24d2" ] ], [ "check", [ "B" ] ], [ "maxes", [ "Co1" ] ], ]; AGR.Test.Words:= function( arg ) local result, maxdeg, tocid, verbose, types, toc, name, r, type, omit, entry, prg, gens, grp, size; # Initialize the result. result:= true; maxdeg:= AGR.Test.MaxTestDegree; if Length( arg ) = 0 then return AGR.Test.Words( "local", false ); elif Length( arg ) = 1 and IsBool( arg[1] ) then return AGR.Test.Words( "local", arg[1] ); elif Length( arg ) = 1 and IsString( arg[1] ) then return AGR.Test.Words( arg[1], false ); elif Length( arg ) = 2 and IsString( arg[1] ) and IsString( arg[2] ) then return AGR.Test.Words( arg[1], arg[2], false ); elif Length( arg ) = 2 and IsString( arg[1] ) and IsBool( arg[2] ) then for name in AtlasOfGroupRepresentationsInfo.groupnames do result:= AGR.Test.Words( arg[1], name[3], arg[2] ) and result; od; return result; elif not ( Length( arg ) = 3 and IsString( arg[1] ) and IsString( arg[2] ) and IsBool( arg[3] ) ) then Error( "usage: AGR.Test.Words( [[, ", "]][,][] )" ); fi; tocid:= arg[1]; verbose:= arg[3]; # Check only straight line programs. types:= AGR.DataTypes( "prg" ); toc:= AtlasTableOfContents( tocid ); if toc = fail then # No test is reasonable. return true; fi; name:= First( AtlasOfGroupRepresentationsInfo.GAPnames, x -> x[2] = arg[2] ); if IsBound( toc.TableOfContents.( name[2] ) ) then r:= toc.TableOfContents.( name[2] ); # Note that the ordering in the `and' statement must not be # changed, in order to execute all tests! for type in types do omit:= First( AGR.Test.HardCases.TestWords, pair -> pair[1] = type[1] ); if IsBound( r.( type[1] ) ) then if IsList( omit ) and name[2] in omit[2] then if verbose then Print( "#I omit TestWords for ", type[1], " and ", name[2], "\n" ); fi; else for entry in r.( type[1] ) do result:= type[2].TestWords( tocid, name[2], entry[ Length( entry ) ], type, verbose ) and result; od; fi; fi; od; # Check also the `maxext' scripts (which do not form a data type # and which are stored in the remote table of contents only). r:= AtlasTableOfContents( "remote" ).TableOfContents.( name[2] ); if IsBound( r.maxext ) then for entry in r.maxext do prg:= AtlasProgram( name[1], entry[1], "maxes", entry[2] ); if prg = fail then if verbose then Print( "#I omit TestWords for maxext no. ", entry[2], " and ", name[2], "\n" ); fi; elif not IsInternallyConsistent( prg.program ) then Print( "#E program `", entry[3], "' not internally consistent\n" ); result:= false; else # Get a representation if available, and map the generators. gens:= OneAtlasGeneratingSetInfo( prg.groupname, prg.standardization, NrMovedPoints, [ 2 .. maxdeg ] ); if gens = fail then if verbose then Print( "#I no perm. repres. for `", prg.groupname, "', no check for `", entry[3], "'\n" ); fi; else gens:= AtlasGenerators( gens ); grp:= Group( gens.generators ); if IsBound( gens.size ) then SetSize( grp, gens.size ); fi; gens:= ResultOfStraightLineProgram( prg.program, gens.generators ); size:= Size( SubgroupNC( grp, gens ) ); if IsBound( prg.size ) and size <> prg.size then Print( "#E program `", entry[3], "' for group of order ", size, " not ", prg.size, "\n" ); result:= false; fi; fi; fi; od; fi; fi; # Return the result. return result; end; ############################################################################# ## #F AGR.Test.FileHeaders( [[,]] ) ## ## <#GAPDoc Label="test:AGR.Test.FileHeaders"> ## AGR.Test.FileHeaders( [tocid] ) ## ## checks whether all &MeatAxe; text format data files in the directory ## with identifier tocid have a header line that is consistent with ## the filename, and whether the contents of all &GAP; format data files ## in this directory is consistent with the contents of the file. ## ## <#/GAPDoc> ## AGR.Test.FileHeaders:= function( arg ) local result, toc, record, type, entry, test, triple; # Initialize the result. result:= true; if Length( arg ) = 2 then toc:= AtlasTableOfContents( arg[1] ); if toc = fail then # No test is reasonable. return true; fi; toc:= toc.TableOfContents; if IsBound( toc.( arg[2] ) ) then record:= toc.( arg[2] ); for type in AGR.DataTypes( "rep" ) do if IsBound( record.( type[1] ) ) then for entry in record.( type[1] ) do test:= type[2].TestFileHeaders( arg[1], arg[2], entry, type ); if not IsBool( test ) then Print( "#E ", test, " for ", entry[ Length( entry ) ], "\n" ); test:= false; fi; result:= test and result; od; fi; od; fi; elif Length( arg ) = 1 then for triple in AtlasOfGroupRepresentationsInfo.groupnames do result:= AGR.Test.FileHeaders( arg[1], triple[3] ) and result; od; elif Length( arg ) = 0 then result:= AGR.Test.FileHeaders( "local" ); fi; # Return the result. return result; end; ############################################################################# ## #F AGR.Test.BinaryFormat( [] ) ## ## <#GAPDoc Label="test:AGR.Test.BinaryFormat"> ## AGR.Test.BinaryFormat( [tocid] ) ## ## checks whether all &MeatAxe; text format data files in the directory ## with identifier tocid satisfy that applying first ## and then ## yields the same object. ## ## <#/GAPDoc> ## AGR.Test.BinaryFormat:= function( arg ) local tmpfile, tocid, result, r, gens, gen, test, cnv; # Create one temporary file. tmpfile:= Filename( DirectoryTemporary(), "testfile" ); # Get the data directory. if IsEmpty( arg ) then tocid:= "local"; else tocid:= arg[1]; fi; result:= true; for r in Concatenation( AllAtlasGeneratingSetInfos( "contents", tocid, IsPermGroup, true ), AllAtlasGeneratingSetInfos( "contents", tocid, Characteristic, IsPosInt ) ) do gens:= AtlasGenerators( r ); if gens <> fail then gens:= gens.generators; for gen in gens do test:= false; if IsPerm( gen ) then CMtxBinaryFFMatOrPerm( gen, LargestMovedPoint( gen ), tmpfile ); test:= true; elif IsMatrix( gen ) then cnv:= ConvertToMatrixRep( gen ); if IsInt( cnv ) then CMtxBinaryFFMatOrPerm( gen, cnv, tmpfile ); test:= true; fi; else Print( "#E not permutation or matrix for ", r, "\n" ); test:= false; result:= false; fi; if test and gen <> FFMatOrPermCMtxBinary( tmpfile ) then Print( "#E AGR.Test.BinaryFormat: differences for `", r, "'\n" ); result:= false; fi; od; fi; od; # Remove the temporary file. RemoveFile( tmpfile ); # Return the result. return result; end; ############################################################################# ## #F AGR.Test.Standardization( [] ) ## ## <#GAPDoc Label="test:AGR.Test.Standardization"> ## AGR.Test.Standardization() ## ## checks whether all generating sets corresponding to the same set of ## standard generators have the same element orders; for the case that ## straight line programs for computing certain class representatives are ## available, also the orders of these representatives are checked ## w. r. t. all generating sets. ## ## <#/GAPDoc> ## AGR.Test.Standardization:= function( arg ) local result, name, gapname, gensorders, cclorders, cycorders, tbl, info, gens, std, ords, pair, prg, names, choice; # Initialize the result. result:= true; if Length( arg ) = 0 then for name in AtlasOfGroupRepresentationsInfo.GAPnames do result:= AGR.Test.Standardization( name[1] ) and result; od; elif Length( arg ) = 1 and IsString( arg[1] ) then gapname:= arg[1]; if AGR.InfoForName( gapname ) = fail then Print( "#E AGR.Test.Standardization: no group with GAP name `", gapname, "'\n" ); return false; fi; gensorders:= []; cclorders:= []; cycorders:= []; tbl:= CharacterTable( gapname ); # Loop over the relevant representations. for info in AllAtlasGeneratingSetInfos( gapname ) do gens:= AtlasGenerators( info.identifier ); std:= gens.standardization; # Check that the generators are invertible, # and that the orders are equal in all representations. if ForAll( gens.generators, x -> Inverse( x ) <> fail ) then ords:= List( gens.generators, Order ); else ords:= [ fail ]; fi; if not ForAll( ords, IsInt ) then Print( "#E representation `", gens.identifier[2], "': non-finite order\n" ); result:= false; elif IsBound( gensorders[ std+1 ] ) then if gensorders[ std+1 ] <> ords then Print( "#E '", gapname, "': representation '", gens.identifier[2], "':\n#E incompatible generator orders ", ords, " and ", gensorders[ std+1 ], "\n" ); result:= false; fi; else gensorders[ std+1 ]:= ords; fi; # If scripts for computing representatives of cyclic subgroups # or representatives of conjugacy classes are available # then check that their orders are equal in all representations. for pair in [ [ cclorders, "classes" ], [ cycorders, "cyclic" ] ] do if not IsBound( pair[1][ std+1 ] ) then prg:= AtlasProgram( gapname, std, pair[2] ); if prg = fail then pair[1][ std+1 ]:= fail; else pair[1][ std+1 ]:= [ prg.program, List( ResultOfStraightLineProgram( prg.program, gens.generators ), Order ) ]; if tbl <> fail then names:= AtlasClassNames( tbl ); if IsBound( prg.outputs ) then choice:= List( prg.outputs, x -> Position( names, x ) ); if ( not fail in choice ) and pair[1][ std+1 ][2] <> OrdersClassRepresentatives( tbl ){ choice } then Print( "#E '", gapname, "': representation '", gens.identifier[2], "':\n#E ", pair[2], " orders differ from character table\n" ); result:= false; fi; else Print( "#E no component `outputs' in `", pair[2], "' for `", gapname, "'\n" ); fi; fi; fi; elif pair[1][ std+1 ] <> fail then if pair[1][ std+1 ][2] <> List( ResultOfStraightLineProgram( pair[1][ std+1 ][1], gens.generators ), Order ) then Print( "#E '", gapname, "': representation '", gens.identifier[2], "':\n#E incompatible ", pair[2], " orders\n" ); result:= false; fi; fi; od; od; fi; # Return the result. return result; end; ############################################################################# ## #F AGR.Test.StdTomLib( [] ) ## ## <#GAPDoc Label="test:AGR.Test.StdTomLib"> ## AGR.Test.StdTomLib() ## ## checks whether the standard generators are compatible with those that ## occur in the TomLib package. ## ## <#/GAPDoc> ## AGR.Test.StdTomLib:= function( arg ) local result, name, tomnames, tbl, tom, gapname, info, allgens, stdavail, verified, falsified, G, i, type, prg, res, gens, G2, fitstotom, fitstohom; if TestPackageAvailability( "TomLib", "1.0" ) <> true then Print( "#E TomLib not loaded, cannot verify ATLAS standardizations\n" ); return false; fi; # Initialize the result. result:= true; if Length( arg ) = 0 then for name in AtlasOfGroupRepresentationsInfo.GAPnames do result:= AGR.Test.StdTomLib( name[1] ) and result; od; # Check also that all tables of marks which provide a standardization # info with an `ATLAS' component belong to ATLAS groups. #T ... with a `standardization' component ... tomnames:= Set( List( Filtered( LIBTOMKNOWN.STDGEN, x -> x[2] <> "N" ), x -> x[1] ) ); for name in AtlasOfGroupRepresentationsInfo.GAPnames do tbl:= CharacterTable( name[1] ); if tbl <> fail then tom:= TableOfMarks( tbl ); if tom <> fail then RemoveSet( tomnames, Identifier( tom ) ); fi; fi; od; if not IsEmpty( tomnames ) then Print( "#E cannot verify ATLAS standardizations for tables of ", "marks in ", tomnames, "\n" ); result:= false; fi; elif Length( arg ) = 1 and IsString( arg[1] ) then gapname:= arg[1]; if AGR.InfoForName( gapname ) = fail then Print( "#E AGR.Test.Standardization: no group with GAP name `", gapname, "'\n" ); return false; fi; tbl:= CharacterTable( gapname ); # Check the ATLAS standardization against the TomLib standardization. # (We consider only ATLAS permutation representations.) if tbl = fail then tom:= fail; else tom:= TableOfMarks( tbl ); fi; if tom <> fail then if HasStandardGeneratorsInfo( tom ) then info:= StandardGeneratorsInfo( tom )[1]; #T can be a longer list??? else info:= fail; fi; allgens:= AllAtlasGeneratingSetInfos( gapname, IsPermGroup, true ); stdavail:= Set( List( allgens, x -> x.standardization ) ); allgens:= List( stdavail, i -> First( allgens, x -> x.standardization = i ) ); verified:= []; falsified:= []; G:= UnderlyingGroup( tom ); # Apply `pres' and `check' scripts to the TomLib generators. for i in stdavail do for type in [ "pres", "check" ] do prg:= AtlasProgram( gapname, i, type ); if prg <> fail then res:= ResultOfStraightLineDecision( prg.program, GeneratorsOfGroup( G ) ); if res = true then AddSet( verified, i ); if info = fail then Print( "#I ", gapname, ": extend TomLib standardization info, ", "standardization = ", i, "\n" ); elif IsBound( info.standardization ) and info.standardization <> i then Print( "#E ", gapname, ": set TomLib standardization info to ", i, " not ", info.standardization, "\n" ); result:= false; fi; else AddSet( falsified, i ); if info <> fail and IsBound( info.standardization ) and info.standardization = i then Print( "#E ", gapname, ": TomLib standardization info is not ", info.standardization, "\n" ); result:= false; fi; fi; fi; od; od; if info <> fail then # Compare the ATLAS generators with the TomLib standardization. for gens in allgens do gens:= AtlasGenerators( gens.identifier ); if info.script = fail then Print( "#E ", gapname, ": fail script in TomLib standardization\n" ); else G2:= Group( gens.generators ); fitstotom:= IsStandardGeneratorsOfGroup( info, G2, gens.generators ); fitstohom:= GroupHomomorphismByImages( G, G2, GeneratorsOfGroup( G ), gens.generators ) <> fail; if fitstotom <> fitstohom then Print( "#E ", gapname, ": IsStandardGeneratorsOfGroup and homom. construction for standardization ", gens.standardization, " inconsistent\n" ); fi; if fitstotom then AddSet( verified, gens.standardization ); if IsBound( info.standardization ) then if info.standardization <> gens.standardization then Print( "#I ", gapname, ": TomLib standardization is ", gens.standardization, " not ", info.standardization, "\n" ); result:= false; fi; else Print( "#I ", gapname, ": TomLib standardization is ", gens.standardization, "\n" ); fi; else AddSet( falsified, gens.standardization ); if IsBound( info.standardization ) and info.standardization = gens.standardization then Print( "#E ", gapname, ": TomLib standardization is not ", info.standardization, "\n" ); fi; fi; fi; od; elif not IsEmpty( stdavail ) then Print( "#I ", gapname, ": extend STDGEN info\n" ); fi; if verified = [] and falsified = stdavail then if info = fail then Print( "#I ", gapname, ": extend TomLib standardization info, ", "ATLAS = \"N\"\n" ); elif info.ATLAS = true then Print( "#E ", gapname, ": TomLib standardization info must be ATLAS = \"N\"\n" ); fi; elif info <> fail and info.ATLAS = false then Print( "#E ", gapname, ": cannot verify TomLib info ATLAS = \"N\"\n" ); fi; fi; fi; # Return the result. return result; end; ############################################################################# ## #F AGR.Test.Files( [[, ]] ) ## ## <#GAPDoc Label="test:AGR.Test.Files"> ## AGR.Test.Files( [tocid] ) ## ## checks whether the &MeatAxe; text files that are stored in the ## directory with identifier tocid can be read with ## such that the result is not fail. ## The function does not check whether the first line of a &MeatAxe; text ## file is consistent with the filename, since this can be tested with ## AGR.Test.FileHeaders. ## ## <#/GAPDoc> ## AGR.Test.Files:= function( arg ) local result, toc, record, type, entry, triple; # Initialize the result. result:= true; if IsEmpty( arg ) then result:= AGR.Test.Files( "local" ); elif Length( arg ) = 1 then for triple in AtlasOfGroupRepresentationsInfo.groupnames do result:= AGR.Test.Files( arg[1], triple[3] ) and result; od; elif Length( arg ) = 2 then toc:= AtlasTableOfContents( arg[1] ); if toc = fail then return false; fi; toc:= toc.TableOfContents; if IsBound( toc.( arg[2] ) ) then record:= toc.( arg[2] ); for type in AGR.DataTypes( "rep" ) do if IsBound( record.( type[1] ) ) then for entry in record.( type[1] ) do result:= type[2].TestFiles( arg[1], arg[2], entry, type ) and result; od; fi; od; fi; fi; # Return the result. return result; end; ############################################################################# ## #F AGR.Test.ClassScripts( [] ) ## ## <#GAPDoc Label="test:AGR.Test.ClassScripts"> ## AGR.Test.ClassScripts() ## ## checks whether the straight line programs that compute representatives ## of certain conjugacy classes are consistent with information stored on ## the &GAP; character table of the group in question, in the sense that ## the given class names really occur in the character table and that ## the element orders and centralizer orders for the classes are correct. ## ## <#/GAPDoc> ## AGR.Test.ClassScripts:= function( arg ) local result, maxdeg, groupname, gapname, toc, record, std, name, prg, tbl, outputs, ident, classnames, map, gens, roots, grp, reps, orders1, orders2, cents1, cents2, triple, pos, pos2, cycscript; # Initialize the result. result:= true; maxdeg:= AGR.Test.MaxTestDegree; if Length( arg ) = 1 and IsString( arg[1] ) then groupname:= arg[1]; gapname:= First( AtlasOfGroupRepresentationsInfo.GAPnames, pair -> pair[2] = groupname ); if gapname = fail then Print( "#E no group with name `", groupname, "'\n" ); return false; fi; gapname:= gapname[1]; toc:= AtlasTableOfContents( "local" ); if toc = fail then return false; fi; toc:= toc.TableOfContents; #T admit also private tables of contents! if IsBound( toc.( groupname ) ) then record:= toc.( groupname ); for name in [ "cyclic", "classes", "cyc2ccl" ] do if IsBound( record.( name ) ) then for std in Set( List( record.( name ), x -> x[1] ) ) do prg:= AtlasProgram( gapname, std, name ); if prg = fail then Print( "#E inconsistent program `", name, "' for `", gapname, "'\n" ); result:= false; else # Fetch the character table of the group. # (No further tests are possible if it is not available.) tbl:= CharacterTable( gapname ); if tbl <> fail then ident:= prg.identifier[2]; classnames:= AtlasClassNames( tbl ); if IsBound( prg.outputs ) then outputs:= prg.outputs; map:= List( outputs, x -> Position( classnames, x ) ); else Print( "#E no component `outputs' in `", name, "' for `", gapname, "'\n" ); result:= false; outputs:= [ "-" ]; map:= [ fail ]; fi; prg:= prg.program; # (If `-' signs occur then we cannot test the names, # but the number of outputs can be checked.) roots:= ClassRoots( tbl ); roots:= Filtered( [ 1 .. Length( roots ) ], i -> IsEmpty( roots[i] ) ); roots:= Set( List( roots, x -> ClassOrbit( tbl, x ) ) ); if ForAll( outputs, x -> not '-' in x ) then # Check the class names. if fail in map then Print( "#E strange class names ", Difference( outputs, classnames ), " for `dataword/", ident, "'\n" ); result:= false; fi; if name in [ "classes", "cyc2ccl" ] and Set( classnames ) <> Set( outputs ) then Print( "#E class names ", Difference( classnames, outputs ), " not hit for `dataword/", ident, "'\n" ); result:= false; fi; if name = "cyclic" then # Check whether all maximally cyclic subgroups # are covered. roots:= Filtered( roots, list -> IsEmpty( Intersection( outputs, classnames{ list } ) ) ); if not IsEmpty( roots ) then Print( "#E maximally cyclic subgroups ", List( roots, x -> classnames{ x } ), " not hit for `dataword/", ident, "'\n" ); result:= false; fi; fi; elif name = "cyclic" and Length( outputs ) <> Length( roots ) then Print( "#E no. of outputs and cyclic subgroups differ", " for `dataword/", ident, "'\n" ); fi; if not fail in map then # Compute the representatives in a representation. # (No further tests are possible if none is available.) gens:= OneAtlasGeneratingSetInfo( gapname, std, NrMovedPoints, [ 2 .. maxdeg ] ); if gens <> fail then gens:= AtlasGenerators( gens.identifier ); if gens <> fail then gens:= gens.generators; fi; if fail in gens then gens:= fail; fi; if not name in [ "cyclic", "classes" ] then # The input consists of the images of the standard # generators under the `cyc' script. pos:= Position( ident, '-' ) - 1; pos2:= pos; while ident[ pos2 ] <> 'W' do pos2:= pos2 - 1; od; cycscript:= Concatenation( groupname, "G", String( std ), "-cycW", ident{ [ pos2+1 .. pos ] } ); cycscript:= AtlasProgram( [ gapname, cycscript, std ] ); if cycscript = fail then gens:= fail; Print( "#E no script `", cycscript, "' available\n" ); result:= false; else gens:= ResultOfStraightLineProgram( cycscript.program, gens ); fi; fi; fi; if gens <> fail then grp:= Group( gens ); reps:= ResultOfStraightLineProgram( prg, gens ); if Length( reps ) <> Length( outputs ) then Print( "#E inconsistent output numbers for ", "`dataword/", ident, "'\n" ); result:= false; else # Check element orders and centralizer orders. orders1:= OrdersClassRepresentatives( tbl ){ map }; orders2:= List( reps, Order ); if orders1 <> orders2 then Print( "#E element orders of ", outputs{ Filtered( [ 1 .. Length( outputs ) ], i -> orders1[i] <> orders2[i] ) }, " differ for `dataword/", ident, "'\n" ); result:= false; fi; cents1:= SizesCentralizers( tbl ){ map }; cents2:= List( reps, x -> Size( Centralizer(grp,x) ) ); if cents1 <> cents2 then Print( "#E centralizer orders of ", outputs{ Filtered( [ 1 .. Length( outputs ) ], i -> cents1[i] <> cents2[i] ) }, " differ for `dataword/", ident, "'\n" ); result:= false; fi; fi; fi; fi; fi; fi; od; fi; od; fi; elif IsEmpty( arg ) then for triple in AtlasOfGroupRepresentationsInfo.groupnames do result:= AGR.Test.ClassScripts( triple[3] ) and result; od; fi; # Return the result. return result; end; ############################################################################# ## #F AGR.Test.CycToCcls( [] ) ## ## <#GAPDoc Label="test:AGR.Test.CycToCcls"> ## AGR.Test.CycToCcls() ## ## checks whether some straight line program that computes representatives ## of conjugacy classes of a group can be computed from the ordinary ## &GAP; character table of that group and a straight line program that ## computes representatives of cyclic subgroups. ## In this case the missing scripts are printed if the level of ## is at least 1. ## ## <#/GAPDoc> ## AGR.Test.CycToCcls:= function( arg ) local result, groupname, gapname, toc, tbl, record, pref, datadirs, entry, tomatch, cyc2ccl, str, prg, triple; # Initialize the result. result:= true; if Length( arg ) = 1 and IsString( arg[1] ) then groupname:= arg[1]; gapname:= First( AtlasOfGroupRepresentationsInfo.GAPnames, pair -> pair[2] = groupname ); if gapname = fail then Print( "#E no group with name `", groupname, "'\n" ); return false; fi; gapname:= gapname[1]; toc:= AtlasTableOfContents( "local" ); if toc = fail then return false; fi; toc:= toc.TableOfContents; # Fetch the character table of the group. # (No test is possible if it is not available.) tbl:= CharacterTable( gapname ); if tbl = fail then Print( "#I no character table of `", gapname, "' is available\n" ); return true; elif not IsBound( toc.( groupname ) ) then return true; fi; record:= toc.( groupname ); if IsBound( record.cyclic ) then if IsBound( record.cyc2ccl ) then cyc2ccl:= List( record.cyc2ccl, x -> SplitString( x[2], "-" ) ); else cyc2ccl:= []; fi; pref:= UserPreference( "AtlasRep", "AtlasRepDataDirectory" ); datadirs:= [ Directory( Concatenation( pref, "dataword" ) ) ]; for entry in record.cyclic do # Check the `cyc2ccl' scripts available. tomatch:= Filtered( entry[2], x -> x <> '-' ); cyc2ccl:= Filtered( cyc2ccl, x -> x[1] = tomatch ); if IsEmpty( cyc2ccl ) then # There is no `cyc2ccl' script but perhaps we can create it. str:= StringOfAtlasProgramCycToCcls( StringFile( Filename( datadirs, entry[2] ) ), tbl, "names" ); if str <> fail then prg:= ScanStraightLineProgram( str, "string" ); if prg = fail then Print( "#E automatically created script for `", tomatch, "-cclsW1' would be incorrect" ); fi; prg:= prg.program; #T check the composition? Print( "#I add the following script, in the new file `", tomatch, "-cclsW1':\n", str, "\n" ); result:= false; fi; fi; od; fi; elif IsEmpty( arg ) then for triple in AtlasOfGroupRepresentationsInfo.groupnames do result:= AGR.Test.CycToCcls( triple[3] ) and result; od; fi; # Return the result. return result; end; ############################################################################# ## #F AGR.Test.GroupOrders( [true] ) ## ## <#GAPDoc Label="test:AGR.Test.GroupOrders"> ## AGR.Test.GroupOrders() ## ## checks whether the group orders stored in the GAPnames component ## of coincide with the ## group orders computed from an &ATLAS; permutation representation of ## degree up to AGR.Test.MaxTestDegree, ## from the character table or the table of marks with the given name, ## or from the structure of the name. ## Supported is a splitting of the name at the first dot (.), ## where the two parts of the name are examined with the same criteria in ## order to derive the group order. ## ## <#/GAPDoc> ## AGR.Test.GroupOrders:= function( arg ) local verbose, formats, maxdeg, SizesFromName, result, entry, size; verbose:= ( Length( arg ) <> 0 and arg[1] = true ); formats:= [ [ [ "L", IsDigitChar, "(", IsDigitChar, ")" ], l -> Size( PSL( l[2], l[4] ) ) ], [ [ "2.L", IsDigitChar, "(", IsDigitChar, ")" ], l -> 2 * Size( PSL( l[2], l[4] ) ) ], [ [ "S", IsDigitChar, "(", IsDigitChar, ")" ], l -> Size( PSp( l[2], l[4] ) ) ], [ [ "2.S", IsDigitChar, "(", IsDigitChar, ")" ], l -> 2 * Size( PSp( l[2], l[4] ) ) ], [ [ "U", IsDigitChar, "(", IsDigitChar, ")" ], l -> Size( PSU( l[2], l[4] ) ) ], ]; maxdeg:= AGR.Test.MaxTestDegree; SizesFromName:= function( name ) local result, pair, parse, tbl, tom, flag, data, pos, size1, size2; result:= []; # Deal with the case of integers. if ForAll( name, x -> IsDigitChar( x ) or x = '^' ) then #T improve: admit also brackets and '+' (problem of *matching* brackets) # No other criterion matches with this format, so we return. return [ EvalString( name ) ]; fi; for pair in formats do parse:= ParseBackwards( name, pair[1] ); if parse <> fail then AddSet( result, pair[2]( parse ) ); fi; od; # Try to use the character table information. tbl:= CharacterTable( name ); if tbl <> fail then AddSet( result, Size( tbl ) ); fi; # Try to use the table of marks information. tom:= TableOfMarks( name ); if tom <> fail then AddSet( result, Size( UnderlyingGroup( tom ) ) ); fi; # Try to use the (locally available) database. flag:= AtlasOfGroupRepresentationsInfo.remote; AtlasOfGroupRepresentationsInfo.remote:= false; data:= OneAtlasGeneratingSetInfo( name, NrMovedPoints, [ 1 .. maxdeg ] ); # if data = fail then # data:= OneAtlasGeneratingSetInfo( name, # Dimension, [ 1 .. 10 ] ); # fi; if data <> fail then data:= AtlasGenerators( data ); if data <> fail then AddSet( result, Size( Group( data.generators ) ) ); fi; fi; AtlasOfGroupRepresentationsInfo.remote:= flag; # Try to evaluate the name structure. pos:= Position( name, '.' ); #T improve: split also at ':' if pos <> fail then size1:= SizesFromName( name{ [ 1 .. pos-1 ] } ); size2:= SizesFromName( name{ [ pos+1 .. Length( name ) ] } ); if Length( size1 ) = 1 and Length( size2 ) = 1 then AddSet( result, size1[1] * size2[1] ); elif Length( size1 ) > 1 or Length( size2 ) > 1 then Print( "#E group orders: problem with `", name, "'\n" ); fi; fi; return result; end; result:= true; for entry in AtlasOfGroupRepresentationsInfo.GAPnames do size:= SizesFromName( entry[1] ); if 1 < Length( size ) then Print( "#E AGR.Test.GroupOrders: several group orders for `", entry[1], "':\n#E ", size, "\n" ); result:= false; elif not IsBound( entry[3].size ) then if Length( size ) = 0 then if verbose then Print( "#I AGR.Test.GroupOrders: group order for `", entry[1], "' unknown\n" ); fi; else entry[3].size:= size[1]; Print( "#I AGR.Test.GroupOrders: set group order for `", entry[1], "'\n", "AGR.GRS(\"", entry[1], "\",", size[1], ");\n" ); fi; elif Length( size ) = 0 then if verbose then Print( "#I AGR.Test.GroupOrders: cannot verify group order for `", entry[1], "'\n" ); fi; elif size[1] <> entry[3].size then Print( "#E AGR.Test.GroupOrders: wrong group order for `", entry[1], "'\n" ); result:= false; fi; od; return result; end; ############################################################################# ## #F AGR.IsKernelInFrattiniSubgroup( , ) ## ## We try to deduce the orders of maximal subgroups from those of factor ## groups. ## Namely, if K is a normal subgroup in G such that K ## is contained in the Frattini subgroup \Phi(G) of G ## (i. e., contained in any maximal subgroup of G) ## then the maximal subgroups of G are exactly the preimages of the ## maximal subgroups of G/K under the natural epimorphism. ##

## Since G' \cap Z(G) \leq \Phi(G), this situation occurs in the case ## of central extensions of perfect groups, ## for example the orders of the maximal subgroups of 3.A_6 are ## the orders of the maximal subgroups of A_6, multiplied by the ## factor three. ##

## Since \Phi(N) \leq \Phi(G) holds for any normal subgroup N ## of G ## (see ), ## this situation occurs in the case of upward extensions of central ## extensions of perfect groups, ## for example the orders of the maximal subgroups of 3.A_6.2_1 are ## the orders of the maximal subgroups of A_6.2_1, multiplied by the ## factor three. ## AGR.IsKernelInFrattiniSubgroup:= function( tbl, factfus ) local ker, nam, subtbl, subfus, subker; # Compute the kernel K of the epimorphism. ker:= ClassPositionsOfKernel( factfus.map ); if Length( ker ) = 1 or not IsSubset( ClassPositionsOfDerivedSubgroup( tbl ), ker ) then return false; elif IsSubset( ClassPositionsOfCentre( tbl ), ker ) then # We have K \leq G' \cap Z(G), # so the maximal subgroups are exactly the preimages of the # maximal subgroups in the factor group. return true; fi; # Look for a suitable normal subgroup N of G. for nam in NamesOfFusionSources( tbl ) do subtbl:= CharacterTable( nam ); subfus:= GetFusionMap( subtbl, tbl ); if Size( subtbl ) = Sum( SizesConjugacyClasses( tbl ){ Set( subfus ) } ) and IsSubset( subfus, ker ) then # N is normal in G, with K \leq N subker:= Filtered( [ 1 .. Length( subfus ) ], i -> subfus[i] in ker ); if IsSubset( ClassPositionsOfDerivedSubgroup( subtbl ), subker ) and IsSubset( ClassPositionsOfCentre( subtbl ), subker ) then # We have K \leq N' \cap Z(N). return true; fi; fi; od; return false; end; ############################################################################# ## #F AGR.Test.MaxesOrders( [true] ) ## ## <#GAPDoc Label="test:AGR.Test.MaxesOrders"> ## AGR.Test.MaxesOrders() ## ## checks whether the orders of maximal subgroups stored in the component ## GAPnames of ## coincide with the orders computed from the restriction of an &ATLAS; ## permutation representation of degree up to ## AGR.Test.MaxTestDegree, ## from the character table, or the table of marks with the given name, ## or from the information about maximal subgroups of a factor group ## modulo a normal subgroup that is contained in the Frattini subgroup. ## ## <#/GAPDoc> ## AGR.Test.MaxesOrders:= function( arg ) local verbose, maxdeg, maxmax, MaxesInfoForName, result, toc, entry, info, size, struct; verbose:= ( Length( arg ) <> 0 and arg[1] = true ); maxdeg:= AGR.Test.MaxTestDegree; maxmax:= AGR.Test.HardCases.MaxNumberMaxes; MaxesInfoForName:= function( name ) local result, nrmaxes, tbl, oneresult, i, subtbl, tom, std, data, prg, gens, factfus, recurs, good; result:= []; nrmaxes:= []; # Try to use the character table information. tbl:= CharacterTable( name ); if tbl <> fail then if HasMaxes( tbl ) then AddSet( nrmaxes, Length( Maxes( tbl ) ) ); AddSet( result, List( Maxes( tbl ), nam -> Size( CharacterTable( nam ) ) ) ); else # Try whether individual maxes are supported. oneresult:= []; if tbl <> fail then for i in [ 1 .. maxmax ] do subtbl:= CharacterTable( Concatenation( Identifier( tbl ), "M", String( i ) ) ); if subtbl <> fail then oneresult[i]:= Size( subtbl ); fi; od; fi; if not IsEmpty( oneresult ) then AddSet( result, oneresult ); fi; fi; fi; # Try to use the table of marks information. # more tests: how to identify FusionsToLibTom( tom )? tom:= TableOfMarks( name ); if tom <> fail then AddSet( nrmaxes, Length( MaximalSubgroupsTom( tom )[1] ) ); AddSet( result, Reversed( SortedList( OrdersTom( tom ){ MaximalSubgroupsTom( tom )[1] } ) ) ); fi; # Try to use the database. for std in [ 1 .. AGR.Test.HardCases.MaxNumberStd ] do data:= OneAtlasGeneratingSetInfo( name, std, NrMovedPoints, [ 1 .. maxdeg ] ); # if data = fail then # data:= OneAtlasGeneratingSetInfo( name, std, # Dimension, [ 1 .. 10 ] ); # fi; if data <> fail then data:= AtlasGenerators( data ); if data <> fail then oneresult:= []; for i in [ 1 .. maxmax ] do prg:= AtlasProgram( name, std, "maxes", i ); if prg <> fail then gens:= ResultOfStraightLineProgram( prg.program, data.generators ); oneresult[i]:= Size( Group( gens ) ); fi; od; if not IsEmpty( oneresult ) then AddSet( result, oneresult ); fi; fi; fi; od; # Try to deduce the orders of maximal subgroups from those of factors. if tbl <> fail then for factfus in ComputedClassFusions( tbl ) do if AGR.IsKernelInFrattiniSubgroup( tbl, factfus ) then recurs:= MaxesInfoForName( factfus.name ); UniteSet( nrmaxes, recurs.nrmaxes ); UniteSet( result, recurs.maxesorders * Sum( SizesConjugacyClasses( tbl ){ ClassPositionsOfKernel( factfus.map ) } ) ); fi; od; fi; # Compact the partial results. good:= true; for oneresult in result{ [ 2 .. Length( result ) ] } do for i in [ 1 .. Length( oneresult ) ] do if IsBound( result[1][i] ) then if IsBound( oneresult[i] ) then if result[1][i] <> oneresult[i] then good:= false; fi; fi; elif IsBound( oneresult[i] ) then result[1][i]:= oneresult[i]; fi; od; od; if good and not IsEmpty( result ) then result:= [ result[1] ]; fi; return rec( maxesorders:= result, nrmaxes:= Set( nrmaxes ) ); end; result:= true; toc:= AtlasOfGroupRepresentationsInfo.TableOfContents.remote; for entry in AtlasOfGroupRepresentationsInfo.GAPnames do info:= MaxesInfoForName( entry[1] ); if not IsBound( entry[3].nrMaxes ) then if Length( info.nrmaxes ) = 1 then Print( "#I AGR.MXN: set maxes number for `", entry[1], "':\n", "AGR.MXN(\"", entry[1], "\",", info.nrmaxes[1], ");\n" ); fi; elif Length( info.nrmaxes ) <> 1 then if verbose then Print( "#I AGR.MXN: cannot verify stored maxes number ", "for `", entry[1], "'\n" ); fi; fi; size:= info.maxesorders; if 1 < Length( size ) then Print( "#E AGR.Test.MaxesOrders: several maxes orders for `", entry[1], "':\n#E ", size, "\n" ); result:= false; elif not IsBound( entry[3].sizesMaxes ) or IsEmpty( entry[3].sizesMaxes ) then # No maxes orders are stored yet. if Length( size ) = 0 then if verbose or ( IsBound( toc.( entry[2] ) ) and IsBound( toc.( entry[2] ).maxes ) and not IsEmpty( toc.( entry[2] ).maxes ) ) then Print( "#I AGR.Test.MaxesOrders: maxes orders for `", entry[1], "' unknown\n" ); fi; else if IsBound( entry[3].size ) then if entry[3].size in size[1] then Print( "#E AGR.Test.MaxesOrders: group order in maxes ", "orders list for `", entry[1], "'\n" ); result:= false; fi; if ForAny( size[1], x -> entry[3].size mod x <> 0 ) then Print( "#E AGR.Test.MaxesOrders: strange subgp. order for `", entry[1], "'\n" ); result:= false; fi; fi; if IsSortedList( - Compacted( size[1] ) ) then entry[3].sizesMaxes:= size[1]; Print( "#I AGR.Test.MaxesOrders: set maxes orders for `", entry[1], "':\n" ); Print( "AGR.MXO(\"", entry[1], "\",", Filtered( String( size[1] ), x -> x <> ' ' ), ");\n" ); else Print( "#E AGR.Test.MaxesOrders: computed maxes orders for `", entry[1], "' are not sorted:\n", size[1], "\n" ); fi; fi; elif Length( size ) = 0 then if verbose then Print( "#I AGR.Test.MaxesOrders: cannot verify stored ", "maxes orders for `", entry[1], "'\n" ); fi; elif not IsSortedList( - Compacted( size[1] ) ) then Print( "#E AGR.Test.MaxesOrders: computed maxes orders for `", entry[1], "' are not sorted:\n", size[1], "\n" ); elif size[1] <> entry[3].sizesMaxes then Print( "#E AGR.Test.MaxesOrders: computed and stored ", "maxes orders for `", entry[1], "' differ:\n" ); Print( "#E ", size[1], " vs. ", entry[3].sizesMaxes, "\n" ); result:= false; fi; od; return result; end; ############################################################################# ## #F AGR.Test.MaxesStructure( [true] ) ## ## <#GAPDoc Label="test:AGR.Test.MaxesStructure"> ## AGR.Test.MaxesStructure() ## ## checks whether the names of maximal subgroups stored in the component ## GAPnames of ## coincide with the names computed from the &GAP; character table with ## the given name. ## ## <#/GAPDoc> ## AGR.Test.SubgroupData:= function( arg ) local verbose, maxdeg, maxmax, MaxesInfoForName, result, toc, entry, info, size, struct; verbose:= ( Length( arg ) <> 0 and arg[1] = true ); maxdeg:= AGR.Test.MaxTestDegree; maxmax:= AGR.Test.HardCases.MaxNumberMaxes; MaxesInfoForName:= function( name ) local result, tbl, oneresult, i, subtbl, tom, std, data, prg, gens, factfus, recurs, good; result:= []; # Try to use the character table information. tbl:= CharacterTable( name ); if tbl <> fail then if HasMaxes( tbl ) then AddSet( result, List( Maxes( tbl ), AGR.StructureDescriptionCharacterTableName ) ); else # Try whether individual maxes are supported. oneresult:= []; if tbl <> fail then for i in [ 1 .. maxmax ] do subtbl:= CharacterTable( Concatenation( Identifier( tbl ), "M", String( i ) ) ); if subtbl <> fail then oneresult[i]:= AGR.StructureDescriptionCharacterTableName( Identifier( subtbl ) ); fi; od; fi; if not IsEmpty( oneresult ) then AddSet( result, oneresult ); fi; fi; fi; # Compact the partial results. good:= true; for oneresult in result{ [ 2 .. Length( result ) ] } do for i in [ 1 .. Length( oneresult ) ] do if IsBound( result[1][i] ) then if IsBound( oneresult[i] ) then if result[1][i] <> oneresult[i] then good:= false; fi; fi; elif IsBound( oneresult[i] ) then result[1][i]:= oneresult[i]; fi; od; od; if good and not IsEmpty( result ) then result:= [ result[1] ]; fi; return rec( maxesstructure:= result ); end; result:= true; toc:= AtlasOfGroupRepresentationsInfo.TableOfContents.remote; for entry in AtlasOfGroupRepresentationsInfo.GAPnames do info:= MaxesInfoForName( entry[1] ); struct:= info.maxesstructure; if 1 < Length( struct ) then Print( "#E AGR.Test.MaxesStructure: several maxes structures for `", entry[1], "':\n#E ", struct, "\n" ); result:= false; elif not IsBound( entry[3].structureMaxes ) then # No maxes structures are stored yet. if Length( struct ) = 0 then if verbose or ( IsBound( toc.( entry[2] ) ) and IsBound( toc.( entry[2] ).maxes ) and not IsEmpty( toc.( entry[2] ).maxes ) ) then Print( "#I AGR.Test.MaxesStructure: maxes structures for `", entry[1], "' unknown\n" ); fi; elif Length( struct ) = 1 then Print( "#I AGR.Test.MaxesStructure: set maxes structures for `", entry[1], "':\n", "AGR.MXS(\"", entry[1], "\",", Filtered( String( struct[1] ), x -> x <> ' ' ), ");\n" ); fi; elif Length( struct ) = 0 then if verbose then Print( "#I AGR.Test.MaxesStructure: cannot verify stored ", "maxes structures for `", entry[1], "'\n" ); fi; elif struct[1] <> entry[3].structureMaxes then Print( "#E AGR.Test.MaxesStructure: computed and stored ", "maxes structures for `", entry[1], "' differ:\n" ); Print( "#E ", struct[1], " vs. ", entry[3].structureMaxes, "\n" ); result:= false; fi; od; return result; end; ############################################################################# ## #F AGR.Test.StdCompatibility( [[, ]] ) ## ## <#GAPDoc Label="test:AGR.Test.StdCompatibility"> ## AGR.Test.StdCompatibility() ## ## checks whether the information about the compatibility of ## standard generators of a group and its factor groups that is stored in ## the GAPnames component of ## ## coincides with computed values. ##

## The following criterion is used for computing the value for a group ## G. ## Use the &GAP; Character Table Library to determine factor groups ## F of G for which standard generators are defined and ## moreover a presentation in terms of these standard generators is known. ## Evaluate the relators of the presentation in the standard generators of ## G, and let N be the normal closure of these elements in ## G. ## Then mapping the standard generators of F to the N-cosets ## of the standard generators of G is an epimorphism. ## If |G/N| = |F| holds then G/N and F are ## isomorphic, and the standard generators of G and F are ## compatible in the sense that mapping the standard generators of ## G to their N-cosets yields standard generators of ## F. ## ## <#/GAPDoc> ## AGR.Test.StdCompatibility:= function( arg ) local verbose, maxstd, CompInfoForEntry, result, entry, info, l; verbose:= ( Length( arg ) <> 0 and arg[ Length( arg ) ] = true ); maxstd:= AGR.Test.HardCases.MaxNumberStd; CompInfoForEntry:= function( entry ) local result, tbl, flag, fus, factstd, pres, std, gens, prg, res, ker, j, G, F, hom, facttbl; result:= []; tbl:= CharacterTable( entry[1] ); if tbl <> fail then flag:= AtlasOfGroupRepresentationsInfo.remote; AtlasOfGroupRepresentationsInfo.remote:= false; for fus in ComputedClassFusions( tbl ) do if 1 < Length( ClassPositionsOfKernel( fus.map ) ) then if AGR.InfoForName( fus.name ) <> fail then for factstd in [ 1 .. maxstd ] do pres:= AtlasProgram( fus.name, factstd, "presentation" ); if pres <> fail then # The two sets of generators are compatible iff the # relators in terms of the generators of the big group # generate the kernel of the epimorphism. for std in [ 1 .. maxstd ] do gens:= OneAtlasGeneratingSetInfo( entry[1], std ); if gens <> fail then gens:= AtlasGenerators( gens.identifier ); fi; if gens <> fail then prg:= StraightLineProgramFromStraightLineDecision( pres.program ); res:= ResultOfStraightLineProgram( prg, gens.generators ); ker:= Group( res ); # `ker' is assumed to be a very small group. if Size( tbl ) / Size( CharacterTable( fus.name ) ) = Size( ker ) then Add( result, [ std, fus.name, factstd, true ] ); else Add( result, [ std, fus.name, factstd, false ] ); fi; fi; od; else # Try to form the homomorphism object in GAP, # by mapping generators of the big group to generators # of the factor group. # If this defines a homomorphism and if this is surjective # then the generators are compatible. for std in [ 1 .. maxstd ] do facttbl:= CharacterTable( fus.name ); if ClassPositionsOfFittingSubgroup( facttbl ) = [1] then # currently classes scripts are available only for these tables, # so other cases are not really interesting at the moment ... G:= AtlasGroup( entry[1], std, IsPermGroup, true ); F:= AtlasGroup( fus.name, factstd, IsPermGroup, true ); if G <> fail and F <> fail then if NrMovedPoints( G ) <= AGR.Test.MaxTestDegree and NrMovedPoints( F ) <= AGR.Test.MaxTestDegree then #Print( "#I trying hom. ", entry[1], " ->> ", fus.name, "\n" ); hom:= GroupHomomorphismByImages( G, F, GeneratorsOfGroup( G ), GeneratorsOfGroup( F ) ); if hom <> fail then Add( result, [ std, fus.name, factstd, true ] ); else Add( result, [ std, fus.name, factstd, false ] ); fi; else #Print( "#I omit hom. ", entry[1], " ->> ", fus.name, ", too many points ...\n" ); fi; elif std = 1 and factstd = 1 then #Print( "#I no hom. ", entry[1], " ->> ", fus.name, " to try?\n" ); fi; fi; od; fi; od; fi; fi; od; AtlasOfGroupRepresentationsInfo.remote:= flag; fi; return result; end; result:= true; if Length( arg ) = 0 or ( Length( arg ) = 1 and IsBool( arg[1] ) ) then for entry in AtlasOfGroupRepresentationsInfo.GAPnames do result:= AGR.Test.StdCompatibility( entry, verbose ) and result; od; else entry:= arg[1]; info:= CompInfoForEntry( entry ); if not IsBound( entry[3].factorCompatibility ) then entry[3].factorCompatibility:= []; fi; if info <> entry[3].factorCompatibility then if verbose then Print( "#I AGR.Test.StdCompatibility: change compatibility info\n" ); for l in info do #T can be empty! Print( "AGR.STDCOMP(\"", entry[1], "\",", Filtered( String( l ), x -> x <> ' ' ), ");\n" ); od; fi; fi; if verbose then for l in Difference( entry[3].factorCompatibility, info ) do Print( "#I AGR.Test.StdCompatibility: cannot verify compatibility ", "info `", l, "' for `", entry[1], "'\n" ); od; fi; if ForAny( entry[3].factorCompatibility, l1 -> ForAny( info, l2 -> l1{[1..3]} = l2{[1..3]} and ( l1[4] <> l2[4] ) ) ) then Print( "#E AGR.Test.StdCompatibility: contradiction of ", "compatibility info for `", entry[1], "'\n" ); result:= false; fi; fi; return result; end; ############################################################################# ## #F AGR.Test.CompatibleMaxes( [[, ]] ) ## ## <#GAPDoc Label="test:AGR.Test.CompatibleMaxes"> ## AGR.Test.CompatibleMaxes() ## ## checks whether the information about deriving straight line programs ## for restricting to subgroups from straight line programs that belong ## to a factor group coincide with computed values. ##

## The following criterion is used for computing the value for a group ## G. ## If F is a factor group of G such that the standard ## generators of G and F are compatible ## (see the test function AGR.Test.StdCompatibility) ## and if there are a presentation for F and a permutation ## representation of G then it is checked whether the ## "maxes" type straight line programs for F can be used to ## compute generators for the maximal subgroups of G; ## if not then generators of the kernel of the natural epimorphism from ## G to F, must be added. ## ## <#/GAPDoc> ## AGR.Test.CompatibleMaxes:= function( arg ) local verbose, maxdeg, maxmax, CompMaxForEntry, result, toc, entry, info, stored, entry2, filt; verbose:= Length( arg ) <> 0 and arg[ Length( arg ) ] = true; maxdeg:= AGR.Test.MaxTestDegree; maxmax:= AGR.Test.HardCases.MaxNumberMaxes; CompMaxForEntry:= function( entry ) local result, tbl, l, factname, factstd, gens, i, prg, max; result:= []; tbl:= CharacterTable( entry[1] ); if tbl <> fail and IsBound( entry[3].sizesMaxes ) and IsBound( entry[3].factorCompatibility ) then # Maxes orders info and compatibility info are known. for l in Filtered( entry[3].factorCompatibility, x -> x[4] = true ) do # Check whether the maxes of the two groups are in bijection. factname:= l[2]; factstd:= l[3]; if ForAny( ComputedClassFusions( tbl ), fus -> fus.name = factname and AGR.IsKernelInFrattiniSubgroup( tbl, fus ) ) then gens:= OneAtlasGeneratingSetInfo( entry[1], l[1], NrMovedPoints, [ 1 .. maxdeg ] ); if gens <> fail then gens:= AtlasGenerators( gens.identifier ); fi; if gens <> fail then for i in [ 1 .. maxmax ] do prg:= AtlasProgram( factname, factstd, "maxes", i ); if prg <> fail and IsBound( entry[3].sizesMaxes[i] ) then # try the program for the ext. gp. max:= ResultOfStraightLineProgram( prg.program, gens.generators ); max:= Group( max ); if Size( max ) = entry[3].sizesMaxes[i] then # The program for the factor group is sufficient. Add( result, [ entry[2], factstd, i, [ prg.identifier[2] ] ] ); elif not IsBound( entry[3].kernelPrograms ) or ForAll( entry[3].kernelPrograms, x -> x[2] <> factname ) then Print( "#I SLP for kernel generators of ", entry[1], " ->> ", factname, " missing ", "\n#I (needed for max. ", i, ")\n" ); fi; fi; od; fi; fi; od; fi; return result; end; result:= true; toc:= AtlasOfGroupRepresentationsInfo.TableOfContents.remote; if Length( arg ) = 0 or ( Length( arg ) = 1 and IsBool( arg[1] ) ) then for entry in AtlasOfGroupRepresentationsInfo.GAPnames do result:= AGR.Test.CompatibleMaxes( entry, verbose ) and result; od; else entry:= arg[1]; info:= CompMaxForEntry( entry ); stored:= []; if IsBound( toc.( entry[2] ) ) and IsBound( toc.( entry[2] ).maxext ) then stored:= List( toc.( entry[2] ).maxext, x -> Concatenation( [ entry[2] ], x ) ); fi; for entry2 in info do filt:= Filtered( stored, x -> x{ [ 1 .. 3 ] } = entry2{ [ 1 .. 3 ] } and x[4][1] = entry2[4][1] ); if IsEmpty( filt ) then # The entry is new. if Length( entry2[4] ) = 1 then # The script for restricting the repres. of the factor group # is good enough for the group. Print( "#I AGR.TOCEXT: set entry\nAGR.TOCEXT(\"", entry2[1], "\",", entry2[2], ",", entry2[3], ",[\"", entry2[4][1], "\"]);\n" ); else # For restricting a repres. of the group, one needs the script # for the factor group plus some kernel elements. Print( "#I AGR.TOCEXT: set entry\nAGR.TOCEXT(\"", entry2[1], "\",", entry2[2], ",", entry2[3], ",[\"", entry2[4][1], "\",\"", entry2[4][2], "\"]);\n" ); fi; elif Length( entry2[4] ) <> Length( filt[1][4] ) then if Length( entry2[4] ) = 3 and Length( filt[1][4] ) = 2 then if entry2[4]{ [ 1, 2 ] } <> filt[1][4] then # We have already such an entry but it is different. Print( "#E AGR.TOCEXT: difference ", entry2, " vs. ", filt[1], "\n" ); result:= false; fi; #T check also equality of the script with a stored one if applicable! else # We have already such an entry but it is different. Print( "#E AGR.TOCEXT: difference ", entry2, " vs. ", filt[1], "\n" ); result:= false; fi; fi; od; for entry2 in stored do filt:= Filtered( info, x -> x{ [ 1 .. 3 ] } = entry2{ [ 1 .. 3 ] } and x[4][1] = entry2[4][1] ); if IsEmpty( filt ) then Print( "#I AGR.TOCEXT: cannot verify stored value ", entry2, "\n" ); fi; od; fi; return result; end; ############################################################################# ## #F AGR.IsEquivalentSLP( , ) ## ## simpleminded function; eventually better evaluate standard generators ## of the group in question ## AGR.IsEquivalentSLP:= function( lines1, lines2 ) local n, slp1, slp2, f, gens; if lines1 = lines2 then return true; fi; n:= 2; slp1:= StraightLineProgram( lines1, n ); slp2:= StraightLineProgram( lines2, n ); f:= FreeGroup( n ); gens:= GeneratorsOfGroup( f ); if ResultOfStraightLineProgram( slp1, gens ) = ResultOfStraightLineProgram( slp2, gens ) then return true; else return false; fi; end; ############################################################################# ## #F AGR.Test.KernelGenerators( [[, ]] ) ## ## <#GAPDoc Label="test:AGR.Test.KernelGenerators"> ## AGR.Test.KernelGenerators() ## ## checks whether the information stored in the GAPnames component ## of about ## straight line programs for computing generators of the kernels of ## natural epimorphisms between &ATLAS; groups ## coincides with computed values. ##

## The following criterion is used for computing the value for a group ## G. ## Use the &GAP; Character Table Library to determine factor groups ## F of G for which standard generators are defined ## such that mapping standard generators of G to those of ## F defines a homomorphism, and such that a presentation of ## F in terms of its standard generators is known. ## Evaluating the relators of the presentation in the standard generators ## of G yields normal subgroup generators for the kernel. ##

## A message is printed for each group name ## for which some straight line program for computing kernel generators ## was not stored but now was computed, ## or for which the stored info cannot be verified, ## ## <#/GAPDoc> ## AGR.Test.KernelGenerators:= function( arg ) local verbose, maxstd, CompInfoForEntry, result, pos, entry, new, old, i, l; verbose:= ( Length( arg ) <> 0 and arg[ Length( arg ) ] = true ); maxstd:= AGR.Test.HardCases.MaxNumberStd; CompInfoForEntry:= function( entry ) local result, info, std, factname, factstd, pres, gens, prg, res, ker, perm, words, kergens, sub, j, lines, G, F, hom, free, freegens, freestrs, iter, addprgs, w, ord, elm, facttbl; result:= []; for info in Filtered( entry[3].factorCompatibility, x -> x[4] = true ) do #T compute kernel generators also in other cases? #T where does this happen? and how do we get the homomorphism then? std:= info[1]; factname:= info[2]; factstd:= info[3]; if AGR.InfoForName( factname ) <> fail then pres:= AtlasProgram( factname, factstd, "presentation" ); if pres <> fail then # The two sets of generators are compatible. gens:= OneAtlasGeneratingSetInfo( entry[1], std ); if gens <> fail then gens:= AtlasGenerators( gens.identifier ); fi; if gens <> fail then prg:= StraightLineProgramFromStraightLineDecision( pres.program ); res:= ResultOfStraightLineProgram( prg, gens.generators ); ker:= Group( res ); # `ker' is assumed to be a very small group. # Create a script for generators of the kernel. perm:= Sortex( -List( res, Order ) ); res:= Permuted( res, perm ); words:= Permuted( [ 1 .. Length( res ) ], perm ); kergens:= [ words[1] ]; sub:= SubgroupNC( ker, [ res[1] ] ); j:= 1; while j <= Length( words ) and Size( sub ) <> Size( ker ) do j:= j+1; Add( kergens, words[j] ); sub:= ClosureGroup( sub, res[j] ); od; if Size( sub ) = Size( ker ) then lines:= LinesOfStraightLineProgram( RestrictOutputsOfSLP( prg, kergens ) ); Add( result, [ std, factname, lines ] ); else Print( "#I ", entry[1], ": not enough generators for the kernel found\n" ); fi; fi; else # Try to form the homomorphism object in GAP, # by mapping generators of the big group to generators # of the factor group. # If this defines a homomorphism and if this is surjective # then the generators are compatible. # For example, both 2.J2.2 and Isoclinic(2.J2.2) map to J2.2; # then also the maxes can be identified etc. facttbl:= CharacterTable( factname ); if ClassPositionsOfFittingSubgroup( facttbl ) = [1] then # currently classes scripts are available only for these tables, # so other cases are not really interesting at the moment ... G:= AtlasGroup( entry[1], std, IsPermGroup, true ); F:= AtlasGroup( factname, factstd, IsPermGroup, true ); if G <> fail and F <> fail then if NrMovedPoints( G ) <= AGR.Test.MaxTestDegree and NrMovedPoints( F ) <= AGR.Test.MaxTestDegree then #Print( "#I trying hom. ", entry[1], " ->> ", factname, "\n" ); hom:= GroupHomomorphismByImagesNC( G, F, GeneratorsOfGroup( G ), GeneratorsOfGroup( F ) ); if hom <> fail then # Find a script for generators of the kernel. free:= FreeSemigroup( Length( GeneratorsOfGroup( G ) ) ); freegens:= GeneratorsOfSemigroup( free ); freestrs:= List( freegens, String ); iter:= Iterator( free ); ker:= TrivialSubgroup( G ); addprgs:= []; while Size( ker ) * Size( F ) <> Size( G ) do w:= NextIterator( iter ); ord:= Order( MappedWord( w, freegens, GeneratorsOfGroup( F ) ) ); elm:= MappedWord( w, freegens, GeneratorsOfGroup( G ) )^ord; if not elm in ker then Add( addprgs, CompositionOfStraightLinePrograms( StraightLineProgram( [ [ [ 1, ord ], 2 ] ] ), StraightLineProgramNC( String( w ), freestrs ) ) ); ker:= ClosureGroup( ker, elm ); fi; od; lines:= LinesOfStraightLineProgram( IntegratedStraightLineProgram( addprgs ) ); Add( result, [ std, factname, lines ] ); fi; else #Print( "#I omit hom. ", entry[1], " ->> ", factname, ", too many points ...\n" ); fi; elif std = 1 and factstd = 1 then #Print( "#I no hom. ", entry[1], " ->> ", factname, " to try?\n" ); # fi; fi; fi; fi; fi; od; return result; end; result:= true; if Length( arg ) = 0 or ( Length( arg ) = 1 and IsBool( arg[1] ) ) then for entry in AtlasOfGroupRepresentationsInfo.GAPnames do result:= AGR.Test.KernelGenerators( entry, verbose ) and result; od; elif IsBound( arg[1][3].factorCompatibility ) then entry:= arg[1]; new:= CompInfoForEntry( entry ); if IsBound( entry[3].kernelPrograms ) then old:= ShallowCopy( entry[3].kernelPrograms ); else old:= []; fi; for i in [ 1 .. Length( old ) ] do pos:= Position( new, old[i] ); if pos <> fail then Unbind( old[i] ); Unbind( new[ pos ] ); else pos:= PositionProperty( new, l -> old[i]{[1..2]} = l{[1..2]} ); if pos <> fail then if AGR.IsEquivalentSLP( old[i][3], new[ pos ][3] ) then Unbind( old[i] ); Unbind( new[ pos ] ); else Print( "#E AGR.Test.KernelGenerators: contradiction of ", "kernel info for `", entry[1], "' at\n", "#E ", old[i], "\n" ); result:= false; fi; fi; fi; od; for l in new do Print( "#I AGR.Test.KernelGenerators: add kernel info\n", "AGR.KERPRG(\"", entry[1], "\",", Filtered( String( l ), x -> x <> ' ' ), ");\n" ); od; for l in old do Print( "#I AGR.Test.KernelGenerators: cannot verify kernel ", "info `", l, "' for `", entry[1], "'\n" ); od; fi; return result; end; ############################################################################# ## #F AGR.CharacterNameFromMultiplicities( , ) ## ## - to be used for tables of perfect groups only; ## in other cases, relative names should be used ## - see also `MFER.PermCharInfo_ATLAS_FromCoefficients' ## (which works only for mult.-free characters) ## AGR.CharacterNameFromMultiplicities:= function( tbl, mults ) local degrees, degreeset, positions, irrnames, i, alp, ATL, j, n, pair; if UnderlyingCharacteristic( tbl ) = 0 then if not IsPerfectCharacterTable( tbl ) then return fail; fi; elif not IsPerfectCharacterTable( OrdinaryCharacterTable( tbl ) ) then return fail; fi; degrees:= List( Irr( tbl ), x -> x[1] ); degreeset:= Set( degrees ); positions:= List( degreeset, x -> [] ); irrnames:= []; for i in [ 1 .. Length( degrees ) ] do Add( positions[ PositionSorted( degreeset, degrees[i] ) ], i ); od; alp:= List( "abcdefghijklmnopqrstuvwxyz", x -> [ x ] ); while Length( alp ) < Maximum( List( positions, Length ) ) do Append( alp, List( alp{ [ 1 .. 26 ] }, x -> Concatenation( "(", x, "')" ) ) ); od; if IsInt( mults ) then mults:= [ mults ]; fi; ATL:= []; for i in [ 1 .. Length( degreeset ) ] do ATL[i]:= ""; for j in [ 1 .. Length( positions[i] ) ] do n:= positions[i][j]; if n in mults then # appears once Append( ATL[i], alp[j] ); else pair:= First( mults, x -> IsList( x ) and x[1] = n ); if pair <> fail then # appears with larger mult. Append( ATL[i], alp[j] ); Append( ATL[i], "^" ); Append( ATL[i], String( pair[2] ) ); fi; fi; od; if ATL[i] <> "" then ATL[i]:= Concatenation( String( degreeset[i] ), ATL[i] ); fi; od; return JoinStringsWithSeparator( Filtered( ATL, x -> x <> "" ), "+" ); end; ############################################################################# ## #F AGR.Test.Characters( [[, [, ]]] ) ## ## <#GAPDoc Label="test:AGR.Test.Characters"> ## AGR.Test.Characters( [tocid] ) ## ## checks the stored character information for the matrix and permutation ## representations that are stored in the directory with identifier ## tocid. ## ## <#/GAPDoc> ## AGR.Test.Characters:= function( arg ) local result, name, toc, cond, grpname, tbl, classnames, ccl, cyc, entry, outputs1, std, prg1, poss, nam, ord, parts, outputs, prgs2, info, p, id, modtbl, fus, phi, gens, galoisfams, choice, i, pos, prgs, prg2, repprg, rep, val, dec, j, map, parsed, charpos, test; # Initialize the result. result:= true; if IsEmpty( arg ) then return AGR.Test.Characters( "local" ); elif Length( arg ) = 1 then for name in AtlasOfGroupRepresentationsInfo.GAPnames do result:= AGR.Test.Characters( arg[1], name[1] ) and result; od; return result; elif Length( arg ) = 2 then toc:= AtlasTableOfContents( arg[1] ); name:= arg[2]; cond:= []; elif Length( arg ) = 3 then toc:= AtlasTableOfContents( arg[1] ); name:= arg[2]; cond:= arg[3]; fi; if toc = fail then return true; fi; toc:= toc.TableOfContents; grpname:= AGR.InfoForName( name ); if grpname = fail then Print( "#E no AtlasRep info stored for ", name, "\n" ); return false; elif not IsBound( toc.( grpname[2] ) ) then # This table of contents has no info for `name'. return true; fi; tbl:= CharacterTable( name ); if tbl = fail then # There is nothing to identify. return true; fi; classnames:= AtlasClassNames( tbl ); ccl:= AtlasProgram( name, "classes" ); cyc:= AtlasProgram( name, "cyclic" ); if ccl <> fail then if not IsBound( ccl.outputs ) then Print( "#E no component `outputs' in ccl script for ", name, "\n" ); return false; fi; outputs1:= ccl.outputs; std:= ccl.standardization; prg1:= ccl.program; cyc:= fail; elif cyc <> fail then if not IsBound( cyc.outputs ) then Print( "#E no component `outputs' in cyc script for ", name, "\n" ); return false; fi; outputs1:= cyc.outputs; std:= cyc.standardization; prg1:= cyc.program; # Form all possibilities for proper class names. poss:= []; for nam in outputs1 do if nam in classnames then Add( poss, [ nam ] ); else # Assume that only single letters appear. # L216d4G1-cycW1:echo "Classes 15ABCD 17EFGH 10AB 8A 12A'" # Sz32d5G1-cycW1:echo "Classes 25A-E 31A-O 41A-J 20A-B'''' 25F-F''''" # TD42d3G1-cycW1:echo "Classes 6B 12A 13ABC 18ABC 21ABC 28ABC 6D 12C' 12E 18D' 21D 24A 24B" ord:= nam{ [ 1 .. PositionProperty( nam, IsAlphaChar ) - 1 ] }; if '-' in nam then parts:= SplitString( nam{ [ Length( ord ) + 1 .. Length( nam ) ] }, "-" ); Add( poss, List( Filtered( List( CHARS_UALPHA, x -> [ x ] ), x -> parts[1] <= x and x <= parts[2] ), y -> Concatenation( ord, y ) ) ); else Add( poss, List( nam{ [ Length( ord ) + 1 .. Length( nam ) ] }, y -> Concatenation( ord, [ y ] ) ) ); fi; fi; od; if ForAny( poss, IsEmpty ) then Print( "#E not all classes identified in cyc script for ", name, "\n" ); return false; fi; outputs:= List( Cartesian( poss ), names -> Concatenation( [ "oup ", String( Length( names ) ), " ", JoinStringsWithSeparator( names, " " ), "\n", "echo \"Classes ", JoinStringsWithSeparator( names, " " ), "\"" ] ) ); outputs:= List( outputs, prgstring -> StringOfAtlasProgramCycToCcls( prgstring, tbl, "names" ) ); outputs:= List( outputs, x -> ScanStraightLineProgram( x, "string" ) ); prgs2:= List( outputs, x -> rec( program:= CompositionOfStraightLinePrograms( x.program, prg1 ), outputs:= x.outputs ) ); else # We have no script for computing enough class representatives. return true; fi; for info in CallFuncList( AllAtlasGeneratingSetInfos, Concatenation( [ name, std ], cond ) ) do if IsBound( info.p ) then # a permutation representation p:= 0; id:= info.identifier[2][1]; modtbl:= tbl; fus:= [ 1 .. Length( classnames ) ]; elif Characteristic( info.ring ) = 0 then p:= 0; id:= info.identifier[2]; modtbl:= tbl; fus:= [ 1 .. Length( classnames ) ]; else p:= Characteristic( info.ring ); id:= info.identifier[2][1]; modtbl:= tbl mod p; if modtbl <> fail then fus:= GetFusionMap( modtbl, tbl ); else fus:= fail; fi; fi; id:= id{ [ 1 .. Position( id, '.' )-1 ] }; phi:= fail; if fus = fail then Print( "#I no Brauer table available for identifying ", id, "\n" ); else gens:= AtlasGenerators( info ); if gens <> fail then # Determine representatives of Galois orbits. galoisfams:= GaloisMat( TransposedMat( Irr( modtbl ) ) ).galoisfams; choice:= Filtered( [ 1 .. Length( galoisfams ) ], i -> galoisfams[i] <> 0 ); phi:= []; # Print( "# need ", Length( choice ), " values\n#\c" ); for i in [ 1 .. Length( choice ) ] do pos:= fus[ choice[i] ]; if classnames[ pos ] in outputs1 then # The character value is uniquely determined. prgs:= [ rec( program:= prg1, outputs:= outputs1 ) ]; else # We have to check several possibilities. prgs:= prgs2; fi; for prg2 in prgs do repprg:= RestrictOutputsOfSLP( prg2.program, Position( prg2.outputs, classnames[ pos ] ) ); rep:= ResultOfStraightLineProgram( repprg, gens.generators ); if IsBound( info.p ) then val:= info.p - NrMovedPoints( rep ); elif Characteristic( info.ring ) = 0 then val:= TraceMat( rep ); else val:= BrauerCharacterValue( rep ); fi; if not IsBound( phi[i] ) then phi[i]:= val; elif phi[i] <> val then Print( "#I representation ", id, " yields information about class ", classnames[ pos ], "\n" ); phi:= fail; break; fi; od; if phi = fail then break; fi; # Print( i, " \c"); od; # Print("\n# have them!\n"); if phi = fail then Print( "#I cannot write down character for ", gens.identifier, "\n" ); else dec:= Decomposition( List( Irr( modtbl ), x -> x{ choice } ), [ phi ], "nonnegative" )[1]; if dec = fail then Print( "#I not decomposable character for ", id, ":\n", phi, "\n" ); phi:= fail; else pos:= []; for i in [ 1 .. Length( dec ) ] do if dec[i] = 1 then Add( pos, i ); elif 1 < dec[i] then Add( pos, [ i, dec[i] ] ); fi; od; if Length( pos ) = 1 and IsInt( pos[1] ) then pos:= pos[1]; fi; fi; fi; fi; fi; # Check the character data stored for this representation. map:= AtlasOfGroupRepresentationsInfo.characterinfo; if not IsBound( map.( name ) ) then map.( name ):= []; fi; map:= map.( name ); if p = 0 then charpos:= 1; else charpos:= p; fi; if not IsBound( map[ charpos ] ) then map[ charpos ]:= [ [], [] ]; fi; map:= map[ charpos ]; if phi = fail then # Test that NO character info is stored. if id in map[2] then Print( "#E cannot verify stored character info for ", id, "\n" ); fi; elif id in map[2] then # Test that NO OTHER character info is stored. if map[1][ Position( map[2], id ) ] <> pos then Print( "#E stored and computed character info for `", id, "' differ\n" ); fi; else nam:= AGR.CharacterNameFromMultiplicities( modtbl, pos ); if nam <> fail then # Test whether the character name is compatible with `id'. if IsInt( pos ) then parsed:= AGR.ParseFilenameFormat( id, [ [ [ IsChar ], [ "f", IsDigitChar, "r", IsDigitChar, AGR.IsLowerAlphaOrDigitChar, "B", IsDigitChar, ".m", IsDigitChar ] ], [ ParseBackwards, ParseForwards ] ] ); if ( parsed[8] = "" and nam <> Concatenation( String( parsed[7] ), "a" ) ) or ( parsed[8] <> "" and nam <> Concatenation( String( parsed[7] ), parsed[8] ) ) then Print( "#E character name `", nam, "' contradicts `", id, "'\n" ); fi; fi; fi; pos:= ReplacedString( String( pos ), " ", "" ); Print( "#I add new info\n", "AGR.CHAR(\"", name, "\",\"", id, "\",", p, ",", pos ); if nam <> fail then Print( ",\"", nam, "\"" ); fi; Print( ");\n" ); fi; od; return result; end; ############################################################################# ## #F AGR.PrimitivityInfo( ) ## ## is a record as returned by `OneAtlasGeneratingSetInfo', ## for a permutation representation. ## ## - If a perm. repres. is intransitive then just compute the orbit lengths. ## - For a transitive perm. repres. of degree n, say, check primitivity: ## - If the restriction to a maximal subgroup fixes a point then ## this maximal subgroup is identified as the point stabilizer. ## - If the the degree is not an index of a maximal subgroup then we know ## that the repres. is not primitive. ## - If the restriction from G to a maximal subgroup M of G has an orbit ## of length n / [G:M] then M contains the point stabilizer; so if the ## restriction to M does not fix a point then the repres. is not ## primitive, and we know a maximal overgroup of the point stabilizer. ## AGR.PrimitivityInfo:= function( inforec ) local gens, gapname, orbs, G, tr, rk, atlasinfo, size, indices, cand, result, i, prg, rest, filt, tbl, max, stab, maxmax, maxcand; gens:= AtlasGenerators( inforec ); if gens <> fail then gens:= gens.generators; gapname:= inforec.groupname; # Check whether the group is transitive. orbs:= OrbitsPerms( gens, [ 1 .. inforec.p ] ); if 1 < Length( orbs ) then return rec( isPrimitive:= false, transitivity:= 0, orbitLengths:= SortedList( List( orbs, Length ) ), comment:= "explicit computation of orbits" ); fi; atlasinfo:= First( AtlasOfGroupRepresentationsInfo.GAPnames, x -> x[1] = gapname ); # Compute transitivity and primitivity. G:= Group( gens ); if IsBound( atlasinfo[3].size ) then SetSize( G, atlasinfo[3].size ); fi; tr:= Transitivity( G ); rk:= RankAction( G ); if IsBound( atlasinfo[3].nrMaxes ) and IsBound( atlasinfo[3].sizesMaxes ) and Number( atlasinfo[3].sizesMaxes ) = atlasinfo[3].nrMaxes then size:= Size( G ); indices:= List( atlasinfo[3].sizesMaxes, x -> size / x ); cand:= Filtered( [ 1 .. Length( indices ) ], i -> inforec.p mod indices[i] = 0 ); if inforec.p in indices and Length( cand ) = 1 then # The point stabilizer is contained in a unique class of maxes, # and since the degree occurs as index of a maximal subgroup, # this representation is necessarily primitive. # Moreover, we know the class of maximal subgroups that are # the point stabilizers. result:= rec( isPrimitive:= true, transitivity:= tr, rankAction:= rk, class:= cand[1], comment:= "unique class of maxes for given degree" ); if IsBound( atlasinfo[3].structureMaxes ) and IsBound( atlasinfo[3].structureMaxes[ cand[1] ] ) then result.structure:= atlasinfo[3].structureMaxes[ cand[1] ]; fi; return result; fi; else cand:= [ 1 .. AGR.Test.HardCases.MaxNumberMaxes ]; fi; # Check explicit restrictions to maximal subgroups M. # (If we know their orders then we check only those that can contain # the point stabilizer U.) for i in cand do prg:= AtlasProgram( gapname, "maxes", i ); if prg <> fail then rest:= ResultOfStraightLineProgram( prg.program, gens ); if NrMovedPoints( rest ) < inforec.p then # If the restriction to M fixes a point then M is equal to U. result:= rec( isPrimitive:= true, transitivity:= tr, rankAction:= rk, class:= i, comment:= "restriction fixes a point" ); if IsBound( atlasinfo[3].structureMaxes ) and IsBound( atlasinfo[3].structureMaxes[i] ) then result.structure:= atlasinfo[3].structureMaxes[i]; fi; return result; elif IsBound( atlasinfo[3].sizesMaxes ) and IsBound( atlasinfo[3].sizesMaxes[i] ) then if inforec.p * atlasinfo[3].sizesMaxes[i] / Size( G ) in OrbitLengths( Group( rest ) ) then # The length of the M-orbit of a point is equal to the quotient # |M|/|U|, thus U is a proper subgroup of M. result:= rec( isPrimitive:= false, transitivity:= tr, rankAction:= rk, class:= i, comment:= "restriction contains point stab." ); if IsBound( atlasinfo[3].structureMaxes ) and IsBound( atlasinfo[3].structureMaxes[i] ) then # We know a maximal overgroup M of the stabilizer U. # Try to identify also U itself: # - If U is trivial then nothing is to do. # - If [M:U] is the index of the largest maximal subgroup of M # then take the description of it. # - If [M:U] = 2 and [M:M']_2 = 2 then U is the unique index # two subgroup of M. result.overgroup:= atlasinfo[3].structureMaxes[i]; if inforec.p = Size( G ) then result.subgroup:= "1"; else tbl:= CharacterTable( inforec.groupname ); if tbl <> fail then max:= CharacterTable( result.overgroup ); if max <> fail then if inforec.p * atlasinfo[3].sizesMaxes[i] / Size( G ) = 2 and Length( LinearCharacters( max ) ) mod 4 = 2 then stab:= Filtered( NamesOfFusionSources( max ), u -> Size( CharacterTable( u ) ) = Size( max ) / 2 ); if Length( stab ) = 1 then result.subgroup:= stab[1]; elif HasConstructionInfoCharacterTable( max ) and [ "Cyclic", 2 ] in ConstructionInfoCharacterTable( max )[2] then Error("!"); stab:= Difference( ConstructionInfoCharacterTable( max )[2], [ [ "Cyclic", 2 ] ] ); if Length( stab ) = 1 and Length( stab[1] ) = 1 and IsString( stab[1][1] ) then result.subgroup:= stab[1][1]; Print( "identify ", result.subgroup, "\n\n" ); fi; fi; else maxmax:= CharacterTable( Concatenation( Identifier( max ), "M1" ) ); if maxmax <> fail and inforec.p * atlasinfo[3].sizesMaxes[i] / Size( G ) = Size( max ) / Size( maxmax ) then result.subgroup:= Identifier( maxmax ); fi; fi; fi; fi; fi; fi; return result; fi; fi; fi; od; if IsBound( atlasinfo[3].nrMaxes ) and IsBound( atlasinfo[3].sizesMaxes ) and Number( atlasinfo[3].sizesMaxes ) = atlasinfo[3].nrMaxes and not inforec.p in indices then # This representation is not primitive # but we do not know overgroups. return rec( isPrimitive:= false, transitivity:= tr, rankAction:= rk, comment:= "degree is not an index of a max. subgroup" ); fi; # Check explictly whether the action is primitive. if not IsPrimitive( G, MovedPoints( G ) ) then return rec( isPrimitive:= false, transitivity:= tr, rankAction:= rk, comment:= "explicit check of primitivity" ); fi; # Now we know that the action is primitive. if IsBound( atlasinfo[3].nrMaxes ) and IsBound( atlasinfo[3].sizesMaxes ) and Number( atlasinfo[3].sizesMaxes ) = atlasinfo[3].nrMaxes then maxcand:= Filtered( [ 1 .. Length( indices ) ], i -> inforec.p = indices[i] ); if Length( maxcand ) = 1 then # We know the class. result:= rec( isPrimitive:= true, transitivity:= tr, rankAction:= rk, class:= maxcand[1], comment:= "unique class of maxes for the given degree and prim. action" ); if IsBound( atlasinfo[3].structureMaxes ) and IsBound( atlasinfo[3].structureMaxes[ maxcand[1] ] ) then result.structure:= atlasinfo[3].structureMaxes[ maxcand[1] ]; fi; return result; fi; fi; fi; # We do not know how to deal with this case. return rec( isPrimitive:= fail ); end; ############################################################################# ## #F AGR.Test.Primitivity( [[, ]] ) ## ## <#GAPDoc Label="test:AGR.Test.Primitivity"> ## AGR.Test.Primitivity( [tocid] ) ## ## checks the stored primitivity information for the permutation ## representations that are stored in the directory with identifier ## tocid. ## ## <#/GAPDoc> ## AGR.Test.Primitivity:= function( arg ) local result, name, tocid, tblid, arec, repname, info, maxid, tbl, maxname, res, permrepinfo, stored, str, entry; # Initialize the result. result:= true; if IsEmpty( arg ) then return AGR.Test.Primitivity( "local" ); elif Length( arg ) = 1 then for name in AtlasOfGroupRepresentationsInfo.GAPnames do result:= AGR.Test.Primitivity( arg[1], name[1] ) and result; od; return result; elif Length( arg ) = 2 then tocid:= arg[1]; name:= arg[2]; fi; tblid:= fail; if TestPackageAvailability( "CTblLib", "1.0" ) = true then tblid:= LibInfoCharacterTable( name ); if tblid <> fail then tblid:= tblid.firstName; fi; fi; for arec in AllAtlasGeneratingSetInfos( name, "contents", tocid, IsPermGroup, true ) do repname:= arec.identifier[2][1]; repname:= repname{ [ 1 .. Position( repname, '.' )-1 ] }; info:= AGR.PrimitivityInfo( arec ); if IsBound( info.transitivity ) and info.transitivity = 0 then res:= [ repname, [ 0, info.orbitLengths ] ]; elif info.isPrimitive = true then if IsBound( info.structure ) then res:= [ repname, [ info.transitivity, info.rankAction, "prim", info.structure, info.class ] ]; elif IsBound( info.class ) then if tblid <> fail then maxid:= Concatenation( tblid, "M", String( info.class ) ); tbl:= CharacterTable( maxid ); else tbl:= fail; fi; if tbl <> fail then maxname:= AGR.StructureDescriptionCharacterTableName( Identifier( tbl ) ); else maxname:= "???"; fi; res:= [ repname, [ info.transitivity, info.rankAction, "prim", maxname, info.class ] ]; else res:= [ repname, [ info.transitivity, info.rankAction, "prim", "???", info.possclass ] ]; fi; elif info.isPrimitive = false then if IsBound( info.overgroup ) then if IsBound( info.subgroup ) then res:= [ repname, [ info.transitivity, info.rankAction, "imprim", Concatenation( info.subgroup, " < ", info.overgroup ) ] ]; else res:= [ repname, [ info.transitivity, info.rankAction, "imprim", Concatenation( "??? < ", info.overgroup ) ] ]; fi; else res:= [ repname, [ info.transitivity, info.rankAction, "imprim", "???" ] ]; fi; else res:= fail; fi; # Compare the computed info with the stored one. permrepinfo:= AtlasOfGroupRepresentationsInfo.permrepinfo; if IsBound( permrepinfo.( repname ) ) then stored:= permrepinfo.( repname ); if stored.transitivity = 0 then str:= [ stored.transitivity, stored.orbits ]; else str:= [ stored.transitivity, stored.rankAction,, stored.stabilizer ]; if stored.isPrimitive then str[3]:= "prim"; str[5]:= stored.maxnr; if '<' in stored.stabilizer then Print( "#E prim. repres. with '<' in stabilizer string ", "for ", repname, "?\n" ); result:= false; fi; else str[3]:= "imprim"; if stored.stabilizer <> "???" and not '<' in stored.stabilizer then Print( "#E imprim. repres. without '<' in stabilizer string ", "for ", repname, "?\n" ); result:= false; fi; fi; fi; else stored:= fail; fi; if stored = fail then if res <> fail then Print( "#I new AGR.API value:\n" ); if "???" in res[2] then Print( "# " ); fi; str:= []; for entry in res[2] do if IsString( entry ) then Add( str, Concatenation( "\"", entry, "\"" ) ); else Add( str, String( entry ) ); fi; od; Print( "AGR.API(\"", res[1], "\",[", JoinStringsWithSeparator( str, "," ), "]);\n" ); fi; elif res = fail then Print( "#I cannot verify stored value `", str, "' for ", repname, "\n" ); elif res[2] <> str then # We have a computed and a stored value. # Report an error if the two values are not compatible, # report a difference if some part was not identified. if Length( str ) <> Length( res[2] ) or Length( str ) = 2 or str{ [ 1 .. 3 ] } <> res[2]{ [ 1 .. 3 ] } then Print( "#E difference stored <-> computed for ", repname, ":\n#E ", str, " <-> ", res[2], "\n" ); result:= false; elif 4 <= Length( str ) and res[2][4] = "???" then Print( "#I cannot identify stabilizer `", str[4], "' for ", repname, "\n" ); elif 4 <= Length( str ) and 6 < Length( res[2][4] ) and res[2][4]{ [ 1 .. 6 ] } = "??? < " then if '<' in str[4] and str[4]{ [ Position( str[4], '<' ) .. Length( str[4] ) ] } = res[2][4]{ [ Position( res[2][4], '<' ) .. Length( res[2][4] ) ] } then Print( "#I cannot identify subgroup in stabilizer `", str[4], "' for ", repname, "\n" ); else Print( "#E difference stored <-> computed for ", repname, ":\n#E ", str, " <-> ", res[2], "\n" ); result:= false; fi; else Print( "#E difference stored <-> computed for ", repname, ":\n#E ", str, " <-> ", res[2], "\n" ); result:= false; fi; fi; od; return result; end; ############################################################################# ## #F AGR.Test.MinimalDegrees( [] ) ## ## <#GAPDoc Label="test:AGR.Test.MinimalDegrees"> ## AGR.Test.MinimalDegrees() ## ## checks that the (permutation and matrix) representations available in ## the &ATLAS; of Group Representations do not have smaller degree than ## the claimed minimum. ## ## <#/GAPDoc> ## AGR.Test.MinimalDegrees:= function( arg ) local result, verbose, info, grpname, known, knownzero, deg, mindeg, knownfinite, chars_and_sizes, size, p, knowncharp, q, knownsizeq; result:= true; verbose:= ( Length( arg ) <> 0 ); for info in AtlasOfGroupRepresentationsInfo.GAPnames do grpname:= info[1]; # Check permutation representations. known:= AllAtlasGeneratingSetInfos( grpname, IsPermGroup, true ); if not IsEmpty( known ) then deg:= Minimum( List( known, r -> r.p ) ); mindeg:= MinimalRepresentationInfo( grpname, NrMovedPoints, "lookup" ); if mindeg = fail then if verbose then Print( "#I `", grpname, "': degree ", deg, " perm. repr. known but no minimality info stored\n" ); fi; elif deg < mindeg.value then Print( "#E `", grpname, "': smaller perm. repr. (", deg, ") than minimal degree (", mindeg.value, ")\n" ); result:= false; fi; fi; # Check matrix representations over fields in characteristic zero. known:= AllAtlasGeneratingSetInfos( grpname, Ring, IsField ); knownzero:= Filtered( known, r -> IsBound( r.ring ) and not IsFinite( r.ring ) ); if not IsEmpty( knownzero ) then deg:= Minimum( List( knownzero, r -> r.dim ) ); mindeg:= MinimalRepresentationInfo( grpname, Characteristic, 0, "lookup" ); if mindeg = fail then if verbose then Print( "#I `", grpname, "': degree ", deg, " char. 0 ", "matrix repr. known but no minimality info stored\n" ); fi; elif deg < mindeg.value then Print( "#E `", grpname, "': smaller char. 0 matrix repr. (", deg, ") than minimal degree (", mindeg.value, ")\n" ); result:= false; fi; fi; # Check matrix representations over finite fields. knownfinite:= Filtered( known, r -> IsFinite( r.ring ) ); chars_and_sizes:= []; for size in Set( List( knownfinite, r -> Size( r.ring ) ) ) do p:= SmallestRootInt( size ); info:= First( chars_and_sizes, pair -> pair[1] = p ); if info = fail then Add( chars_and_sizes, [ p, [ size ] ] ); else Add( info[2], size ); fi; od; for info in chars_and_sizes do p:= info[1]; knowncharp:= Filtered( knownfinite, r -> Characteristic( r.ring ) = p ); deg:= Minimum( List( knowncharp, r -> r.dim ) ); mindeg:= MinimalRepresentationInfo( grpname, Characteristic, p, "lookup" ); if mindeg = fail then if verbose then Print( "#I `", grpname, "': degree ", deg, " char. ", p, " matrix repr. known but no minimality info stored\n" ); fi; elif deg < mindeg.value then Print( "#E `", grpname, "': smaller char. ", p, " matrix repr. (", deg, ") than minimal degree (", mindeg.value, ")\n" ); result:= false; fi; for q in info[2] do knownsizeq:= Filtered( knownfinite, r -> Size( r.ring ) = q ); deg:= Minimum( List( knownsizeq, r -> r.dim ) ); mindeg:= MinimalRepresentationInfo( grpname, Size, q, "lookup" ); if mindeg = fail then if verbose then Print( "#I `", grpname, "': degree ", deg, " size ", q, " matrix repr. known but no minimality info stored\n" ); fi; elif deg < mindeg.value then Print( "#E `", grpname, "': smaller size ", q, " matrix repr. (", deg, ") than minimal degree (", mindeg.value, ")\n" ); result:= false; fi; od; od; od; return result; end; if not IsPackageMarkedForLoading( "TomLib", "" ) then Unbind( HasStandardGeneratorsInfo ); Unbind( IsStandardGeneratorsOfGroup ); Unbind( LIBTOMKNOWN ); Unbind( StandardGeneratorsInfo ); fi; if not IsPackageMarkedForLoading( "CTblLib", "" ) then Unbind( ConstructionInfoCharacterTable ); Unbind( HasConstructionInfoCharacterTable ); Unbind( LibInfoCharacterTable ); fi; ############################################################################# ## #E atlasrep/gap/mindeg.gi0000644000175000017500000007673611600333456013372 0ustar samsam############################################################################# ## #W mindeg.gi GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2007, Lehrstuhl D fr Mathematik, RWTH Aachen, Germany ## ## This file contains declarations for dealing with information about ## permutation and matrix representations of minimal degree ## for selected groups. ## ############################################################################# ## #F MinimalPermutationRepresentationInfo( , ) ## if IsPackageMarkedForLoading( "ctbllib", "" ) then InstallGlobalFunction( MinimalPermutationRepresentationInfo, function( grpname, mode ) local result, addvalue, parse, ordtbl, identifier, value, s, cand, maxes, indices, perms, corefreepos, cand1, other, minpos, cand2min, tom, faith, mincand, minsubmindeg, subname, subtbl, pi, submindeg, fus, n, N, l; # Initialize the result values. result:= rec( value:= "unknown", source:= [] ); addvalue:= function( val, src ) if result.value = "unknown" then result.value:= val; elif result.value <> val then Error( "inconsistent minimal degrees" ); fi; AddSet( result.source, src ); end; # `"A"' and `"A.2"' yield . parse:= ParseForwards( grpname, [ "A", IsDigitChar ] ); if parse <> fail then parse:= Int( parse[2] ); if parse < 3 then addvalue( 1, "computed (alternating group)" ); else addvalue( Int( parse ), "computed (alternating group)" ); fi; if mode = "one" then return result; fi; fi; parse:= ParseForwards( grpname, [ "A", IsDigitChar, ".2" ] ); if parse <> fail then parse:= Int( parse[2] ); if parse < 2 then Error( grpname, " makes no sense" ); else addvalue( Int( parse ), "computed (symmetric group)" ); fi; if mode = "one" then return result; fi; fi; # `"L2()"' yields $+1$ if $ \not\in \{ 2, 3, 5, 7, 9, 11 \}$. parse:= ParseForwards( grpname, [ "L2(", IsDigitChar, ")" ] ); if parse <> fail then parse:= Int( parse[2] ); if parse in [ 2, 3, 5, 7, 11 ] then addvalue( parse, "computed (PSL(2,q))" ); elif parse = 9 then addvalue( 6, "computed (PSL(2,q))" ); else addvalue( parse + 1, "computed (PSL(2,q))" ); fi; if mode = "one" then return result; fi; fi; # Use information from the character table from the library. ordtbl:= CharacterTable( grpname ); if IsCharacterTable( ordtbl ) then if HasConstructionInfoCharacterTable( ordtbl ) and IsList( ConstructionInfoCharacterTable( ordtbl ) ) and ConstructionInfoCharacterTable( ordtbl )[1] = "ConstructPermuted" and Length( ConstructionInfoCharacterTable( ordtbl )[2] ) = 1 then # Delegate to another table for which more information is available. identifier:= ConstructionInfoCharacterTable( ordtbl )[2][1]; value:= MinimalRepresentationInfo( identifier, NrMovedPoints ); if value <> fail then addvalue( value.value, Concatenation( "computed (char. table of ", identifier, ")" ) ); if mode = "one" then return result; fi; fi; else # If the first maximal subgroup is known and core-free # then take its index. (This happens for simple tables.) # (Here we need not assume that the permutation representation of # minimal degree is transitive.) s:= CharacterTable( Concatenation( Identifier( ordtbl ), "M1" ) ); if s <> fail and Length( ClassPositionsOfKernel( TrivialCharacter( s )^ordtbl ) ) = 1 then addvalue( Size( ordtbl ) / Size( s ), "computed (char. table)" ); if mode = "one" then return result; fi; fi; # If all tables of maximal subgroups are available then inspect them. if HasMaxes( ordtbl ) then maxes:= List( Maxes( ordtbl ), CharacterTable ); indices:= List( maxes, s -> Size( ordtbl ) / Size( s ) ); if IsSimpleCharacterTable( ordtbl ) then # just a shortcut ... addvalue( Minimum( indices ), "computed (char. table)" ); if mode = "one" then return result; fi; fi; perms:= List( maxes, s -> TrivialCharacter( s ) ^ ordtbl ); corefreepos:= Filtered( [ 1 .. Length( perms ) ], i -> Length( ClassPositionsOfKernel( perms[i] ) ) = 1 ); # If the maximal subgroups of largest order are core-free # then we are done. if not IsEmpty( corefreepos ) then cand1:= Minimum( indices{ corefreepos } ); if Minimum( indices ) = cand1 then addvalue( cand1, "computed (char. table)" ); if mode = "one" then return result; fi; fi; fi; # If the group has a unique minimal normal subgroup # (so the minimal permutation representation is transitive) # that is simple and maximal # then all candidate subgroups in this normal subgroup # are admissible also inside this subgroup; # so the candidate indices for point stabilizers inside this # normal subgroup are minimal degree times index. other:= Difference( [ 1 .. Length( maxes ) ], corefreepos ); if Length( other ) = 1 and IsSimpleCharacterTable( maxes[ other[1] ] ) then minpos:= ClassPositionsOfMinimalNormalSubgroups( ordtbl ); if Length( minpos ) = 1 and ClassPositionsOfKernel( TrivialCharacter( maxes[ other[1] ] )^ordtbl ) = minpos[1] then cand2min:= MinimalRepresentationInfo( Identifier( maxes[ other[1] ] ), NrMovedPoints ); if IsRecord( cand2min ) then addvalue( Minimum( cand1, indices[ other[1] ] * cand2min.value ), "computed (char. table)" ); if mode = "one" then return result; fi; fi; fi; fi; fi; fi; # If the table of marks is known and the minimal permutation # representation is transitive then we can compute directly. if HasFusionToTom( ordtbl ) and Length( ClassPositionsOfMinimalNormalSubgroups( ordtbl ) ) = 1 then tom:= TableOfMarks( ordtbl ); if tom <> fail then if IsSimpleCharacterTable( ordtbl ) then maxes:= MaximalSubgroupsTom( tom ); addvalue( Minimum( maxes[2] ), "computed (table of marks)" ); if mode = "one" then return result; fi; else faith:= Filtered( PermCharsTom( ordtbl, tom ), x -> Length( ClassPositionsOfKernel( x ) ) = 1 ); addvalue( Minimum( List( faith, x -> x[1] ) ), "computed (table of marks)" ); if mode = "one" then return result; fi; fi; fi; fi; # If we have a subgroup with known minimal degree $n$ # and a core-free subgroup of index $n$, # then $n$ is the minimal degree of $G$. mincand:= infinity; minsubmindeg:= Maximum( Set( Factors( Size( ordtbl ) ) ) ); for subname in NamesOfFusionSources( ordtbl ) do subtbl:= CharacterTable( subname ); if subtbl <> fail and IsOrdinaryTable( subtbl ) and Length( ClassPositionsOfKernel( GetFusionMap( subtbl, ordtbl ) ) ) = 1 then pi:= TrivialCharacter( subtbl ) ^ ordtbl; if Length( ClassPositionsOfKernel( pi ) ) = 1 then if pi[1] < mincand then mincand:= pi[1]; fi; fi; submindeg:= MinimalRepresentationInfo( subname, NrMovedPoints ); if submindeg <> fail and minsubmindeg < submindeg.value then minsubmindeg:= submindeg.value; fi; if mincand = minsubmindeg then addvalue( minsubmindeg, "computed (subgroup tables)" ); if mode = "one" then return result; fi; fi; fi; od; # If we have a subgroup with known minimal degree $n$ # and a faithful permutation representation of degree $n$ for $G$ # then $n$ is the minimal degree of $G$. if OneAtlasGeneratingSetInfo( grpname, NrMovedPoints, minsubmindeg ) <> fail then addvalue( minsubmindeg, "computed (subgroup tables, known repres.)" ); if mode = "one" then return result; fi; fi; # If the factor group of $G$ modulo its unique minimal normal subgroup # $N$ is simple and has minimal degree $n$, # and if we know a subgroup $U$ of index $n |N|$ that intersects $N$ # trivially then the minimal degree is $n |N|$. minpos:= ClassPositionsOfMinimalNormalSubgroups( ordtbl ); if Length( minpos ) = 1 then fus:= First( ComputedClassFusions( ordtbl ), r -> ClassPositionsOfKernel( r.map ) = minpos[1] ); if fus <> fail then n:= MinimalRepresentationInfo( fus.name, NrMovedPoints ); if n <> fail then N:= Sum( SizesConjugacyClasses( ordtbl ){ minpos[1] } ); for subname in NamesOfFusionSources( ordtbl ) do subtbl:= CharacterTable( subname ); if subtbl <> fail and IsOrdinaryTable( subtbl ) and Size( ordtbl ) = Size( subtbl ) * n.value then fus:= GetFusionMap( subtbl, ordtbl ); if Length( ClassPositionsOfKernel( fus ) ) = 1 then for l in ClassPositionsOfDirectProductDecompositions( subtbl ) do if ForAny( l, x -> Sum( SizesConjugacyClasses( subtbl ){ x } ) = Size( subtbl ) / N and Intersection( fus{ x }, minpos[1] ) = [ 1 ] ) then addvalue( N * n.value, "computed (factor table)" ); if mode = "one" then return result; fi; fi; od; fi; fi; od; fi; fi; fi; fi; return result; end ); fi; ############################################################################# ## #F MinimalRepresentationInfo( , NrMovedPoints[, ] ) #F MinimalRepresentationInfo( , Characteristic,

[, ] ) #F MinimalRepresentationInfo( , Size, [, ] ) ## InstallGlobalFunction( MinimalRepresentationInfo, function( arg ) local grpname, info, conditions, known, result, mode, p, ordtbl, minpos, faith, Norder, modtbl, min, q, pos, cont; if Length( arg ) = 0 then Error( "usage: ", "MinimalRepresentationInfo( [, ] )" ); fi; grpname:= arg[1]; if not IsString( grpname ) then return fail; fi; if IsBound( MinimalRepresentationInfoData.( grpname ) ) then info:= MinimalRepresentationInfoData.( grpname ); else info:= fail; fi; conditions:= arg{ [ 2 .. Length( arg ) ] }; known:= fail; result:= fail; mode:= "cache"; if not IsEmpty( conditions ) and IsString( conditions[ Length( conditions ) ] ) then mode:= conditions[ Length( conditions ) ]; Unbind( conditions[ Length( conditions ) ] ); fi; if conditions = [ NrMovedPoints ] then # MinimalRepresentationInfo( , NrMovedPoints ) if info <> fail and IsBound( info.NrMovedPoints ) then known:= info.NrMovedPoints; fi; if mode = "lookup" or ( mode = "cache" and known <> fail ) then return known; fi; if IsBound( GAPInfo.PackagesLoaded.ctbllib ) then # This works only if the package `CTblLib' is available. if mode = "recompute" then result:= MinimalPermutationRepresentationInfo( grpname, "all" ); elif known = fail then result:= MinimalPermutationRepresentationInfo( grpname, "one" ); fi; fi; if result = fail or IsEmpty( result.source ) then # We cannot compute the value, take the stored value. result:= known; else # Store the computed value, and compare it with the known one. SetMinimalRepresentationInfo( grpname, "NrMovedPoints", result.value, result.source ); fi; elif Length( conditions ) = 2 and conditions[1] = Characteristic then # MinimalRepresentationInfo( , Characteristic,

) p:= conditions[2]; if info <> fail and IsBound( info.Characteristic ) and IsBound( info.Characteristic.( p ) ) then known:= info.Characteristic.( p ); fi; if mode = "lookup" or ( mode = "cache" and known <> fail ) then return known; fi; if known = fail or mode = "recompute" then # For groups with a unique minimal normal subgroup # whose order is not a power of the characteristic, # a faithful matrix representation of minimal degree is irreducible. # (Consider a faithful reducible representation $\rho$ in block # diagonal form. # If the restriction to the minimal normal subgroup $N$ is trivial # on the two factors then the restriction of $\rho$ to $N$ is a group # of triangular matrices, i.e., a $p$-group.) ordtbl:= CharacterTable( grpname ); if ordtbl <> fail then minpos:= ClassPositionsOfMinimalNormalSubgroups( ordtbl ); if Length( minpos ) = 1 then if p = 0 or Size( ordtbl ) mod p <> 0 then # Consider the ordinary character table. # Take the smallest degree of a faithful irreducible character. faith:= Filtered( Irr( ordtbl ), x -> Length( ClassPositionsOfKernel( x ) ) = 1 ); result:= rec( value:= Minimum( List( faith, x -> x[1] ) ), source:= [ "computed (char. table)" ] ); elif IsPrimeInt( p ) then Norder:= Sum( SizesConjugacyClasses( ordtbl ){ minpos[1] } ); if not ( IsPrimePowerInt( Norder ) and Norder mod p = 0 ) then # Consider the Brauer table. modtbl:= ordtbl mod p; if modtbl <> fail then faith:= Filtered( Irr( modtbl ), x -> Length( ClassPositionsOfKernel( x ) ) = 1 ); result:= rec( value:= Minimum( List( faith, x -> x[1] ) ), source:= [ "computed (char. table)" ] ); fi; fi; fi; else # If the minimal nontrivial irreducible representation is # faithful then this irreducible is minimal. if p = 0 or Size( ordtbl ) mod p <> 0 then faith:= Filtered( Irr( ordtbl ), x -> Length( ClassPositionsOfKernel( x ) ) = 1 ); if not IsEmpty( faith ) then min:= Minimum( List( faith, x -> x[1] ) ); if ForAll( Irr( ordtbl ), x -> x[1] >= min or Set( x ) = [ 1 ] ) then result:= rec( value:= min, source:= [ "computed (char. table)" ] ); fi; fi; elif IsPrimeInt( p ) then minpos:= List( ClassPositionsOfNormalSubgroups( ordtbl ), x -> Sum( SizesConjugacyClasses( ordtbl ){ x } ) ); if not ForAny( minpos, x -> IsPrimePowerInt( x ) and x mod p = 0 ) then # Consider the Brauer table. modtbl:= ordtbl mod p; if modtbl <> fail then faith:= Filtered( Irr( modtbl ), x -> Length( ClassPositionsOfKernel( x ) ) = 1 ); if not IsEmpty( faith ) then min:= Minimum( List( faith, x -> x[1] ) ); if ForAll( Irr( modtbl ), x -> x[1] >= min or Set( x ) = [ 1 ] ) then result:= rec( value:= min, source:= [ "computed (char. table)" ] ); fi; fi; fi; fi; fi; fi; fi; fi; if result = fail then # We cannot compute the value, take the stored value. result:= known; else SetMinimalRepresentationInfo( grpname, [ "Characteristic", p ], result.value, result.source ); fi; elif Length( conditions ) = 2 and conditions[1] = Size then # MinimalRepresentationInfo( , Size, ) q:= conditions[2]; p:= SmallestRootInt( q ); if info <> fail and IsBound( info.CharacteristicAndSize ) and IsBound( info.CharacteristicAndSize.( p ) ) then info:= info.CharacteristicAndSize.( p ); pos:= Position( info.sizes, q ); if pos <> fail then known:= rec( value:= info.dimensions[ pos ], source:= info.sources[ pos ] ); elif info.complete.value then cont:= Filtered( [ 1 .. Length( info.sizes ) ], i -> LogInt( q, p ) mod LogInt( info.sizes[i], p ) = 0 ); known:= rec( value:= Minimum( info.dimensions{ cont } ), source:= [ "computed (stored data)" ] ); fi; fi; if mode = "lookup" or ( mode = "cache" and known <> fail ) then return known; fi; if known = fail or mode = "recompute" then # For groups with a unique minimal normal subgroup # whose order is not a power of the characteristic, # a faithful matrix representation of minimal degree is irreducible # (over a given field). ordtbl:= CharacterTable( grpname ); if IsPosInt( q ) and IsPrimePowerInt( q ) and ordtbl <> fail then minpos:= ClassPositionsOfMinimalNormalSubgroups( ordtbl ); if Length( minpos ) = 1 then if Size( ordtbl ) mod p <> 0 then # Consider the ordinary character table. # Take the smallest degree of a faithful irreducible character, # over the given field. faith:= Filtered( Irr( ordtbl ), x -> Length( ClassPositionsOfKernel( x ) ) = 1 ); faith:= RealizableBrauerCharacters( faith, q ); result:= rec( value:= Minimum( List( faith, x -> x[1] ) ), source:= [ "computed (char. table)" ] ); else Norder:= Sum( SizesConjugacyClasses( ordtbl ){ minpos[1] } ); if not ( IsPrimePowerInt( Norder ) and Norder mod p = 0 ) then # Consider the Brauer table. modtbl:= ordtbl mod p; if modtbl <> fail then faith:= Filtered( Irr( modtbl ), x -> Length( ClassPositionsOfKernel( x ) ) = 1 ); faith:= RealizableBrauerCharacters( faith, q ); if faith <> fail then result:= rec( value:= Minimum( List( faith, x -> x[1] ) ), source:= [ "computed (char. table)" ] ); fi; fi; fi; fi; fi; fi; fi; if result = fail then # We cannot compute the value, take the stored value. result:= known; else SetMinimalRepresentationInfo( grpname, [ "Size", q ], result.value, result.source ); fi; fi; return result; end ); ############################################################################# ## #F SetMinimalRepresentationInfo( , , , ) ## InstallGlobalFunction( SetMinimalRepresentationInfo, function( grpname, op, value, source ) local compare, info, p, q, pos; compare:= function( value, source, valuestored, sourcestored, type ) if value <> valuestored then Print( "#E ", type, ": incompatible minimum for `", grpname, "'\n" ); return false; fi; UniteSet( sourcestored, source ); return true; end; if IsString( source ) then source:= [ source ]; fi; if not IsBound( MinimalRepresentationInfoData.( grpname ) ) then MinimalRepresentationInfoData.( grpname ):= rec(); fi; info:= MinimalRepresentationInfoData.( grpname ); if op = "NrMovedPoints" then if IsBound( info.NrMovedPoints ) then info:= info.NrMovedPoints; return compare( value, source, info.value, info.source, "NrMovedPoints" ); else info.NrMovedPoints:= rec( value:= value, source:= source ); return true; fi; elif IsList( op ) and Length( op ) = 2 and op[1] = "Characteristic" and ( op[2] = 0 or IsPrimeInt( op[2] ) ) then if not IsBound( info.Characteristic ) then info.Characteristic:= rec(); fi; info:= info.Characteristic; p:= String( op[2] ); if IsBound( info.( p ) ) then info:= info.( p ); return compare( value, source, info.value, info.source, "Characteristic" ); else info.( p ):= rec( value:= value, source:= source ); return true; fi; elif IsList( op ) and Length( op ) = 3 and op[1] = "Characteristic" and IsPrimeInt( op[2] ) and op[3] = "complete" then if not IsBound( info.CharacteristicAndSize ) then info.CharacteristicAndSize:= rec(); fi; info:= info.CharacteristicAndSize; p:= String( op[2] ); if not IsBound( info.( p ) ) then info.( p ):= rec( sizes:= [], dimensions:= [], sources:= [] ); fi; info.( p ).complete:= rec( value:= value, source:= source ); return true; elif IsList( op ) and Length( op ) = 2 and op[1] = "Size" and IsInt( op[2] ) and IsPrimePowerInt( op[2] ) then #T change IsPrimePowerInt to include an IsInt test! if not IsBound( info.CharacteristicAndSize ) then info.CharacteristicAndSize:= rec(); fi; info:= info.CharacteristicAndSize; q:= op[2]; p:= String( SmallestRootInt( q ) ); if not IsBound( info.( p ) ) then info.( p ):= rec( sizes:= [], dimensions:= [], sources:= [], complete:= rec( value:= false, source:= "" ) ); fi; info:= info.( p ); pos:= Position( info.sizes, q ); if pos <> fail then # Compare the stored and the computed value. return compare( value, source, info.dimensions[ pos ], info.sources[ pos ], "Size" ); elif ForAll( [ 1 .. Length( info.sizes ) ], i -> not ( q = info.sizes[i] ^ LogInt( q, info.sizes[i] ) and info.dimensions[i] = value ) ) then Add( info.sizes, q ); Add( info.dimensions, value ); Add( info.sources, source ); return true; fi; else Error( "do not known how to store this info: , " ); fi; end ); ############################################################################# ## #F ComputedMinimalRepresentationInfo() ## InstallGlobalFunction( ComputedMinimalRepresentationInfo, function() local oldvalue, info, grpname, ordtbl, size, p, modtbl, sizes, q, r, entry, newvalue, diff, comp, char; # Save the stored list. oldvalue:= MinimalRepresentationInfoData; MakeReadWriteGlobal( "MinimalRepresentationInfoData" ); MinimalRepresentationInfoData:= rec(); # Add non-computed data. for entry in Filtered( oldvalue.datalist, e -> e[4]{ [ 1 .. 4 ] } <> "comp" ) do SetMinimalRepresentationInfo( entry[1], entry[2], entry[3], [ entry[4] ] ); od; # Recompute the data. for info in AtlasOfGroupRepresentationsInfo.GAPnames do grpname:= info[1]; MinimalRepresentationInfo( grpname, NrMovedPoints, "recompute" ); ordtbl:= CharacterTable( grpname ); MinimalRepresentationInfo( grpname, Characteristic, 0, "recompute" ); if IsBound( info[3].size ) then size:= info[3].size; for p in Set( Factors( size ) ) do MinimalRepresentationInfo( grpname, Characteristic, p, "recompute" ); if ordtbl <> fail then modtbl:= ordtbl mod p; if modtbl <> fail then sizes:= Set( List( Irr( modtbl ), phi -> SizeOfFieldOfDefinition( phi, p ) ) ); #T is this a reasonable approach? for q in Filtered( sizes, IsInt ) do MinimalRepresentationInfo( grpname, Size, q, "recompute" ); od; if IsBound( MinimalRepresentationInfoData.( grpname ) ) then r:= MinimalRepresentationInfoData.( grpname ); if IsBound( r.CharacteristicAndSize ) then r:= r.CharacteristicAndSize; if not fail in sizes then #T can one not do better? SetMinimalRepresentationInfo( grpname, [ "Characteristic", p, "complete" ], true, [ "computed (char. table)" ] ); fi; fi; fi; fi; fi; od; fi; od; # Print information about differences. newvalue:= MinimalRepresentationInfoData; newvalue.datalist:= oldvalue.datalist; diff:= Difference( RecNames( oldvalue ), RecNames( newvalue ) ); if not IsEmpty( diff ) then Print( "#E missing min. repr. components:\n", diff, "\n" ); fi; diff:= Intersection( Difference( RecNames( newvalue ), RecNames( oldvalue ) ), List( AtlasOfGroupRepresentationsInfo.GAPnames, x -> x[1] ) ); if not IsEmpty( diff ) then Print( "#I new min. repr. components:\n", diff, "\n" ); fi; for comp in Intersection( RecNames( newvalue ), RecNames( oldvalue ) ) do if oldvalue.( comp ) <> newvalue.( comp ) then Print( "#I min. repr. differences for ", comp, "\n" ); if IsBound( oldvalue.( comp ).NrMovedPoints ) and IsBound( newvalue.( comp ).NrMovedPoints ) and oldvalue.( comp ).NrMovedPoints.source <> newvalue.( comp ).NrMovedPoints.source then Print( "#I (different `source' components for NrMovedPoints:\n", "#I ", oldvalue.( comp ).NrMovedPoints.source, "\n", "#I -> ", newvalue.( comp ).NrMovedPoints.source, ")\n" ); fi; if IsBound( oldvalue.( comp ).Characteristic ) and IsBound( newvalue.( comp ).Characteristic ) then for char in Intersection( RecNames( oldvalue.( comp ).Characteristic ), RecNames( newvalue.( comp ).Characteristic ) ) do if oldvalue.( comp ).Characteristic.( char ).source <> newvalue.( comp ).Characteristic.( char ).source then Print( "#I (different `source' components for characteristic ", char, ":\n", "#I ", oldvalue.( comp ).Characteristic.( char ).source, "\n#I -> ", newvalue.( comp ).Characteristic.( char ).source, ")\n" ); fi; od; fi; fi; od; # Reinstall the old value. MinimalRepresentationInfoData:= oldvalue; MakeReadOnlyGlobal( "MinimalRepresentationInfoData" ); # Return the new value. return newvalue; end ); ############################################################################# ## #F StringOfMinimalRepresentationInfoData( ) ## InstallGlobalFunction( StringOfMinimalRepresentationInfoData, function( record ) local lines, grpname, info, src, infoc, p, i, result, line; lines:= []; for grpname in Intersection( RecNames( record ), List( AtlasOfGroupRepresentationsInfo.GAPnames, x -> x[1] ) ) do info:= record.( grpname ); if IsBound( info.NrMovedPoints ) then for src in info.NrMovedPoints.source do Add( lines, [ src{ [ 1 .. 4 ] } = "comp", Concatenation( "[\"", grpname, "\",\"NrMovedPoints\",", String( info.NrMovedPoints.value ), ",\"", src, "\"],\n" ) ] ); od; fi; if IsBound( info.Characteristic ) then infoc:= info.Characteristic; for p in List( Set( List( RecNames( infoc ), Int ) ), String ) do for src in infoc.( p ).source do Add( lines, [ src{ [ 1 .. 4 ] } = "comp", Concatenation( "[\"", grpname, "\",[\"Characteristic\",", String( p ), "],", String( infoc.( p ).value ), ",\"", src, "\"],\n" ) ] ); od; od; fi; if IsBound( info.CharacteristicAndSize ) then infoc:= info.CharacteristicAndSize; for p in List( Set( List( RecNames( infoc ), Int ) ), String ) do for i in [ 1 .. Length( infoc.( p ).sizes ) ] do for src in infoc.( p ).sources[i] do Add( lines, [ src{ [ 1 .. 4 ] } = "comp", Concatenation( "[\"", grpname, "\",[\"Size\",", String( infoc.( p ).sizes[i] ), "],", String( infoc.( p ).dimensions[i] ), ",\"", src, "\"],\n" ) ] ); od; od; if infoc.( p ).complete.value then for src in infoc.( p ).complete.source do Add( lines, [ src{ [ 1 .. 4 ] } = "comp", Concatenation( "[\"", grpname, "\",[\"Characteristic\",", String( p ), ",\"complete\"],true,\"", src, "\"],\n" ) ] ); od; fi; od; fi; od; result:= "\nMinimalRepresentationInfoData.datalist:= [\n"; Append( result, "# non-computed values\n" ); for line in List( Filtered( lines, l -> not l[1] ), l -> l[2] ) do Append( result, line ); od; Append( result, "\n" ); Append( result, "# computed values\n" ); for line in List( Filtered( lines, l -> l[1] ), l -> l[2] ) do Append( result, line ); od; Append( result, "];;\n\n" ); Append( result, "for entry in MinimalRepresentationInfoData.datalist do\n" ); Append( result, " CallFuncList( SetMinimalRepresentationInfo, entry );\n" ); Append( result, "od;\n" ); return result; end ); ############################################################################# ## #E atlasrep/gap/access.gd0000644000175000017500000010436011606151465013350 0ustar samsam############################################################################# ## #W access.gd GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2001, Lehrstuhl D fr Mathematik, RWTH Aachen, Germany ## ## This file contains functions for low level access to data from the ## ATLAS of Group Representations. ## ############################################################################# ## #V AGR ## ## <#GAPDoc Label="AGR"> ## ## ## ## ## is a record whose components are functions and data that are used by the ## higher level interface functions. ## ## ## <#/GAPDoc> ## BindGlobal( "AGR", rec( GAPnamesRec:= rec() ) ); ############################################################################# ## #V InfoAtlasRep ## ## <#GAPDoc Label="InfoAtlasRep"> ## ## ## ## ## If the info level of is at least 1 ## then information about fail results of functions in the ## AtlasRep package is printed. ## If the info level is at least 2 then information about calls to ## external programs is printed. ## The default level is 0, no information is printed on this level. ## ## ## <#/GAPDoc> ## DeclareInfoClass( "InfoAtlasRep" ); ############################################################################# ## ## Filenames Used in the Atlas of Group Representations ## ## <#GAPDoc Label="[1]{access}"> ## The data of each local &GAP; version of the ATLAS of ## Group Representations are either private ## (see Chapter ) ## or are stored in the two directories datagens and dataword. ## In the following, we describe the format of filenames in the latter two ## directories, as a reference of the official part of the ## ATLAS. ##

## In the directory datagens, ## the generators for the representations available are stored, ## the directory dataword contains the programs to compute ## conjugacy class representatives,class representatives ## generators of maximal subgroups,maximal subgroups ## images of generators under automorphisms automorphisms ## of a given group G from standard generators of G, ## and to check and compute standard generators (see ## Section ). ##

## The name of each data file in the ## ATLAS of Group Representations ## describes the contents of the file. ## This section lists the definitions of the filenames used. ##

## Each filename consists of two parts, separated by a minus sign -. ## The first part is always of the form groupnameGi, ## where the integer i denotes the i-th set of standard ## generators for the group G, say, ## with ATLAS-file name groupname ## (see ). ## The translations of the name groupname to the name(s) used within ## &GAP; is given by the component GAPnames of ## . ##

## The filenames in the directory dataword have one of the following ## forms. ## In each of these cases, the suffix Wn means that n ## is the version number of the program. ## ## <#Include Label="type:cyclic:format"> ## <#Include Label="type:classes:format"> ## <#Include Label="type:cyc2ccls:format"> ## <#Include Label="type:maxes:format"> ## <#Include Label="type:maxstd:format"> ## <#Include Label="type:out:format"> ## <#Include Label="type:switch:format"> ## <#Include Label="type:check:format"> ## <#Include Label="type:pres:format"> ## <#Include Label="type:find:format"> ## <#Include Label="type:otherscripts:format"> ## ##

## The filenames in the directory datagens have one of the following ## forms. ## In each of these cases, ## id is a (possibly empty) string that starts with a lowercase ## alphabet letter (see ), ## and m is a nonnegative integer, meaning that the generators are ## written w.r.t. the m-th basis (the meaning is defined by the ## ATLAS developers). ##

## ## <#Include Label="type:matff:format"> ## <#Include Label="type:perm:format"> ## <#Include Label="type:matalg:format"> ## <#Include Label="type:matint:format"> ## <#Include Label="type:quat:format"> ## <#Include Label="type:matmodn:format"> ## ## <#/GAPDoc> ## ############################################################################# ## #F AGR.ParseFilenameFormat( , ) ## ## <#GAPDoc Label="AGRParseFilenameFormat"> ## ## ## ## ## a list of strings and integers if string matches format, ## and fail otherwise. ## ## ## Let string be a filename, and format be a list ## [ [ c_1, c_2, \ldots, c_n ], [ f_1, f_2, \ldots, f_n ] ] ## such that each entry c_i is a list of strings and of functions ## that take a character as their argument and return true or ## false, ## and such that each entry f_i is a function for parsing a filename, ## such as the currently undocumented functions ParseForwards and ## ParseBackwards. ## ##

## returns a list of strings and ## integers such that the concatenation of their ## values yields string if ## string matches format, ## and fail otherwise. ## Matching is defined as follows. ## Splitting string at each minus character (-) ## yields m parts s_1, s_2, \ldots, s_m. ## The string string matches format if s_i matches ## the conditions in c_i, for 1 \leq i \leq n, ## in the sense that applying f_i to s_i ## and c_i yields a non-fail result. ##

## format:= [ [ [ IsChar, "G", IsDigitChar ], ## > [ "p", IsDigitChar, AGR.IsLowerAlphaOrDigitChar, ## > "B", IsDigitChar, ".m", IsDigitChar ] ], ## > [ ParseBackwards, ParseForwards ] ];; ## gap> AGR.ParseFilenameFormat( "A6G1-p10B0.m1", format ); ## [ "A6", "G", 1, "p", 10, "", "B", 0, ".m", 1 ] ## gap> AGR.ParseFilenameFormat( "A6G1-p15aB0.m1", format ); ## [ "A6", "G", 1, "p", 15, "a", "B", 0, ".m", 1 ] ## gap> AGR.ParseFilenameFormat( "A6G1-f2r16B0.m1", format ); ## fail ## ]]> ## ## ## <#/GAPDoc> ## ############################################################################# ## #F AtlasOfGroupRepresentationsLocalFilename( , , #F , ) ## ## This implements the location step of the access to data files. ## The return value is a pair, the first entry being true if the ## file is already locally available, and false otherwise, ## and the second entry being a list of pairs ## [ path, r ], ## where path is the local path where the file can be found, ## or a list of such paths ## (after the file has been transferred if the first entry is false), ## and r is the record of functions to be used for transferring the ## file. ## DeclareGlobalFunction( "AtlasOfGroupRepresentationsLocalFilename" ); ############################################################################# ## #F AtlasOfGroupRepresentationsLocalFilenameTransfer( , , #F , ) ## ## This implements the location and fetch steps ## of the access to data files. ## The return value is either fail ## or a pair [ path, r ] ## where path is either the local path (which really exists) ## and r is the record containing the function to be used for reading ## and interpreting the file contents. ## DeclareGlobalFunction( "AtlasOfGroupRepresentationsLocalFilenameTransfer" ); ############################################################################# ## #F AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates() ## ## <#GAPDoc Label="AGRTestTableOfContentsRemoteUpdates"> ## ## ## ## ## the list of names of all locally available data files ## that should be removed. ## ## ## This function fetches the file changes.html from the package's ## home page, extracts the times of changes for the data files in question, ## and compares them with the times of the last changes of the local data ## files. ## For that, the &GAP; package IO ## IO package ## is needed; ## if it is not available then an error message is printed, ## and fail is returned. ##

## If the time of the last modification of a server file is later than ## that of the local copy then the local file must be updated. ## touch ## (This means that touching files in the local directories ## will cheat this function.) ##

## It is useful that a system administrator (i. e., someone who has ## the permission to remove files from the data directories) ## runs this function from time to time, ## and afterwards removes the files in the list that is returned. ## This way, new versions of these files will be fetched automatically ## from the servers when a user asks for their data. ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates" ); ############################################################################# ## #F AGR.FileContents( , , , ) ## ## <#GAPDoc Label="AGRFileContents"> ## ## ## ## ## the &GAP; object obtained from reading and interpreting the file(s) with ## name(s) filename. ## ## ## Let dirname and groupname be strings, ## filename be a string or a list of strings, ## and type be a data type (see ). ## dirname must be one of "datagens", "dataword", ## or the dirid value of a private directory, ## see . ## If groupname is the ATLAS-file name of a group ## G (see ## Section ), ## and if filename is either the name of an accessible file in the ## dirname directory of the ATLAS, ## or a list of such filenames, ## with data concerning G and for the data type type, ## then returns ## the contents of the corresponding file(s), ## in the sense that the file(s) (or equivalent ones, see ## Section ) ## is/are read, and the result is interpreted if necessary; ## otherwise fail is returned. ##

## Note that if filename refers to file(s) already stored in the ## dirname directory then ## does not check whether the table of contents of the ## ATLAS of Group Representations actually contains ## filename. ## ## ## <#/GAPDoc> ## ############################################################################# ## #F FilenameAtlas( , , ) ## ## This function was documented in version 1.2 of the package. ## We keep it for backwards compatibility reasons, ## but leave it undocumented. ## DeclareGlobalFunction( "FilenameAtlas" ); ############################################################################# ## #V AtlasOfGroupRepresentationsAccessFunctionsDefault ## ## <#GAPDoc Label="AccessFunctionsDefault"> ## We discuss the three steps listed in Section ## . ##

## For creating an overview of the locally available data, ## the first of these steps must be available independent of ## actually accessing the file in question. ## For updating the local copy of the server data, ## the second of the above steps must be available independent of ## the third one. ## Therefore, the package provides the possibility to extend the default ## behaviour by adding new records to the accessFunctions ## component of . ## Its components are as follows. ##

## ## ## location( filename, groupname, dirname, ## type ) ## ## ## Let filename be the default filename (without path) ## of the required file, or a list of such filenames. ## Let groupname be the ATLAS name of the group ## to which the data in these files belong, ## dirname be the default directory name (one of "datagens", ## "dataword", or the dirid value of a private directory, ## see ), ## and type be the data type ## (see ). ## This function must return either the absolute path(s) where the ## mechanism implemented by the current record expects the local version ## of the given file(s), ## or fail if this function does not feel responsible for these ## file(s). ## In the latter case, ## the location function in another record will know a path. ##

## The file(s) is/are regarded as not locally available ## if all installed location functions return either fail ## or paths of nonexisting files, ## in the sense of . ## ## ## fetch( filepath, filename, groupname, ## dirname, type ) ## ## ## This function is called when a file is not locally available ## and if the location function in the current record has returned ## a path or a list of paths. ## The arguments dirname and type ## must be the same as for the location function, ## and filepath and filename must be strings ## (not lists of strings). ##

## The return value must be true if the function succeeded with ## making the file locally available (including postprocessing if ## applicable), and false otherwise. ## ## contents( filepath, type ) ## ## This function is called when the location function in the ## current record has returned the path(s) filepath, ## and if either these are paths of existing files ## or the fetch function in the current record has been called ## for these paths, and the return value was true. ## The argument type must be the same as for the location ## and the fetch functions. ##

## The return value must be the contents of the file(s), ## in the sense that the &GAP; matrix, matrix list, permutation, ## permutation list, or program described by the file(s) is returned. ## This means that besides reading the file(s) via the appropriate ## function, interpreting the contents may be necessary. ## ## description ## ## This must be a short string that describes for which kinds of files ## the functions in the current record are intended, ## which file formats are supported etc. ## The value is used by ## . ## ## active ## ## The current accessFunctions record is ignored ## by if the value is not true. ## ## ##

## In , the records in the ## accessFunctions component of ## are considered in reversed ## order. ##

## By default, the accessFunctions list contains three records. ## Only for one of them, the active component has the value ## true. ## One of the other two records can be used to change the access to ## permutation representations and to matrix representations over finite ## fields such that &MeatAxe; binary files ## are transferred and read instead of &MeatAxe; text files. ## The fourth record makes sense only if a local server is accessible, ## i. e., if the server files can be read directly, ## without being transferred into the data directories of the package. ## <#/GAPDoc> ## DeclareGlobalVariable( "AtlasOfGroupRepresentationsAccessFunctionsDefault" ); ############################################################################# ## ## The Tables of Contents of the Atlas of Group Representations ## ## <#GAPDoc Label="toc"> ## The list of data currently available is stored in several ## tables of contents, ## one for the local &GAP; data, one for the data on remote servers, ## and one for each private data directory. ## These tables of contents are created by ## . ##

## It is assumed that the local data directories contain only ## files that are also available on servers. ## Private extensions to the database ## (cf. Section  ## and Chapter ) ## cannot be handled by putting the data files into the local directories. ##

## Each table of contents is represented by a record whose components are ## the ATLAS-file names of the groups (see ## Section ) ## and lastupdated, a string describing the date of the last update ## of this table of contents. ## The value for each group name is a record whose components are the names ## of those data types ## (see Section ) ## for which data are available. ##

## Here are the administrational functions that are used to build the tables ## of contents. ## Some of them may be useful also for private extensions of the package ## (see Chapter ). ##

## The following functions define group names, available representations, ## and straight line programs. ##

## ## <#Include Label="AGR.GNAN"> ## <#Include Label="AGR.GRP"> ## <#Include Label="AGR.TOC"> ## ##

## The following functions add data about the groups and their ## standard generators. ## The function calls must be executed after the corresponding ## AGR.GNAN calls. ##

## ## <#Include Label="AGR.GRS"> ## <#Include Label="AGR.MXN"> ## <#Include Label="AGR.MXO"> ## <#Include Label="AGR.MXS"> ## <#Include Label="AGR.KERPRG"> ## <#Include Label="AGR.STDCOMP"> ## ##

## The following functions add data about representations or ## straight line programs that are already known. ## The function calls must be executed after the corresponding ## AGR.TOC calls. ##

## ## <#Include Label="AGR.RNG"> ## <#Include Label="AGR.TOCEXT"> ## <#Include Label="AGR.API"> ## <#Include Label="AGR.CHAR"> ## ##

## These functions are used to create the initial table of contents for the ## server data of the AtlasRep package when the file ## gap/atlasprm.g of the package is read. ## <#/GAPDoc> ## ############################################################################# ## #F AtlasDataGAPFormatFile( ) ## ## ## ## ## ## Let filename be the name of a file containing the generators of a ## representation in characteristic zero such that reading the file via ## yields a record ## containing the list of the generators and additional information. ## Then returns this record. ## ## ## DeclareGlobalFunction( "AtlasDataGAPFormatFile" ); ############################################################################# ## #F AtlasStringOfFieldOfMatrixEntries( ) #F AtlasStringOfFieldOfMatrixEntries( ) ## ## ## ## ## ## ## For a nonempty list mats of matrices of cyclotomics, ## let F be the field generated by all matrix entries. ## returns a pair ## [ F, descr ] ## where descr is a string describing F, as follows. ## If F is a quadratic field then descr is of the form ## "Field([Sqrt(n)])" where n is an integer; ## if F is the n-th cyclotomic field, ## for a positive integer n ## then descr is of the form "Field([E(n)])"; ## otherwise descr is the value ## of the field object. ##

## If the argument is a string filename then mats is obtained ## by reading the file with name filename via ## . ## ## ## DeclareGlobalFunction( "AtlasStringOfFieldOfMatrixEntries" ); ############################################################################# ## #F AtlasTableOfContents( ) ## ## ## ## ## ## This function returns a record with components ## groupnames and TableOfContents. ##

## If dirname is the string "local" or the name of a private ## data directory then the value of the groupnames component is equal ## to the value of the groupnames component of ## ; ## if dirname is "remote" then the value of the ## groupnames component is the union of this list and the list of ## triples corresponding to the groups currently available on the servers. ##

## The value of the TableOfContents component is a record whose ## components are lastupdated (date and time of the last update of ## this table of contents) and the names that occur as the last entries in ## the groupnames triples; ## the value of each such component is a record whose components are the ## names of the available data types, see ## , ## for example perm, matff, classes, and maxes, ## all lists. ## If dirname is "local" or the name of a private data ## directory then the contents of the local &GAP; installation or of the ## data directory with this name is considered. ## If dirname is "remote" then the data available on the ## servers (see ) ## is considered. ##

## If dirname is "remote" then the result is either known in ## advance or (if one has deliberately unbound the value) is computed by ## fetching the file atlasprm.g from the package's homepage. ## If dirname is "local" then the result is computed by ## checking which of the files from the "remote" table of contents ## are in fact locally available. ## If dirname is the name of a private directory then the result is ## computed by inspecting the contents of this directory plus the contents ## of its subdirectories (one layer deep). ##

## One can customize the meaning of local availability, ## see Section . ##

## Once a (local or remote) table of contents has been computed using ## , ## it is stored in the TableOfContents component of ## , ## and is just fetched when is called ## again. ## Recomputation can be forced using ## . ## ## ## DeclareGlobalFunction( "AtlasTableOfContents" ); ############################################################################# ## #F ReloadAtlasTableOfContents( ) ## ## <#GAPDoc Label="ReloadAtlasTableOfContents"> ## ## ## ## ## fail if the required table of contents could not be reloaded, ## otherwise true. ## ## ## Let dirname be a string, which must be one of "remote", ## "local", or the name of a private data directory ## (see Chapter ). ##

## In the case of "remote", the file atlasprm.g is fetched ## from the package's home page, and then read into &GAP;. ## In the case of "local", the subset of the data listed in the ## "remote" table of contents is considered that are actually ## available in the local data directories. ## In the case of a private directory, its contents is inspected, ## and the table of contents for dirname is replaced ## by the one obtained from inspecting the actual contents of the data ## directories (see ## Section ). ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "ReloadAtlasTableOfContents" ); ############################################################################# ## #F StoreAtlasTableOfContents( ) ## ## <#GAPDoc Label="StoreAtlasTableOfContents"> ## ## ## ## ## Let filename be a string. ## This function prints the loaded table of contents of ## the servers to the file with name filename. ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "StoreAtlasTableOfContents" ); ############################################################################# ## #F ReplaceAtlasTableOfContents( ) ## ## <#GAPDoc Label="ReplaceAtlasTableOfContents"> ## ## ## ## ## Let filename be the name of a file that has been created with ## . ##

## first removes the information ## that &GAP; has stored about the table of contents of the servers, ## and then reads the file with name filename, ## thus replacing the previous information by the stored one. ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "ReplaceAtlasTableOfContents" ); ############################################################################# ## #F StringOfAtlasTableOfContents( "remote" ) ## ## ## ## ## ## If the argument is the string "remote" then ## this function returns a string that encodes the ## currently stored value of the table of contents for the remote data ## of the ATLAS of Group Representations, ## in terms of calls to AGR.GNAN, AGR.GRP, etc. ##

## This function is used for automatically creating updates of the file ## gap/atlasprm.g of the AtlasRep package. ## ## ## DeclareGlobalFunction( "StringOfAtlasTableOfContents" ); ############################################################################# ## ## <#GAPDoc Label="[3]{access}"> ## After the AtlasRep package has been loaded into the ## &GAP; session, one can add private data. ## However, one should not add private files to the local data ## directories of the package, or modify files in these directories. ## Instead, additional data should be put into separate directories. ## It should be noted that a data file is fetched from a server only if ## the local data directories do not contain a file with this name, ## independent of the contents of the files. ## (As a consequence, corrupted files in the local data directories are ## not automatically replaced by a correct server file.) ## <#/GAPDoc> ## ############################################################################# ## #F AtlasOfGroupRepresentationsNotifyPrivateDirectory(

[, ] #F [, ] ) ## ## <#GAPDoc Label="AtlasOfGroupRepresentationsNotifyPrivateDirectory"> ## ## ## ## ## true if none of the filenames with admissible format in the ## directory dir is contained in other data directories ## and if the data belongs to groups whose names have been declared, ## otherwise false. ## ## ## Let dir be a directory ## (see ) ## or a string denoting the name of a directory ## (such that the &GAP; object describing this directory can be obtained by ## calling with the argument ## dir). ## In the following, let dirname be the name of the directory. ## So dirname can be an absolute path or a path relative ## to the home directory of the user (starting with a tilde character ## ~) ## or a path relative to the directory where &GAP; was started. ##

## If the optional argument dirid is given, it must be a string. ## This value will be used in the identifier components of the ## records that are returned by interface functions (see ## Section ) ## for data contained in the directory dir. ## Note that the directory name may be different in different &GAP; ## sessions or for different users who want to access the same data, ## whereas the identifier components shall be independent of such ## differences. ## The default for dirid is dirname. ##

## If the optional argument test is given, it must be true or ## false. ## In the true case, consistency checks are switched on while the ## file toc.g is read. ## This costs some extra time, but it is recommended after each extension of ## the file toc.g. ## The default for test is false. ##

## notifies ## the data in the directory dir to the AtlasRep ## package. ## First the pair [ dirname, dirid ] ## is added to the private component of ## . ## If the directory contains a file with the name toc.g then this ## file is read; ## this file is useful for adding new group names using AGR.GNAN and ## for adding describing data about the representations, ## see Section . ## Next the table of contents of the private directory is built from the ## list of files contained in the private directory or in its subdirectories ## (one layer deep). ##

## Only those files are considered whose names match an admissible format ## (see Section ). ## Filenames that are already contained in another data directory of the ## AtlasRep package are ignored, ## and messages about these filenames are printed if the info level of ## is at least 1. ##

## Note that this implies that the files of the official ## (i.e. non-private) data directories have priority over files in private ## directories. ##

## If the directory contains files for groups whose names have not been ## declared before and if the info level of ## is at least 1 then a message about these names is printed. ##

## For convenience, the user may collect the notifications of private data ## directories in the file gaprc (see ## Section ). ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasOfGroupRepresentationsNotifyPrivateDirectory" ); ############################################################################# ## #F AtlasOfGroupRepresentationsForgetPrivateDirectory( ) ## ## <#GAPDoc Label="AtlasOfGroupRepresentationsForgetPrivateDirectory"> ## ## ## ## ## If dirid is the identifier of a private data directory that has ## been notified with ## ## then ## removes the directory from the list of notified private directories; ## this means that from then on, the data in this directory cannot be ## accessed anymore in the current session. ## ## ## <#/GAPDoc> ## DeclareGlobalFunction( "AtlasOfGroupRepresentationsForgetPrivateDirectory" ); ############################################################################# ## #E atlasrep/gap/brspor.g0000644000175000017500000002126711605511656013257 0ustar samsam############################################################################# ## #W brspor.g GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2007, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains ## - a record `BibliographySporadicSimple' containing the customizations for ## `BrowseBibliography' that are needed for showing the bibliographies in ## the Atlas of Finite Groups and in the Atlas of Brauer Characters and ## - a very small Browse application `BrowseBibliographySporadicSimple' ## for showing these data. ## ############################################################################# ## ## (Depending on the order of reading package files, ## `BrowseBibliography' may be not yet bound. ## Avoid the syntax error message.) ## if not IsBound( BrowseBibliography ) then BrowseBibliography:= "dummy"; fi; ############################################################################# ## #V BibliographySporadicSimple ## DeclareGlobalVariable( "BibliographySporadicSimple" ); InstallValue( BibliographySporadicSimple, rec( # auxiliary components emptycategory:= "(not assigned to a sporadic simple group)", groupnameinfo:= [ [ "M11", "Mathieu group", "M11" ], [ "M12", "Mathieu group", "M12" ], [ "J1", "Janko group", "J1" ], [ "M22", "Mathieu group", "M22" ], [ "J2", "Janko group", "J2" ], [ "M23", "Mathieu group", "M23" ], [ "HS", "Higman-Sims group", "HS" ], [ "J3", "Janko group", "J3" ], [ "M24", "Mathieu group", "M24" ], [ "McL", "McLaughlin group", "McL" ], [ "He", "Held group", "He" ], [ "Ru", "Rudvalis group", "Ru" ], [ "Suz", "Suzuki group", "Suz" ], [ "ON", "O'Nan group", "O'N" ], [ "Co3", "Conway group", "Co3" ], [ "Co2", "Conway group", "Co2" ], [ "Fi22", "Fischer group", "Fi22" ], [ "HN", "Harada-Norton group", "HN" ], [ "Ly", "Lyons group", "Ly" ], [ "Th", "Thompson group", "Th" ], [ "Fi23", "Fischer group", "Fi23" ], [ "Co1", "Conway group", "Co1" ], [ "J4", "Janko group", "J4" ], [ "Fi24'", "Fischer group", "Fi24'" ], [ "B", "Baby monster group", "B" ], [ "M", "Monster group", "M" ], ], groupnames:= Concatenation( [ ~.emptycategory ], List( ~.groupnameinfo, x -> x[1] ) ), # The following component is used in the manual example for # `BrowseMinimalDegrees'. groupNamesJan05:= [ "M11", "M12", "2.M12", "J1", "M22", "2.M22", "3.M22", "4.M22", "6.M22", "12.M22", "J2", "2.J2", "M23", "HS", "2.HS", "J3", "3.J3", "M24", "McL", "3.McL", "He", "Ru", "2.Ru", "Suz", "2.Suz", "3.Suz", "6.Suz", "ON", "3.ON", "Co3", "Co2", "Fi22", "2.Fi22", "3.Fi22", "6.Fi22", "HN", "Ly", "Th", "Fi23", "Co1", "2.Co1", "J4", "Fi24'", "3.Fi24'", "B", "2.B", "M", ], # the data components filesshort:= [ "Atlas1bib.xml", "Atlas2bib.xml", "ABCapp2bib.xml", "ABCbiblbib.xml" ], filecontents:= [ "ATLAS bibliography (p. 243)", "ATLAS bibliography (pp. 244-251)", "ABC appendix", "ABC bibliography" ], files:= List( ~.filesshort, x -> Filename( DirectoriesPackageLibrary( "atlasrep", "bibl" ), x ) ), header:= "Bibliography of Sporadic Simple Groups", columns:= [ rec( identifier:= "sporsimp", viewLabel:= "G", type:= "values", create:= function( attr, id ) local rows, r; rows:= []; for r in id do if IsBound( r[1].sporsimp ) and r[1].sporsimp <> "" and not r[1].sporsimp in rows then Add( rows, r[1].sporsimp ); fi; od; return rows; end, viewSort:= function( nam1, nam2 ) local list; # Sort sporadic simple groups according to their order. list:= BibliographySporadicSimple.groupnames; if nam1 = "Fi24'" then nam1:= "F3+"; fi; if nam2 = "Fi24'" then nam2:= "F3+"; fi; return Position( list, nam1 ) < Position( list, nam2 ); end, viewValue:= function( x ) if IsEmpty( x ) then return ""; else return rec( rows:= x, align:= "tl" ); fi; end, categoryValue:= value -> BrowseData.ReplacedEntry( value, [ "" ], [ BibliographySporadicSimple.emptycategory ] ), align:= "l", sortParameters:= [ "hide on categorizing", "no", "add counter on categorizing", "yes", "split rows on categorizing", "yes" ], ) ], choice:= [ "authors", "title", "year", "journal", "sporsimp", "sourcefilename" ], sortKeyFunction:= BrowseData.SortKeyFunctionBibRec, ) ); ############################################################################# ## #F BrowseBibliographySporadicSimple() ## ## <#GAPDoc Label="BrowseBibliographySporadicSimple"> ## ## ## ## ## a record as returned by ## . ## ## ## If the &GAP; package Browse (see ) ## is loaded then this function is available. ## It opens a browse table whose rows correspond to the entries of the ## bibliographies in the &ATLAS; of Finite Groups ## and in the &ATLAS; of Brauer Characters . ##

## The function is based on ## , ## see the documentation of this function for details, e.g., about the ## return value. ##

## The returned record encodes the bibliography entries corresponding to ## those rows of the table that are clicked in visual mode, ## in the same format as the return value of ## , ## see the manual of the &GAP; package &GAPDoc; ## for details. ##

## can be called also via ## the menu shown by . ##

## if IsBound( BrowseBibliographySporadicSimple ) then ## > enter:= NCurses.keys.ENTER;; nop:= [ 14, 14, 14 ];; ## > BrowseData.SetReplay( Concatenation( ## > # choose the application ## > "/Bibliography of Sporadic Simple Groups", [ enter, enter ], ## > # search in the title column for the Atlas of Finite Groups ## > "scr/Atlas of finite groups", [ enter, ## > # and quit ## > nop, nop, nop, nop ], "Q" ) ); ## > BrowseGapData();; ## > BrowseData.SetReplay( false ); ## > fi; ## ]]> ##

## The bibliographies contained in the &ATLAS; of Finite Groups ## and in the &ATLAS; of Brauer Characters ## are available online in HTML format, see ## http://www.math.rwth-aachen.de/~Thomas.Breuer/atlasrep/bibl/index.html. ##

## The source data in BibXMLext format, which are used by ## , ## is part of the AtlasRep package, ## in four files with suffix xml in the package's bibl ## directory. ## Note that each of the two books contains two bibliographies. ##

## Details about the BibXMLext format, including information how to ## transform the data into other formats such as BibTeX, ## can be found in the &GAP; package ## GAPDoc (see ). ## ## ## <#/GAPDoc> ## BindGlobal( "BrowseBibliographySporadicSimple", function() return BrowseBibliography( BibliographySporadicSimple ); end ); ############################################################################# ## ## Undo the dummy assignment. ## if IsString( BrowseBibliography ) then Unbind( BrowseBibliography ); fi; ############################################################################# ## ## Add the Browse application to the list shown by `BrowseGapData'. ## BrowseGapDataAdd( "Bibliography of Sporadic Simple Groups", BrowseBibliographySporadicSimple, true, "\ the contents of the bibliographies contained in the Atlas of Finite Groups \ and in the Atlas of Brauer Characters, \ based on the same Browse application as the menu entry \ ``GAP Bibliography''; \ try ?BrowseBibliographySporadicSimple for details" ); ############################################################################# ## #E atlasrep/gap/access.gi0000644000175000017500000027754612701231745013373 0ustar samsam############################################################################# ## #W access.gi GAP 4 package AtlasRep Thomas Breuer ## #Y Copyright (C) 2001, Lehrstuhl D fuer Mathematik, RWTH Aachen, Germany ## ## This file contains functions for accessing data from the ATLAS of Group ## Representations. ## ############################################################################# ## #F AGR.StringFile( ) ## ## In unfortunate cases, files may contain line breaks of the form "\r\n" ## instead of "\n". ## 'Read' would recognize this situation, and would silently replace these ## line breaks, but 'StringFile' keeps the file contents. ## Therefore we remove the '\r' characters. ## AGR.StringFile:= function( filename ) local str; str:= StringFile( filename ); if IsString( str ) then str:= ReplacedString( str, "\r", "" ); fi; return str; end; ############################################################################# ## #V AGR.ExtensionInfoCharacterTable #V AGR.HasExtensionInfoCharacterTable #V AGR.LibInfoCharacterTable ## if IsBound( ExtensionInfoCharacterTable ) then AGR.ExtensionInfoCharacterTable:= ExtensionInfoCharacterTable; AGR.HasExtensionInfoCharacterTable:= HasExtensionInfoCharacterTable; AGR.LibInfoCharacterTable:= LibInfoCharacterTable; fi; ############################################################################# ## #F AGR.IsLowerAlphaOrDigitChar( ) ## AGR.IsLowerAlphaOrDigitChar:= char -> IsLowerAlphaChar( char ) or IsDigitChar( char ); ############################################################################# ## ## If the IO package is not installed then error messages are avoided ## via the following assignments. ## if not IsBound( SingleHTTPRequest ) then SingleHTTPRequest:= "dummy"; fi; if not IsBound( IO_stat ) then IO_stat:= "dummy"; fi; ############################################################################# ## #F AtlasOfGroupRepresentationsTransferFile( , , ) ## ## This function encapsulates the access to a file either via wget ## or via the IO package ## IO package. ##

## The source file is described by the server name server and the ## path srvfile. ## The file is written to the filename dstfile. ## ## <#GAPDoc Label="IO_or_wget"> ## When access to remote data is enabled ## (see Section ) ## then one needs either the &GAP; package IO ## IO package ## or the external program wgetwget ## for accessing data files. ##

## The chosen alternative is given by the value of the wget component ## of the global variable . ##

## If this component has the value true then only wget ## is tried, ## if the value is false then only the IO package ## is used. ## If this component is not bound or bound to another value than true ## or false (this is also the default) ## then the IO package IO package ## is preferred to wgetwget ## if this package is available, and otherwise wget is tried. ##

## Note that the system program wget may be not available, ## and that it may require some work to install it; ## hints for that can be found on the home page of the ## AtlasRep package (see ## Section ). ## <#/GAPDoc> ## ## If the access worked then true is returned, ## otherwise false. ## BindGlobal( "AtlasOfGroupRepresentationsTransferFile", function( server, srvfile, dstfile ) local pos, dstdir, wget, io, result; # Check whether 'dstfile' can be written. pos:= Positions( dstfile, '/' ); if pos = [] then dstdir:= "."; else dstdir:= dstfile{ [ 1 .. pos[ Length( pos ) ] - 1 ] }; fi; if not IsWritableFile( dstdir ) then Info( InfoWarning, 1, "Package AtlasRep:\n", "#I cannot write to the directory '", dstdir, "',\n", "#I perhaps change the AtlasRep data directories using\n", "#I 'SetUserPreference( \"AtlasRep\",", " \"AtlasRepDataDirectory\", ... )'" ); return false; fi; # Determine admissible alternatives. wget:= true; io:= true; if IsBound( AtlasOfGroupRepresentationsInfo.wget ) then if AtlasOfGroupRepresentationsInfo.wget = true then io:= false; elif AtlasOfGroupRepresentationsInfo.wget = false then wget:= false; fi; fi; srvfile:= Concatenation( "/", srvfile); # Try the IO package if it is admissible. if io and LoadPackage( "io" ) = true then Info( InfoAtlasRep, 2, "calling SingleHTTPRequest to get ", server, srvfile ); result:= SingleHTTPRequest( server, 80, "GET", srvfile, rec(), false, dstfile ); if result.statuscode <> 200 then Info( InfoAtlasRep, 2, "SingleHTTPRequest failed with status\n#I ", result.status ); else return true; fi; fi; # Try wget if it is admissible. if wget then wget:= Filename( DirectoriesSystemPrograms(), "wget" ); if wget = fail then Info( InfoAtlasRep, 1, "no `wget' executable found" ); else Info( InfoAtlasRep, 2, "calling `wget' to get `", server, srvfile, "'" ); result:= Process( DirectoryCurrent(), wget, InputTextNone(), OutputTextNone(), [ "-q", "-O", dstfile, Concatenation( "http://", server, srvfile ) ] ); if result <> 0 then Info( InfoAtlasRep, 2, "`wget' failed to fetch `", Concatenation( "http://", server, srvfile ), "'" ); RemoveFile( dstfile ); else return true; fi; fi; fi; # No admissible alternative was successful. return false; end ); ############################################################################# ## #V AtlasOfGroupRepresentationsAccessFunctionsDefault ## ## several functions may be provided; return value `fail' means that ## the next function is tried, otherwise the result counts ## InstallValue( AtlasOfGroupRepresentationsAccessFunctionsDefault, [ rec( description:= "default functions (read text files)", active:= true, location:= function( filename, groupname, dirname, type ) local pref, datadirs, info, name, namegz, names, fname; pref:= UserPreference( "AtlasRep", "AtlasRepDataDirectory" ); if dirname in [ "datagens", "dataword" ] then datadirs:= [ Directory( Concatenation( pref, dirname ) ) ]; else for info in AtlasOfGroupRepresentationsInfo.private do if dirname = info[2] then datadirs:= [ Directory( info[1] ) ]; break; fi; od; if not IsBound( datadirs ) then Error( "no private directory with identifier `", dirname, "'" ); fi; fi; # There may be an uncompressed or a compressed version. # If both are available then prefer the uncompressed version. if IsString( filename ) then name:= Filename( datadirs, filename ); if name = fail or not IsExistingFile( name ) then namegz:= Filename( datadirs, Concatenation( filename, ".gz" ) ); if namegz = fail then # No version is available yet. return Filename( datadirs[1], filename ); else return namegz; fi; else return name; fi; else # Treat the list entries separately. names:= []; for fname in filename do name:= Filename( datadirs, fname ); if name = fail or not IsExistingFile( name ) then namegz:= Filename( datadirs, Concatenation( fname, ".gz" ) ); if namegz = fail then # No version is available yet. Add( names, Filename( datadirs[1], fname ) ); else Add( names, namegz ); fi; else Add( names, name ); fi; od; return names; fi; end, fetch:= function( filepath, filename, groupname, dirname, type ) local triple, info, dirnam, result, gzip; # Get the group name info. triple:= First( AtlasOfGroupRepresentationsInfo.groupnames, x -> x[3] = groupname ); if triple = fail then Error( "illegal value of " ); fi; # Try to fetch the remote file. result:= fail; for info in AtlasOfGroupRepresentationsInfo.servers do dirnam:= Concatenation( info[2], triple[1], "/", triple[2] ); # Compose the name of the directory on the server. if dirname = "dataword" then Append( dirnam, "/words/" ); elif filename[ Length( filename ) ] = 'g' then Append( dirnam, "/gap0/" ); else Append( dirnam, "/mtx/" ); fi; # Fetch the file if possible. result:= AtlasOfGroupRepresentationsTransferFile( info[1], Concatenation( dirnam, filename ), filepath ); if result = false then Info( InfoAtlasRep, 2, "cannot transfer file from '", info[1], "'\n", "#I to '", filepath, "'" ); else break; fi; od; if result = false then Info( InfoAtlasRep, 1, "file '", filename, "' not fetched" ); return false; fi; # The file has just been fetched, perform postprocessing. # (For MeatAxe format only: If wanted then compress the new file.) if AtlasOfGroupRepresentationsInfo.compress = true and dirnam[ Length( dirnam ) - 1 ] = 'x' then gzip:= Filename( DirectoriesSystemPrograms(), "gzip" ); if gzip = fail or not IsExecutableFile( gzip ) then Info( InfoAtlasRep, 1, "no `gzip' executable found" ); else result:= Process( DirectoryCurrent(), gzip, InputTextNone(), OutputTextNone(), [ filepath ] ); if result = fail then Info( InfoAtlasRep, 2, "impossible to compress file `", filepath, "'" ); fi; fi; fi; return true; end, contents:= function( filepath, filename, groupname, dirname, type ) local len, i; if IsString( filepath ) then len:= Length( filepath ); if 3 < len and filepath{ [ len-2 .. len ] } = ".gz" then filepath:= filepath{ [ 1 .. len-3 ] }; fi; else filepath:= ShallowCopy( filepath ); for i in [ 1 .. Length( filepath ) ] do len:= Length( filepath[i] ); if 3 < len and filepath[i]{ [ len-2 .. len ] } = ".gz" then filepath[i]:= filepath[i]{ [ 1 .. len-3 ] }; fi; od; fi; return type[2].ReadAndInterpretDefault( filepath ); end, ), rec( description:= "read MeatAxe binary not text format", active:= false, location:= function( filename, groupname, dirname, type ) local pref, datadirs, info, names, fname, name; if not type[1] in [ "perm", "matff" ] then return fail; fi; pref:= UserPreference( "AtlasRep", "AtlasRepDataDirectory" ); if dirname = "datagens" then datadirs:= [ Directory( Concatenation( pref, dirname ) ) ]; else for info in AtlasOfGroupRepresentationsInfo.private do if dirname = info[2] then datadirs:= [ Directory( info[1] ) ]; break; fi; od; if not IsBound( datadirs ) then Error( "no private directory with identifier `", dirname, "'" ); fi; fi; # A list of file names is given, and the files are not compressed. # Replace the text format names by binary format names. filename:= List( filename, nam -> ReplacedString( nam, ".m", ".b" ) ); names:= []; for fname in filename do name:= Filename( datadirs, fname ); if name = fail then # No version is available yet. Add( names, Filename( datadirs[1], fname ) ); else Add( names, name ); fi; od; return names; end, fetch:= function( filepath, filename, groupname, dirname, type ) local triple, info, dirnam, result; # Get the group name info. triple:= First( AtlasOfGroupRepresentationsInfo.groupnames, x -> x[3] = groupname ); if triple = fail then Error( "illegal value of " ); fi; # Try to fetch the remote file. result:= fail; filename:= ReplacedString( filename, ".m", ".b" ); for info in AtlasOfGroupRepresentationsInfo.servers do # Fetch the file if possible. result:= AtlasOfGroupRepresentationsTransferFile( info[1], Concatenation( info[2], triple[1], "/", triple[2], "/bin/", filename ), filepath ); if result = false then Info( InfoAtlasRep, 2, "no connection to AtlasRep server ", info[1] ); else break; fi; od; if result = false then Info( InfoAtlasRep, 1, "no file `", filename, "' found on the servers" ); return false; fi; # (Do not compress the new file, it is in binary format.) return true; end, contents:= function( filepath, filename, groupname, dirname, type ) # This function is called only for the types "perm" and "matff", # and binary format files are *not* compressed. return List( filepath, FFMatOrPermCMtxBinary ); end, ), #T The following is currently useless because of an unlucky files format. # rec( # description:= "read GAP format not MeatAxe format", # # active:= false, # # location:= function( filename, groupname, dirname, type ) # local datadirs, info, names, fname, name; # # # (Does the same as the `location' function for MeatAxe binary format, # # except that we replace the suffix of the filename by `.g' not `.b'.) # if not type[1] in [ "perm", "matff" ] then # return fail; # fi; # if dirname = "datagens" then # datadirs:= DirectoriesPackageLibrary( "atlasrep", dirname ); # else # for info in AtlasOfGroupRepresentationsInfo.private do # if dirname = info[2] then # datadirs:= [ Directory( info[1] ) ]; # break; # fi; # od; # if not IsBound( datadirs ) then # Error( "no private directory with identifier `", dirname, "'" ); # fi; # fi; # # # A list of file names is given, and the files are not compressed. # # Replace the text format names by binary format names. # filename:= List( filename, nam -> ReplacedString( nam, ".m", ".g" ) ); # names:= []; # for fname in filename do # name:= Filename( datadirs, fname ); # if name = fail then # # No version is available yet. # Add( names, Filename( datadirs[1], fname ) ); # else # Add( names, name ); # fi; # od; # return names; ## alternative for ONE file with SEVERAL generators: ## # Replace the list of text format names by one GAP format name. ## filename:= ReplacedString( filename[1], ".m1", ".g" ); ## name:= Filename( datadirs, filename ); ## if name = fail then ## # No version is available yet. ## return Filename( datadirs[1], filename ); ## else ## return name; ## fi; # end, # # fetch:= function( filepath, filename, groupname, dirname, type ) # local triple, info, dirnam, result; # # # (Does the same as the `fetch' function for MeatAxe binary format, # # except that the source file is expected in `gap' not `bin'.) # # Get the group name info. # triple:= First( AtlasOfGroupRepresentationsInfo.groupnames, # x -> x[3] = groupname ); # if triple = fail then # Error( "illegal value of " ); # fi; # # # Try to fetch the remote file. # result:= fail; # filename:= ReplacedString( filename, ".m", ".g" ); # for info in AtlasOfGroupRepresentationsInfo.servers do # # # Fetch the file if possible. # result:= AtlasOfGroupRepresentationsTransferFile( info[1], # Concatenation( info[2], triple[1], "/", triple[2], # "/gap/", filename ), # filepath ); # if result = false then # Info( InfoAtlasRep, 2, # "no connection to AtlasRep server ", info[1] ); # else # break; # fi; # # od; # if result = false then # Info( InfoAtlasRep, 1, # "no file `", filename, "' found on the servers" ); # return false; # fi; # # # (Do not compress the new file, it is not in MeatAxe text format.) # return true; # end, # # contents:= function( filepath, filename, groupname, dirname, type ) # # This function is called only for the types "perm" and "matff", # # and GAP format files are *not* compressed. # return List( filepath, AtlasDataGAPFormatFile ); ## alternative for ONE file with SEVERAL generators: ## return AtlasDataGAPFormatFile( filepath ); # end, # ), rec( description:= "direct access to a local server", active:= false, location:= function( filename, groupname, dirname, type ) local triple, dirnam, name, names, fname; # This is meaningful only for official data # and if there is a local server. if not ( dirname in [ "datagens", "dataword" ] and IsBound( AtlasOfGroupRepresentationsInfo.localserver ) ) then return fail; fi; # Get the group name info. triple:= First( AtlasOfGroupRepresentationsInfo.groupnames, x -> x[3] = groupname ); if triple = fail then Error( "illegal value of " ); fi; # Compose the name of the directory on the server. dirnam:= Concatenation( AtlasOfGroupRepresentationsInfo.localserver, triple[1], "/", triple[2] ); if dirname = "dataword" then Append( dirnam, "/words/" ); elif filename[ Length( filename ) ] = 'g' then Append( dirnam, "/gap0/" ); else Append( dirnam, "/mtx/" ); fi; # Check whether the file(s) exist(s). if IsString( filename ) then name:= Concatenation( dirnam, filename ); if IsExistingFile( name ) then return name; fi; return fail; else names:= []; for fname in filename do name:= Concatenation( dirnam, fname ); if IsExistingFile( name ) then Add( names, name ); else return fail; fi; od; return names; fi; end, fetch:= function( filepath, filename, groupname, dirname, type ) # The `location' function has checked that the file exists. return true; end, contents:= function( filepath, filename, groupname, dirname, type ) # We need not care about compressed files. return type[2].ReadAndInterpretDefault( filepath ); end, ), ] ); ############################################################################# ## #F AGR.CrcFileFits( , ) ## AGR.CrcFileFits:= function( filename, path ) local crc, len; crc:= First( AtlasOfGroupRepresentationsInfo.filenames, p -> p[1] = filename ); if crc = fail then return false; fi; len:= Length( path ); if path{ [ len - 2 .. len ] } = ".gz" then path:= path{ [ 1 .. len - 3 ] }; fi; if crc[2] = CrcFile( path ) then return true; else Info( InfoWarning, 1, "CrcFile value of\n", "#I '", path, "'\n", "#I does not match, ignoring this file" ); return false; fi; end; ############################################################################# ## #F AtlasOfGroupRepresentationsLocalFilename( , , #F , ) ## InstallGlobalFunction( AtlasOfGroupRepresentationsLocalFilename, function( dirname, groupname, filename, type ) local cand, r, path, i; cand:= []; for r in Reversed( AtlasOfGroupRepresentationsInfo.accessFunctions ) do if r.active = true then path:= r.location( filename, groupname, dirname, type ); if path <> fail then # Check whether the CRC values fit. if IsString( path ) then path:= [ path ]; filename:= [ filename ]; fi; for i in [ 1 .. Length( filename ) ] do path[i]:= [ path[i], IsExistingFile( path[i] ) ]; od; if ForAll( path, x -> x[2] ) then # This has priority, do not consider other sources. cand:= [ [ r, path ] ]; break; else Add( cand, [ r, path ] ); fi; fi; fi; od; return cand; end ); ############################################################################# ## #F AtlasOfGroupRepresentationsLocalFilenameTransfer( , , #F , ) ## InstallGlobalFunction( AtlasOfGroupRepresentationsLocalFilenameTransfer, function( dirname, groupname, filename, type ) local cand, list, filenamex, result, ok, i; # Determine the local directory where to look for the file, # and the functions that claim to be applicable. cand:= AtlasOfGroupRepresentationsLocalFilename( dirname, groupname, filename, type ); if IsString( filename ) then filenamex:= [ filename ]; else filenamex:= filename; fi; for list in cand do if Length( list[2] ) = Length( filenamex ) then # This is the situation we can handle. if IsString( filename ) then result:= [ list[2][1][1], list[1] ]; else result:= [ List( list[2], x -> x[1] ), list[1] ]; fi; ok:= true; for i in [ 1 .. Length( list[2] ) ] do if list[2][i][2] then # This file is already available. if dirname in [ "datagens", "dataword" ] then # Check its crc value. if not AGR.CrcFileFits( filenamex[i], list[2][i][1] ) then return fail; fi; fi; elif AtlasOfGroupRepresentationsInfo.remote = true and dirname in [ "datagens", "dataword" ] and list[1].fetch( list[2][i][1], filenamex[i], groupname, dirname, type ) then # We have created a new local file. # Check its crc value, if not AGR.CrcFileFits( filenamex[i], list[2][i][1] ) then return fail; fi; else # We cannot fetch the file. ok:= false; break; fi; od; if ok then # Return path(s) and access functions. return result; fi; fi; od; # Not all files can be made available, or not all crc values fit. Info( InfoAtlasRep, 1, "no file(s) `", filename, "' found in the local directories" ); return fail; end ); ############################################################################# ## #F AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates() ## InstallGlobalFunction( AtlasOfGroupRepresentationsTestTableOfContentsRemoteUpdates, function() local version, inforec, home, server, path, dstfilename, result, lines, pref, datadirs, line, pos, pos2, filename, filenames, localfile, servdate, stat; if LoadPackage( "io" ) <> true then Info( InfoAtlasRep, 1, "the package IO is not available" ); return fail; fi; # Download the file that lists the changes. version:= InstalledPackageVersion( "atlasrep" ); inforec:= First( PackageInfo( "atlasrep" ), r -> r.Version = version ); home:= inforec.PackageWWWHome; if home{ [ 1 .. 7 ] } = "http://" then home:= home{ [ 8 .. Length( home ) ] }; fi; server:= home{ [ 1 .. Position( home, '/' ) - 1 ] }; path:= home{ [ Position( home, '/' ) + 1 .. Length( home ) ] }; dstfilename:= Filename( DirectoryTemporary(), "changes.htm" ); result:= []; if AtlasOfGroupRepresentationsTransferFile( server, Concatenation( path, "/htm/data/changes.htm" ), dstfilename ) then lines:= SplitString( AGR.StringFile( dstfilename ), "\n" ); lines:= Filtered( lines, x -> 20 < Length( x ) and x{ [ 1 .. 4 ] } = "" and x{ [ -3 .. 0 ] + Length( x ) } = " -->" ); pref:= UserPreference( "AtlasRep", "AtlasRepDataDirectory" ); datadirs:= [ Directory( Concatenation( pref, "datagens" ) ), Directory( Concatenation( pref, "dataword" ) ) ]; for line in lines do pos:= PositionSublist( line, "" ); if pos <> fail then pos2:= PositionSublist( line, "", pos ); filename:= line{ [ pos+9 .. pos2-1 ] }; if PositionSublist( filename, "i" ) <> fail then filenames:= List( [ "1", "2" ], i -> ReplacedString( filename, "i", i ) ); else filenames:= [ filename ]; fi; for filename in filenames do localfile:= Filename( datadirs, filename ); if localfile <> fail then if not IsExistingFile( localfile ) then localfile:= Concatenation( localfile, ".gz" ); fi; if IsExistingFile( localfile ) then # There is something to compare. pos:= PositionSublist( line, "