ApCoCoA-1:FreeAbelian groups: Difference between revisions

From ApCoCoAWiki
Line 9: Line 9:


==== Computation ====
==== Computation ====
  /*Use the ApCoCoA package ncpoly.*/
/*Use the ApCoCoA package ncpoly.*/
 
  // Number of free abelian group
// Number of free abelian group
  MEMORY.N:=3;
MEMORY.N:=3;
 
  Use ZZ/(2)[x[1..MEMORY.N],y[1..MEMORY.N]];
Use ZZ/(2)[x[1..MEMORY.N],y[1..MEMORY.N]];
  NC.SetOrdering("LLEX");
NC.SetOrdering("LLEX");
 
  Define CreateRelationsFreeAbelian()
Define CreateRelationsFreeAbelian()
    Relations:=[];
  Relations:=[];
    For Index1 := 1 To MEMORY.N Do
  // add the relations of the inverse elements
      For Index2 := 1 To MEMORY.N Do
  For Index1 := 1 To MEMORY.N Do
    Append(Relations,[[x[Index1],x[Index2],y[Index1],y[Index2]],[1]]);
  Append(Relations,[[x[Index1],y[Index1]],[1]]);
      EndFor;
  Append(Relations,[[y[Index1],x[Index1]],[1]]);
    EndFor;
  EndFor;
    Return Relations;
  // add the relations [x_{i},x_{j}]=1
  EndDefine;
  For Index1 := 1 To MEMORY.N Do
 
    For Index2 := 1 To MEMORY.N Do
  Relations:=CreateRelationsFreeAbelian();
  Append(Relations,[[x[Index1],x[Index2],y[Index1],y[Index2]],[1]]);
  Relations;
    EndFor;
 
  EndFor;
  Gb:=NC.GB(Relations);
  Return Relations;
  Gb;
EndDefine;
Relations:=CreateRelationsFreeAbelian();
Relations;
Gb:=NC.GB(Relations,31,1,100,1000);
Gb;

Revision as of 10:47, 6 May 2014

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]],[1]]);
  	 Append(Relations,[[y[Index1],x[Index1]],[1]]);
  EndFor;
  // add the relations [x_{i},x_{j}]=1
  For Index1 := 1 To MEMORY.N Do
    For Index2 := 1 To MEMORY.N Do
	  Append(Relations,[[x[Index1],x[Index2],y[Index1],y[Index2]],[1]]);
    EndFor;
  EndFor;
  Return Relations;
EndDefine;

Relations:=CreateRelationsFreeAbelian();
Relations;

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