Example \(G=Sp(4,\mathbb R)\)

Now lets find all representations with infinitesimal character \(\rho\)

atlas> G:Sp(4,R)
Variable G: RealForm (overriding previous instance, which had type RealForm)
atlas> G
Value: connected split real group with Lie algebra 'sp(4,R)'
atlas> set parameters=all_parameters_gamma (G, rho(G))
Variable parameters: [Param]
atlas> rho(G)
Value: [ 2, 1 ]/1
atlas> #parameters
Value: 18
atlas> void: for p in parameters do prints(p) od
final parameter (x=0,lambda=[2,1]/1,nu=[0,0]/1)
final parameter (x=1,lambda=[2,1]/1,nu=[0,0]/1)
final parameter (x=2,lambda=[2,1]/1,nu=[0,0]/1)
final parameter (x=3,lambda=[2,1]/1,nu=[0,0]/1)
final parameter (x=4,lambda=[2,1]/1,nu=[1,-1]/2)
final parameter (x=5,lambda=[2,1]/1,nu=[0,1]/1)
final parameter (x=5,lambda=[2,2]/1,nu=[0,1]/1)
final parameter (x=6,lambda=[2,1]/1,nu=[0,1]/1)
final parameter (x=6,lambda=[2,2]/1,nu=[0,1]/1)
final parameter (x=7,lambda=[2,1]/1,nu=[2,0]/1)
final parameter (x=7,lambda=[3,1]/1,nu=[2,0]/1)
final parameter (x=8,lambda=[2,1]/1,nu=[2,0]/1)
final parameter (x=8,lambda=[3,1]/1,nu=[2,0]/1)
final parameter (x=9,lambda=[2,1]/1,nu=[3,3]/2)
final parameter (x=10,lambda=[2,1]/1,nu=[2,1]/1)
final parameter (x=10,lambda=[3,1]/1,nu=[2,1]/1)
final parameter (x=10,lambda=[2,2]/1,nu=[2,1]/1)
final parameter (x=10,lambda=[3,2]/1,nu=[2,1]/1)
atlas>

There are 18 representations with infinitesimal character \(\rho\). The last four parameters have \(K\backslash G/B\) element x=10. They correspond to the four principal series attached to the split Cartan subgroup.

More generally if \(G(\mathbb R)\) is split of rank \(n\), the number of minimal principal series of infinitesimal character \(rho\) corresponds to the set of characters {(lambda,nu)}, of the split cartan \(({\mathbb R}^{\times}) ^n\). And up to the Weyl group, nu=rho. So there are \(2^n\) choices of lambda which is a character of \(({\mathbb Z}_2)^n\).

In this case the rank is \(2\), so there are four, namely the last four representations in the above list.

Let us make a separate list for them. You can do:

atlas> set ps=[parameters[14],parameters[15],parameters[16],parameters[17]]
Variable ps: [Param]
atlas> void: for p in ps do prints(p) od
final parameter (x=10,lambda=[2,1]/1,nu=[2,1]/1)
final parameter (x=10,lambda=[3,1]/1,nu=[2,1]/1)
final parameter (x=10,lambda=[2,2]/1,nu=[2,1]/1)
final parameter (x=10,lambda=[3,2]/1,nu=[2,1]/1)
atlas>

But, there is a new command, all_minimal_principal_series, that gives you the same list directly:

atlas> whattype all_minimal_principal_series  ?
Overloaded instances of 'all_minimal_principal_series'
  (RealForm,ratvec)->[Param]
atlas> set ps=all_minimal_principal_series (G, rho(G))
Variable ps: [Param]
atlas> void: for p in ps do prints(p) od
final parameter(x=10,lambda=[2,1]/1,nu=[2,1]/1)
final parameter(x=10,lambda=[3,1]/1,nu=[2,1]/1)
final parameter(x=10,lambda=[2,2]/1,nu=[2,1]/1)
final parameter(x=10,lambda=[3,2]/1,nu=[2,1]/1)
atlas>

These parameters are all principal series. How do we tell them apart? Each one is giving a character of the split Cartan subgroup. They have the same nu and same x=10 and a different lambda. Each lambda is a character of \({\mathbb Z}_2 \times {\mathbb Z}_2\). In other words they are in \(X^*/2X^*\).

To know which is which we look at their tau invariant:

atlas> void: for p in ps do prints(p," ",tau(p)) od
final parameter(x=10,lambda=[2,1]/1,nu=[2,1]/1) [0,1]
final parameter(x=10,lambda=[3,1]/1,nu=[2,1]/1) [1]
final parameter(x=10,lambda=[2,2]/1,nu=[2,1]/1) []
final parameter(x=10,lambda=[3,2]/1,nu=[2,1]/1) [0]
atlas>

So the tau invariant is big for the element ps[0], which means the irreducible is a small representation. In fact that is the trivial representation. In contrast, the smallest tau invariant, the empty set, correspnding to the element ps[2] gives the biggest representation. In this case this is the irreducible principal series. The other two, namely the elements ps[1] and ps[3] on the list, correspond to the long and short roots respectively. So each of them are distinquished by their tau invariant.

