texlive[53653] Master: lie-hasse (3feb20)

commits+karl at tug.org commits+karl at tug.org
Mon Feb 3 23:30:54 CET 2020


Revision: 53653
          http://tug.org/svn/texlive?view=revision&revision=53653
Author:   karl
Date:     2020-02-03 23:30:53 +0100 (Mon, 03 Feb 2020)
Log Message:
-----------
lie-hasse (3feb20)

Modified Paths:
--------------
    trunk/Master/tlpkg/bin/tlpkg-ctan-check
    trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc

Added Paths:
-----------
    trunk/Master/texmf-dist/doc/latex/lie-hasse/
    trunk/Master/texmf-dist/doc/latex/lie-hasse/README
    trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.bib
    trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.pdf
    trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.tex
    trunk/Master/texmf-dist/tex/latex/lie-hasse/
    trunk/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty
    trunk/Master/tlpkg/tlpsrc/lie-hasse.tlpsrc

Added: trunk/Master/texmf-dist/doc/latex/lie-hasse/README
===================================================================
--- trunk/Master/texmf-dist/doc/latex/lie-hasse/README	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/lie-hasse/README	2020-02-03 22:30:53 UTC (rev 53653)
@@ -0,0 +1,21 @@
+___________________________________
+
+            Lie Hasse
+               
+            v1.0
+
+            3 February 2020
+___________________________________
+
+Authors   : Ben McKay
+Maintainer: Ben McKay
+E-mail    : b.mckay at ucc.ie
+Licence   : Released under the LaTeX Project Public License v1.3c or
+            later, see http://www.latex-project.org/lppl.txt
+
+----------------------------------------------------------------------
+
+This package draws Hasse diagrams of the posets 
+of the simple roots of any complex simple Lie algebra.
+It uses the Dynkin diagrams package dynkin-diagrams.
+


