# Difference between revisions of "ApCoCoA-1:Dicyclic groups"

### Dicyclic groups

#### Description

Every cyclic group is generated by a single element a. If n is finite the group is isomorphic to Z/nZ, otherwise it can be interpreted as Z with the addition of integers as the group operation. For every cyclic group there only exists one subgroup containing a, the group itself.

```C(n) = <a | a^{n} = 1>
```

(Reference: Gallian, Joseph (1998), Contemporary abstract algebra (4th ed.), Boston: Houghton Mifflin, Chapter 4

#### Computation

``` /*Use the ApCoCoA package ncpoly.*/

// Number of Dicyclic group (note that  the order is 4N)
MEMORY.N:=5;

Use ZZ/(2)[a,b,c,d];
NC.SetOrdering("LLEX");
Define CreateRelationsDicyclic()
Relations:=[];
// add the relations of the invers elements ac = 1 and bd = 1
Append(Relations, [[a,c],[-1]]);
Append(Relations, [[c,a],[-1]]);
Append(Relations, [[b,d],[-1]]);
Append(Relations, [[d,b],[-1]]);

// add the relation a^{n} = b^2
Append(Relations, [[a^(MEMORY.N)], [-b,b]]);

// add the relation a^{2n} = 1
Append(Relations, [[a^(2*MEMORY.N)], [-1]]);

// add the relation bab^{-1} = a^{-1}
Append(Relations, [[b,a,d],[-c]]);
Return Relations;
EndDefine;

Relations:=CreateRelationsDicyclic();
Relations;
GB:=NC.GB(Relations);
GB;

```

// Second Implementation without invers elements

``` /*Use the ApCoCoA package ncpoly.*/

// Number of Dicyclic group (note that  the order is 4N)
MEMORY.N:=5;

Use ZZ/(2)[a,b,c,d];
NC.SetOrdering("LLEX");
Define CreateRelationsDicyclic()
Relations:=[];

// add the relation a^{n} = b^2
Append(Relations, [[a^(MEMORY.N)], [-b,b]]);

// add the relation a^{2n} = 1
Append(Relations, [[a^(2*MEMORY.N)], [-1]]);

// add the relation b^{-1}ab = a^{-1}
Append(Relations, [[b^(3),a,b],[a^(2*MEMORY.N-1)]]);
Return Relations;
EndDefine;
```