Difference between revisions of "ApCoCoA-1:Braid groups"

From ApCoCoAWiki
Line 13: Line 13:
 
  /*Use the ApCoCoA package ncpoly.*/
 
  /*Use the ApCoCoA package ncpoly.*/
 
    
 
    
   // The number of Braid group
+
   // 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
          // Insert the relation a_{i}a_{i+2} = a_{i+2}a_{i}
 
 
           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
          // Insert the relation a_{i}a_{i+1}a_{i} = a_{i+1}a_{i}a_{i+1}
 
 
           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(G,31,1,100,1000);
+
   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;