# ApCoCoA-1:FreeAbelian groups

### Free Abelian Groups

#### Description

Every element in a free abelian group can be written in only way as a finite linear combination. A representation is given by the following:

```Z(n) = <a_{1},...,a_{n} | [a_{i},a_{j}] = 1 for all i,j>
```

#### Reference

Phillip A. Griffith, Infinite Abelian group theory. Chicago Lectures in Mathematics. University of Chicago Press, 1970.

#### Computation

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

// Number of free abelian group
MEMORY.N:=3;

Use ZZ/(2)[x[1..MEMORY.N],y[1..MEMORY.N]];
NC.SetOrdering("LLEX");

Define CreateRelationsFreeAbelian()
Relations:=[];
// add the relations of the inverse elements
For Index1 := 1 To MEMORY.N Do
Append(Relations,[[x[Index1],y[Index1]],]);
Append(Relations,[[y[Index1],x[Index1]],]);
EndFor;
For Index1 := 1 To MEMORY.N Do
For Index2 := 1 To MEMORY.N Do
Append(Relations,[[x[Index1],x[Index2],y[Index1],y[Index2]],]);
EndFor;
EndFor;
Return Relations;
EndDefine;

Relations:=CreateRelationsFreeAbelian();
Relations;

Gb:=NC.GB(Relations,31,1,100,1000);
Gb;
```

#### Example in Symbolic Data Format

```<FREEALGEBRA createdAt="2014-06-05" createdBy="strohmeier">
<vars>x1,x2,x3,y1,y2,y3</vars>
<uptoDeg>11</uptoDeg>
<basis>
<ncpoly>x1*y1-1</ncpoly>
<ncpoly>y1*x1-1</ncpoly>
<ncpoly>x2*y2-1</ncpoly>
<ncpoly>y2*x2-1</ncpoly>
<ncpoly>x3*y3-1</ncpoly>
<ncpoly>y3*x3-1</ncpoly>
<ncpoly>x1*x1*y1*y1-1</ncpoly>
<ncpoly>x1*x2*y1*y2-1</ncpoly>
<ncpoly>x1*x3*y1*y3-1</ncpoly>
<ncpoly>x2*x1*y2*y1-1</ncpoly>
<ncpoly>x2*x2*y2*y2-1</ncpoly>
<ncpoly>x2*x3*y2*y3-1</ncpoly>
<ncpoly>x3*x1*y3*y1-1</ncpoly>
<ncpoly>x3*x2*y3*y2-1</ncpoly>
<ncpoly>x3*x3*y3*y3-1</ncpoly>
</basis>
<Comment>The partial LLex Gb has 180 elements</Comment>
<Comment>Free Abelian Group_3</Comment>
</FREEALGEBRA>
```