Property changes on: trunk/Master/texmf-dist/doc/latex/lie-hasse/README
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.bib
===================================================================
--- trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.bib	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.bib	2020-02-03 22:30:53 UTC (rev 53653)
@@ -0,0 +1,495 @@
+% Encoding: ISO-8859-1
+
+
+ at Book{Adams:1996,
+  Title                    = {Lectures on exceptional {L}ie groups},
+  Author                   = {Adams, J. F.},
+  Publisher                = {University of Chicago Press, Chicago, IL},
+  Year                     = {1996},
+  Note                     = {With a foreword by J. Peter May,
+ Edited by Zafer Mahmud and Mamoru Mimura},
+  Series                   = {Chicago Lectures in Mathematics},
+
+  ISBN                     = {0-226-00526-7; 0-226-00527-5},
+  Mrclass                  = {22-01 (22E10)},
+  Mrnumber                 = {1428422},
+  Mrreviewer               = {William M. McGovern},
+  Owner                    = {user},
+  Pages                    = {xiv+122},
+  Timestamp                = {2018.07.22}
+}
+
+ at Article{Baba:2009,
+  Title                    = {Satake diagrams and restricted root systems of semisimple pseudo-{R}iemannian symmetric spaces},
+  Author                   = {Baba, Kurando},
+  Journal                  = {Tokyo J. Math.},
+  Year                     = {2009},
+  Number                   = {1},
+  Pages                    = {127--158},
+  Volume                   = {32},
+
+  Fjournal                 = {Tokyo Journal of Mathematics},
+  ISSN                     = {0387-3870},
+  Mrclass                  = {17B20 (17B22 53C35)},
+  Mrnumber                 = {2541161},
+  Mrreviewer               = {Oksana S. Yakimova},
+  Owner                    = {user},
+  Timestamp                = {2017.12.04},
+  Url                      = {https://doi.org/10.3836/tjm/1249648414}
+}
+
+ at Book{Bourbaki:2002,
+  Title                    = {Lie groups and {L}ie algebras. {C}hapters 4--6},
+  Author                   = {Bourbaki, Nicolas},
+  Publisher                = {Springer-Verlag, Berlin},
+  Year                     = {2002},
+  Note                     = {Translated from the 1968 French original by Andrew Pressley},
+  Series                   = {Elements of Mathematics (Berlin)},
+
+  ISBN                     = {3-540-42650-7},
+  Mrclass                  = {17-01 (00A05 20E42 20F55 22-01)},
+  Mrnumber                 = {1890629},
+  Owner                    = {user},
+  Pages                    = {xii+300},
+  Timestamp                = {2017.11.15},
+  Url                      = {https://doi.org/10.1007/978-3-540-89394-3}
+}
+
+ at Book{Carter:2005,
+  Title                    = {Lie algebras of finite and affine type},
+  Author                   = {Carter, R. W.},
+  Publisher                = {Cambridge University Press, Cambridge},
+  Year                     = {2005},
+  Series                   = {Cambridge Studies in Advanced Mathematics},
+  Volume                   = {96},
+
+  ISBN                     = {978-0-521-85138-1; 0-521-85138-6},
+  Mrclass                  = {17-02 (17B67)},
+  Mrnumber                 = {2188930},
+  Mrreviewer               = {Stephen Slebarski},
+  Owner                    = {user},
+  Pages                    = {xviii+632},
+  Timestamp                = {2017.11.15},
+  Url                      = {https://doi.org/10.1017/CBO9780511614910}
+}
+
+ at InCollection{Carter:1995,
+  Title                    = {On the representation theory of the finite groups of {L}ie
+ type over an algebraically closed field of characteristic 0 [
+ {MR}1170353 (93j:20034)]},
+  Author                   = {Carter, R. W.},
+  Booktitle                = {Algebra, {IX}},
+  Publisher                = {Springer, Berlin},
+  Year                     = {1995},
+  Pages                    = {1--120, 235--239},
+  Series                   = {Encyclopaedia Math. Sci.},
+  Volume                   = {77},
+
+  Doi                      = {10.1007/978-3-662-03235-0_1},
+  Mrclass                  = {20C33 (20-02 20G05)},
+  Mrnumber                 = {1392478},
+  Owner                    = {user},
+  Timestamp                = {2018.05.19},
+  Url                      = {https://doi.org/10.1007/978-3-662-03235-0_1}
+}
+
+ at Article{Chuah:2013,
+  Title                    = {Cartan automorphisms and {V}ogan superdiagrams},
+  Author                   = {Chuah, Meng-Kiat},
+  Journal                  = {Math. Z.},
+  Year                     = {2013},
+  Number                   = {3-4},
+  Pages                    = {793--800},
+  Volume                   = {273},
+
+  Fjournal                 = {Mathematische Zeitschrift},
+  ISSN                     = {0025-5874},
+  Mrclass                  = {17B20 (17B40)},
+  Mrnumber                 = {3030677},
+  Mrreviewer               = {Zi-Xin Hou},
+  Owner                    = {user},
+  Timestamp                = {2017.12.04},
+  Url                      = {https://doi.org/10.1007/s00209-012-1030-z}
+}
+
+ at InCollection{Draper/Guido:2016,
+  Title                    = {On the real forms of the exceptional {L}ie algebra {$\mathfrak
+ e_6$} and their {S}atake diagrams},
+  Author                   = {Draper Fontanals, Cristina and Guido, Valerio},
+  Booktitle                = {Non-associative and non-commutative algebra and operator
+ theory},
+  Publisher                = {Springer, Cham},
+  Year                     = {2016},
+  Pages                    = {211--226},
+  Series                   = {Springer Proc. Math. Stat.},
+  Volume                   = {160},
+
+  Mrclass                  = {17B20 (17A75 17B25 17B60)},
+  Mrnumber                 = {3613831},
+  Mrreviewer               = {Alberto Elduque},
+  Owner                    = {user},
+  Timestamp                = {2018.04.30}
+}
+
+ at Book{Dynkin:2000,
+  Title                    = {Selected papers of {E}. {B}. {D}ynkin with commentary},
+  Author                   = {Dynkin, E. B.},
+  Publisher                = {American Mathematical Society, Providence, RI; International Press, Cambridge, MA},
+  Year                     = {2000},
+  Note                     = {Edited by A. A. Yushkevich, G. M. Seitz and A. L. Onishchik},
+
+  ISBN                     = {0-8218-1065-0},
+  Mrclass                  = {01A75 (60Jxx)},
+  Mrnumber                 = {1757976},
+  Mrreviewer               = {William M. McGovern},
+  Owner                    = {user},
+  Pages                    = {xxviii+796},
+  Timestamp                = {2017.11.15}
+}
+
+ at Article{Dynkin:1952,
+  Title                    = {Semisimple subalgebras of semisimple {L}ie algebras},
+  Author                   = {Dynkin, E. B.},
+  Journal                  = {Mat. Sbornik N.S.},
+  Year                     = {1952},
+  Note                     = {Reprinted in English translation in \cite{Dynkin:2000}.},
+  Pages                    = {349--462 (3 plates)},
+  Volume                   = {30(72)},
+
+  Mrclass                  = {09.1X},
+  Mrnumber                 = {0047629},
+  Mrreviewer               = {I. Kaplansky},
+  Owner                    = {user},
+  Timestamp                = {2017.11.15}
+}
+
+ at Article{Frappat/Sciarrino/Sorba:1989,
+  Title                    = {Structure of basic {L}ie superalgebras and of their affine extensions},
+  Author                   = {Frappat, L. and Sciarrino, A. and Sorba, P.},
+  Journal                  = {Comm. Math. Phys.},
+  Year                     = {1989},
+  Number                   = {3},
+  Pages                    = {457--500},
+  Volume                   = {121},
+
+  Fjournal                 = {Communications in Mathematical Physics},
+  ISSN                     = {0010-3616},
+  Mrclass                  = {17B70 (17A70 17B40)},
+  Mrnumber                 = {990776},
+  Mrreviewer               = {A. Pianzola},
+  Owner                    = {user},
+  Timestamp                = {2017.12.18},
+  Url                      = {http://0-projecteuclid.org.library.ucc.ie/euclid.cmp/1104178142}
+}
+
+ at Book{Grove/Benson:1985,
+  Title                    = {Finite reflection groups},
+  Author                   = {Grove, L. C. and Benson, C. T.},
+  Publisher                = {Springer-Verlag, New York},
+  Year                     = {1985},
+  Edition                  = {Second},
+  Series                   = {Graduate Texts in Mathematics},
+  Volume                   = {99},
+
+  ISBN                     = {0-387-96082-1},
+  Mrclass                  = {20-01 (20B25 20H15)},
+  Mrnumber                 = {777684},
+  Owner                    = {user},
+  Pages                    = {x+133},
+  Timestamp                = {2017.11.15},
+  Url                      = {https://doi.org/10.1007/978-1-4757-1869-0}
+}
+
+ at Book{Helgason:2001,
+  Title                    = {Differential geometry, {L}ie groups, and symmetric spaces},
+  Author                   = {Helgason, Sigurdur},
+  Publisher                = {American Mathematical Society, Providence, RI},
+  Year                     = {2001},
+  Note                     = {Corrected reprint of the 1978 original},
+  Series                   = {Graduate Studies in Mathematics},
+  Volume                   = {34},
+
+  ISBN                     = {0-8218-2848-7},
+  Mrclass                  = {53C35 (22E10 22E46 22E60)},
+  Mrnumber                 = {1834454},
+  Owner                    = {user},
+  Pages                    = {xxvi+641},
+  Timestamp                = {2017.11.15},
+  Url                      = {https://doi.org/10.1090/gsm/034}
+}
+
+ at Book{Humphreys:1990,
+  Title                    = {Reflection groups and {C}oxeter groups},
+  Author                   = {Humphreys, James E.},
+  Publisher                = {Cambridge University Press, Cambridge},
+  Year                     = {1990},
+  Series                   = {Cambridge Studies in Advanced Mathematics},
+  Volume                   = {29},
+
+  ISBN                     = {0-521-37510-X},
+  Mrclass                  = {20-02 (20F32 20F55 20G15 20H15)},
+  Mrnumber                 = {1066460},
+  Mrreviewer               = {Louis Solomon},
+  Owner                    = {user},
+  Pages                    = {xii+204},
+  Timestamp                = {2017.11.15},
+  Url                      = {https://doi.org/10.1017/CBO9780511623646}
+}
+
+ at Book{Kac:1990,
+  Title                    = {Infinite-dimensional {L}ie algebras},
+  Author                   = {Kac, Victor G.},
+  Publisher                = {Cambridge University Press, Cambridge},
+  Year                     = {1990},
+  Edition                  = {Third},
+
+  ISBN                     = {0-521-37215-1; 0-521-46693-8},
+  Mrclass                  = {17B65 (17B67 17B68 58F07)},
+  Mrnumber                 = {1104219},
+  Owner                    = {user},
+  Pages                    = {xxii+400},
+  Timestamp                = {2017.11.15},
+  Url                      = {https://doi.org/10.1017/CBO9780511626234}
+}
+
+ at Article{Khastgir/Sasaki:1996,
+  Title                    = {Non-canonical folding of {D}ynkin diagrams and reduction of affine {T}oda theories},
+  Author                   = {Khastgir, S. Pratik and Sasaki, Ryu},
+  Journal                  = {Progr. Theoret. Phys.},
+  Year                     = {1996},
+  Number                   = {3},
+  Pages                    = {503--518},
+  Volume                   = {95},
+
+  Fjournal                 = {Progress of Theoretical Physics},
+  ISSN                     = {0033-068X},
+  Mrclass                  = {81T10 (17B81 58F07 81R10)},
+  Mrnumber                 = {1388245},
+  Mrreviewer               = {Mehmet Koca},
+  Owner                    = {user},
+  Timestamp                = {2017.12.18},
+  Url                      = {https://doi.org/10.1143/PTP.95.503}
+}
+
+ at book {Langlands:1967,
+    AUTHOR = {Langlands, Robert P.},
+     TITLE = {Euler products},
+      NOTE = {A James K. Whittemore Lecture in Mathematics given at Yale
+              University, 1967,
+              Yale Mathematical Monographs, 1},
+ PUBLISHER = {Yale University Press, New Haven, Conn.-London},
+      YEAR = {1971},
+     PAGES = {v+53},
+   MRCLASS = {10D20 (22E55)},
+  MRNUMBER = {0419366},
+MRREVIEWER = {Stephen Gelbart},
+}
+ at MISC {MathOverflow:123801,
+TITLE = {Invariant subbundles of tangent bundle of flag variety (question)},
+AUTHOR = {Benjamin McKay},
+HOWPUBLISHED = {MathOverflow},
+DATE = {2013-03-06},
+NOTE = {URL:\url{http://mathoverflow.net/a/22350} (visited on 2020-01-29)},
+URL = {http://mathoverflow.net/a/123801},
+URLDATE = {2020-01-29},
+}
+ at phdthesis{Nutma:2010,
+  author       = {Nutma, Teake Aant}, 
+  title        = {Kac-Moody symmetries and gauged supergravity},
+  school       = {Rijksuniversiteit Groningen},
+  year         = 2010,
+  address      = {Groningen},
+  month        = 9,
+  note         = {URL:\url{http://inspirehep.net/record/1283406/files/Thesis-2010-Nutma.pdf}  (visited on 2020-01-29)}
+}
+ at Book{OnishchikVinberg:1990,
+  Title                    = {Lie groups and algebraic groups},
+  Author                   = {Onishchik, A. L. and Vinberg, {\`E}. B.},
+  Publisher                = {Springer-Verlag},
+  Year                     = {1990},
+
+  Address                  = {Berlin},
+  Note                     = {Translated from the Russian and with a preface by D. A. Leites},
+  Series                   = {Springer Series in Soviet Mathematics},
+
+  ISBN                     = {3-540-50614-4},
+  Mrclass                  = {22-01 (17B20 20G20 22E10 22E15)},
+  Mrnumber                 = {91g:22001},
+  Mrreviewer               = {James E. Humphreys},
+  Owner                    = {user},
+  Pages                    = {xx+328},
+  Timestamp                = {2017.11.15}
+}
+
+ at Book{Onishchik/Vinberg:1990,
+  Title                    = {Lie groups and algebraic groups},
+  Author                   = {Onishchik, A. L. and Vinberg, \`E. B.},
+  Publisher                = {Springer-Verlag, Berlin},
+  Year                     = {1990},
+  Note                     = {Translated from the Russian and with a preface by D. A. Leites},
+  Series                   = {Springer Series in Soviet Mathematics},
+
+  ISBN                     = {3-540-50614-4},
+  Mrclass                  = {22-01 (17B20 20G20 22E10 22E15)},
+  Mrnumber                 = {1064110},
+  Mrreviewer               = {James E. Humphreys},
+  Owner                    = {user},
+  Pages                    = {xx+328},
+  Timestamp                = {2017.11.15},
+  Url                      = {https://doi.org/10.1007/978-3-642-74334-4}
+}
+ at Article{Ransingh:2013,
+  Title                    = {Vogan diagrams of untwisted affine {K}ac-{M}oody superalgebras},
+  Author                   = {Ransingh, Biswajit},
+  Journal                  = {Asian-Eur. J. Math.},
+  Year                     = {2013},
+  Number                   = {4},
+  Pages                    = {1350062, 10},
+  Volume                   = {6},
+
+  Fjournal                 = {Asian-European Journal of Mathematics},
+  ISSN                     = {1793-5571},
+  Mrclass                  = {17B67 (17B05 17B22 17B40)},
+  Mrnumber                 = {3149279},
+  Mrreviewer               = {Xiangqian Guo},
+  Owner                    = {user},
+  Timestamp                = {2018.01.11}
+}
+
+ at Article{Ransingh:unpub,
+  Title                    = {{Vogan diagrams of affine twisted Lie superalgebras}},
+  Author                   = {Ransingh, B.},
+  Journal                  = {ArXiv e-prints},
+  Year                     = {2013},
+
+  Month                    = mar,
+  Pages                    = {1--9},
+
+  Adsnote                  = {Provided by the SAO/NASA Astrophysics Data System},
+  Adsurl                   = {http://adsabs.harvard.edu/abs/2013arXiv1303.0092R},
+  Archiveprefix            = {arXiv},
+  Eprint                   = {1303.0092},
+  Keywords                 = {Mathematical Physics, Mathematics - Representation Theory},
+  Owner                    = {user},
+  Primaryclass             = {math-ph},
+  Timestamp                = {2018.01.11}
+}
+
+ at Article{Regelskis/Vlaar:2016,
+  Title                    = {{Reflection matrices, coideal subalgebras and generalized Satake diagrams of affine type}},
+  Author                   = {{Regelskis}, V. and {Vlaar}, B.},
+  Journal                  = {ArXiv e-prints},
+  Year                     = {2016},
+
+  Month                    = feb,
+  Pages                    = {1--118},
+
+  Adsnote                  = {Provided by the SAO/NASA Astrophysics Data System},
+  Adsurl                   = {http://adsabs.harvard.edu/abs/2016arXiv160208471R},
+  Archiveprefix            = {arXiv},
+  Eprint                   = {1602.08471},
+  Keywords                 = {Mathematical Physics, Mathematics - Quantum Algebra, Mathematics - Representation Theory, Nonlinear Sciences - Exactly Solvable and Integrable Systems},
+  Owner                    = {user},
+  Primaryclass             = {math-ph},
+  Timestamp                = {2017.12.04}
+}
+ at ARTICLE{Ringel:2013,
+       author = {Ringel, Claus Michael},
+        title = {The root posets and their rich antichains},
+      journal = {arXiv e-prints},
+     keywords = {Mathematics - Combinatorics, Mathematics - Representation Theory},
+         year = "2013",
+        month = "Jun",
+          eid = {arXiv:1306.1593},
+        pages = {arXiv:1306.1593},
+archivePrefix = {arXiv},
+       eprint = {1306.1593},
+ primaryClass = {math.CO},
+       adsurl = {https://ui.adsabs.harvard.edu/abs/2013arXiv1306.1593R},
+      adsnote = {Provided by the SAO/NASA Astrophysics Data System}
+}
+ at Book{Satake:1980,
+  Title                    = {Algebraic structures of symmetric domains},
+  Author                   = {Satake, Ichir\^o},
+  Publisher                = {Iwanami Shoten, Tokyo; Princeton University Press, Princeton, N.J.},
+  Year                     = {1980},
+  Series                   = {Kan\^o Memorial Lectures},
+  Volume                   = {4},
+
+  Mrclass                  = {32-02 (17C35 32Mxx 53C35)},
+  Mrnumber                 = {591460},
+  Mrreviewer               = {S. Murakami},
+  Owner                    = {user},
+  Pages                    = {xvi+321},
+  Timestamp                = {2017.11.15}
+}
+
+ at Book{Springer:2009,
+  Title                    = {Linear algebraic groups},
+  Author                   = {Springer, T. A.},
+  Publisher                = {Birkh\"auser Boston, Inc., Boston, MA},
+  Year                     = {2009},
+  Edition                  = {second},
+  Series                   = {Modern Birkh\"auser Classics},
+
+  ISBN                     = {978-0-8176-4839-8},
+  Mrclass                  = {20G15 (14L10)},
+  Mrnumber                 = {2458469},
+  Owner                    = {user},
+  Pages                    = {xvi+334},
+  Timestamp                = {2018.03.31}
+}
+
+ at InCollection{Zuber:1998,
+  Title                    = {Generalized {D}ynkin diagrams and root systems and their folding},
+  Author                   = {Zuber, Jean-Bernard},
+  Booktitle                = {Topological field theory, primitive forms and related topics ({K}yoto, 1996)},
+  Publisher                = {Birkh\"auser Boston, Boston, MA},
+  Year                     = {1998},
+  Pages                    = {453--493},
+  Series                   = {Progr. Math.},
+  Volume                   = {160},
+
+  Mrclass                  = {17B20 (05C25 20F55)},
+  Mrnumber                 = {1653035},
+  Mrreviewer               = {Saeid Azam},
+  Owner                    = {user},
+  Timestamp                = {2017.12.18}
+}
+
+ at Book{Vinberg:1994,
+  Title                    = {Lie groups and {L}ie algebras, {III}},
+  Editor                   = {Vinberg, \`E. B.},
+  Publisher                = {Springer-Verlag, Berlin},
+  Year                     = {1994},
+  Note                     = {Structure of Lie groups and Lie algebras, A translation of {{\i}t Current problems in mathematics. Fundamental directions. Vol. 41} (Russian), Akad. Nauk SSSR, Vsesoyuz. Inst. Nauchn. i Tekhn. Inform., Moscow, 1990 [ MR1056485 (91b:22001)], Translation by V. Minachin [V. V. Minakhin], Translation edited by A. L. Onishchik and \`E. B. Vinberg},
+  Series                   = {Encyclopaedia of Mathematical Sciences},
+  Volume                   = {41},
+
+  ISBN                     = {3-540-54683-9},
+  Mrclass                  = {22-06 (17-06 22Exx)},
+  Mrnumber                 = {1349140},
+  Owner                    = {user},
+  Pages                    = {iv+248},
+  Timestamp                = {2017.11.15},
+  Url                      = {https://doi.org/10.1007/978-3-662-03066-0}
+}
+
+ at Book{Fulton.Harris:1991,
+  title      = {Representation theory},
+  publisher  = {Springer-Verlag, New York},
+  year       = {1991},
+  author     = {Fulton, William and Harris, Joe},
+  volume     = {129},
+  series     = {Graduate Texts in Mathematics},
+  isbn       = {0-387-97527-6; 0-387-97495-4},
+  note       = {A first course, Readings in Mathematics},
+  doi        = {10.1007/978-1-4612-0979-9},
+  mrclass    = {20G05 (17B10 20G20 22E46)},
+  mrnumber   = {1153249},
+  mrreviewer = {James E. Humphreys},
+  pages      = {xvi+551},
+  url        = {https://doi.org/10.1007/978-1-4612-0979-9},
+}
+
+ at Comment{jabref-meta: databaseType:bibtex;}


Property changes on: trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.bib
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.pdf
===================================================================
(Binary files differ)

Index: trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.pdf
===================================================================
--- trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.pdf	2020-02-03 22:30:09 UTC (rev 53652)
+++ trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.pdf	2020-02-03 22:30:53 UTC (rev 53653)

Property changes on: trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.pdf
___________________________________________________________________
Added: svn:mime-type
## -0,0 +1 ##
+application/pdf
\ No newline at end of property
Added: trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.tex
===================================================================
--- trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.tex	                        (rev 0)
+++ trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.tex	2020-02-03 22:30:53 UTC (rev 53653)
@@ -0,0 +1,555 @@
+\documentclass{amsart}
+\title[The Lie Hasse package]{The Lie Hasse package \\ Version 1.0}
+%% My name:
+\makeatletter
+\DeclareRobustCommand{\scotsMc}{\scotsMcx{c}}
+\DeclareRobustCommand{\scotsMC}{\scotsMcx{\textsc{c}}}
+\DeclareRobustCommand{\scotsMcx}[1]{%
+  M%
+  \raisebox{\dimexpr\fontcharht\font`M-\height}{%
+    \check at mathfonts\fontsize{\sf at size}{0}\selectfont
+    \kern.3ex\underline{\kern-.3ex #1\kern-.3ex}\kern.3ex
+  }%
+}
+\expandafter\def\expandafter\@uclclist\expandafter{%
+  \@uclclist\scotsMc\scotsMC
+}
+\makeatother
+\newcommand{\authorsname}{\texorpdfstring{Benjamin \scotsMc{}Kay}{Benjamin McKay}}
+\author{\authorsname}
+\address{School of Mathematical Sciences,  University College Cork, Cork, Ireland}
+\email{b.mckay at ucc.ie}
+\date{3 February 2020}
+\usepackage{etex}
+\usepackage[T1]{fontenc}
+\usepackage[utf8]{inputenx}
+\usepackage{etoolbox} 
+\usepackage{lmodern}
+\RequirePackage[tt=lining]{cfr-lm}
+\usepackage[kerning=true,tracking=true]{microtype}
+\usepackage{amsmath}
+\usepackage{amsfonts}
+\usepackage{mathtools}
+\usepackage{mathtext}
+\usepackage[english]{babel}
+\usepackage[pagebackref]{hyperref}
+ \hypersetup{
+   colorlinks   = true,  %Colours links instead of ugly boxes
+   urlcolor     = black, %Colour for external hyperlinks
+   linkcolor    = black, %Colour of internal links
+   citecolor    = black  %Colour of citations
+ }
+\usepackage{lie-hasse}
+\usetikzlibrary{positioning}
+\usepackage{fancyvrb}\fvset{obeytabs,tabsize=2,fontsize=\small}
+\usepackage[listings]{tcolorbox} 
+\tcbuselibrary{breakable}
+\tcbuselibrary{skins}
+\usepackage{varwidth}
+\usepackage{xspace}
+\newcommand{\TikZ}{Ti\textit{k}Z\xspace}
+\definecolor{example-color}{gray}{1}
+\definecolor{example-border-color}{gray}{.8} 
+\tcbset{
+	coltitle=black,
+	colback=example-color,
+	colframe=example-border-color,
+	enhanced,breakable,
+	pad at break*=1mm,
+	toprule=1.2mm,
+	bottomrule=1.2mm,
+	leftrule=1mm,
+	rightrule=1mm,
+	toprule at break=-1mm,
+	bottomrule at break=-1mm,
+	before upper={\widowpenalties=3 10000 10000 150}
+}
+\tikzset{
+	/Dynkin diagram,
+	edge length=1cm,
+	ordering=Carter,
+	vertical shift=0}
+\tikzset{
+	background rectangle/.style={
+		shade,
+		top color=olive!20,
+		bottom color=white,
+		draw=olive!15,
+		very thick,
+		rounded corners},
+}
+\begin{document}
+\maketitle
+\begin{center}%
+	\begin{tikzpicture}[show background rectangle]
+		\hasse[
+			edge/.style={},
+			root radius=.02cm,
+			edge length=.5cm,
+			edge quotes/.style={opacity=0}%
+			]{E}{8}%
+	\end{tikzpicture}%
+\end{center}%
+\begin{center}
+\begin{varwidth}{\textwidth}
+\tableofcontents
+\end{varwidth}
+\end{center}
+\setlength{\arrayrulewidth}{1.5pt}
+
+\section{Quick introduction}
+This package draws the Hasse diagram of the poset of the positive simple roots of each complex simple Lie group, as drawn by Ringel \cite{Ringel:2013}.
+\begin{tcolorbox}[title={Load the package}]
+\begin{Verbatim}
+\documentclass{article}
+\usepackage{lie-hasse}
+\begin{document}
+The Hasse diagram of \(F_4\) is 
+\begin{center}
+\hasse[edge length=1cm]{F}{4}
+\end{center}
+\end{document}
+\end{Verbatim}
+\end{tcolorbox}
+\par\noindent{}The Hasse diagram of \(F_4\) is 
+\begin{center}
+\hasse[edge length=1cm]{F}{4}
+\end{center}
+Each edge is labelled with the simple root by which vertices differ.
+\begin{tcblisting}{title={Inside a \TikZ statement}}
+\(B_4\) has Dynkin diagram \tikz \dynkin[edge length=.35cm]{B}{4};, Hasse diagram
+\begin{center}
+\hasse[edge length=1cm]{B}{4}
+\end{center}
+\end{tcblisting}
+\begin{tcblisting}{title={Inside a Dynkin diagram environment, diagrams fit together}}
+The Hasse diagram of \(B_4\) is 
+\begin{dynkinDiagram}[vertical shift=0,edge length=1cm]{B}{4}
+\hasse{B}{4}
+\end{dynkinDiagram}
+\end{tcblisting}
+We shut off the default vertical shift of the Dynkin diagram, so that it starts at the origin.
+There is an option to \verb!\hasse! for this:
+\begin{tcblisting}{title={Attaching the Dynkin diagram}}
+The Hasse diagram of \(B_4\) is 
+\begin{center}
+\hasse[attach Dynkin diagram=true]{B}{4}
+\end{center}
+\end{tcblisting}
+Unfortunately, attaching a Dynkin diagram looks terrible for \(D\) or \(E\) series, so a Dynkin diagram appears below.
+\begin{tcblisting}{title={Attaching the Dynkin diagram}}
+The Hasse diagram of \(D_5\) is 
+\begin{center}
+\hasse[attach Dynkin diagram=true]{D}{5}
+\end{center}
+\end{tcblisting}
+\begin{tcblisting}{title={Inside a \TikZ environment}}
+\begin{tikzpicture}
+\hasse{A}{4}
+\draw (4;1) circle (5pt);
+\draw[red] (2;3) circle (5pt);
+\end{tikzpicture}
+\end{tcblisting}
+In this example, we see that the roots of the Hasse diagram are \TikZ{} nodes labelled \(g;i\) for grade \(g\) (i.e. \(g\) units up the page) and index \(i\) (i.e. \(i^{\text{th}}\) root of grade \(g\) drawn on the page, starting from the left). 
+
+\section{Inherited options}
+The Lie Hasse package inherits options from the Dynkin diagrams package: the edge lengths are set with 
+\begin{Verbatim}
+\tikzset{/Dynkin diagram/edge lengths=1.2cm}
+\end{Verbatim}
+and similarly the ordering of roots with 
+\begin{Verbatim}
+\tikzset{/Dynkin diagram/ordering=Bourbaki}
+\end{Verbatim}
+
+\section{Prettier}
+The package includes a more elaborate \verb!\hasseDiagrams! command, taking a list of semicolon separated Dynkin diagram identfiers.
+\begin{tcolorbox}[title={With some global options to make prettier diagrams}]
+\begin{Verbatim}
+\tikzset{
+	background rectangle/.style={
+		shade,
+		top color=olive!20,
+		bottom color=white,
+		draw=olive!15,
+		very thick,
+		rounded corners},
+	/Lie Hasse diagram,
+	edge length=1.2cm,
+	show name=true,
+	vertical shift=0}
+\hasseDiagrams{A4;B4;C4}
+\end{Verbatim}
+\end{tcolorbox}
+\begingroup
+\tikzset{
+	background rectangle/.style={
+		shade,
+		top color=olive!20,
+		bottom color=white,
+		draw=olive!15,
+		very thick,
+		rounded corners},
+	/Lie Hasse diagram,
+	edge length=1.2cm,
+	show name=true,
+	vertical shift=0}
+\hasseDiagrams{A4;B4;C4}
+\endgroup
+Global options:
+\begin{verbatim}
+ 	edge/.style={ultra thick},
+	edge quotes/.style={/Dynkin diagram/text style,auto,inner sep=2pt},
+\end{verbatim}
+allow to change the edges, and to change the way that labels are printed, and how close labels are to the edges.
+
+
+
+\section{Root order}
+We order the roots as in the Dynkin diagram package: with orderings Adams, Bourbaki, Carter, Dynkin and Kac.
+\emph{Warning:} the default is Carter, \emph{not} Bourbaki; the default in the Dynkin diagram package is Bourbaki.
+We can use this like:
+\begin{Verbatim}
+\tikzset{/Lie Hasse diagram,show name=true,show ordering=true}
+\hasseDiagrams{[ordering=Adams]E6;[ordering=Bourbaki]E6}
+\hasseDiagrams{[ordering=Carter]E6;[ordering=Dynkin]E6}
+\hasseDiagrams{[ordering=Kac]E6}
+\end{Verbatim}
+
+\begingroup
+\tikzset{/Lie Hasse diagram,show name=true,show ordering=true}
+\hasseDiagrams{[ordering=Adams]E6;[ordering=Bourbaki]E6}
+\hasseDiagrams{[ordering=Carter]E6;[ordering=Dynkin]E6}
+\hasseDiagrams{[ordering=Kac]E6}
+\endgroup
+
+\section{Graph height and width}
+The \emph{height} of a Hasse diagram is the number of grades.
+The \emph{width} of each grade is the number of vertices on that grade.
+We recover these with 
+\begin{Verbatim}
+\newcount\h
+\rootSystemHeight[G][2]{\h}
+\end{Verbatim}
+to store the height of \(G_2\) in a counter called \verb!\h!, and
+\begin{Verbatim}
+\newcount\w
+\rootSystemWidthAtGrade[G][2]{3}{\w}%
+\end{Verbatim}
+to store the width of \(G_2\) at grade \(3\) in a counter called \verb!\w!.
+
+Once you use \verb!\dynkin{G}{2}! or \verb!\hasse{G}{2}! or the other commands, like 
+\begin{Verbatim}
+\rootSystemHeight[G][2]{\h}
+\end{Verbatim}
+the system stores that your default root system is \(G_2\).
+Subsequently calls to 
+\begin{Verbatim}
+\rootSystemHeight{\h}
+\end{Verbatim}
+and 
+\begin{Verbatim}
+\rootSystemWidthAtGrade{3}{\w}
+\end{Verbatim}
+ do not need to specify the root system.
+
+\begingroup
+The \verb!show height! option:
+\begin{Verbatim}
+\tikzset{/Lie Hasse diagram,show name=true,show height=true}
+\hasseDiagrams{G2}
+\end{Verbatim}
+\tikzset{/Lie Hasse diagram,show name=true,show height=true}
+\hasseDiagrams{G2}
+The \verb!show widths! option:
+\begin{Verbatim}
+\tikzset{/Lie Hasse diagram/show widths=true}
+\hasseDiagrams{G2}
+\end{Verbatim}
+\tikzset{/Lie Hasse diagram/show widths=true}
+\hasseDiagrams{G2}
+\tikzset{/Lie Hasse diagram/show height=false}
+\tikzset{/Lie Hasse diagram/show widths=false}
+\endgroup
+
+\section{Root decompositions}
+Each positive root in a root system is a unique nonnegative integer linear combination of positive simple roots.
+We can recover this expression as
+\begin{Verbatim}
+\rootSum[G][2]{5}{1}{\rs}
+\end{Verbatim}
+which, for the root system \(G_2\), and the root at position \(5;1\) in our Hasse diagram, stores in the variable \verb!\rs! a string which looks like \rootSum[G][2]{5}{1}{\rs}\texttt{\rs}.
+This is a comma separated list of the integer coefficients.
+\emph{Warning:} for the moment, this list of coefficients is in Carter ordering.
+If we omit \verb![G][2]!, the current default root system is implied.
+
+Here is the Dynkin diagram of \(E_8\), indicating the order of the roots in Carter ordering.
+\begin{Verbatim}
+\dynkin[label,ordering=Carter,edge length=.35cm]{E}{8}
+\end{Verbatim}
+\begin{center}
+\dynkin[label,ordering=Carter,edge length=.35cm]{E}{8}
+\end{center}
+Here is the same Dynkin diagram, except showing, at each simple root, the coefficient of that simple root in the highest root. 
+\begin{Verbatim}
+\rootSum[E][8]{29}{1}{\rs}
+\dynkin[labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
+\end{Verbatim}
+\rootSum[E][8]{29}{1}{\rs}
+\begin{center}
+\dynkin[labels=\rs,ordering=Carter,edge length=.35cm]{E}{8}
+\end{center}
+
+The option \verb!for all roots! allows execution of code once on every root.
+\begin{Verbatim}
+\tikzset{/Lie Hasse diagram,
+	edge length=3.2cm,
+	compact root/.code={},
+	noncompact root/.code={},
+	edge quotes/.style={opacity=0},
+	embedded Dynkin diagram/.style={
+		edge length=.4cm,
+		root radius=.05cm
+	},
+	for all roots/.code 2 args={\drawRootAsDynkinSum{#1}{#2}}}
+\hasseDiagrams{D5}
+\end{Verbatim}
+\begingroup
+\tikzset{/Lie Hasse diagram,
+	edge length=3.2cm,
+	compact root/.code={},
+	noncompact root/.code={},
+	edge quotes/.style={opacity=0},
+	embedded Dynkin diagram/.style={
+		edge length=.4cm,
+		root radius=.05cm
+	},
+	for all roots/.code 2 args={\drawRootAsDynkinSum{#1}{#2}}}
+\hasseDiagrams{D5}
+\endgroup
+See more below on compact versus noncompact roots; the code \verb!compact! is applied to draw all of the compact roots, and the code \verb!noncompact! to draw the noncompact roots.
+Setting those codes to be empty, and setting \verb!edge quotes! to be transparent, we get a much simpler Hasse diagram, so that we can see the embedded Dynkin diagrams more clearly.
+
+\section{\texorpdfstring{For all roots \ldots}{For all roots ...}}
+You can make your  own macros loop over all of the roots: you define a macro \verb!\foo{g}{i}!, which is fed the grade \(g\) of each root in the diagram, and the \emph{index} \(i\).
+A simple example:
+\begin{Verbatim}
+\newcommand{\foo}[2]%
+{%
+	\node[below,scale=.5] at (#1;#2) {\(#1,#2\)};%
+}%
+\end{Verbatim}
+\newcommand{\foo}[2]%
+{%
+	\node[below,scale=.75] at (#1;#2) {\(#1,#2\)};%
+}%
+Inside a \TikZ{} or \verb!dynkinDiagram! environment:
+\begin{Verbatim}
+\tikzset{/Lie Hasse diagram/edge quotes/.style={opacity=0},
+	/Dynkin diagram/edge length=1.5cm}
+\begin{tikzpicture}
+	\hasse{D}{6}%
+	\forAllPositiveRootsInHasseDiagram{\foo}%
+\end{tikzpicture}
+\end{Verbatim}
+\begingroup
+\tikzset{/Lie Hasse diagram/edge quotes/.style={opacity=0},
+	/Dynkin diagram/edge length=1.5cm}
+\begin{tikzpicture}
+	\hasse{D}{6}%
+	\forAllPositiveRootsInHasseDiagram{\foo}%
+\end{tikzpicture}
+
+If you put this into the \verb!for all roots! option, it executes on its own:
+\begin{Verbatim}
+\tikzset{/Lie Hasse diagram/for all roots/.code 2 args={\foo{#1}{#2}}}
+\hasseDiagrams{C4;D4}
+\end{Verbatim}
+\begingroup
+\tikzset{/Lie Hasse diagram/for all roots/.code 2 args={\foo{#1}{#2}}}
+\hasseDiagrams{C4;D4}
+\endgroup
+\endgroup
+
+\section{Three dimensional effect}
+We draw the \(D,E,F\) Hasse diagrams, following Ringel \cite{Ringel:2013}, as an arrangement of cubes.
+Nutma \cite{Nutma:2010} draws the Hasse diagrams using a more elementary approach, but including also the affine Kac--Moody algebras. 
+Opposite sides of any square have the same edge label, by commutativity of addition.
+Hence we don't need to see every edge perfectly.
+The three dimensional effect is the default: 
+\begin{Verbatim}
+\hasse{D}{4}\hasse{E}{6}
+\end{Verbatim}
+\begin{center}
+\hasse{D}{4}\hasse{E}{6}
+\end{center}
+We can turn it off:
+\begin{Verbatim}
+\hasse[three D=false]{D}{4}
+\hasse[three D=false]{E}{6}
+\end{Verbatim}
+\begin{center}
+\hasse[three D=false]{D}{4}
+\hasse[three D=false]{E}{6}
+\end{center}
+or globally with \verb!\tikzset{/Lie Hasse diagram/three D=false}!.
+
+The astute reader will perhaps notice that the three dimensional effect is not realistic.
+To be Hasse diagrams, the roots have to line up horizontally by grade.
+This is inconsistent with three dimensional projection of our cubes.
+We have also tried to use only a small number of layers in the three dimensional geometry, so the images are not perfect, but easy enough to read.
+
+We can change the \verb!z shift! to slant the three dimensional images to the right:
+\begingroup
+\begin{Verbatim}
+\hasse[z shift=.1]F4\hasse[z shift=.2]F4\hasse[z shift=.3]F4\hasse[z shift=.4]F4
+\end{Verbatim}
+\hasse[z shift=.1]F4\hasse[z shift=.2]F4\hasse[z shift=.3]F4\hasse[z shift=.4]F4
+\endgroup
+
+We only use three colours and opacities for the faces:
+\begin{Verbatim}
+	top/.style={black!20,opacity=.4},
+	left/.style={black!20,opacity=.9},
+	right/.style={black!20,opacity=.6},
+\end{Verbatim}
+You can change these:
+\begin{Verbatim}
+\hasse[
+	top/.style={red,opacity=.1},
+	right/.style={red,opacity=.2},
+	left/.style={red,opacity=.4}]E6
+\end{Verbatim}
+\begin{center}
+\hasse[
+	top/.style={red,opacity=.1},
+	right/.style={red,opacity=.2},
+	left/.style={red,opacity=.4}]E6
+\end{center}
+
+\section{Label the simple roots}
+Ringel \cite{Ringel:2013} labels his edges like
+\begin{Verbatim}
+\hasseDiagrams{[labels={f,e,d,c,u,b,a}]E7}
+\end{Verbatim}
+\hasseDiagrams{[labels={f,e,d,c,u,b,a}]E7}
+
+\section{Parabolic subgroups}
+This package offers nothing over Ringel's original pictures, except that the user can pick some simple roots whose associated edges are drawn differently.
+The chosen simple roots are called \emph{compact}, following terminology from the theory of parabolic subgroups.
+We let the reader explore the notation for parabolic subgroups in the Dynkin diagrams package, and use this to declare various roots compact.
+\begin{Verbatim}
+\tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,three D=false}
+\hasseDiagrams{D{**x*x*x*}}
+\end{Verbatim}
+\begingroup
+\tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,three D=false}
+\hasseDiagrams{D{**x*x*x*}}
+\endgroup
+Our motivation comes from trying to identify the invariant vector subbundles of the tangent bundle of a rational homogeneous variety \cite{MathOverflow:123801}.
+Such diagrams are often unreadable if we don't turn off the three dimensional graphics.
+By default, noncompact root edges are not drawn.
+\begingroup
+\tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,show name=false,three D=false}
+\begin{Verbatim}
+\hasseDiagrams{E{*xx*x*}}
+\end{Verbatim}
+\hasseDiagrams{E{*xx*x*}}
+\begin{Verbatim}
+\hasseDiagrams{A{x*x*}}
+\end{Verbatim}
+\hasseDiagrams{A{x*x*}}
+\begin{Verbatim}
+\hasseDiagrams{[parabolic=113]B8}
+\end{Verbatim}
+\hasseDiagrams{[parabolic=113]B8}
+\begin{Verbatim}
+\hasseDiagrams{C{**xx*x**}}
+\end{Verbatim}
+\hasseDiagrams{C{**xx*x**}}
+\newpage
+\begin{Verbatim}
+\hasseDiagrams{E{*x*x*x**}}
+\end{Verbatim}
+\hasseDiagrams{E{*x*x*x**}}
+\newpage
+\begin{Verbatim}
+\hasseDiagrams{F{**xx}}
+\end{Verbatim}
+\hasseDiagrams{F{**xx}}
+\begin{Verbatim}
+\hasseDiagrams{G{*x}}
+\end{Verbatim}
+\hasseDiagrams{G{*x}}
+\endgroup
+
+\section{Examples}
+\begingroup
+\tikzset{/Lie Hasse diagram,attach Dynkin diagram=true,show name=true}
+\begin{Verbatim}
+\hasseDiagrams{A1;A2;A3;A4;A5;A6}
+\hasseDiagrams{B3;B4;B5}
+\hasseDiagrams{C2;C3;C4}
+\hasseDiagrams{C5;C6}
+\hasseDiagrams{E6;E7}
+\hasseDiagrams{E8}
+\hasseDiagrams{F4;G2}
+\end{Verbatim}
+\hasseDiagrams{A1;A2;A3;A4;A5;A6}
+\hasseDiagrams{B3;B4;B5}
+\hasseDiagrams{C2;C3;C4}
+\hasseDiagrams{C5;C6}
+\hasseDiagrams{E6;E7}
+\hasseDiagrams{E8}
+\hasseDiagrams{F4;G2}
+\endgroup 
+
+\section{Black and white}
+Publishing in colour on paper can be expensive.
+Simple global options:
+\begin{Verbatim}
+\tikzset{
+	background rectangle/.style={
+		shade,
+		top color=gray!15,
+		bottom color=white,
+		draw=gray!5,
+		very thick,
+		rounded corners},
+	/Dynkin diagram/text style/.style={black,scale=.75},
+	/Lie Hasse diagram,
+	edge length=1cm,
+	edge/.style={draw=black!50,ultra thick},
+	edge quotes/.style={black,auto,inner sep=3pt,scale=.75},
+	three D=true,
+	show name=true}
+\end{Verbatim}
+\begingroup
+\tikzset{
+	background rectangle/.style={
+		shade,
+		top color=gray!15,
+		bottom color=white,
+		draw=gray!5,
+		very thick,
+		rounded corners},
+	/Dynkin diagram/text style/.style={black,scale=.75},
+	/Lie Hasse diagram,
+	edge length=1cm,
+	edge/.style={draw=black!50,ultra thick},
+	edge quotes/.style={black,auto,inner sep=3pt,scale=.75},
+	three D=true,
+	show name=true}%
+change our examples to
+\hasseDiagrams{A1;A2;A3;A4;A5;A6}
+\hasseDiagrams{B3;B4;B5}
+\hasseDiagrams{C2;C3;C4}
+\hasseDiagrams{C5;C6}
+\hasseDiagrams{E6;E7}
+\hasseDiagrams{E8}
+\hasseDiagrams{F4;G2}
+\endgroup
+
+\bibliographystyle{amsplain}
+\bibliography{lie-hasse}
+\end{document}


Property changes on: trunk/Master/texmf-dist/doc/latex/lie-hasse/lie-hasse.tex
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Added: trunk/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty
===================================================================
--- trunk/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty	                        (rev 0)
+++ trunk/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty	2020-02-03 22:30:53 UTC (rev 53653)
@@ -0,0 +1,2467 @@
+%                                 The Lie Hasse package.
+%
+%                                            Version 1.0
+%
+%
+% This package draws Hasse diagrams of root system posets of simple 
+% Lie algebraS, in LaTeX documents, using the TikZ package.
+%
+%                                          Benjamin McKay
+%                                          b.mckay at ucc.ie
+%
+%               Released under the LaTeX Project Public License v1.3c or later, see 
+%               http://www.latex-project.org/lppl.txt
+%
+%
+%
+%
+\NeedsTeXFormat{LaTeX2e}[1994/06/01]
+\ProvidesPackage{lie-hasse}[2020/02/02 Lie Hasse]
+\RequirePackage[rgb]{xcolor}
+\RequirePackage{dynkin-diagrams}
+\usetikzlibrary{
+	positioning,
+	fadings,
+	quotes}
+%%%
+%%% Application programming interface: 
+%%%
+
+\newif\iflie at hasse@threeD
+\lie at hasse@threeDtrue
+\xdef\lie at hasse@three at D@shift{.3}%
+\newif\iflie at hasse@show at ordering
+\lie at hasse@show at orderingfalse
+\newif\iflie at hasse@show at name
+\lie at hasse@show at namefalse
+\newif\iflie at hasse@show at widths
+\lie at hasse@show at widthsfalse
+\newif\iflie at hasse@show at height
+\lie at hasse@show at heightfalse
+\newif\iflie at hasse@attach at dynkin@diagram
+\lie at hasse@attach at dynkin@diagramfalse
+
+\pgfkeys{ 
+	/Lie Hasse diagram/.is family,
+	/Lie Hasse diagram,
+	attach Dynkin diagram/.is if = lie at hasse@attach at dynkin@diagram,
+	attach Dynkin diagram/.default = false,
+	edge/.style={ultra thick},
+	edge quotes/.style={/Dynkin diagram/text style,auto,inner sep=2pt},
+	compact edge/.style={},
+	noncompact edge/.style={opacity=0},
+	compact root/.code={\dynkinDrawSolidRootMark{#1}},
+	noncompact root/.code={\dynkinDrawCrossRootMark{#1}},
+	embedded Dynkin diagram/.style={
+		edge length=.5cm,
+		root radius=.05cm
+	},
+	for all roots/.code 2 args={},
+	three D/.is if = lie at hasse@threeD,
+	three D/.default = true,
+	show ordering/.is if = lie at hasse@show at ordering,
+	show ordering/.default = false,
+	show name/.is if = lie at hasse@show at name,
+	show name/.default = false,
+	show widths/.is if = lie at hasse@show at widths,
+	show widths/.default = false,
+	show height/.is if = lie at hasse@show at height,
+	show height/.default = false,
+	z shift/.estore in = \lie at hasse@three at D@shift,
+	z shift/.default = .3,
+	top/.style={black!20,opacity=.4},
+	left/.style={black!20,opacity=.9},
+	right/.style={black!20,opacity=.6},
+	.search also={/Dynkin diagram},
+}
+\NewDocumentCommand\studyHasseDiagramOfRootSystem{O{}mm}%
+{%
+	\xdef\dynkin at parabolic{0}%
+	\pgfkeys{/Lie Hasse diagram,#1}%
+	\xdef\dynkin at user@series{#2}%
+	\xdef\dynkin at user@string{#3}%
+	\global\dynkin at ply=\dynkin at ply@value\relax%
+	\xdef\dynkin at series{#2}%
+	\dynkin at grok@series%
+	\IfSubStr{ABCDEFGHI}{\dynkin at series}{}{\dynkin at error@series}%
+	\xdef\dynkin at string{#3}%
+	\IfInteger{\dynkin at string}%
+	{%
+		\dynkin at integer@rank%
+	}%
+	{%
+		% Turn Satake codes into Dynkin diagram expressions in \dynkin at string.
+		\dynkin at grok@Satake at codes%
+	}%
+	% Expand out any digits in \dynkin at string into multiples of the various root marks.
+	\expand at Dynkin@Roots at Digits%
+	% Assign to \dynkin at roots the input string \dynkin at string with all . symbols removed,
+	% so we only get the symbols representing the marks for the various roots.
+	\StrDel{\dynkin at string}{.}[\temp]%
+	\xdef\dynkin at roots{\temp}%
+	\StrLen{\dynkin at roots}[\temp]%
+	\global\dynkin at nodes=\temp\relax%
+	\dynkin at grok@indefinite at edges%
+	\dynkin at find@rank{}%
+	\dynkin at cross@out at parabolics{}%
+	\dynkin at set@default at label@directions{}%
+	\check at Dynkin@diagram{}%
+	\xdef\lie at hasse@compact at roots{}%
+	\initialize at roots@as at sums@table{}%
+}%
+\newcount\lie at hasse@height%
+\newcount\lie at hasse@width%
+\NewDocumentCommand\doRootThing{mm}%
+{%
+	\pgfkeys{/Lie Hasse diagram/for all roots={#1}{#2}}%
+}%
+\NewDocumentCommand\hasse{O{}mm}%
+{%
+	\ifdefined\filldraw%
+		\IfStrEq{#1}{}%
+		{%
+			\studyHasseDiagramOfRootSystem{#2}{#3}%
+		}%
+		{%
+			\studyHasseDiagramOfRootSystem[#1]{#2}{#3}%
+		}%
+		\label at item@count 0\relax%
+		\expandafter\forcsvlist%
+			\expandafter\add at label%
+			\expandafter{\dynkin at label@list}%
+		\ifnum\dynkin at rank=1%
+			\dynkin{A}{1}%
+		\else%
+			\add at compact@simple at roots@to at compact@roots{}%
+			\IfStrEqCase{#2}%
+			{%%
+				{A}{\hasse at A}%
+				{B}{\hasse at BC}%
+				{C}{\hasse at BC*}%
+				{D}{\hasse at D}%
+				{E}%
+				{%
+					\ifnum\dynkin at rank=6%
+						\hasse at E@six%
+					\else%
+						\ifnum\dynkin at rank=7%
+							\hasse at E@seven%
+						\else%
+							\ifnum\dynkin at rank=8%
+								\hasse at E@eight%
+							\else
+								\ifnum\dynkin at rank>8%
+									\ClassError%
+										{Lie Hasse}%
+										{Rank of E series Hasse diagram: #3{}%
+										 exceeds 8; not defined yet}%
+										{}%
+								\fi%
+								\ifnum\dynkin at rank<6%
+									\ClassError%
+										{Lie Hasse}%
+										{Rank of E series Hasse diagram: #3{} less than 6}%
+									{}%
+								\fi%
+							\fi%
+						\fi%	
+					\fi%
+				}%
+				{F}%
+				{%
+					\ifnum\dynkin at rank=4%
+						\hasse at F%
+					\else%
+						\ClassError%
+							{Lie Hasse}%
+							{Rank of F series Hasse diagram: #3{} not 4}%
+							{}%
+					\fi%
+				}%
+				{G}%
+				{%
+					\ifnum\dynkin at rank=2%
+						\hasse at G%
+					\else%
+						\ClassError%
+							{Lie Hasse}%
+							{Rank of G series Hasse diagram: #3{} not 2}%
+							{}%
+					\fi%
+				}%
+			}%%
+			[\ClassError%
+				{Lie Hasse}%
+				{Lie algebra series #2{} not A,B,C,D,E,F or G}%
+				{}]%
+			\draw at simple@root at labels%
+		\fi%
+		\lie at hasse@write at widths{}%
+		\forAllPositiveRootsInHasseDiagram{\doRootThing}%
+		\iflie at hasse@attach at dynkin@diagram%
+			\attachDynkin%
+		\fi%
+	\else%
+		\begin{tikzpicture}\hasse[#1]{#2}{#3}\end{tikzpicture}%
+	\fi%
+}%
+\NewDocumentCommand\drawRootAsDynkinSum{mm}%
+{%
+	\rootSum{#1}{#2}{\rs}%
+	\node at (#1;#2) 
+		{%
+			\dynkin[%
+				labels=\rs,%
+				/Lie Hasse diagram/embedded Dynkin diagram]%
+				{\dynkin at series}{\the\dynkin at rank}%
+		};%
+}%
+\NewDocumentCommand\drawRootDecomp{mm}%
+{%
+	\rootSum{#1}{#2}{\rs}%
+	\StrSubstitute{\rs}{,}{}[\rss]%
+	\node[above,/Dynkin diagram/text style] at (#1;#2) {$\rss$};%
+}%
+\NewDocumentCommand\lie at hasse@write at widths{}%
+{%
+	\iflie at hasse@show at widths%
+		\rootSystemHeight{\lie at hasse@height}%
+		\foreach \lie at hasse@i in {1,...,\the\lie at hasse@height}%
+		{%
+			\rootSystemWidthAtGrade{\lie at hasse@i}{\lie at hasse@width}%
+			\path 
+				let \p1 = (\lie at hasse@i;1) 
+				in
+				node[left]  
+				at 
+				(0,\y1) 
+				{\(\the\lie at hasse@width\)};%
+		}%
+	\fi%
+}%
+
+\NewDocumentCommand\backwardsGtwo{}%
+{%
+	\dynkin[label,backwards,x shift in edge lengths=-1]{G}{\dynkin at roots}%
+}%
+
+\newcount\lie at hasse@E at shift%
+\NewDocumentCommand\attachDynkin{}%
+{%
+	\IfStrEqCase{\dynkin at series}{%
+		{A}{\dynkin{A}{\dynkin at roots}}%
+		{B}{\dynkin{B}{\dynkin at roots}}%
+		{C}{\dynkin{C}{\dynkin at roots}}%
+		{D}{\dynkin[y shift in edge lengths=-1.5,label]%
+			{D}{\dynkin at roots}}%
+		{E}%
+		{%%
+			\ifnum\dynkin at rank=6%
+				\dynkin[%
+					upsidedown,%
+					labels*={1,...,6},%
+					y shift in edge lengths=.5]%
+					{E}{\dynkin at roots}%
+			\else%
+				\lie at hasse@E at shift\the\dynkin at rank\relax%
+				\advance\lie at hasse@E at shift by -2\relax%
+				\dynkin[%
+					backwards,%
+					upsidedown,%
+					label,%
+					x shift in edge lengths=-\the\lie at hasse@E at shift,%
+					y shift in edge lengths=1]%
+					{E}{\dynkin at roots}%
+			\fi%
+		}%%
+		{F}{\dynkin{F}{\dynkin at roots}}%
+		{G}{\backwardsGtwo{}}%
+	}%
+	[\ClassError%
+		{Lie Hasse}%
+		{Lie algebra series \dynkin at series{} not A,B,C,D,E,F or G when attaching Dynkin diagram}%
+		{}]%
+}%
+
+
+\newif\iflie at hasse@multiple at diagrams
+\newcommand\doHasseDiagram[1]%%
+{%
+	\iflie at hasse@multiple at diagrams%
+		\ %
+	\fi%
+	\begin{tikzpicture}%
+		[show background rectangle,%
+		baseline=(current bounding box.east)]]%
+		\hasse#1%
+		\iflie at hasse@show at height%
+			\rootSystemHeight{\lie at hasse@height}%
+		\fi%
+		\iflie at hasse@show at name%
+			\xdef\label at text{$\dynkinName{\dynkin at series}{\the\dynkin at rank}$}%
+			\iflie at hasse@show at ordering%
+				\xdef\label at text{\label at text{} in \currentDynkinOrdering{} ordering}%
+			\fi%
+			\iflie at hasse@show at height%
+				\xdef\label at text{\label at text: height$=\the\lie at hasse@height$}%
+			\fi%
+			\node[anchor=north,yshift=1.5em] 
+				at 
+				(current bounding box.north) 
+				{\label at text};%
+		\fi%
+	\end{tikzpicture}%
+	\iflie at hasse@multiple at diagrams%
+		\ %
+	\fi%
+}%
+\DeclareListParser*{\forscsvlist}{;}%
+\newcommand\hasseDiagrams[1]%
+{%
+	\IfSubStr{#1}{;}%
+	{%
+		\global\lie at hasse@multiple at diagramstrue%
+	}%
+	{%
+		\global\lie at hasse@multiple at diagramsfalse%
+	}%
+	\begin{center}%
+		\expandafter\forscsvlist%
+			\expandafter\doHasseDiagram%
+			\expandafter{#1}%
+	\end{center}%
+}%
+
+
+%%%
+%%% Package internals:
+%%%
+
+
+\pgfdeclarelayer{Dynkin middle}
+\pgfdeclarelayer{Dynkin above}
+\pgfsetlayers{background,Dynkin behind,Dynkin middle,Dynkin above,main}
+
+
+\newcommand*\label at list@at[1]{\csname FOOBAR-#1\endcsname}
+\newcommand*\defn at label@list at entry[1]{\expandafter\def\csname FOOBAR-#1\endcsname}
+\def\add at to@label at list#1#2{\global\defn at label@list at entry{#1}{#2}}%
+\newcount\label at item@count%
+\label at item@count 0\relax%
+\newcommand\add at label[1]%
+{%
+	\advance\label at item@count by 1\relax%
+	\global\add at to@label at list{\the\label at item@count}{#1}%
+}%
+
+\xdef\lie at hasse@compact at roots{}%
+\NewDocumentCommand\if at compact@root{mmm}%
+{%
+\IfSubStr{\lie at hasse@compact at roots}{(#1)}{#2}{#3}%
+}%
+\newcount\current at simple@root%
+\NewDocumentCommand\if at compact@simple at root{mmm}%
+{%
+% #1 is the index of a root, in the internal root ordering of
+% this Lie Hasse package, which is the Carter root ordering.
+% So first we need to convert it to the current root ordering
+% of the Dynkin diagram we are working on.
+\dynkinOrder{\dynkin at series}{\the\dynkin at rank}.Carter::#1->\dynkin at ordering.%
+{\current at simple@root}%
+\StrChar{\dynkin at roots}{\current at simple@root}[\lie at hasse@root at marker]%
+\IfStrEq{*}{\lie at hasse@root at marker}{#2}{#3}%
+}%
+
+\NewDocumentCommand\add at compact@root{m}%
+{%
+	\if at compact@root{#1}%
+	{%do nothing
+	}
+	{%else
+		\edef\temp at lie@hasse at compact@roots{\lie at hasse@compact at roots}%
+		\xdef\lie at hasse@compact at roots{\temp at lie@hasse at compact@roots{  }(#1)}%
+	}%
+}%
+
+\newcount\lie at hasse@sr%
+\newcount\drpo%
+\NewDocumentCommand\add at compact@simple at roots@to at compact@roots{}%
+{%
+\lie at hasse@sr 1\relax%
+\drpo\the\dynkin at rank\relax%
+\advance\drpo by 1\relax%
+\loop%
+	\if at compact@simple at root{\the\lie at hasse@sr}%
+	{%%
+		\add at compact@root{1;\the\lie at hasse@sr}%
+	}%%
+	{%%
+	}%%
+	\advance\lie at hasse@sr by 1\relax%
+\ifnum\lie at hasse@sr<\the\drpo%
+\repeat%
+}%
+
+\newcount\drmo%
+\newcount\lie at hasse@root at count%
+\newcount\lie at hasse@root at count@b%
+\newcount\max at lie@hasse at root@count%
+\newcount\lie at hasse@reorder
+
+\NewDocumentCommand\lie at hasse@fix at order{mm}%
+{%
+	\dynkinOrder{\dynkin at series}{\dynkin at rank}.Carter::{#1}->\dynkin at ordering.{#2}%
+}%
+
+\NewDocumentCommand\draw at one@simple at root@label{mm}%
+%% \draw at one@simple at root@label{r}{s}, draw at Carter number r
+%% the root with text s.
+{%
+			\node[below,%
+				label=%
+					{%
+						[below,%
+						lie at hasse@color,%
+						/Lie Hasse diagram/edge quotes]%
+						\(\pgfkeys{/Dynkin diagram/label macro=#2}\)%
+					}%
+				]% 
+				at%
+				(1;#1)%
+				{};%
+}%
+\NewDocumentCommand\draw at simple@root at labels{}%
+{%
+	\lie at hasse@root at count 1\relax%
+	\max at lie@hasse at root@count \the\dynkin at rank\relax%
+	\advance\max at lie@hasse at root@count 1\relax%
+	\IfStrEq{\dynkin at label@list\dynkin at label@list at star}{}%
+	{%
+		\loop%
+			\set at lie@hasse at color{\the\lie at hasse@root at count}%
+			\lie at hasse@fix at order%
+				{\the\lie at hasse@root at count}%
+				{\lie at hasse@root at count@b}%
+			\edef\label at text{\the\lie at hasse@root at count@b}%
+			\draw at one@simple at root@label%
+				{\the\lie at hasse@root at count}%
+				{\label at text}%
+			\global\advance\lie at hasse@root at count by 1\relax%
+		\ifnum\lie at hasse@root at count<\the\max at lie@hasse at root@count%
+		\repeat%
+	}%
+	{%
+		\edef\lie at hasse@XXX{\dynkin at label@list}%
+		\foreach \lie at hasse@i in \lie at hasse@XXX%
+		{%
+			\set at lie@hasse at color{\the\lie at hasse@root at count}%
+			\lie at hasse@fix at order%
+				{\the\lie at hasse@root at count}%
+				{\lie at hasse@root at count@b}%
+			\draw at one@simple at root@label%
+				{\the\lie at hasse@root at count@b}%
+				{\lie at hasse@i}%
+			\global\advance\lie at hasse@root at count by 1\relax%
+		}%
+	}%
+}%
+\definecolor{lie at hasse@color}{hsb}{0,0,0}
+\NewDocumentCommand\set at lie@hasse at color{m}%
+{%
+\pgfmathsetmacro{\lie at hasse@huenum}{#1/\the\dynkin at rank}%
+\global\definecolor{lie at hasse@color}{hsb}{\lie at hasse@huenum,1,.6}%
+}%
+\NewDocumentCommand\draw at lie@hasse at root{m}%
+{%
+\if at compact@root{#1}%
+{%%
+\pgfkeys{/Lie Hasse diagram/compact root=#1}%
+}%%
+{%%
+\pgfkeys{/Lie Hasse diagram/noncompact root=#1}%
+}%%
+}%
+\xdef\lie at hasse@grade at a{}
+\xdef\lie at hasse@grade at b{}
+\xdef\lie at hasse@index at a{}
+\xdef\lie at hasse@index at b{}
+\newcount\root at gpo%
+\xdef\label at text{}%
+\NewDocumentCommand\draw at lie@hasse at edge{O{}mmmm}%
+%[edge label options]{from grade}{from index}{to index}{simple root}
+{%
+	\root at gpo #2\relax%
+	\advance\root at gpo by 1\relax%
+	\set at lie@hasse at color{#5}%
+	\lie at hasse@fix at order{#5}{\lie at hasse@root at count@b}%
+	\IfStrEq{\dynkin at label@list}{}%
+	{%
+		\xdef\label at text{\the\lie at hasse@root at count@b}%
+	}%
+	{%
+		\xdef\label at text%
+		{%
+			\label at list@at{\the\lie at hasse@root at count@b}%
+		}%
+	}%
+	\if at compact@simple at root{#5}%
+	{%%% Compact
+		\draw[%
+			lie at hasse@color,%
+			/Lie Hasse diagram/edge,%
+			/Lie Hasse diagram/compact edge]%
+			(#2;#3) --%
+				node[lie at hasse@color,/Lie Hasse diagram/edge quotes,#1]%
+				{\(\pgfkeys{/Dynkin diagram/label macro=\label at text}\)}%
+			(\the\root at gpo;#4);%
+		\IfSubStr{\lie at hasse@compact at roots}{#2;#3}%
+		{%% adding to a compact
+			\add at compact@root{\the\root at gpo;#4}%
+		}%%
+		{%%
+		}%%
+	}%%%
+	{%%% Noncompact
+	\draw[%
+			lie at hasse@color,%
+			/Lie Hasse diagram/edge,%
+			/Lie Hasse diagram/noncompact edge]%
+			(#2;#3) --%
+				node[lie at hasse@color,/Lie Hasse diagram/edge quotes,#1]%
+				{\(\pgfkeys{/Dynkin diagram/label macro=\label at text}\)}%
+			(\the\root at gpo;#4);%
+	}%%%
+}%
+\newcount\A at series@grade%
+\newcount\max at A@series at grade%
+\newcount\A at series@x%
+\newcount\A at series@y%
+\newcount\max at A@series at j%
+\newcount\A at series@j%
+\NewDocumentCommand\place at A@roots{}%
+{%
+	\A at series@grade 1\relax%
+	\max at A@series at grade \the\dynkin at rank\relax%
+	\advance\max at A@series at grade by 1\relax%
+	\A at series@x 0\relax%
+	\A at series@y 0\relax%
+	\loop%
+		\max at A@series at j\the\dynkin at rank\relax%
+		\advance\max at A@series at j by -\the\A at series@grade\relax%
+		\advance\max at A@series at j by 2\relax%
+		\A at series@j 1\relax%
+		{%
+		\loop%
+			\coordinate 
+				(\the\A at series@grade;\the\A at series@j) 
+				at 
+				({.5*\the\A at series@x*\dynkin at edge@length},
+				{.25*\the\A at series@y*\dynkin at edge@length})
+				{};%
+			\advance\A at series@j by 1\relax%
+			\advance\A at series@x by 2\relax%
+			\ifnum\A at series@j<\the\max at A@series at j%
+		\repeat%
+		}%
+		\advance\A at series@grade by 1\relax%
+		\advance\A at series@x by 1\relax%
+		\advance\A at series@y by 2\relax%
+	\ifnum\A at series@grade<\the\max at A@series at grade%
+	\repeat%
+}%
+\newcount\A at series@grade%
+\newcount\max at A@series at grade%
+\NewDocumentCommand\draw at A@roots{}%
+{%
+	\A at series@grade 1\relax%
+	\max at A@series at grade \the\dynkin at rank\relax%
+	\advance\max at A@series at grade by 1\relax%
+	\loop%
+		\max at A@series at j\the\dynkin at rank\relax%
+		\advance\max at A@series at j by -\the\A at series@grade\relax%
+		\advance\max at A@series at j by 2\relax%
+		\A at series@j 1\relax%
+		{%
+		\loop%
+			\draw at lie@hasse at root%
+				{\the\A at series@grade;\the\A at series@j}%
+			\advance\A at series@j by 1\relax%
+			\ifnum\A at series@j<\the\max at A@series at j%
+		\repeat%
+		}%
+		\advance\A at series@grade by 1\relax%
+	\ifnum\A at series@grade<\the\max at A@series at grade%
+	\repeat%
+}%
+\newcount\maxA at i%
+\newcount\maxA at j%
+\newcount\A at lbl%
+\newcount\A at i%
+\newcount\A at j%
+\newcount\A at ipo%
+\newcount\A at rj%
+\newcount\A at rjmo%
+\NewDocumentCommand\draw at A@edges{}%
+{%
+	\maxA at i\the\dynkin at rank\relax%
+	\A at i 1\relax%
+	\loop%
+		\maxA at j \the\dynkin at rank\relax%
+		\advance\maxA at j by -\the\A at i\relax%
+		\advance\maxA at j by 1\relax%
+		\ifnum\maxA at j>-1%
+			\A at j 1\relax%
+			{%
+			\loop%
+				\A at lbl\the\A at i\relax%
+				\advance\A at lbl by \the\A at j\relax%
+				\A at ipo \A at i\relax%
+				\advance\A at ipo by 1\relax%
+				\draw at lie@hasse at edge[left]%
+					{\the\A at i}{\the\A at j}%
+					{\the\A at j}{\the\A at lbl}%
+				\A at rj\the\maxA at j\relax%
+				\advance\A at rj by -\the\A at j\relax%
+				\advance\A at rj by 1\relax%
+				\A at rjmo\the\A at rj\relax%
+				\advance\A at rjmo by -1\relax%
+				\A at lbl-\A at lbl\relax%
+				\advance\A at lbl by \the\dynkin at rank%
+				\advance\A at lbl by 1%
+				\draw at lie@hasse at edge[right]%
+					{\the\A at i}{\the\A at rj}%
+					{\the\A at rjmo}{\the\A at lbl}%
+				\advance\A at j by 1\relax%
+			\ifnum\A at j<\the\maxA at j%
+			\repeat%
+			}%
+		\fi%
+	\advance\A at i by 1\relax%
+	\ifnum\A at i<\the\maxA at i%
+	\repeat%
+}%
+%% \hasse at A@width at at@grade{g}{\w} sets the counter \w to
+%% the value of the width (number of roots) at grade g of
+%% the A root system with rank \the\dynkin at rank
+\NewDocumentCommand\hasse at A@width at at@grade{mm}%
+{%
+	\global#2\the\dynkin at rank\relax%
+	\global\advance#2 by -#1\relax%
+	\global\advance#2 by 1\relax%
+}%
+\NewDocumentCommand\hasse at A{}%
+{%
+	\place at A@roots%
+	\draw at A@edges%
+	\draw at A@roots%
+}%
+%% \hasse at BC@width at at@grade{g}{\w} sets the counter \w to
+%% the value of the width (number of roots) at grade g of
+%% the B or C root system with rank \the\dynkin at rank
+\NewDocumentCommand\hasse at BC@width at at@grade{mm}%
+{%
+	\global#2\the\dynkin at rank\relax%
+	\global\advance#2 by \the\dynkin at rank\relax%
+	\global\advance#2 by -#1\relax%
+	\global\advance#2 by 1\relax%
+	\global\divide#2 by 2\relax%
+}%
+\newcount\tdrmt%
+\newcount\tdrmo%
+\newcount\max at BC@r%
+\newcount\BC at r%
+\newcount\BC at series@x%
+\newcount\BC at series@y%
+\NewDocumentCommand\place at BC@roots{}%
+{%
+\drmo \the\dynkin at rank\relax%
+\advance\drmo by -1\relax%
+\tdrmt \the\drmo\relax%
+\advance\tdrmt by \the\drmo\relax%
+\tdrmo \the\tdrmt\relax%
+\advance\tdrmo 1\relax%
+\max at BC@r \the\dynkin at rank\relax%
+\advance\max at BC@r by 1\relax%
+\BC at r 1\relax%
+\loop%
+	\BC at series@x \the\BC at r\relax%
+	\advance\BC at series@x by -1\relax%
+	\advance\BC at series@x by \the\BC at series@x\relax%
+	\BC at series@y 1\relax%
+	{%%
+	\loop%
+		\coordinate 
+			(\the\BC at series@y;\the\BC at r) 
+			at 
+			({.5*\the\BC at series@x*\dynkin at edge@length},
+			{.5*(\the\BC at series@y-1)*\dynkin at edge@length})
+			{};%
+		\advance\BC at series@y by 1\relax%
+		\advance\BC at series@x by 1\relax%
+		\ifnum\BC at series@x<\the\tdrmo\repeat%
+	}%%
+	\advance\BC at r by 1\relax%
+	\ifnum\BC at r<\the\max at BC@r%
+\repeat%
+}%
+\newcount\max at BC@i%
+\newcount\BC at i%
+\newcount\BC at series@x%
+\newcount\BC at series@y%
+\newcount\BC at ii%
+\newcount\BC at series@yy%
+\newcount\BC at series@yy%
+\newcount\lbl%
+\newcount\temp at lbl%
+\NewDocumentCommand\draw at BC@edges{s}%
+{%
+\tdrmo \the\dynkin at rank\relax%
+\advance\tdrmo by \the\dynkin at rank\relax%
+\advance\tdrmo by -1\relax%
+\max at BC@i \the\dynkin at rank\relax%
+\advance\max at BC@i by 1\relax%
+\BC at i 1\relax%
+\loop%
+	\BC at series@x \the\BC at i\relax%
+	\advance\BC at series@x by \the\BC at i\relax%
+	\advance\BC at series@x by -2\relax%
+	\BC at series@y 1\relax%
+	{%%
+	\loop%
+		\ifnum\BC at i>1%
+			% draw an edge upward to the left
+			\BC at ii \the\BC at i\relax%
+			\advance\BC at ii  by -1\relax%
+			\BC at series@yy \the\BC at series@y\relax%
+			\advance\BC at series@yy  by 1\relax%
+			\draw at lie@hasse at edge[right]%
+				{\the\BC at series@y}{\the\BC at i}%
+				{\the\BC at ii}%
+				{\the\BC at ii}%
+		\fi%
+		\ifnum\BC at series@y>1%
+			% draw an edge downward to the left
+			\BC at series@yy \the\BC at series@y\relax%
+			\advance\BC at series@yy  by -1\relax%
+			\lbl \the\BC at i\relax%
+			\advance\lbl by \the\BC at series@y\relax%
+			\advance\lbl by -1\relax%
+			\ifnum\dynkin at rank<\the\lbl%
+				\temp at lbl \the\lbl\relax%
+				\lbl \the\dynkin at rank\relax%
+				\advance\lbl by \the\dynkin at rank%
+				\advance\lbl by -\the\temp at lbl%
+%% For the B series:
+				\IfBooleanF{#1}{\global\advance\lbl by 1\relax}%
+				\draw at lie@hasse at edge[left]%
+					{\the\BC at series@yy}{\the\BC at i}%
+					{\the\BC at i}%
+					{\the\lbl}%
+			\else%
+				\draw at lie@hasse at edge[left]%
+					{\the\BC at series@yy}{\the\BC at i}%
+					{\the\BC at i}%
+					{\the\lbl}%
+			\fi%
+		\fi%
+		\advance\BC at series@y by 1\relax%
+		\advance\BC at series@x by 1\relax%
+		\ifnum\BC at series@x<\the\tdrmo\repeat%
+	}%%
+	\advance\BC at i by 1\relax%
+	\ifnum\BC at i<\the\max at BC@i%
+\repeat%
+}%
+\newcount\tdrpt%
+\newcount\BC at r%
+\newcount\BC at series@y%
+\newcount\maxy%
+\NewDocumentCommand\draw at BC@roots{}%
+{%
+\tdrpt \the\dynkin at rank\relax%
+\advance\tdrpt by \the\dynkin at rank\relax%
+\advance\tdrpt by 2\relax%
+\max at BC@r \the\dynkin at rank\relax%
+\advance\max at BC@r by 1\relax%
+\BC at r 1\relax%
+\loop%
+	\BC at series@y 1\relax%
+	\maxy \tdrpt\relax%
+	\advance\maxy -\the\BC at r\relax%
+	\advance\maxy -\the\BC at r\relax%
+	{%%
+	\loop%
+		\draw at lie@hasse at root{\the\BC at series@y;\the\BC at r}%
+		\advance\BC at series@y by 1\relax%
+	\ifnum\BC at series@y<\the\maxy\repeat%
+	}%%
+	\advance\BC at r by 1\relax%
+	\ifnum\BC at r<\the\max at BC@r%
+\repeat%
+}%
+\NewDocumentCommand\hasse at BC{s}% star for C:
+{%
+	\place at BC@roots%
+	\IfBooleanTF{#1}%
+	{%
+		\draw at BC@edges*%
+	}%
+	{%
+		\draw at BC@edges%
+	}%
+	\draw at BC@roots%
+}%
+\NewDocumentCommand\hasse at D{}%
+{%
+	\place at D@roots%
+	\draw at D@edges%
+	\iflie at hasse@threeD%
+		\draw at D@hasse at three@D%
+	\fi%
+	\draw at D@roots% 
+}%
+\newcount\drmt%
+\NewDocumentCommand\draw at D@hasse at three@D{}%
+{%
+		\drmo \the\dynkin at rank\relax%
+		\advance\drmo by -1\relax%
+		\drmt \the\dynkin at rank\relax%
+		\advance\drmt by -2\relax%
+		\begin{pgfonlayer}{Dynkin middle}%
+			\fill[/Lie Hasse diagram/left] 
+				(\the\drmt;1) -- 
+				(\the\drmo;1) -- 
+				(\the\dynkin at rank;1) -- 
+				(\the\drmo;2) --
+				cycle;%
+			\fill[/Lie Hasse diagram/top] 
+				(\the\drmt;1) -- 
+				(1;\the\drmt) -- 
+				(2;\the\drmo) -- 
+				(\the\drmo;2) --
+				cycle;%
+			\fill[/Lie Hasse diagram/top] 
+				(\the\drmo;2) -- 
+				(\the\dynkin at rank;1) -- 
+				(3;\the\drmo) -- 
+				(2;\the\drmo) --
+				cycle;%
+			\fill[/Lie Hasse diagram/top] 
+				(\the\drmo;1) -- 
+				(\the\dynkin at rank;1) -- 
+				(3;\the\drmo) -- 
+				(2;\the\drmt) --
+				cycle;%
+			\fill[/Lie Hasse diagram/top]
+				(\the\drmt;1) -- 
+				(\the\drmo;1) -- 
+				(2;\the\drmt) -- 
+				(1;\the\drmt) --
+				cycle;%
+			\fill[/Lie Hasse diagram/left]
+				(1;\the\drmt) -- 
+				(2;\the\drmt) -- 
+				(3;\the\drmo) -- 
+				(2;\the\drmo) --
+				cycle;%
+		\end{pgfonlayer}%
+}%
+\NewDocumentCommand\hasse at D@width at at@grade{mm}%
+{%
+	\global#2\the\dynkin at rank\relax%
+	\global\advance#2 by\the\dynkin at rank\relax%
+	\global\advance#2 by -#1\relax%
+	\ifnum#1<\the\dynkin at rank%
+		\global\advance#2 by 1\relax%
+	\else%
+		\global\advance#2 by -1\relax%
+	\fi%
+	\global\divide#2 by 2\relax%
+}%
+\newcount\max at D@grades%
+\newcount\max at D@grades at plus@one%
+\newcount\D at g%
+\newcount\maxD at grd%
+\newcount\D at grd%
+\newcount\maxxD%
+\newcount\iD%
+\newcount\xxD%
+\newcount\sum at D%
+\NewDocumentCommand\place at D@roots{}%
+{%
+	\global\max at D@grades \the\dynkin at rank\relax%
+	\global\advance\max at D@grades \the\dynkin at rank\relax%
+	\global\advance\max at D@grades -3\relax%
+	\max at D@grades at plus@one \the\max at D@grades\relax%
+	\advance\max at D@grades at plus@one 1\relax%
+	\D at g 1\relax%
+	{%
+	\loop%
+		\place at D@roots at at@grade{\the\D at g}%
+		\advance\D at g by 1\relax%
+	\ifnum\D at g<\the\max at D@grades at plus@one%
+	\repeat%
+	}%
+}%
+\newcount\D at r%
+\NewDocumentCommand\place at D@roots at at@grade{m}%
+{%
+	\hasse at D@width at at@grade{#1}{\max at D@roots}%
+	\max at D@roots at plus@one \the\max at D@roots\relax%
+	\advance\max at D@roots at plus@one 1\relax%
+	\D at r 1\relax%
+	{%
+	\loop%
+		\place at D@root at at{#1}{\the\D at r}%
+		\advance\D at r by 1\relax%
+	\ifnum\D at r<\the\max at D@roots at plus@one%
+	\repeat%
+	}%
+}%
+\newcount\drpo%
+\NewDocumentCommand\place at D@root at at{mm}%
+{%
+	\xxD #1\relax%
+	\advance\xxD by #2\relax%
+	\advance\xxD by #2\relax%
+	\advance\xxD by -3\relax%
+	\drpo \the\dynkin at rank\relax%
+	\advance\drpo by 1\relax%
+	\sum at D #1\relax%
+	\advance\sum at D by #2\relax%
+	\ifnum\sum at D=\the\dynkin at rank%
+		\global\def\D at root@x%
+			{\the\xxD-\lie at hasse@three at D@shift}%
+	\else%
+		\ifnum\sum at D=\the\drpo%
+			\ifnum#1<\the\dynkin at rank%
+			\global\def\D at root@x%
+				{\the\xxD-2+\lie at hasse@three at D@shift}%
+			\else%
+				\global\def\D at root@x{\the\xxD}%
+			\fi%
+		\else%
+			\ifnum\sum at D<\the\dynkin at rank%
+				\global\def\D at root@x{\the\xxD}%
+			\else%
+%					if \sum at D exceeds rank+1
+				\ifnum#1<\the\dynkin at rank%
+					\global\def\D at root@x{\the\xxD-2}%
+				\else%
+					\global\def\D at root@x{\the\xxD}%
+				\fi%
+			\fi%
+		\fi%
+	\fi%	
+	\coordinate 
+		(#1;#2)
+		at 
+		({(\D at root@x)*\dynkin at edge@length/2},{(#1-1)*\dynkin at edge@length/2})
+		{};%
+}%
+\NewDocumentCommand\draw at D@edges{}%
+{%
+	\global\max at D@grades \the\dynkin at rank\relax%
+	\global\advance\max at D@grades \the\dynkin at rank\relax%
+	\global\advance\max at D@grades -3\relax%
+	\D at g 1\relax%
+	{%
+	\loop%
+		\draw at D@edges at at@grade{\the\D at g}%
+		\advance\D at g by 1\relax%
+	\ifnum\D at g<\the\max at D@grades%
+	\repeat%
+	}%
+}%
+\newcount\max at D@roots%
+\newcount\max at D@roots at plus@one%
+\NewDocumentCommand\draw at D@edges at at@grade{m}%
+{%
+	\hasse at D@width at at@grade{#1}{\max at D@roots}%
+	\max at D@roots at plus@one \the\max at D@roots\relax%
+	\advance\max at D@roots at plus@one 1\relax%
+	\D at r 1\relax%
+	{%
+	\loop%
+		\draw at D@edges at at{#1}{\the\D at r}{\the\max at D@roots}%
+		\advance\D at r by 1\relax%
+	\ifnum\D at r<\the\max at D@roots at plus@one%
+	\repeat%
+	}%	
+}%
+\newcount\hasse at D@gpo%
+\newcount\hasse at D@imo%
+\newcount\hasse at D@w%
+\newcount\hasse at D@gpi%
+\newcount\hasse at D@target%
+\newif\ifhasse at D%
+\xdef\hasse at D@layer{}%
+\xdef\hasse at D@LR{}%
+\newcount\hasse at D@label%
+\NewDocumentCommand\draw at D@edges at at{mm}%
+{%
+	\drmo\the\dynkin at rank\relax%
+	\advance\drmo by -1\relax%
+	\drpo \the\dynkin at rank\relax%
+	\advance\drpo by 1\relax%
+	\hasse at D@gpo#1\relax%
+	\advance\hasse at D@gpo by 1\relax%
+	\hasse at D@gpi#1\relax%
+	\advance\hasse at D@gpi #2\relax%
+	\hasse at D@imo#2\relax%
+	\advance\hasse at D@imo by -1\relax%
+	\hasse at Dfalse%
+	\xdef\hasse at D@layer{Dynkin middle}%
+	\xdef\hasse at D@LR{left}%
+	\hasse at D@width at at@grade{#1}{\hasse at D@w}%
+	\ifnum#2>1%
+		% Not at the left edge, so draw an edge going up to the left
+		\global\hasse at D@label#2\relax%
+		\advance\hasse at D@label -1\relax%
+		\ifnum\hasse at D@gpo=\the\dynkin at rank%
+			\ifnum\hasse at D@imo=1%
+				% (g;i)=(r-1;2) doesn't go anywhere up to the left.
+			\else%
+				% connect g;i to g+1;i-2
+				\global\hasse at Dtrue%
+				\global\hasse at D@target \hasse at D@imo\relax
+				\global\advance\hasse at D@target by -1\relax%
+			\fi%
+		\else%
+			% connect g;i to g+1;i-1
+			\global\hasse at Dtrue%
+			\global\hasse at D@target \hasse at D@imo\relax%
+			\ifnum\hasse at D@gpi=\the\dynkin at rank%
+				\xdef\hasse at D@layer{Dynkin above}%
+			\else%
+					% below or middle.
+				\ifnum\hasse at D@gpi=\the\drpo%
+					\xdef\hasse at D@layer{Dynkin behind}%
+				\fi%
+			\fi%
+		\fi%
+		\ifnum\hasse at D@w=#2%
+			\xdef\hasse at D@LR{right}%
+		\fi%
+	\fi%
+	\ifnum\dynkin at rank>#1%
+		\ifnum\hasse at D@gpi<\the\drpo%
+		\else%
+			\global\advance\hasse at D@label -1\relax%
+		\fi%
+	\fi%
+	\ifhasse at D%
+		\begin{pgfonlayer}{\hasse at D@layer}
+			\draw at lie@hasse at edge%
+				[\hasse at D@LR]%
+				{#1}{#2}%
+				{\the\hasse at D@target}{\the\hasse at D@label}%
+		\end{pgfonlayer}%
+	\fi%
+	\hasse at Dtrue%
+	\xdef\hasse at D@LR{left}%
+	\ifnum\hasse at D@w=#2%
+		\ifodd#1%
+			% not enough room to draw an edge going rightward.
+			\global\hasse at Dfalse\relax%
+		\else%
+			\xdef\hasse at D@LR{right}%
+		\fi%
+	\fi%
+	\ifnum#1=1%
+		\ifnum\drmo=#2%
+			\global\hasse at Dfalse\relax%
+		\else%
+			\xdef\hasse at D@LR{right}%
+		\fi%
+	\fi%
+	\ifhasse at D%
+		\global\hasse at D@label \hasse at D@gpi\relax%
+		\ifnum\hasse at D@label>\the\dynkin at rank%
+			\hasse at D@label -\hasse at D@label\relax%
+			\advance\hasse at D@label \the\dynkin at rank\relax%
+			\advance\hasse at D@label \the\drmo\relax%
+		\fi%
+		\ifnum\drmo<#1%
+		\else%
+			\ifnum#2=1%
+			\else%
+				\ifnum\hasse at D@gpi<\the\drpo%
+				\else%
+					\advance\hasse at D@label 1\relax%
+				\fi%
+			\fi%
+		\fi%
+		\global\hasse at D@target #2\relax%
+		\ifnum\hasse at D@gpi=\the\dynkin at rank%
+			\ifnum#2=1%
+			\else%
+				\global\advance\hasse at D@target by 1\relax%
+			\fi%
+		\else%
+			\ifnum\drmo=#1%
+				\global\advance\hasse at D@target by -1\relax%
+			\fi%
+		\fi%
+		\ifnum\hasse at D@gpi=\the\drpo%
+			\ifnum#2>1%
+				\xdef\hasse at D@layer{Dynkin behind}%
+				\xdef\hasse at D@LR{right}%
+			\fi%
+		\else%
+			\ifnum\hasse at D@gpi=\the\dynkin at rank%
+				\xdef\hasse at D@layer{Dynkin above}%
+			\else%
+				\ifnum\hasse at D@gpi=\the\drmo%
+					\xdef\hasse at D@layer{Dynkin above}%
+				\else%
+					\xdef\hasse at D@layer{Dynkin middle}%
+				\fi%
+			\fi%
+		\fi%
+	\fi%
+	\ifhasse at D%
+		\begin{pgfonlayer}{\hasse at D@layer}
+				\draw at lie@hasse at edge%
+					[\hasse at D@LR]%
+					{#1}{#2}%
+					{\the\hasse at D@target}{\the\hasse at D@label}%
+		\end{pgfonlayer}%
+	\fi%
+%	% Draw any other edges.
+	\ifnum\hasse at D@gpi=\the\drmo%
+		\hasse at D@target#2\relax%
+		\advance\hasse at D@target by 1\relax%
+		\begin{pgfonlayer}{Dynkin behind}
+			\draw at lie@hasse at edge%
+				[right,near start]%
+				{#1}{#2}%
+				{\the\hasse at D@target}{\the\dynkin at rank}%
+		\end{pgfonlayer}%
+	\fi%
+}%
+\newcount\maxD at grd%
+\newcount\D at grd%
+\newcount\maxxD%
+\newcount\sum at D%
+\NewDocumentCommand\draw at D@roots{}%
+{%
+	\drmo \the\dynkin at rank\relax%
+	\advance\drmo by -1\relax%
+	\maxD at grd \the\dynkin at rank\relax%
+	\advance\maxD at grd by \the\dynkin at rank\relax%
+	\advance\maxD at grd by -2\relax%
+	\D at grd 1\relax%
+	\loop%
+		% Construct the roots at grade \D at grd.
+		\draw at D@roots at at@grade{\D at grd}%
+		\advance\D at grd by 1\relax%
+	\ifnum\D at grd<\the\maxD at grd%
+	\repeat%	
+}%
+\NewDocumentCommand\draw at D@roots at at@grade{m}%
+{%
+	\hasse at D@width at at@grade{#1}{\max at D@roots}%
+	\max at D@roots at plus@one \the\max at D@roots\relax%
+	\advance\max at D@roots at plus@one 1\relax%
+	\D at r 1\relax%
+	{%
+	\loop%
+		\draw at lie@hasse at root{\the\D at grd;\the\D at r}%
+		\advance\D at r by 1\relax%
+	\ifnum\D at r<\the\max at D@roots at plus@one%
+	\repeat%
+	}%
+}%
+%}%
+\newcount\lie at hasse@grade at no
+\newcount\lie at hasse@root at no
+\def\lie at hasse@XX{}
+\def\lie at hasse@ZZ{}
+\NewDocumentCommand\lie at hasse@read at root@pair{m}%
+{%
+	\IfSubStr{#1}{:}%
+	{%
+		\StrBefore{#1}{:}[\lie at hasse@XX]%
+		\StrBehind{#1}{:}[\lie at hasse@ZZ]%
+	}%
+	{%
+		\xdef\lie at hasse@XX{#1}%
+		\xdef\lie at hasse@ZZ{0}%
+	}%
+	\IfStrEq{\dynkin at series}{G}%
+	{%
+	\pgfmathsetmacro\lie at hasse@XX%
+		{\lie at hasse@XX}%
+	}%
+	{% else
+	\pgfmathsetmacro\lie at hasse@XX%
+		{\lie at hasse@XX+\lie at hasse@three at D@shift*(\the\lie at hasse@grade at no-\lie at hasse@ZZ-1)}%
+	}%
+}%
+\NewDocumentCommand\lie at hasse@place at root{m}%
+{%
+	\lie at hasse@read at root@pair{#1}%
+	\coordinate 
+		(\the\lie at hasse@grade at no;\the\lie at hasse@root at no) 
+		at 
+		({\lie at hasse@XX*\dynkin at edge@length/2},
+		{(\the\lie at hasse@grade at no-1)*\dynkin at edge@length/2}) {};%
+	\global\advance\lie at hasse@root at no by 1%
+}%
+\NewDocumentCommand\lie at hasse@place at root@list{m}%
+{%
+	\global\lie at hasse@root at no 1\relax%
+	\expandafter\forcsvlist\expandafter{\lie at hasse@place at root}{#1}%
+	\global\advance\lie at hasse@grade at no by 1%
+}%
+\NewDocumentCommand\lie at hasse@place at roots{m}%
+{%
+	\global\lie at hasse@grade at no 1\relax%
+	\renewcommand*{\do}[1]%
+	{%
+		\lie at hasse@place at root@list{##1}%
+	}%
+	\expandafter\docsvlist\expandafter{#1}%
+}%
+\NewDocumentCommand\lie at hasse@draw at root{m}%
+{%
+	\draw at lie@hasse at root{\the\lie at hasse@grade at no;\the\lie at hasse@root at no}%
+	\global\advance\lie at hasse@root at no by 1%
+}%
+\NewDocumentCommand\lie at hasse@root at draw@list{m}%
+{%
+	\global\lie at hasse@root at no 1\relax%
+	\expandafter\forcsvlist\expandafter{\lie at hasse@draw at root}{#1}%
+	\global\advance\lie at hasse@grade at no by 1%
+}%
+\NewDocumentCommand\lie at hasse@draw at roots{m}%
+{%
+	\global\lie at hasse@grade at no 1\relax%
+	\renewcommand*{\do}[1]%
+	{%
+		\lie at hasse@root at draw@list{##1}%
+	}%
+	\expandafter\docsvlist\expandafter{#1}%
+}%
+\newcount\lie at hasse@grade at no@plus at one%
+\newcount\lie at hasse@edge at count%
+\def\lie at hasse@edge at go{%
+\@ifstar\lie at hasse@process at edge@above\lie at hasse@process at edge@behind}%
+\NewDocumentCommand\lie at hasse@process at edge{m}%
+{%
+	\lie at hasse@edge at go#1!%
+}%
+\def\lie at hasse@process at edge@above#1!%
+{%
+	\global\advance\lie at hasse@edge at count  by 1\relax%
+	\begin{pgfonlayer}{Dynkin above}%
+	\lie at hasse@finish at edge#1!%
+	\end{pgfonlayer}%
+}%
+\def\lie at hasse@process at edge@behind#1!%
+{%
+	\global\advance\lie at hasse@edge at count  by 1\relax%
+	\begin{pgfonlayer}{Dynkin behind}%
+	\lie at hasse@finish at edge#1\relax%
+	\end{pgfonlayer}%
+}%
+\def\lie at hasse@finish at edge#1+#2#3#4%
+{%
+	\ifx#3<\relax%
+		\draw at lie@hasse at edge[left]%
+			{\the\lie at hasse@grade at no}{#1}%
+			{#4}%
+			{#2}%
+	\else%
+		\draw at lie@hasse at edge[right]%
+			{\the\lie at hasse@grade at no}{#1}%
+			{#4}%
+			{#2}%
+	\fi%
+}%
+\NewDocumentCommand\lie at hasse@process at edge@list{m}%
+{%
+	\global\lie at hasse@edge at count 0\relax%
+	\expandafter\forcsvlist\expandafter\lie at hasse@process at edge{#1}%
+	\global\advance\lie at hasse@grade at no by 1\relax%
+}%
+\NewDocumentCommand\lie at hasse@process at edge@lists{m}%
+{%
+	\global\lie at hasse@grade at no 1\relax%
+	\expandafter\forcsvlist\expandafter{\lie at hasse@process at edge@list}{#1}%
+}%
+\NewDocumentCommand\hasse at X{mm}%
+{%
+	\lie at hasse@place at roots{#1}%
+	\lie at hasse@process at edge@lists{#2}%
+	\lie at hasse@draw at roots{#1}%
+}%
+\NewDocumentCommand\hasse at E@six at width@at at grade{mm}%
+{%
+	\ifnum#1=1%
+		#2 6%
+	\else\ifnum#1=2%
+		#2 5%
+	\else\ifnum#1=3%
+		#2 5%
+	\else\ifnum#1=4%
+		#2 5%
+	\else\ifnum#1=5%
+		#2 4%
+	\else\ifnum#1=6%
+		#2 3%
+	\else\ifnum#1=7%
+		#2 3%
+	\else\ifnum#1=8%
+		#2 2%
+	\else\ifnum#1<1%
+		#2 0%
+	\else\ifnum#1>11%
+		#2 0%
+	\else%
+		#2 1%
+	\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}%
+% In the following code, edges are described by grade: in grade g, the expression i+r<j. means an edge from g;i to (g+1);j labelled by root r, with a label on the left; use > instead of < to get the right. Use a star in front to get this edge on the higher layer.
+\NewDocumentCommand\hasse at E@six{}%
+{%
+\hasse at X%
+{{0,2,4,5:1,6,8},{1,3,4:1,5,7},{2,3:1,4,5:1,6},{2:1,3,4:1,5,6:1},%
+{3:1,4:2,4,5:1},{3:2,4:1,5:2},{2:2,4:2,6:2},{3:2,5:2},{4:2},{4:3},{4:4}}%
+{%%% grades:
+{% 1
+1+2<1,*2+3>2,*3+4<3,*5+6>5,*2+1<1,*3+2<2,*3+5>4,*4+3>3,*5+3<4,6+5>5},
+{% 2 
+*1+3<1,*2+4<2,*3+5<4,4+2<3,*4+4<4,*4+6<5,*2+1<1,2+5>3,*3+2>2,*5+3>5},
+{% 3
+*1+4<1,3+1<2,*2+5<3,*2+1<1,3+4<3,3+6<4,*4+2<3,*4+6<5,1+5>2,5+2>4,*5+4>5},
+{% 4
+*1+5<1,2+4<1,2+6<3,*3+1<1,*3+3>2,4+1<3,4+4<4,*3+6<4,*5+2>4},
+{% 5
+*1+3<1,1+6<2,3+4<2,4+1>2,*2+1<1,*2+6>3,*4+3>3},
+{% 6
+*1+2<1,*1+6<2,2+3<2,*3+1<2,*3+5>3},
+{% 7
+*1+6<1,*2+5<2,*2+2<1,*3+1>2},
+{% 8
+*1+5<1,*2+2>1},
+{% 9
+1+3<1},
+{% 10
+1+4<1}
+}%%%
+\iflie at hasse@threeD%
+\begin{pgfonlayer}{Dynkin middle}%
+\fill[/Lie Hasse diagram/top] (2;1) -- (5;3) -- (2;5) -- (1;5) -- (2;4) -- (1;3) -- (2;2) -- (1;2) -- cycle;%
+\fill[/Lie Hasse diagram/top] (2;3) -- (4;1) -- (6;2) -- (4;5) -- cycle;%
+\fill[/Lie Hasse diagram/right] (1;3) -- (2;3) -- (4;5) -- (3;5) -- cycle;%
+\fill[/Lie Hasse diagram/left] (3;1) -- (4;1) -- (2;3) -- (1;3) -- cycle;%
+\fill[/Lie Hasse diagram/left] (4;3) -- (5;1) -- (6;1) -- (5;2) -- cycle;%
+\fill[/Lie Hasse diagram/right] (4;3) -- (5;2) -- (6;3) -- (5;4) -- cycle;%
+\fill[/Lie Hasse diagram/top] (5;2) -- (7;1) -- (9;1) -- (7;3) -- cycle;%
+\end{pgfonlayer}%
+\fi%
+}%
+\NewDocumentCommand\hasse at E@seven at width@at at grade{mm}%
+{%
+	\ifnum#1=1%
+		#2 7%
+	\else\ifnum#1=2%
+		#2 6%
+	\else\ifnum#1=3%
+		#2 6%
+	\else\ifnum#1=4%
+		#2 6%
+	\else\ifnum#1=5%
+		#2 6%
+	\else\ifnum#1=6%
+		#2 5%
+	\else\ifnum#1=7%
+		#2 5%
+	\else\ifnum#1=8%
+		#2 4%
+	\else\ifnum#1=9%
+		#2 4%
+	\else\ifnum#1=10%
+		#2 3%
+	\else\ifnum#1=11%
+		#2 3%
+	\else\ifnum#1=12%
+		#2 2%
+	\else\ifnum#1=13%
+		#2 2%
+	\else\ifnum#1<1%
+		#2 0%
+	\else\ifnum#1>17%
+		#2 0%
+	\else%
+		#2 1%
+	\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}%
+
+\NewDocumentCommand\hasse at E@seven{}%
+{%
+\hasse at X%
+{{0,2,4,6,7:1,8,10},%1
+{1,3,5,6:1,7,9},%2
+{2,4,5:1,6,7:1,8},%3
+{3,4:1,5,6:1,7,8:1},%4
+{3:1,4,5:1,6:2,6,7:1},%5
+{4:1,5:2,5,6:1,7:2},%6
+{4:2,5:3,5:1,6:2,8:2},%7
+{4:3,5:2,6:3,7:2},%8
+{3:3,5:3,6:2,7:3},%9
+{4:3,6:3,8:3},%10
+{5:3,7:3,9:3},%11
+{6:3,8:3},%12
+{5:3,7:3},%13
+{6:3},%14
+{6:4},%15
+{6:5},%16
+{6:6}%17
+}
+{%%% grades:
+{% 1
+*1+2<1,*2+1<1,*2+3>2,*3+2<2,*3+4>3,*4+3<3,*4+5<4,4+6>5,*5+4<4,*6+4<5,*6+7>6,*7+6>6},
+{% 2 
+*1+3<1,*2+1<1,*2+4<2,*3+2<2,*3+5<3,3+6<4,*4+3<3,*4+6>5,5+3>4,*5+5>5,*5+7>6,*6+4>6},
+{% 3
+*1+4<1,*2+1<1,*2+5<2,2+6<3,*3+2<2,*3+6<4,4+2<3,4+5<4,4+7<5,*5+3<4,*5+7>6,6+3>5,*6+5>6},
+{% 4
+*1+5<1,1+6<2,*2+1<1,*2+6<3,3+1<2,3+5<3,3+7<5,*4+2<3,*4+4>4,5+2<5,*4+7<6,5+5<6,*6+3>6},
+{% 5
+*1+6<1,2+5<1,2+7>3,*3+1<1,*3+4<2,5+1<3,3+7<4,*4+2<2,*4+7>5,5+5<4,6+2>4,*6+4>5},
+{% 6
+*1+4<1,1+7<3,*2+1<1,*2+3>2,*2+7>4,3+5<3,4+1>3,4+4>4,*5+2>4,*5+6>5},
+{% 7
+*1+3<1,1+7<2,*2+1<1,3+4<2,4+1>2,*4+3>3,*2+7>3,*4+6>4,*5+2>4},
+{% 8
+*1+2<1,*1+7<2,2+3<2,2+6<3,*3+1<2,*3+6<4,4+1>3,*4+3>4},
+{% 9
+*1+7<1,*2+2<1,*2+6<2,3+3<2,*4+1>2,*4+4>3},
+{% 10
+*1+6<1,*2+2<1,*2+4<2,*3+1<2,*3+5>3},
+{% 11
+*1+4<1,*2+2<1,*2+5<2,*3+1<2},
+{% 12
+*1+3<1,*1+5<2,*2+2<2},
+{% 13
+*1+5<1,*2+3<1},
+{% 14
+1+4<1},
+{% 15
+1+6<1},
+{% 16
+1+7<1},
+}%%%
+\iflie at hasse@threeD%
+\begin{pgfonlayer}{Dynkin middle}%
+\fill[/Lie Hasse diagram/top] (2;1) -- (6;3) -- (2;6) -- (1;6) -- (2;5) -- (1;4) -- (2;3) -- (1;3) -- 
+	(2;2) -- (1;2) -- cycle;%
+\fill[/Lie Hasse diagram/top] (5;1) -- (7;3) -- (4;6) -- (2;4) -- cycle;%
+\fill[/Lie Hasse diagram/top] (7;1) -- (9;3) -- (7;5) -- (5;4) -- cycle;%
+\fill[/Lie Hasse diagram/top] (9;1) -- (12;1) -- (13;1) -- (14;1) -- (11;3) -- (7;2) -- cycle;%
+\fill[/Lie Hasse diagram/right] (1;4) -- (2;4) -- (4;6) -- (3;6) -- cycle;%
+\fill[/Lie Hasse diagram/left] (4;1) -- (5;1) -- (2;4) -- (1;4) -- cycle;%
+\fill[/Lie Hasse diagram/left] (4;4) -- (6;1) -- (8;1) -- (7;2) -- (6;2) -- (5;4) -- cycle;%
+\fill[/Lie Hasse diagram/right] (4;4) -- (5;4) -- (6;5) -- (5;6) -- cycle;%
+\fill[/Lie Hasse diagram/right] (6;2) -- (7;2) -- (9;4) -- (8;4) -- cycle;%
+\end{pgfonlayer}%
+\fi%
+}%
+
+\NewDocumentCommand\hasse at E@eight at width@at at grade{mm}%
+{%
+	\ifnum#1=1%
+		#2 8%
+	\else\ifnum#1=2%
+		#2 7%
+	\else\ifnum#1=3%
+		#2 7%
+	\else\ifnum#1=4%
+		#2 7%
+	\else\ifnum#1=5%
+		#2 7%
+	\else\ifnum#1=6%
+		#2 7%
+	\else\ifnum#1=7%
+		#2 7%
+	\else\ifnum#1=8%
+		#2 6%
+	\else\ifnum#1=9%
+		#2 6%
+	\else\ifnum#1=10%
+		#2 6%
+	\else\ifnum#1=11%
+		#2 6%
+	\else\ifnum#1=12%
+		#2 5%
+	\else\ifnum#1=13%
+		#2 5%
+	\else\ifnum#1=14%
+		#2 4%
+	\else\ifnum#1=15%
+		#2 4%
+	\else\ifnum#1=16%
+		#2 4%
+	\else\ifnum#1=17%
+		#2 4%
+	\else\ifnum#1=18%
+		#2 3%
+	\else\ifnum#1=19%
+		#2 3%
+	\else\ifnum#1=20%
+		#2 2%
+	\else\ifnum#1=21%
+		#2 2%
+	\else\ifnum#1=22%
+		#2 2%
+	\else\ifnum#1=23%
+		#2 2%
+	\else\ifnum#1<1%
+		#2 0%
+	\else\ifnum#1>29%
+		#2 0%
+	\else%
+		#2 1%
+	\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}%
+
+\NewDocumentCommand\hasse at E@eight{}%
+{%
+\hasse at X{%
+{0,2,4,6,8,9:1,10,12},%1
+{1,3,5,7,8:1,9,11},%2
+{2,4,6,7:1,8,9:1,10},%3
+{3,5,6:1,7,8:1,9,10:1},%4
+{4,5:1,6,7:1,8:2,8,9:1},%5
+{4:1,5,6:1,7:2,7,8:1,9:2},%6
+{5:1,6:2,6,7:3,7:1,8:2,10:2},%7
+{5:2,6:3,6:1,7:2,8:3,9:2},%8
+{5:3,6:4,6:2,7:3,8:2,9:3},%9
+{5:4,6:3,7:4,7:2,8:3,10:3},%10
+{4:4,6:4,7:3,8:4,9:3,11:3},%11
+{5:4,7:4,8:3,9:4,10:3},%12
+{6:4,8:4,9:5,9:3,10:4},%13
+{7:4,8:5,9:4,10:5},%14
+{7:5,8:4,9:5,11:5},%15
+{6:5,8:5,10:5,12:5},%16
+{7:5,9:5,11:5,13:5},%17
+{8:5,10:5,12:5},%18
+{7:5,9:5,11:5},%19
+{8:5,10:5},%20
+{7:5,9:5},%21
+{6:5,8:5},%22
+{7:5,9:5},%23
+{8:5},%24
+{8:6},%25
+{8:7},%26
+{8:8},%27
+{8:9},%28
+{8:10}%29
+}%
+{%%% grades:
+{% 1
+*1+2<1,*2+1<1,*2+3>2,*3+2<2,*3+4>3,*4+3<3,*4+5>4,*5+4<4,*5+6<5,5+7>6,*6+5>5,*7+5<6,*7+8>7,8+7>7},
+{% 2 
+*1+3<1,*2+1<1,*2+4<2,*3+2<2,*3+5<3,*4+3<3,*4+6<4,4+7>5,*5+4<4,*5+7<6,6+4<5,*6+6>6,*6+8>7,*7+5>7},
+{% 3
+*1+4<1,*2+1<1,*2+5<2,*3+2<2,*3+6<3,3+7>4,*4+3<3,*4+7<5,5+3<4,5+6>5,5+8>6,*6+4>5,*6+8<7,7+4>6,*7+6>7},
+{% 4
+*1+5<1,*2+1<1,*2+6<2,2+7>3,*3+2<2,*3+7<4,4+2<3,4+6<4,4+8<6,*5+3<4,*5+5>5,*5+8<7,6+3>6,6+6>7,*7+4>7},
+{% 5
+6+2<5,*1+6<1,1+7<2,*2+1<1,*2+7<3,3+1<2,3+6<3,3+8<5,*4+2<3,*4+5<4,4+8<6,*5+3<4,*5+8>7,6+6<6,7+3>6,*7+5>7},
+{% 6
+*1+7<1,2+6<1,2+8<3,*3+1<1,*3+5<2,*4+2<2,3+8<5,*4+4<4,*4+8>6,5+1<3,5+6<5,6+2>5,6+5>6,*7+3>6,*7+7>7},
+{% 7
+5+1<3,*1+5<1,1+8<3,*2+1<1,*2+4<2,2+8<4,3+6<3,*4+2<2,*4+8>5,5+5<4,6+2>4,*6+4>5,*6+7>6,*7+3>6},
+{% 8
+*1+4<1,1+8<3,*2+1<1,*2+3>2,*2+8>4,3+5<3,4+1<3,4+4<4,4+7<5,*5+2<4,*5+7<6,*6+4>6,6+2>5},
+{% 9
+*1+3<1,1+8<2,*2+1<1,*2+8<3,3+4<2,3+7<4,*4+3>3,4+1<2,*4+7<5,5+1>4,5+4>5,*6+2>5,*6+5>6},
+{% 10
+*1+2<1,*1+8<2,2+3<2,2+7<3,*3+1<2,*3+7>4,4+4<3,5+1>3,*5+3>4,*5+5>5,*6+2<5,*6+6>6},
+{% 11
+*1+8<1,*2+2<1,*2+7<2,3+3<2,3+5>3,*4+1<2,*4+5<4,*5+3>4,5+1>3,*5+6>5,*6+2>5},
+{% 12
+*1+7<1,*2+2<1,*2+5<2,3+3<2,3+6<4,*4+1<2,*4+4>3,*4+6<5,5+1>4,*5+3>5},
+{% 13
+*1+5<1,*2+2<1,*2+4<2,2+6<3,*3+1<2,*3+6>4,4+3<3,5+1>3,*5+4>4},
+{% 14
+*1+4<1,1+6<2,*2+2<1,*2+6<3,3+2<2,3+4<3,*4+1<3,*4+5>4},
+{% 15
+*1+3<1,*1+6<2,2+4<2,*3+2>2,*3+5<3,*4+1<3,*4+7>4},
+{% 16
+*1+6<1,*2+3<1,*2+5<2,*3+2<2,*3+7<3,*4+1<3,*4+8>4},
+{% 17
+*1+5<1,*2+3<1,*2+7<2,*3+2<2,*3+8<3,*4+1>3},
+{% 18
+*1+4<1,*1+7<2,*2+3<2,*2+8<3,*3+2>3},
+{% 19
+*1+7<1,*2+4<1,*2+8<2,*3+3>2},
+{% 20
+*1+5<1,*1+8<2,*2+4>2},
+{% 21
+*1+6<1,*1+8<2,*2+5>2,},
+{% 22
+*1+8<1,*2+6<1,*2+7>2},
+{% 23
+*1+7<1,*2+6>1},
+{% 24
+1+5>1},
+{% 25
+1+4>1},
+{% 26
+1+3>1},
+{% 27
+1+2>1},
+{% 28
+1+1>1}
+}%%%
+\iflie at hasse@threeD%
+\begin{pgfonlayer}{Dynkin middle}%
+\fill[/Lie Hasse diagram/top] 
+	(2;1) --
+	(7;3) -- 
+	(2;7) --
+	(1;7) --
+	(2;6) --
+	(1;5) --
+	(2;4) --
+	(1;4) --
+	(2;3) --
+	(1;3) --
+	(2;2) -- 
+	(1;2) --
+	cycle;%
+\fill[/Lie Hasse diagram/left]
+	(5;1) --
+	(6;1) --
+	(2;5) --
+	(1;5) --
+	cycle;%
+\fill[/Lie Hasse diagram/right]
+	(2;5) --
+	(4;7) --
+	(3;7) --
+	(1;5) --
+	cycle;%
+\fill[/Lie Hasse diagram/left]
+	(7;1) --
+	(10;1) --
+	(9;2) --
+	(8;2) --
+	(7;4) --
+	(6;4) --
+	(5;5) --
+	(4;5) --
+	cycle;%
+\fill[/Lie Hasse diagram/right]
+	(4;5) -- 
+	(5;5) --
+	(6;7) --
+	(5;7) --
+	cycle;%
+\fill[/Lie Hasse diagram/right]
+	(6;4) --
+	(7;4) --
+	(9;6) --
+	(8;6) --
+	cycle;%
+\fill[/Lie Hasse diagram/right] 
+	(8;2) --
+	(9;2) --
+	(12;4) --
+	(13;3) --
+	(14;4) --
+	(12;5) --
+	cycle;%
+\fill[/Lie Hasse diagram/top] 
+	(6;1) --
+	(8;3) --
+	(4;7) --
+	(2;5) --
+	cycle;%
+\fill[/Lie Hasse diagram/left]
+	(12;4) --
+	(14;1) --
+	(15;1) --
+	(13;3) --
+	cycle;%
+\fill[/Lie Hasse diagram/top] 
+	(5;5) --
+	(8;1) --
+	(10;4) --
+	(7;7) --
+	cycle;%
+\fill[/Lie Hasse diagram/top] 
+	(7;4) --
+	(9;1) --
+	(13;4) --
+	(11;6) --
+	cycle;%
+\fill[/Lie Hasse diagram/top] 
+	(9;2) --
+	(11;1) --
+	(15;2) --
+	(13;5) --
+	cycle;%
+\fill[/Lie Hasse diagram/top] 
+	(13;3) -- 
+	(16;1) -- 
+	(18;1) -- 
+	(19;1) -- 
+	(20;1) -- 
+	(22;1) -- 
+	(24;1) -- 
+	(23;2) -- 
+	(22;2) -- 
+	(17;4) -- 
+	cycle;%
+\end{pgfonlayer}%
+\fi%
+}%
+
+\NewDocumentCommand\hasse at F@width at at@grade{mm}%
+{%
+	\ifnum#1=1%
+		#2 4%
+	\else\ifnum#1=2%
+		#2 3%
+	\else\ifnum#1=3%
+		#2 3%
+	\else\ifnum#1=4%
+		#2 3%
+	\else\ifnum#1=5%
+		#2 3%
+	\else\ifnum#1=6%
+		#2 2%
+	\else\ifnum#1=7%
+		#2 2%
+	\else\ifnum#1<1%
+		#2 0%
+	\else\ifnum#1>11%
+		#2 0%
+	\else%
+		#2 1%
+	\fi\fi\fi\fi\fi\fi\fi\fi\fi%
+}%
+
+\NewDocumentCommand\hasse at F{}%
+{%
+\hasse at X%
+{{0,2,4,6},{1,3,5},{2,3:1,4},{2:1,3,4:1},{1:1,3:1,5:1},{2:1,4:1},{1:1,3:1},{2:1},{2:2},{2:3},{2:4}}%
+{% grades:
+{% 1
+1+2<1,*2+3<2,*3+4<3,*2+1>1,*3+2>2,4+3>3},
+{% 2
+*1+3<1,*2+4<3,*2+3<2,*2+1<1,3+2>3},
+{% 3
+*1+3<1,1+4<2,*2+4<3,*2+1<1,3+1>2,*3+3>3},
+{% 4
+*1+2<1,*1+4<2,2+3<2,*3+1>2,*3+4>3},
+{% 5
+*1+4<1,*2+4<2,*2+2>1,*3+1>2},
+{% 6
+*1+3<1,*1+4<2,*2+2>2},
+{% 7
+*1+4<1,*2+3>1},
+{% 8
+1+3<1},
+{% 9
+1+2<1},
+{% 10
+1+1<1}
+}%
+\iflie at hasse@threeD%
+\begin{pgfonlayer}{Dynkin middle}%
+\fill[/Lie Hasse diagram/top] (2;1) -- (4;2) -- (2;3) -- (1;3) -- (2;2) -- (1;2) -- cycle;%
+\fill[/Lie Hasse diagram/left] (2;2) -- (3;1) -- (4;1) -- (3;2) -- cycle;%
+\fill[/Lie Hasse diagram/right] (2;2) -- (3;2) -- (4;3) -- (3;3) -- cycle;%
+\fill[/Lie Hasse diagram/top] (3;2) -- (5;1) -- (6;1) -- (7;1) -- (8;1) -- (5;3) -- cycle;%
+\end{pgfonlayer}%
+\fi%
+}%
+\NewDocumentCommand\hasse at G@width at at@grade{mm}%
+{%
+	\ifnum#1=1%
+		#2 2%
+	\else\ifnum#1<1%
+		#2 0%
+	\else\ifnum#1>5%
+		#2 0%
+	\else%
+		#2 1%
+	\fi\fi\fi%
+}%
+\NewDocumentCommand\hasse at G{}%
+{%
+\hasse at X{{0,2},{1},{1},{1},{1}}{{1+2<1,2+1>1},{1+1<1},{1+1<1},{1+2<1}}%
+}%
+\ExplSyntaxOn
+\DeclareExpandableDocumentCommand{\lie at hasse@repeat at string}{O{}mm}
+{
+	\int_compare:nT { #2 > 0 }
+	{
+	#3 \prg_replicate:nn { #2 - 1 } { #1#3 }
+	}
+ }
+\ExplSyntaxOff
+\newcommand*\exceptional at root@sum[1]{\csname FOO-#1\endcsname}
+\newcommand*\defn at root@sum[1]{\expandafter\def\csname FOO-#1\endcsname}
+\def\@root at sum#1=#2!{\global\defn at root@sum{#1}{#2}}%
+\newcount\left at part@length%
+\newcount\middle at part@length%
+\newcount\right at part@length%
+\NewDocumentCommand\hasse at A@root at sum{mmm}%
+{%
+	\left at part@length#2\relax%
+	\advance\left at part@length by -1\relax%
+	\middle at part@length#1\relax%
+	\right at part@length\the\dynkin at rank\relax%
+	\advance\right at part@length by -#1\relax%
+	\advance\right at part@length by -#2\relax%
+	\advance\right at part@length by 1\relax%
+	\ifnum\left at part@length=0%
+		\ifnum\right at part@length=0%
+			\xdef#3{\lie at hasse@repeat at string[.]{\the\middle at part@length}{1}}%
+		\else%
+			\xdef#3{\lie at hasse@repeat at string[.]{\the\middle at part@length}{1}.\lie at hasse@repeat at string[.]{\the\right at part@length}{0}}%
+		\fi%
+	\else%
+		\ifnum\right at part@length=0%
+			\xdef#3{\lie at hasse@repeat at string[.]{\the\left at part@length}{0}.\lie at hasse@repeat at string[.]{\the\middle at part@length}{1}}%
+		\else%
+			\xdef#3{\lie at hasse@repeat at string[.]{\the\left at part@length}{0}.\lie at hasse@repeat at string[.]{\the\middle at part@length}{1}.\lie at hasse@repeat at string[.]{\the\right at part@length}{0}}%
+		\fi%
+	\fi%
+}%
+\NewDocumentCommand\hasse at B@root at sum{mmm}%
+{%
+	\right at part@length#1\relax%
+	\advance\right at part@length by -\the\dynkin at rank\relax%
+	\advance\right at part@length by #2\relax%
+	\advance\right at part@length by -1\relax%
+	\ifnum\right at part@length>0%
+		\left at part@length#2\relax%
+		\advance\left at part@length by -1\relax%
+		\middle at part@length\the\dynkin at rank\relax%
+		\advance\middle at part@length by\the\dynkin at rank\relax%
+		\advance\middle at part@length by -#2\relax%
+		\advance\middle at part@length by -#2\relax%
+		\advance\middle at part@length by 2\relax%
+		\advance\middle at part@length by -#1\relax%
+		\ifnum\left at part@length=0%
+			\ifnum\middle at part@length=0%
+				\xdef#3{\lie at hasse@repeat at string[.]{\the\right at part@length}{2}}%
+			\else%
+				\xdef#3{\lie at hasse@repeat at string[.]{\the\middle at part@length}{1}.\lie at hasse@repeat at string[.]{\the\right at part@length}{2}}%
+			\fi%
+		\else%
+			\ifnum\middle at part@length=0%
+				\xdef#3{\lie at hasse@repeat at string[.]{\the\left at part@length}{0}.\lie at hasse@repeat at string[.]{\the\right at part@length}{2}}%
+			\else%
+				\xdef#3{\lie at hasse@repeat at string[.]{\the\left at part@length}{0}.\lie at hasse@repeat at string[.]{\the\middle at part@length}{1}.\lie at hasse@repeat at string[.]{\the\right at part@length}{2}}%
+			\fi%
+		\fi%
+	\else%
+		\hasse at A@root at sum{#1}{#2}{#3}%
+	\fi%
+}%
+\newcount\hasse at C@len%
+\NewDocumentCommand\hasse at C@root at sum{mmm}%
+{%
+	\hasse at B@root at sum{#1}{#2}{\hasse at C@root at tmp}%
+	\StrRight{\hasse at C@root at tmp}{1}[\hasse at C@last at char]%
+	\IfStrEq{\hasse at C@last at char}{2}%
+	{%
+		\StrGobbleRight{\hasse at C@root at tmp}{1}[\hasse at C@left at chunk]%
+		\xdef#3{\hasse at C@left at chunk{}1}%
+	}%
+	{%
+	}%
+}%
+\newcount\hasse at D@len%
+\NewDocumentCommand\hasse at D@root at sum{mmm}%
+{%
+	\hasse at D@len#1\relax%
+	\advance\hasse at D@len by #2\relax%
+	\advance\hasse at D@len by -1\relax%
+	\ifnum\hasse at D@len<\the\dynkin at rank%
+		\hasse at A@root at sum{#1}{#2}{#3}%
+	\else%
+		\ifnum\hasse at D@len=\the\dynkin at rank%
+			\ifnum#2=1%
+				\xdef#3{\lie at hasse@repeat at string[.]{\the\dynkin at rank}{1}}%
+			\else%
+				\left at part@length#2\relax%
+				\advance\left at part@length by -1\relax%
+				\right at part@length#1\relax%
+				\advance\right at part@length by -1\relax%
+				\if\left at part@length>0%
+					\xdef#3%
+						{%%
+							\lie at hasse@repeat at string[.]%
+								{\the\left at part@length}{0}.%
+							\lie at hasse@repeat at string[.]%
+								{\the\right at part@length}{1}.0.1%
+						}%%
+				\else%
+					\xdef#3%
+						{%%
+							\lie at hasse@repeat at string[.]%
+								{\the\right at part@length}{1}.0.1%
+						}%%
+				\fi%
+			\fi%
+		\else%
+			\ifnum#1<\the\dynkin at rank%	
+				% i-2 zeroes
+				\left at part@length#2\relax%
+				\advance\left at part@length by -2\relax%
+				% 2r-g-2i+2 ones
+				\middle at part@length\the\dynkin at rank\relax%
+				\advance\middle at part@length by \the\dynkin at rank\relax%
+				\advance\middle at part@length by-#1\relax%
+				\advance\middle at part@length by-#2\relax%
+				\advance\middle at part@length by-#2\relax%
+				\advance\middle at part@length by 2\relax%
+				% g+i-r-2 twos
+				\right at part@length#1\relax%
+				\advance\right at part@length by #2\relax%
+				\advance\right at part@length by -\the\dynkin at rank\relax%
+				\advance\right at part@length by -2\relax%
+				\ifnum\left at part@length>0%
+					\ifnum\right at part@length>0%
+						\xdef#3%
+							{%%
+								\lie at hasse@repeat at string[.]%
+									{\the\left at part@length}{0}.%
+								\lie at hasse@repeat at string[.]%
+									{\the\middle at part@length}{1}.%
+								\lie at hasse@repeat at string[.]%
+									{\the\right at part@length}{2}.1.1%
+							}%%
+					\else%
+						\xdef#3%
+							{%%
+								\lie at hasse@repeat at string[.]%
+									{\the\left at part@length}{0}.%
+								\lie at hasse@repeat at string[.]%
+									{\the\middle at part@length}{1}.1.1%
+							}%%
+					\fi%
+				\else%
+					\ifnum\right at part@length>0%
+						\xdef#3%
+							{%%
+								\lie at hasse@repeat at string[.]%
+									{\the\middle at part@length}{1}.%
+								\lie at hasse@repeat at string[.]%
+									{\the\right at part@length}{2}.1.1%
+							}%%
+					\else%
+						\xdef#3{\lie at hasse@repeat at string[.]{\the\middle at part@length}{1}.1.1}%
+					\fi%
+				\fi%
+			\else%
+				% i-1 zeroes
+				\left at part@length#2\relax%
+				\advance\left at part@length by -1\relax%
+				% 2r-g-2i ones
+				\middle at part@length\the\dynkin at rank\relax%
+				\advance\middle at part@length by \the\dynkin at rank\relax%
+				\advance\middle at part@length by-#1\relax%
+				\advance\middle at part@length by-#2\relax%
+				\advance\middle at part@length by-#2\relax%
+				% g+i-r-1 twos
+				\right at part@length#1\relax%
+				\advance\right at part@length by #2\relax%
+				\advance\right at part@length by -\the\dynkin at rank\relax%
+				\advance\right at part@length by -1\relax%
+				\ifnum\left at part@length>0%
+					\xdef#3%
+						{%%
+							\lie at hasse@repeat at string[.]%
+								{\the\left at part@length}{0}.%
+							\lie at hasse@repeat at string[.]%
+								{\the\middle at part@length}{1}.%
+							\lie at hasse@repeat at string[.]%
+								{\the\right at part@length}{2}.1.1%
+						}%%
+				\else%
+					\xdef#3%
+						{%%
+							\lie at hasse@repeat at string[.]%
+								{\the\middle at part@length}{1}.%
+							\lie at hasse@repeat at string[.]%
+								{\the\right at part@length}{2}.1.1%
+						}%%
+				\fi%
+			\fi%
+		\fi%
+	\fi%
+}%
+\newif\ifroot at sum@reset%
+\root at sum@resettrue%
+\NewDocumentCommand\initialize at roots@as at sums@table{}%
+{%
+	\IfStrEqCase{\dynkin at series}%
+	{%
+		{E}%
+			{%
+				\ifnum\dynkin at rank=6%
+					\hasse at set@E at six@root at sums%
+				\else%
+					\ifnum\dynkin at rank=7%
+						\hasse at set@E at seven@root at sums%
+					\else%
+						\hasse at set@E at eight@root at sums%
+					\fi%
+				\fi%
+			}%
+		{F}{\hasse at set@F at root@sums}%
+		{G}{\hasse at set@G at root@sums}%
+	}%
+	\global\root at sum@resetfalse%
+}%
+\xdef\my at root@sum{}%
+\xdef\my at fixed@root at sum{}%
+\NewDocumentCommand\rootSum{oommm}%
+{%
+	\IfValueT{#1}%
+	{%
+		\IfStrEq{\dynkin at series}{#1}%
+		{%
+		}%
+		{%
+			\global\root at sum@resettrue%
+		}%
+	}%
+	\IfValueT{#2}%
+	{%
+		\ifnum\dynkin at rank=#2%
+		\else%
+			\global\root at sum@resettrue%
+		\fi%
+	}%
+	\ifroot at sum@reset%
+		\xdef\dynkin at series{#1}%
+		\global\dynkin at rank #2\relax%
+		\initialize at roots@as at sums@table%	
+	\fi%
+	\IfStrEqCase{\dynkin at series}%
+	{%
+		{A}{\hasse at A@root at sum{#3}{#4}{\my at root@sum}}%
+		{B}{\hasse at B@root at sum{#3}{#4}{\my at root@sum}}%
+		{C}{\hasse at C@root at sum{#3}{#4}{\my at root@sum}}%
+		{D}{\hasse at D@root at sum{#3}{#4}{\my at root@sum}}%
+		{E}{\xdef\my at root@sum{\exceptional at root@sum{#3;#4}}}%
+		{F}{\xdef\my at root@sum{\exceptional at root@sum{#3;#4}}}%
+		{G}{\xdef\my at root@sum{\exceptional at root@sum{#3;#4}}}%
+	}%
+	\StrSubstitute{\my at root@sum}{.}{,}[#5]%
+}%
+%% \rootSystemHeight[G][2]{\h} sets the counter \h to the height of the poset
+%% of the root system G2. \rootSystemHeight{\h} uses the current root system.
+\NewDocumentCommand\rootSystemHeight{oom}%
+{%
+	\global\root at sum@resetfalse%
+	\IfValueT{#1}%
+	{%
+		\IfStrEq{\dynkin at series}{#1}%
+		{%
+		}%
+		{%
+			\global\root at sum@resettrue%
+		}%
+	}%
+	\IfValueT{#2}%
+	{%
+		\ifnum\dynkin at rank=#2%
+		\else%
+			\global\root at sum@resettrue%
+		\fi%
+	}%
+	\ifroot at sum@reset%
+		\xdef\dynkin at series{#1}%
+		\global\dynkin at rank #2\relax%
+		\initialize at roots@as at sums@table%	
+	\fi%
+	\IfStrEqCase{\dynkin at series}%
+	{%
+		{A}{\global#3\the\dynkin at rank}%
+		{B}%
+		{%%
+			\global#3\the\dynkin at rank\relax%
+			\global\advance#3 by \the\dynkin at rank\relax%
+			\global\advance#3 by -1\relax%
+		}%%
+		{C}%
+		{%%
+			\global#3\the\dynkin at rank\relax%
+			\global\advance#3 by \the\dynkin at rank\relax%
+			\global\advance#3 by -1\relax%
+		}%%
+		{D}%
+		{%%
+			\global#3\the\dynkin at rank\relax%
+			\global\advance#3 by \the\dynkin at rank\relax%
+			\global\advance#3 by -3\relax%
+		}%%
+		{E}%
+		{%%
+			\ifnum\dynkin at rank=6%
+				\global#3 11%
+			\else%
+				\ifnum\dynkin at rank=7%
+					\global#3 17%
+				\else%
+					\global#3 29%
+				\fi%
+			\fi%
+		}%%
+		{F}{\global#3 11}%
+		{G}{\global#3 5}%
+	}%
+}%
+%% \rootSystemWidthAtGrade[G][2]{5}{\w} sets the counter \w to the width 
+%% of the 5th grade of the poset of the root system G2. 
+%% \rootSystemWidth{5}{\w} uses the current root system.
+\NewDocumentCommand\rootSystemWidthAtGrade{oomm}%
+{%
+	\global\root at sum@resetfalse%
+	\IfValueT{#1}%
+	{%
+		\IfStrEq{\dynkin at series}{#1}%
+		{%
+		}%
+		{%
+			\global\root at sum@resettrue%
+		}%
+	}%
+	\IfValueT{#2}%
+	{%
+		\ifnum\dynkin at rank=#2%
+		\else%
+			\global\root at sum@resettrue%
+		\fi%
+	}%
+	\ifroot at sum@reset%
+		\xdef\dynkin at series{#1}%
+		\global\dynkin at rank #2\relax%
+		\initialize at roots@as at sums@table%	
+	\fi%
+	\IfStrEqCase{\dynkin at series}%
+	{%
+		{A}{\hasse at A@width at at@grade{#3}{#4}}%
+		{B}{\hasse at BC@width at at@grade{#3}{#4}}%
+		{C}{\hasse at BC@width at at@grade{#3}{#4}}%
+		{D}{\hasse at D@width at at@grade{#3}{#4}}%
+		{E}%
+		{%%
+			\ifnum\dynkin at rank=6%
+				\hasse at E@six at width@at at grade{#3}{#4}%
+			\else%
+				\ifnum\dynkin at rank=7%
+					\hasse at E@seven at width@at at grade{#3}{#4}%
+				\else%
+					\hasse at E@eight at width@at at grade{#3}{#4}%
+				\fi%
+			\fi%
+		}%%
+		{F}%
+			{%
+				\hasse at F@width at at@grade{#3}{#4}%
+			}%
+		{G}%
+			{%
+				\hasse at G@width at at@grade{#3}{#4}%
+			}%
+	}%
+}%
+\NewDocumentCommand\do at hasse@list{m}{\expandafter\@root at sum#1!}%
+\NewDocumentCommand\hasse at set@E at six@root at sums{}%
+{%
+\forcsvlist{\do at hasse@list}{%
+1;1=1.0.0.0.0.0,%
+1;2=0.1.0.0.0.0,%
+1;3=0.0.1.0.0.0,%
+1;4=0.0.0.1.0.0,%
+1;5=0.0.0.0.1.0,%
+1;6=0.0.0.0.0.1,%
+2;1=1.1.0.0.0.0,%
+2;2=0.1.1.0.0.0,%
+2;3=0.0.1.1.0.0,%
+2;4=0.0.1.0.1.0,%
+2;5=0.0.0.0.1.1,%
+3;1=1.1.1.0.0.0,%
+3;2=0.1.1.1.0.0,%
+3;3=0.1.1.0.1.0,%
+3;4=0.0.1.1.1.0,%
+3;5=0.0.1.0.1.1,%
+4;1=1.1.1.1.0.0,%
+4;2=1.1.1.0.1.0,%
+4;3=0.1.1.1.1.0,%
+4;4=0.1.1.0.1.1,%
+4;5=0.0.1.1.1.1,%
+5;1=1.1.1.1.1.0,%
+5;2=0.1.2.1.1.0,%
+5;3=1.1.1.0.1.1,%
+5;4=0.1.1.1.1.1,%
+6;1=1.1.2.1.1.0,%
+6;2=1.1.1.1.1.1,%
+6;3=0.1.2.1.1.1,%
+7;1=1.2.2.1.1.0,%
+7;2=1.1.2.1.1.1,%
+7;3=0.1.2.1.2.1,%
+8;1=1.2.2.1.1.1,%
+8;2=1.1.2.1.2.1,%
+9;1=1.2.2.1.2.1,%
+10;1=1.2.3.1.2.1,%
+11;1=1.2.3.2.2.1}%
+}%
+\NewDocumentCommand\hasse at set@E at seven@root at sums{}%
+{%
+\forcsvlist{\do at hasse@list}{%
+1;1=1.0.0.0.0.0.0,%
+1;2=0.1.0.0.0.0.0,%
+1;3=0.0.1.0.0.0.0,%
+1;4=0.0.0.1.0.0.0,%
+1;5=0.0.0.0.1.0.0,%
+1;6=0.0.0.0.0.1.0,%
+1;7=0.0.0.0.0.0.1,%
+2;1=1.1.0.0.0.0.0,%
+2;2=0.1.1.0.0.0.0,%
+2;3=0.0.1.1.0.0.0,%
+2;4=0.0.0.1.1.0.0,%
+2;5=0.0.0.1.0.1.0,%
+2;6=0.0.0.0.0.1.1,%
+3;1=1.1.1.0.0.0.0,%
+3;2=0.1.1.1.0.0.0,%
+3;3=0.0.1.1.1.0.0,%
+3;4=0.0.1.1.0.1.0,%
+3;5=0.0.0.1.1.1.0,%
+3;6=0.0.0.1.0.1.1,%
+4;1=1.1.1.1.0.0.0,%
+4;2=0.1.1.1.1.0.0,%
+4;3=0.1.1.1.0.1.0,%
+4;4=0.0.1.1.1.1.0,%
+4;5=0.0.1.1.0.1.1,%
+4;6=0.0.0.1.1.1.1,%
+5;1=1.1.1.1.1.0.0,%
+5;2=1.1.1.1.0.1.0,%
+5;3=0.1.1.1.1.1.0,%
+5;5=0.1.1.1.0.1.1,%
+5;4=0.0.1.2.1.1.0,%
+5;6=0.0.1.1.1.1.1,%
+6;1=1.1.1.1.1.1.0,%
+6;3=1.1.1.1.0.1.1,%
+6;2=0.1.1.2.1.1.0,%
+6;4=0.1.1.1.1.1.1,%
+6;5=0.0.1.2.1.1.1,%
+7;1=1.1.1.2.1.1.0,%
+7;3=1.1.1.1.1.1.1,%
+7;2=0.1.2.2.1.1.0,%
+7;4=0.1.1.2.1.1.1,%
+7;5=0.0.1.2.1.2.1,%
+8;1=1.1.2.2.1.1.0,%
+8;2=1.1.1.2.1.1.1,%
+8;3=0.1.2.2.1.1.1,%
+8;4=0.1.1.2.1.2.1,%
+9;1=1.2.2.2.1.1.0,%
+9;2=1.1.2.2.1.1.1,%
+9;3=1.1.1.2.1.2.1,%
+9;4=0.1.2.2.1.2.1,%
+10;1=1.2.2.2.1.1.1,%
+10;2=1.1.2.2.1.2.1,%
+10;3=0.1.2.3.1.2.1,%
+11;1=1.2.2.2.1.2.1,%
+11;2=1.1.2.3.1.2.1,%
+11;3=0.1.2.3.2.2.1,%
+12;1=1.2.2.3.1.2.1,%
+12;2=1.1.2.3.2.2.1,%
+13;1=1.2.3.3.1.2.1,%
+13;2=1.2.2.3.2.2.1,%
+14;1=1.2.3.3.2.2.1,%
+15;1=1.2.3.4.2.2.1,%
+16;1=1.2.3.4.2.3.1,%
+17;1=1.2.3.4.2.3.2}%
+}%
+\NewDocumentCommand\hasse at set@E at eight@root at sums{}%
+{%
+\forcsvlist{\do at hasse@list}{%
+1;1=1.0.0.0.0.0.0.0,%
+1;2=0.1.0.0.0.0.0.0,%
+1;3=0.0.1.0.0.0.0.0,%
+1;4=0.0.0.1.0.0.0.0,%
+1;5=0.0.0.0.1.0.0.0,%
+1;6=0.0.0.0.0.1.0.0,%
+1;7=0.0.0.0.0.0.1.0,%
+1;8=0.0.0.0.0.0.0.1,%
+2;1=1.1.0.0.0.0.0.0,%
+2;2=0.1.1.0.0.0.0.0,%
+2;3=0.0.1.1.0.0.0.0,%
+2;4=0.0.0.1.1.0.0.0,%
+2;5=0.0.0.0.1.1.0.0,%
+2;6=0.0.0.0.1.0.1.0,%
+2;7=0.0.0.0.0.0.1.1,%
+3;1=1.1.1.0.0.0.0.0,%
+3;2=0.1.1.1.0.0.0.0,%
+3;3=0.0.1.1.1.0.0.0,%
+3;4=0.0.0.1.1.1.0.0,%
+3;5=0.0.0.1.1.0.1.0,%
+3;6=0.0.0.0.1.1.1.0,%
+3;7=0.0.0.0.1.0.1.1,%
+4;1=1.1.1.1.0.0.0.0,%
+4;2=0.1.1.1.1.0.0.0,%
+4;3=0.0.1.1.1.1.0.0,%
+4;4=0.0.1.1.1.0.1.0,%
+4;5=0.0.0.1.1.1.1.0,%
+4;6=0.0.0.1.1.0.1.1,%
+4;7=0.0.0.0.1.1.1.1,%
+5;1=1.1.1.1.1.0.0.0,%
+5;2=0.1.1.1.1.1.0.0,%
+5;3=0.1.1.1.1.0.1.0,%
+5;4=0.0.1.1.1.1.1.0,%
+5;5=0.0.0.1.2.1.1.0,%
+5;6=0.0.1.1.1.0.1.1,%
+5;7=0.0.0.1.1.1.1.1,%
+6;1=1.1.1.1.1.1.0.0,%
+6;2=1.1.1.1.1.0.1.0,%
+6;3=0.1.1.1.1.1.1.0,%
+6;4=0.0.1.1.2.1.1.0,%
+6;5=0.1.1.1.1.0.1.1,%
+6;6=0.0.1.1.1.1.1.1,%
+6;7=0.0.0.1.2.1.1.1,%
+7;1=1.1.1.1.1.1.1.0,%
+7;2=0.1.1.1.2.1.1.0,%
+7;3=1.1.1.1.1.0.1.1,%
+7;4=0.0.1.2.2.1.1.0,%
+7;5=0.1.1.1.1.1.1.1,%
+7;6=0.0.1.1.2.1.1.1,%
+7;7=0.0.0.1.2.1.2.1,%
+8;1=1.1.1.1.2.1.1.0,%
+8;2=0.1.1.2.2.1.1.0,%
+8;3=1.1.1.1.1.1.1.1,%
+8;4=0.1.1.1.2.1.1.1,%
+8;5=0.0.1.2.2.1.1.1,%
+8;6=0.0.1.1.2.1.2.1,%
+9;1=1.1.1.2.2.1.1.0,%
+9;2=0.1.2.2.2.1.1.0,%
+9;3=1.1.1.1.2.1.1.1,%
+9;4=0.1.1.2.2.1.1.1,%
+9;5=0.1.1.1.2.1.2.1,%
+9;6=0.0.1.2.2.1.2.1,%
+10;1=1.1.2.2.2.1.1.0,%
+10;2=1.1.1.2.2.1.1.1,%
+10;3=0.1.2.2.2.1.1.1,%
+10;4=1.1.1.1.2.1.2.1,%
+10;5=0.1.1.2.2.1.2.1,%
+10;6=0.0.1.2.3.1.2.1,%
+11;1=1.2.2.2.2.1.1.0,%
+11;2=1.1.2.2.2.1.1.1,%
+11;3=1.1.1.2.2.1.2.1,%
+11;4=0.1.2.2.2.1.2.1,%
+11;5=0.1.1.2.3.1.2.1,%
+11;6=0.0.1.2.3.2.2.1,%
+12;1=1.2.2.2.2.1.1.1,%
+12;2=1.1.2.2.2.1.2.1,%
+12;3=1.1.1.2.3.1.2.1,%
+12;4=0.1.2.2.3.1.2.1,%
+12;5=0.1.1.2.3.2.2.1,%
+13;1=1.2.2.2.2.1.2.1,%
+13;2=1.1.2.2.3.1.2.1,%
+13;3=0.1.2.3.3.1.2.1,%
+13;4=1.1.1.2.3.2.2.1,%
+13;5=0.1.2.2.3.2.2.1,%
+14;1=1.2.2.2.3.1.2.1,%
+14;2=1.1.2.3.3.1.2.1,%
+14;3=1.1.2.2.3.2.2.1,%
+14;4=0.1.2.3.3.2.2.1,%
+15;1=1.2.2.3.3.1.2.1,%
+15;2=1.2.2.2.3.2.2.1,%
+15;3=1.1.2.3.3.2.2.1,%
+15;4=0.1.2.3.4.2.2.1,%
+16;1=1.2.3.3.3.1.2.1,%
+16;2=1.2.2.3.3.2.2.1,%
+16;3=1.1.2.3.4.2.2.1,%
+16;4=0.1.2.3.4.2.3.1,%
+17;1=1.2.3.3.3.2.2.1,%
+17;2=1.2.2.3.4.2.2.1,%
+17;3=1.1.2.3.4.2.3.1,%
+17;4=0.1.2.3.4.2.3.2,%
+18;1=1.2.3.3.4.2.2.1,%
+18;2=1.2.2.3.4.2.3.1,%
+18;3=1.1.2.3.4.2.3.2,%
+19;1=1.2.3.4.4.2.2.1,%
+19;2=1.2.3.3.4.2.3.1,%
+19;3=1.2.2.3.4.2.3.2,%
+20;1=1.2.3.4.4.2.3.1,%
+20;2=1.2.3.3.4.2.3.2,%
+21;1=1.2.3.4.5.2.3.1,%
+21;2=1.2.3.4.4.2.3.2,%
+22;1=1.2.3.4.5.3.3.1,%
+22;2=1.2.3.4.5.2.3.2,%
+23;1=1.2.3.4.5.3.3.2,%
+23;2=1.2.3.4.5.2.4.2,%
+24;1=1.2.3.4.5.3.4.2,%
+25;1=1.2.3.4.6.3.4.2,%
+26;1=1.2.3.5.6.3.4.2,%
+27;1=1.2.4.5.6.3.4.2,%
+28;1=1.3.4.5.6.3.4.2,%
+29;1=2.3.4.5.6.3.4.2}%
+}%
+\NewDocumentCommand\hasse at set@F at root@sums{}%
+{%
+\forcsvlist{\do at hasse@list}{%
+1;1=1.0.0.0,%
+1;2=0.1.0.0,%
+1;3=0.0.1.0,%
+1;4=0.0.0.1,%
+2;1=1.1.0.0,%
+2;2=0.1.1.0,%
+2;3=0.0.1.1,%
+3;1=1.1.1.0,%
+3;2=0.1.2.0,%
+3;3=0.1.1.1,%
+4;1=1.1.2.0,%
+4;2=1.1.1.1,%
+4;3=0.1.2.1,%
+5;1=1.2.2.0,%
+5;2=1.1.2.1,%
+5;3=0.1.2.2,%
+6;1=1.2.2.1,%
+6;2=1.1.2.2,%
+7;1=1.2.3.1,%
+7;2=1.2.2.2,%
+8;1=1.2.3.2,%
+9;1=1.2.4.2,%
+10;1=1.3.4.2,%
+11;1=2.3.4.2}%
+}%
+\NewDocumentCommand\hasse at set@G at root@sums{}%
+{%
+\forcsvlist{\do at hasse@list}{%
+1;1=1.0,%
+1;2=0.1,%
+2;1=1.1,%
+3;1=2.1,%
+4;1=3.1,%
+5;1=3.2}%
+}%
+\NewDocumentCommand\forAllPositiveRootsInHasseDiagram{m}%
+{%
+	\rootSystemHeight{\lie at hasse@height}%
+	\foreach \root at grady in {1,...,\the\lie at hasse@height}%
+	{%
+		\rootSystemWidthAtGrade{\root at grady}{\lie at hasse@width}%
+		{%
+			\foreach \root at indexy in {1,...,\the\lie at hasse@width}%
+			{%
+				#1{\root at grady}{\root at indexy}%
+			}%
+		}%
+	}%
+}%
\ No newline at end of file


Property changes on: trunk/Master/texmf-dist/tex/latex/lie-hasse/lie-hasse.sty
___________________________________________________________________
Added: svn:eol-style
## -0,0 +1 ##
+native
\ No newline at end of property
Modified: trunk/Master/tlpkg/bin/tlpkg-ctan-check
===================================================================
--- trunk/Master/tlpkg/bin/tlpkg-ctan-check	2020-02-03 22:30:09 UTC (rev 53652)
+++ trunk/Master/tlpkg/bin/tlpkg-ctan-check	2020-02-03 22:30:53 UTC (rev 53653)
@@ -423,7 +423,7 @@
     libertine libertinegc libertinus
     libertinus-fonts libertinus-otf libertinus-type1 libertinust1math
     libgreek librarian librebaskerville librebodoni librecaslon librefranklin
-    libris lilyglyphs limap limecv linearA linegoal
+    libris lie-hasse lilyglyphs limap limecv linearA linegoal
     lineno ling-macros linguex linguisticspro linop
     lion-msc lipsum lisp-on-tex
     listbib listing listings listings-ext listingsutf8 listlbls listliketab

Modified: trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc
===================================================================
--- trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc	2020-02-03 22:30:09 UTC (rev 53652)
+++ trunk/Master/tlpkg/tlpsrc/collection-mathscience.tlpsrc	2020-02-03 22:30:53 UTC (rev 53653)
@@ -108,6 +108,7 @@
 depend karnaughmap
 depend kvmap
 depend letterswitharrows
+depend lie-hasse
 depend logicproof
 depend longdivision
 depend lpform

Added: trunk/Master/tlpkg/tlpsrc/lie-hasse.tlpsrc
===================================================================


More information about the tex-live-commits mailing list.