Two dimensional non-abelian groups

1. Semi-direct product, neutral element at {0,0}. Let the group action G×GG in coordinates be (x_1,x_2)◦(y_1,y_2)={x_1+^(-x_2) y_1,x_2+y_2}. In debug-mode the function ShowG lists all relevant figures:
- the inverse mapping, which is computed from the group action and neutral element
- the differential (dL) _x| _e:T_eG→T_xG
- the ad tensor of the corresponding Lie algebra and its killing form.

debug = True ;

Show[2s = Setup[{x_1 + ^(-x_2) y_1, x_2 + y_2}]] ;

eqs: ^x_2≠0&&y_1 == -^x_2 x_1&&y_2 == -x_2   {{-^x_2 x_1, -x_2}}

act  {x_1 + ^(-x_2) y_1, x_2 + y_2}

one  {0, 0}

inv  {-^x_2 x_1, -x_2}

 dL=d  (g◦x)      x            x→e, g→x                          -  Ad=d  (g◦x◦g  )      x                      x→e, g→x
( {{^(-x_2), 0}, {0, 1}} ) ( {{^(-x_2), x_1}, {0, 1}} )
^(-x_2) ^(-x_2)

 ad=d  (Ad)             ( {{0, e_1}, {-e_1, 0}} )   κ= ( {{0, 0}, {0, 1}} )      x     x→e

For instance, you will discover ad in the list as

ShowAd[ad = ad[2s]]

( {{0, e_1}, {-e_1, 0}} )

This group action is the result of the semidirect product between two one-dimensional (abelian) groups. In such a scenario, the function adδ reverse-engineers the group action.

debug = False ;

adδ[ad]

{{x_1 + ^(-x_2) y_1, x_2 + y_2}, {0, 0}, {-^x_2 x_1, -x_2}}

Note, that the output also gives e and the inverse element computation. In combination with GSetup, adδ is a powerful tool:

myG = Setup @@ adδ[ad] ;

myG[x, y]

{x_1 + ^(-x_2) y_1, x_2 + y_2}

2. Affine group, neutral element at {1,0}. The next group action - however isomorphic - is motivated by the action of the following linear group. Let us assume 0<x_1.

A = ({{x_1, x_2}, {0, 1}}) ;

MF[A . (A/.x→y)]

( {{x_1 y_1, x_2 + x_1 y_2}, {0, 1}} )

We combine the result and assign e={1,0} as neutral element.

debug = True ;

Show[2a = Setup[{x_1 y_1, x_2 + x_1 y_2}, {1, 0}]] ;

eqs: x_1≠0&&y_1 == 1/x_1&&y_2 == -x_2 y_1   {{1/x_1, -x_2/x_1}}

act  {x_1 y_1, x_2 + x_1 y_2}

one  {1, 0}

inv  {1/x_1, -x_2/x_1}

 dL=d  (g◦x)      x            x→e, g→x                          -  Ad=d  (g◦x◦g  )      x                      x→e, g→x
( {{x_1, 0}, {0, x_1}} ) ( {{1, 0}, {-x_2, x_1}} )
x_1^2 x_1

 ad=d  (Ad)             ( {{0, e_2}, {-e_2, 0}} )   κ= ( {{1, 0}, {0, 0}} )      x     x→e

3. Duisenmaat/Kolk group, neutral element at {1,0}. The group action found in Duisenmaat/Kolk is motivated by the action of the following linear group. Again, we assume 0<x_1.

A = ({{x_1, x_2}, {0, 1/x_1}}) ;

MF[A . (A/.x→y)]

( {{x_1 y_1, x_2/y_1 + x_1 y_2}, {0, 1/(x_1 y_1)}} )

We combine the values and assign e={1,0} as neutral element.

debug = True ;

Show[2d = Setup[{x_1 y_1, x_2/y_1 + x_1 y_2}, {1, 0}]]

eqs: x_1≠0&&y_1 == 1/x_1&&y_2 == -x_2   {{1/x_1, -x_2}}

act  {x_1 y_1, x_2/y_1 + x_1 y_2}

one  {1, 0}

inv  {1/x_1, -x_2}

 dL=d  (g◦x)      x            x→e, g→x                          -  Ad=d  (g◦x◦g  )      x                      x→e, g→x
( {{x_1, 0}, {-x_2, x_1}} ) ( {{1, 0}, {-2 x_1 x_2, x_1^2}} )
x_1^2 x_1^2

 ad=d  (Ad)             ( {{0, 2 e_2}, {-2 e_2, 0}} )   κ= ( {{4, 0}, {0, 0}} )      x     x→e

Comparison: Lets recall the three different actions:

Gs = {2s, 2a, 2d} ;

Print[#1[x, y]] &/@Gs ;

{x_1 + ^(-x_2) y_1, x_2 + y_2}

{x_1 y_1, x_2 + x_1 y_2}

{x_1 y_1, x_2/y_1 + x_1 y_2}

The left-invariant vector fields are closed under the commutator operation. They form a finite-dimensional vector space, which is represented by the Lie algebra g. Have a look at the different "bases" here.

Print[Table[ΤL[#1, Id[2][[k]], 1], {k, 2}]] &/@Gs ;

{{^(-x_2), 0}, {0, 1}}

{{x_1, 0}, {0, x_1}}

{{x_1, -x_2}, {0, x_1}}

We plot these vectors fields for each of the three groups below.

pvf[#1] &/@Gs ;

[Graphics:../HTMLFiles/index_248.gif]

[Graphics:../HTMLFiles/index_249.gif]

[Graphics:../HTMLFiles/index_250.gif]

Given an initial vector v={v_1,v_2} at e∈G, we derive and plot the one-parameter subgroup generated by v.

crv = Table[Χ★[2]/.DSolve[E0[ΧIntegral[ΤL[Gs[[k]], {v_1, v_2}, 1]], Χ0[0, Gs[[k]][0]]], Χ★[2], ][[1]], {k, 3}]

Solve :: ifun : Inverse functions are being used by Solve, so some solutions may not be found; use Reduce for complete solution information.  More…

pcr[myc_] := Module[ {plt = myc/.#1&/@({v_1→Cos[#1], v_2→Sin[#1]} &/@Range[.1, π - 1, .19])}, ParametricPlot[Evaluate[plt], {, -1, 1}]] ;

pcr[#1] &/@crv ;

[Graphics:../HTMLFiles/index_259.gif]

[Graphics:../HTMLFiles/index_260.gif]

[Graphics:../HTMLFiles/index_261.gif]

By the way, Ge gives us a decent numerical approximation of the exact values.

myv = {5.3, 3.6} ;

(crv[[1]]/.v→myv/.→1) - [2s, myv]

{1.73232*10^-8, 8.88178*10^-16}


Created by Mathematica  (September 30, 2006) Valid XHTML 1.1!