Difference between revisions of "ApCoCoA-1:FreeAbelian groups"
From ApCoCoAWiki
StrohmeierB (talk | contribs) |
StrohmeierB (talk | contribs) |
||
(One intermediate revision by the same user not shown) | |||
Line 9: | Line 9: | ||
==== Computation ==== | ==== 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; | ||
+ | |||
+ | ====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> |
Latest revision as of 10:49, 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;
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>