Software

Spherical Unitary Explorer

For classical groups: is the spherical representation X(λ) unitary?

This is a program for learning about the spherical unitary representations of a real or p-adic classical group G. A spherical representation of G is given by a parameter λ, which is an n-tuple of complex numbers; after a basic reduction we assume λ is real. It implements an algorithm in a paper by Dan Barbasch: The unitary spherical spectrum for split classical groups, J. Inst. Math. Jussieu 9 (2010), no. 2, 265–356. Here is an expository version of the first few sections of this paper, with an emphasis on the algorithm which is implemented in the explorer.

Choose a type (A–D), enter a parameter λ and click Test. The result tells you whether the corresponding irreducible spherical representation of G is unitary, together with some supplementary data about the representation. λ is entered as a string of real numbers, separated by commas or spaces (it will be made dominant). For example: .75 1 1/2 0 or 2,1/2,-.5,-2. For more information see the help below. There is also a section on root systems and coordinates.

This page is a 2026 Python port of the original Perl program (the on-line Spherical Explorer, spherical.cgi and rootSystem.cgi), which ran on the old web server. It now runs in your browser, using Pyodide; nothing is sent to a server. See about this version.

Loading Python in your browser…

Test a single point

Examples

File examples

All unipotent representations

Test a list of λ’s

One λ per line (see the help for the format). Paste them, or read them from a file.

Results

Results appear here.

Root systems and coordinates

This section contains information about root systems, including choices of coordinates. It is useful in conjunction with the explorer above.

Types F* and G* are the root systems of type F and G, with coordinates dual to the standard (Bourbaki) coordinates.

There are two standard labellings of the Dynkin Diagram: Bourbaki and Gap. These differ in types B, C, D and G. In the Bourbaki labelling, in types B, C, and D, the double bond or fork is near the node labelled n. The Gap labelling is the opposite of this. (In G2 the short root is labelled 1 in the Bourbaki labelling, and 2 in Gap.) The Gap labelling is useful because the root system spanned by roots 1, 2, …, k is of the same type. For example in type B3:

BourbakiGap
1--2=>=33--2=>=1

It is also possible to choose your own labelling of the Dynkin Diagram. The matrices will be modified accordingly. Enter a permutation of 1, 2, …, n where n is the rank. These give the numbering of the nodes with respect to the Bourbaki numbering. For example in E8 the Bourbaki numbering is

        2
        |
        |
1---3---4---5---6---7---8

so if you enter 1 8 2 3 4 5 6 7 for Other you will get

        8
        |
        |
1---2---3---4---5---6---7

Help

The simplest operation is to give a type A, B, C, D and a list λ of n real numbers. Associated to this is an irreducible spherical representation X(λ) of the corresponding split real or p-adic group. (The rank is n, except in type A it is n−1.) The program will determine whether X(λ) is unitary, and some supplementary data about the representation. This implements the algorithm due to Dan Barbasch.

Here is an example of how to read the results.

G: Sp(28) (type C14)

lambda: (2,7/4,5/4,1,1,3/4,1/2,1/2,1/4,1/5,1/5,1/10,1/10,0) UNITARY
Weight Coordinates (Bourbaki): [1/4,1/2,1/4,0,1/4,1/4,0,1/4,1/20,0,1/10,0,1/10,0]
Orbit O: (5, 4, 4, 3, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1)
Centralizer Z:O(1)xSp(2)xO(1)xSp(2)xO(9)
Levi Factor M: Sp(8)xGL(4)xGL(2)xGL(1)xGL(1)xGL(1)xGL(1)

MOMhnu
Sp(8)(5, 3, 1)(2, 1, 1, 0) 
GL(4)(4, 4)(3/2, 1/2, -1/2, -3/2)1/4
GL(2)(2, 2)(1/2, -1/2)0/1
GL(1)(1, 1)(0)1/5
GL(1)(1, 1)(0)1/5
GL(1)(1, 1)(0)1/10
GL(1)(1, 1)(0)1/10
row lengthmultiplicityZunitarynu
51O(1)+*
42Sp(2)+(1/4)
31O(1)+*
22Sp(2)+(0/1)
19O(9)+(1/5, 1/5, 1/10, 1/10)

The type is C, and λ has 14 entries, so G=Sp(28), of type C14. The dual group is SO(29), of type B14.

Associated to λ is a nilpotent orbit O, given as a partition of 29.

