Real Groups

Now we can load another file called groups.at. After doing this you can scroll up and see the list of all the real forms of all the familiar complex reductive Lie groups that are defined. This way you can work with a particular group that you are interested in. For example:

atlas> set G=SL(2,R)
Identifier G: RealForm (hiding previous one of type RealForm)
atlas> simple_roots(G)
Value:
| 2 |
atlas>simple_coroots(G)
Value:
| 1 |
atlas>

These is a real Lie group , so the data type is a Real Form. Again the underlying root datum of \(G\) is the one for the simply connected group of type A1:

atlas> set rd=root_datum (G)
Identifier rd: RootDatum (hiding previous one of type RootDatum)
atlas> rd
Value: simply connected root datum of Lie type 'A1'

Note that \(SL(2,\mathbb R)\) is NOT simply connected. However, it is the Lie group whose complexified Lie algebra is type A1 and its root datum corresponds to the the roots of the simply connected complex group \(SL(2,\mathbb C)\).

Now let’s take the non-semisimple Lie group \(GL(2,\mathbb R)\)

atlas> G:=GL(2,R)
Value: disconnected split real group with Lie algebra 'sl(2,R).gl(1,R)'

atlas> simple_roots (G)
Value:
|  1 |
| -1 |

atlas> simple_coroots (G)
Value:
|  1 |
| -1 |

atlas>

These are the roots in the basis {e_1, e_2} of the torus \(T\).

Now for \(PSL(2,\mathbb R)\) we have:

atlas> set G=PSL(2,R)
Identifier G: RealForm (hiding previous one of type RealForm)
atlas> simple_roots(G)
Value:
| 1 |
atlas> simple_coroots(G)
Value:
| 2 |
atlas>

On the other hand if we type

atlas> set G=SL(2,C)
Identifier G: RealForm
atlas> simple_roots(G)
Value:
| 2, 0 |
| 0, 2 |
atlas> simple_coroots(G)
Value:
| 1, 0 |
| 0, 1 |
atlas>

Which makes sense since \(SL(2,\mathbb C)\) is the real Lie group with complexified Lie algebra of type A1 x A1,

In general, if we use the standard real form notation for the groups, atlas normally gives the usual coordinates. For example, we can do things like this:

atlas> set G=Sp(4,R)
Identifier G: RealForm (hiding previous one of type RealForm)
atlas> set rd=root_datum(G)
Identifier rd: RootDatum (hiding previous one of type RootDatum)
atlas> rd
Value: simply connected root datum of Lie type 'C2'
atlas> simple_roots(rd)
Value:
| 1, 0 |
| -1, 2 |
atlas> simple_coroots(rd)
Value:
| 1, 0 |
| -1, 1 |

These are the usual simple roots for \(Sp(4,\mathbb R)\). Using these pre-defined groups to define our real forms gives us, in most cases, the familiar coordinates to work with. We can look at all the positive roots and coroots and rho:

atlas> posroots(rd)
Value:
| 1, 0, 1, 2 |
| -1, 2, 1, 0 |
atlas> poscoroots(rd)
Value:
| 1, 0, 1, 1 |
| -1, 1, 1, 0 |


atlas> rho(rd)
Value: [ 2, 1 ]/1
atlas>

Once again, the pairing between these sets is the usual dot product:

atlas> set alpha=posroots(rd)[0]
Identifier alpha: vec
atlas> alpha
Value: [ 1, -1 ]
atlas> set alpha_check=poscoroots(rd)[0]
Identifier alpha_check: vec
atlas> alpha_check
Value: [ 1, -1 ]
atlas> alpha_check
Value: [ 1, -1 ]
atlas> alpha*alpha_check
Value: 2

This is the natural way of pairing roots with coroots. Pairing roots with roots is not too meaningful in the theory.

Now let us try \(G=GL(3,\mathbb R)\):

atlas> set G=GL(3,R)
Identifier G: RealForm (hiding previous one of type RealForm)
atlas> set rd=root_datum(G)
Identifier rd: RootDatum (hiding previous one of type RootDatum)
atlas> rd
Value: simply connected adjoint root datum of Lie type 'A2.T1'
atlas> simple_roots(rd)
Value:
| 1, 0 |
| -1, 1 |
| 0, -1 |
atlas> simple_coroots(rd)
Value:
| 1, 0 |
| -1, 1 |
| 0, -1 |
atlas>

Here, the semisimple rank is 2, the full rank is 3 and the roots and coroots are expressed again in the usual coordinates. However look what happens for \(SL(3,\mathbb R)\):

atlas> set G=SL(3,R)
Identifier G: RealForm (hiding previous one of type RealForm)
atlas> set rd=root_datum(G)
Identifier rd: RootDatum (hiding previous one of type RootDatum)
atlas> rd
Value: simply connected root datum of Lie type 'A2'
atlas> simple_roots(rd)
Value:
| 1, 1 |
| -1, 2 |
atlas> simple_coroots(rd)
Value:
| 1, 0 |
| -1, 1 |
atlas> ^simple_roots(G)*simple_coroots(G)
Value:
| 2, -1 |
| -1, 2 |
atlas>

Unfortunately these are not the usual coordinates for this group. Nevertheless the Cartan matrix is the usual one.

There is also a function called Cartan_matrix. The possible arguments and outputs are given below:

atlas> whattype Cartan_matrix ?
Overloaded instances of 'Cartan_matrix'
LieType->mat
RootDatum->mat
(int,int)->mat
atlas> Cartan_matrix(rd)
Value:
| 2, -1 |
| -1, 2 |

We will see more about atlas coordinates in the next section.