GAP

### 7. Computing with GAP

#### 7.3: Does GAP support additive groups?

The answer is a clear 'no and yes'! To understand this 'clear answer' let us consider the integers mod 15. (See section Residue Class Rings in the chapter on integers.) First of all you can simply add and multiply integers mod 15 by

```gap> (17 + 18) mod 15;
5
gap> (17 * 18) mod 15;
6
```

You can also form the ring of integers mod 15 by

```gap> z15 := ZmodnZ(15);
(Integers mod 15)
```

and GAP tells you:

```gap> IsRing(z15);
true
```

In fact you can work with its elements :

```gap> a := ZmodnZObj(17,15);
ZmodnZObj( 2, 15 )
gap> b := ZmodnZObj(18,15);
ZmodnZObj( 3, 15 )
gap> a+b;
ZmodnZObj( 5, 15 )
gap> a*b;
ZmodnZObj( 6, 15 )
```

GAP also tells you

```gap> IsAdditiveGroup(z15);
true
```

But:

```gap> IsGroup(z15);
false
```

The explanation is that in GAP an additive group A (of a ring) is just an additive magma -with-zero with an operation that maps each element a of A to its additive inverse and that most of the algorithms for groups are not available for these. So you get:

```gap> Size(z15);
15
gap> SylowSubgroup(z15,3);
Error, no method found!
```

On the other hand, using that the additive group of the integers mod 15 is cyclic you can deal with this group in the usual way:

```gap> c15 := CyclicGroup(15);
<pc group of size 15 with 2 generators>
gap> Size(c15);
15
gap> s := SylowSubgroup(c15,3);
Group([ f1*f2^3 ])
gap> Size(s);
3
```