# Maths - Semidirect Product

This is a modification to the direct product described on this page. Here we will apply a mapping to one of the operands before applying the direct product:

{n, h}φ {n',h'} = {n * φ(n') , h o h' }

where:

• is the operation of the combined algebra (right handed semidirect product).
• * is the operation of the group G.
• o is the operation of the group H which may be, or may not be, the same as *.
• φ() is a mapping as described below.

Here we are using the right handed semidirect product , we can change to the left handed semidirect productby exchanging the operands.

The mapping is done as follows, we first generate cosets of the first group, we apply the group operation to these cosets but slightly modified as follows:

• If we are thinking in terms of the Cayley graph then we reverse the arrows of all permutations of the generators.
• If we are thinking in terms of the Cayley table then we swap rows with their inverse.

We then use a mapping of the second group to select which coset to use for each product of the second group.

### Example C2C3

As with the direct product example we will try calculating the product of C2 and C3. As a reminder these are the definitions of these groups individually (full definitions on this page):

#### C2

generator cayley graph table permutation representation
<m | m²>
 1 m m 1
< ( 1 2 ) >
 0 1 1 0

#### C3

generator cayley graph table permutation representation
<r | r³>
 1 r r² r r² 1 r² 1 r
< ( 1 2 3 ) >
 0 0 1 1 0 0 0 1 0

#### direct product C3 × C2

This gives :

generator cayley graph table
<m,r | m²,r³,rm=mr>
 {1,1} {r,1} {r²,1} {1,m} {r,m} {r²,m} {r,1} {r²,1} {1,1} {r,m} {r²,m} {1,m} {r²,1} {1,1} {r,1} {r²,m} {1,m} {r,m} {1,m} {r,m} {r²,m} {1,1} {r,1} {r²,1} {r,m} {r²,m} {1,m} {r,1} {r²,1} {1,1} {r²,m} {1,m} {r,m} {r²,1} {1,1} {r,1}
permutation representation
<(1 2 3)(4 5 6),(1 4)(2 5)(3 6)>
[
 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0
,
 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0
]

Note that, in addition to applying both the generators and constrains for the original groups we have had to apply an additional constraint: rm=mr. If we had not done this we would have the infinite free product.

## Generating a Semidirect Product using a Program

We can use a computer program to generate these groups, here I have used Axiom/FriCAS which is described here.

```(1) -> )r axiom/semidirectProduct
)set output algebra off
)set output mathml on
-- first try C2 x C3
C2 := FiniteGroup(2,[[1,2],[2,1]],["1","m"])
Type: Type
SDP := semidirectProduct([[1,2,3],[2,3,1],[3,1,2]],["1","r","rr"],
[[2,2,2],[2,2,2],[2,2,2]])\$C2

Type: Type
toTable()\$SDP

```
 1 r rr m mr mrr r rr 1 mr mrr m rr 1 r mrr m mr m mr mrr 1 r rr mr mrr m r rr 1 mrr m mr rr 1 r
```

Type: Table(6)
setGenerators([false,true,false,true,false,false])\$SDP
Type: Void
PSDP := toPermutation()\$SDP

```
<(1 2 3)(4 5 6),(1 4)(2 5)(3 6)>
```

Type: PermutationGroup(Integer)
permutationRepresentation(PSDP,6)

```
[
 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 0 0 0 1 0
,
 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0
]
```

Type: List(Matrix(Integer))
-- then try C3 x C2 with mapping [[2,2],[2,2]]
C3 := FiniteGroup(3,[[1,2,3],[2,3,1],[3,1,2]],["1","r","rr"])

Type: Type
SDP := semidirectProduct([[1,2],[2,1]],["1","m"],[[2,2],[2,2]])\$C3

Type: Type
toTable()\$SDP

```
 1 m rr rrm r rm m 1 rrm rr rm r r rm 1 m rr rrm rm r m 1 rrm rr rr rrm r rm 1 m rrm rr rm r m 1
```

Type: Table(6)
setGenerators([false,true,true,false,false,false])\$SDP
Type: Void
PSDP := toPermutation()\$SDP

```
<(1 2)(3 4)(5 6),(1 3 5)(2 4 6)>
```

Type: PermutationGroup(Integer)
permutationRepresentation(PSDP,6)

```
[
 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0
,
 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0
]
```

Type: List(Matrix(Integer))
-- then try C3 x C2 with mapping [[1,1],[2,2]]
C3b := FiniteGroup(3,[[1,2,3],[2,3,1],[3,1,2]],["1","r","rr"])

Type: Type
SDP := semidirectProduct([[1,2],[2,1]],["1","m"],[[1,1],[2,2]])\$C3b

Type: Type
toTable()\$SDP

```
 1 m r rm rr rrm m 1 rrm rr rm r r rm rr rrm 1 m rm r m 1 rrm rr rr rrm 1 m r rm rrm rr rm r m 1
```

Type: Table(6)
setGenerators([false,true,true,false,false,false])\$SDP
Type: Void
PSDP := toPermutation()\$SDP

```
<(1 2)(3 6)(4 5),(1 3 5)(2 4 6)>
```

Type: PermutationGroup(Integer)
permutationRepresentation(PSDP,6)

```
[
 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0
,
 0 0 0 0 1 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0 0 1 0 0
]
```

Type: List(Matrix(Integer))
(19) ->
```

## Examples

Here are some examples of the semidirect product of groups:

Type Product Description
Dihedral
Group
The dihedral group is the semidirect product of a cyclic group of order 2 and a cyclic group of order n
Isometries

Isometries (distance preseving maps) in 3-space is the semidirect product of:

• R3 : Addative group of translations.
• {±1} : Reflections through the origin.
• SO3 : Group of rotations in 3-space.
Poncaré

Poncaré group is the semidirect product of:

• R4 : Addative group of translations in 4-space.
• SO3,1 : Lorentz group.