Difference between revisions of "ApCoCoA-1:Braid groups"
From ApCoCoAWiki
Line 13: | Line 13: | ||
/*Use the ApCoCoA package ncpoly.*/ | /*Use the ApCoCoA package ncpoly.*/ | ||
− | // | + | // Number of Braid group |
MEMORY.N:=3; | MEMORY.N:=3; | ||
Line 21: | Line 21: | ||
Define CreateRelationsBraid() | Define CreateRelationsBraid() | ||
Relations:=[]; | Relations:=[]; | ||
+ | |||
+ | // Add the relations of the inverse elements | ||
For Index1:= 1 To MEMORY.N Do | For Index1:= 1 To MEMORY.N Do | ||
Append(Relations,[[a[Index1],b[Index1]],[1]]); | Append(Relations,[[a[Index1],b[Index1]],[1]]); | ||
Line 26: | Line 28: | ||
EndFor; | EndFor; | ||
+ | // Add relations of the type a_{i}a_{i+2} = a_{i+2}a_{i} | ||
For Index2:=1 To MEMORY.N Do | For Index2:=1 To MEMORY.N Do | ||
For Index3:=(Index2+2) To MEMORY.N Do | For Index3:=(Index2+2) To MEMORY.N Do | ||
− | If Abs(Index2-Index3)>1 Then | + | If Abs(Index2-Index3)>1 Then |
− | |||
Append(Relations,[[a[Index2],a[Index3]],[a[Index3],a[Index2]]]); | Append(Relations,[[a[Index2],a[Index3]],[a[Index3],a[Index2]]]); | ||
EndIf; | EndIf; | ||
Line 35: | Line 37: | ||
EndFor; | EndFor; | ||
+ | // Add relations of the type a_{i}a_{i+1}a_{i} = a_{i+1}a_{i}a_{i+1} | ||
For Index4:=1 To MEMORY.N Do | For Index4:=1 To MEMORY.N Do | ||
For Index5:=(Index4+1) To MEMORY.N Do | For Index5:=(Index4+1) To MEMORY.N Do | ||
If Abs(Index4-Index5)=1 Then | If Abs(Index4-Index5)=1 Then | ||
− | |||
Append(Relations,[[a[Index4],a[Index5],a[Index4]],[a[Index5],a[Index4],a[Index5]]]); | Append(Relations,[[a[Index4],a[Index5],a[Index4]],[a[Index5],a[Index4],a[Index5]]]); | ||
EndIf | EndIf | ||
Line 48: | Line 50: | ||
Relations:=CreateRelationsBraid(); | Relations:=CreateRelationsBraid(); | ||
+ | Relations; | ||
-- Enumerate a partial Groebner basis (see NC.GB for more details) | -- Enumerate a partial Groebner basis (see NC.GB for more details) | ||
− | NC.GB( | + | Gb:=NC.GB(Relations,31,1,100,1000); |
+ | Gb; |
Revision as of 07:21, 23 August 2013
Description
The Braid groups are infinite for a natural number n > 1 and have the following presentation.
B(n) = <g_{1},...,g_{n-1} | g_{i}g_{j} = g_{j}g_{i} for |i-j| >= 2, g_{i}g_{i+1}g_{i} = g_{i+1}g_{i}g_{i+1} for 1 <= i <= n-2>
The complexity in the group B(n) grows with n. We get the trivial group for n = 1 and the infinite cyclic group for n >= 2.
(Reference: E. Artin, "Theory of braids" Ann. of Math. , 48 (1947) pp. 643–649 and
W. Magnus, Braid groups: A survey, Proceedings of the Second International Conference on the Theory of Groups, Canberra, Australia, 1973, pp. 463-487.)
Computation
We enumerate partial Groebner bases for the Braid groups as follows.
/*Use the ApCoCoA package ncpoly.*/ // Number of Braid group MEMORY.N:=3; Use ZZ/(2)[a[1..MEMORY.N],b[1..MEMORY.N]]; NC.SetOrdering("LLEX"); Define CreateRelationsBraid() Relations:=[]; // Add the relations of the inverse elements For Index1:= 1 To MEMORY.N Do Append(Relations,[[a[Index1],b[Index1]],[1]]); Append(Relations,[[b[Index1],a[Index1]],[1]]); EndFor; // Add relations of the type a_{i}a_{i+2} = a_{i+2}a_{i} For Index2:=1 To MEMORY.N Do For Index3:=(Index2+2) To MEMORY.N Do If Abs(Index2-Index3)>1 Then Append(Relations,[[a[Index2],a[Index3]],[a[Index3],a[Index2]]]); EndIf; EndFor; EndFor; // Add relations of the type a_{i}a_{i+1}a_{i} = a_{i+1}a_{i}a_{i+1} For Index4:=1 To MEMORY.N Do For Index5:=(Index4+1) To MEMORY.N Do If Abs(Index4-Index5)=1 Then Append(Relations,[[a[Index4],a[Index5],a[Index4]],[a[Index5],a[Index4],a[Index5]]]); EndIf EndFor; EndFor; Return Relations; EndDefine; Relations:=CreateRelationsBraid(); Relations; -- Enumerate a partial Groebner basis (see NC.GB for more details) Gb:=NC.GB(Relations,31,1,100,1000); Gb;