There are a number of open source programs that can work with groups. I have used Axiom, how to install Axiom here.

I have put user input in red:

(1) -> a: Symbol := 'a (1) a Type: Symbol (2) -> b: Symbol := 'b ```
(2) b
Type: Symbol
(3) -> coef := Fraction(Integer)
```
(3) Fraction Integer Type: Domain (4) -> group := LieExponentials(Symbol, coef, 3) (4) LieExponentials(Symbol,Fraction Integer,3) Type: Domain (5) -> lpoly := LiePolynomial(Symbol, coef) ```
(5) LiePolynomial(Symbol,Fraction Integer)
Type: Domain
(6) -> poly := XPBWPolynomial(Symbol, coef)
```
(6) XPBWPolynomial(Symbol,Fraction Integer) Type: Domain (7) -> ea := exp(a::lpoly)$group [a] (7) e Type: LieExponentials(Symbol,Fraction Integer,3) (8) -> eb := exp(b::lpoly)$group ```
[b]
(8) e
Type: LieExponentials(Symbol,Fraction Integer,3)
(9) -> g: group := ea*eb
```
```
1 2 1 2
- [a b ] - [a b]
[b] 2 [a b] 2 [a]
(9) e e e e e
Type: LieExponentials(Symbol,Fraction Integer,3)
(10) -> g :: poly
```
```
(10)
1 1 1
1 + [a] + [b] + - [a][a] + [a b] + [b][a] + - [b][b] + - [a][a][a]
2 2 6
+
1 2 1 2 1 1
- [a b] + [a b][a] + - [a b ] + - [b][a][a] + [b][a b] + - [b][b][a]
2 2 2 2
+
1
- [b][b][b]
6
Type: XPBWPolynomial(Symbol,Fraction Integer)
(11) -> log(g)$group
```
```
1 1 2 1 2
(11) [a] + [b] + - [a b] + -- [a b] + -- [a b ]
2 12 12
Type: LiePolynomial(Symbol,Fraction Integer)
(12) -> g1: group := inv(g)
```
```
- [b] - [a]
(12) e e
Type: LieExponentials(Symbol,Fraction Integer,3)
(13) -> g*g1
```
(13) 1 Type: LieExponentials(Symbol,Fraction Integer,3) |