The (reductive part of the) centralizer of the orbit is denoted Z. The 5 factors of Z in this case correspond to the 5 distinct entries occurring in the partition corresponding to O. For example the row of length 1 occurs 9 times in O, giving a factor of O(9) in Z.

Associated to the orbit O is a Levi factor M of G, and a semisimple parameter h, which may be decomposed according to the factors of M. The intersection of O with M is an orbit OM. The rows of OM are the same as those of O, with different rows corresponding to different factors of M. In this example the rows 5,3,1 correspond to the orbit 5,3,1 of Sp(6).

Each factor of M has a parameter nu (giving a one-dimensional representation of M), in such a way that λ=h+nu. The factor of O in the first factor of M is distinguished, meaning its centralizer is finite, so there is no nu parameter for this factor.

The unitarity of the representation is determined by whether nu, interpreted as a parameter for the dual group of Z, is unitary.

The second table has one row for each row length in the partition of O, i.e. each factor of Z. The multiplicity is the number of times the row occurs. The column labelled Z gives the corresponding factor of Z. The column labelled nu gives nu on this factor of Z. The unitary column indicates whether this representation (of the dual of this factor of Z) is unitary.

Note: The standard form of the coordinates are the “standard” coordinates for classical groups. You may also give fundamental weight coordinates by choosing that option in the Coordinates menu. See below.

Note: In types B, C, D, after acting by the Weyl group (and an outer automorphism in type D) we may take all coordinates to be positive. Negative signs in λ are ignored.

In type A for the parameter to be Hermitian each positive entry must occur in a pair with its negative. For convenience in type A you may enter all non-negative entries; the negative of each positive entry will be adjoined to λ. For example (2,1,1,0) will be replaced by (2,1,1,0,−1,−1,−2).

Note that in type Dodd λ must have a 0 entry to be Hermitian.

Coordinates

The standard coordinates are those for classical groups; λ is a decreasing sequence of real numbers, the number of coordinates is the rank, except in type An there are n+1 coordinates (summing to 0). There are also two versions of fundamental weight coordinates available. These correspond to the same choice of dominant Weyl chamber, but different ordering of the simple roots (they agree in type A). In types B, C, D: in Bourbaki coordinates the double bond or fork is near the node labelled n; the Gap labelling is the opposite. For example in type B3: Bourbaki 1--2=>=3, Gap 3--2=>=1.

To view the Dynkin Diagram and the matrices relating the standard and weight coordinates, open Dynkin Diagram and coordinates in the results, or use the root systems section, which has much more information on each root system, including the Cartan matrix, the list of all positive roots, etc.

Examples, unipotent representations, lists

The Examples menu gives some illustrative examples, together with comments explaining their notable features.

Choosing File examples will test all of the points in the given files. These include the representatives of all facets, or representatives of just the facets which correspond to unitary representations. Choose High level of detail for full details, or Low for one line per example. Tick the box to see only the points representing unitary representations.

Choose a type and rank to view all Unipotent representations. These are all unitary. Set the level of detail for full listing, or one line per point.

You may also test a list of points, pasted into the box or read from a file. Choose a type with the menu. Each line should contain a single parameter. Everything after a # is ignored, as are all characters except numbers, ., /, commas and spaces.

About this version

The on-line Spherical Explorer was a Perl CGI program (spherical.cgi and rootSystem.cgi, using the modules spherical.pm, rootSystem.pm and sphericalExamples.pm). It was announced as a beta version of the explorer for all classical groups; comments to jda@math.umd.edu. It implements Dan Barbasch’s algorithm.

In 2026 the program was ported to Python, keeping its structure and its output. Arithmetic is exact, with fractions, as in the original (which used the Perl module Math::Fraction). The port was checked against the original Perl program on the built-in examples, the unipotent parameters, the root data of every type, and several thousand other parameters. It runs in your browser with Pyodide (Python compiled to WebAssembly, loaded from the jsDelivr CDN).

Differences from the Perl version: comparisons between fractions and decimals are always correct (in the original some sorts, notably in type A, could go wrong when fractions and whole numbers were mixed); unipotent representations of type D work; coordinates separated by a comma and a space are no longer read as an extra 0; in a list of λ’s in weight coordinates the coordinates are no longer reordered; a line that cannot be read is reported and the rest of the list is still tested.

The Python source can be downloaded and run on the command line: see the command line version.

Original page last changed on the old site: 2014-12-18. Python port: 2026.