RATIONAL RHO VECTORS FOR THE EXCEPTIONAL ROOT SYSTEMS

Companion code and input data for Section 8.1 of
"Inequalities Characterizing Distinguished Unipotent Orbits"
by Alexander Bertoloni Meli, Teruhisa Koshikawa, and Jonathan Leake.

WHAT THE CHECKER DOES

Proposition 8.1 reduces the search for non-degenerate nonnegative rational
weightings to a finite list: select a nonsingular square submatrix B of the
positive-root coefficient matrix and solve B rho = (2,...,2).

The program enumerates these submatrices, keeps nonnegative rational
solutions, removes repeated solutions within each task, and skips the
known distinguished weightings listed in weyl_utils.py. It then checks
whether every simple-root score coordinate is strictly positive for every
Weyl group element. The score calculation uses the distinct rows of the
Weyl matrices instead of enumerating the entire Weyl group.

The result is that no additional non-degenerate weightings occur in G2,
F4, E6, E7, or E8. Positivity of the known distinguished weightings is
checked separately by the original positivity code on the resource page.

DEPENDENCIES

Python 3 with NumPy, SciPy, and SymPy. SageMath is not required to run
this checker with the supplied precomputed data.

FILES

  check-rational-rho.py   Candidate enumeration and positivity checks.
  weyl_utils.py          Root-system sizes and distinguished weightings.
  weyl_utils_numpy.py     Data loading and score computations.
  exceptional-data/      Positive roots and distinct Weyl-matrix rows.

For each TYPE in G2, F4, E6, E7, and E8:

  TYPE-pos-roots.dat is a headerless, row-major signed-int8 array. Each
  row gives one positive root in simple-root coordinates.

  TYPE-distinct.npy is a NumPy array containing the distinct rows of all
  Weyl-group matrices in the same simple-root basis, also as signed int8.

The data use the simple-root numbering of the distinguished lists in
weyl_utils.py. The expected array dimensions are:

  Type    Positive-root array    Distinct-Weyl-row array
  G2      6 x 2                  12 x 2
  F4      24 x 4                 240 x 4
  E6      36 x 6                 1278 x 6
  E7      63 x 7                 17642 x 7
  E8      120 x 8                881760 x 8

RUNNING THE CHECKER

Extract rational-rho.zip. Run the commands from inside the extracted
rational-rho directory so that ./exceptional-data/ resolves correctly:

  cd rational-rho
  python3 check-rational-rho.py 0 1 G2

The corresponding single-process F4 command is:

  python3 check-rational-rho.py 0 1 F4

The general command is:

  python3 check-rational-rho.py TASK_ID TASK_TOTAL TYPE [SUB_K]

TASK_TOTAL is a positive integer. TASK_ID must range over every integer
from 0 through TASK_TOTAL - 1 across the complete set of parallel jobs.
TYPE is one of G2, F4, E6, E7, and E8.

SUB_K specifies how many initial root indices are used to partition the
combinations among jobs. It must lie between 1 and the rank of TYPE;
when omitted, it defaults to the rank. All jobs in one computation must
use the same TYPE, TASK_TOTAL, and SUB_K.

For example, this command runs task 0 of a 256-task E8 computation,
partitioning combinations by their first four root indices:

  python3 check-rational-rho.py 0 256 E8 4

The other tasks use TASK_ID values 1 through 255. This command alone
does not run the entire computation.

This is the exhaustive submatrix algorithm described in Section 8.1.
The E8 search involves 840261910995 submatrices before distributing work
among tasks. The prefix partition distributes this work without reducing
the total number of submatrices. Large types require substantial computing
resources with this implementation.

OUTPUT AND COMPLETION

For each additional candidate the program prints whether all score
coordinates are positive. All such candidates are rejected. The final
"Total new distinguished unipotent orbits found" value should be zero;
in this output label, the actual tested property is non-degeneracy.

Keep the output from every parallel task. Confirm that all assigned
combinations have been processed and all additional candidates tested;
an interrupted or incomplete task does not establish the complete result.

For comparison, the globally distinct candidate counts are:

  Type    All full-rank candidates    Known distinguished    Additional
  G2      4                           2                      2
  F4      31                          4                      27
  E6      81                          3                      78
  E7      227                         6                      221
  E8      739                         11                     728

"All full-rank candidates" means the distinct nonnegative solutions
obtained from invertible rank-by-rank submatrices of the positive-root
matrix. Additional candidates are those outside the known distinguished
lists. Per-task candidate counts cannot simply be added: the same rho
may be found by more than one task.

The input arrays were checked against independently generated complete
positive-root and Weyl-row sets. Their contents agree exactly.