A good reference on tau invariant for Harish Chandra modules is David Vogan’s paper: Irreducible Characters I. Definition 3.3. Duke Mathematical Journal (1979). Vol 46, No 1 pp 61-108.

Now lets look at the composition series of the standard module containing the trivial representation

atlas> p:=ps[0]
Value: final parameter(x=10,lambda=[2,1]/1,nu=[2,1]/1)
atlas>
atlas> show(composition_series(I(p)))
1*J(x=0,lambda=[2/1,1/1],nu=[0/1,0/1])
1*J(x=1,lambda=[2/1,1/1],nu=[0/1,0/1])
2*J(x=4,lambda=[2/1,1/1],nu=[1/2,-1/2])
1*J(x=5,lambda=[2/1,1/1],nu=[0/1,1/1])
1*J(x=6,lambda=[2/1,1/1],nu=[0/1,1/1])
1*J(x=7,lambda=[2/1,1/1],nu=[2/1,0/1])
1*J(x=8,lambda=[2/1,1/1],nu=[2/1,0/1])
1*J(x=9,lambda=[2/1,1/1],nu=[3/2,3/2])
1*J(x=10,lambda=[2/1,1/1],nu=[2/1,1/1])
atlas>

This standard module is the sum of all the above irreducibles with certain multiplicities (note there is one that occurs with multiplicity 2). The last irreducible is the trivial representation. This is the biggest composition series. It is the most reducible principal series, which you can detect by its tau invariant.

On the other hand the empty tau invariant says that the corresponding representation is irreducible:

atlas> p:ps[2]
Variable p: Param (overriding previous instance, which had type Param)
atlas> show(composition_series(I(p)))
1*J(x=10,lambda=[2/1,2/1],nu=[2/1,1/1])
atlas>

Another useful tool is the command status_texts, which gives a bit more information about the types of real roots involved in the tau invariant of the representation.

atlas> void: for p in ps do prints(p," ",tau(p), " ", status_texts(p)) od
final parameter (x=10,lambda=[2,1]/1,nu=[2,1]/1) [0,1] ["r2","r1"]
final parameter (x=10,lambda=[3,1]/1,nu=[2,1]/1) [1] ["rn","r1"]
final parameter (x=10,lambda=[2,2]/1,nu=[2,1]/1) [] ["rn","rn"]
final parameter (x=10,lambda=[3,2]/1,nu=[2,1]/1) [0] ["r2","rn"]
atlas>

In other words, for a given representation the real roots in the tau invariant can be type r1 or r2 depending on whether they are long or short; and those not in the tau invariant are denoted by rn.

Another way to check which of these principal series corresponds to the trivial representation is to look at \(\lambda -\rho\) since this gives the trivial character on M

atlas> p:trivial(G)
Variable p: Param (overriding previous instance, which had type Param)
atlas> p
Value: final parameter (x=10,lambda=[2,1]/1,nu=[2,1]/1)
atlas> lambda(p)
Value: [ 2, 1 ]/1
atlas> lambda(p) - rho(G)
Value: [ 0, 0 ]/1
atlas>

The problem is that it is not always that easy to determine which is the trivial representation this way. For example, if the group is not simply connected. But in any case, this is often another way to determine it.

Now suppose we start with the trivial representation and we modify the parameter nu by an element of the Weyl group:

atlas> p:trivial(G)
Variable p: Param (overriding previous instance, which had type Param)
atlas> p
Value: final parameter (x=10,lambda=[2,1]/1,nu=[2,1]/1)
atlas>

atlas> set q=parameter(KGB(G,10),[2,1],[-1,-2])
Variable q: Param
atlas> q
Value: non-dominant parameter(x=10,lambda=[2,1]/1,nu=[-1,-2]/1)
atlas> p=q
Value: false
atlas> equivalent(p,q)
Value: true
atlas>

The representations are not equal. However, they are equvalent. The Weyl group sends [-1,-2] to``[2,1]``. And, since there is a \(\rho\)-shift in the parameter for the lambda, what really matters is what the Weyl group does to \(\lambda-\rho\). and in this case this is [0.0].

Suppose we want to know which of the parameters in the list corresponds to the trivial representation. We can use the command find

atlas> whattype find ?
Overloaded instances of 'find'
  ([int],int)->int
  ([Param],Param)->int
  ([KGBElt],KGBElt)->int
  ([vec],vec)->int
  ([(InnerClass,mat,ratvec,vec,mat,ratvec,vec,mat,vec,vec)],(InnerClass,mat,ratvec,vec,mat,ratvec,vec,mat,vec,vec))->int
  ((InnerClass,mat,ratvec,vec,mat,ratvec,vec,mat,vec,vec),[(InnerClass,mat,ratvec,vec,mat,ratvec,vec,mat,vec,vec)])->int
  ([(int,int)],(int,int))->int
  atlas>

We want to use the second instance of the use of this function:

atlas> find(ps,p)
Value: 0
atlas>
atlas> ps[0]
Value: final parameter(x=10,lambda=[2,1]/1,nu=[2,1]/1)
atlas>

Or

atlas> find(ps,trivial(G))
Value: 0
atlas>