Difference between revisions of "ApCoCoA-1:Symbolic data Computations"

From ApCoCoAWiki
Line 20: Line 20:
  
 
  /*Use the ApCoCoA package gbmr.*/
 
  /*Use the ApCoCoA package gbmr.*/
  Define Baumslag1(...)
+
  -- See NCo.BGB for more details on the parameters DB, LB and OFlag.
  If Not Len(ARGV) = 2 And Not Len(ARGV) = 4 Then
+
Define BS(M,N,DB,LB,OFlag)
    Error("Error in Baumslag1(...). There have to be two argument (n and m for exponents)
+
   $apcocoa/gbmr.SetX("aAbB");
      or four arguments (n, m, degree, loops)");
+
   $apcocoa/gbmr.SetOrdering("LLEX");
   EndIf;
+
   G:= [["aA",""],["Aa",""],["bB",""],["bB",""]];
  For I:= 1 To Len(ARGV) Do
+
   BA:= "b";
    If Not Type(ARGV[I]) = INT Then
+
   AB:= "b";
      Error("Error in Baumslag1(...). The Type of the Arguments must be INT");
 
    ElIf ARGV[I] < 1 Then
 
      Error("Error in Baumslag1(...). The integer arguments must be positive");
 
    EndIf;
 
   EndFor;
 
  X:= "ab";
 
  Ordering:= "LLEX";
 
   R:= [];
 
  AM:= "";
 
  BN:= "";
 
  For I:= 1 To ARGV[1] Do
 
    AM:= AM + "a";
 
  EndFor;
 
  For I:= 1 To ARGV[2] Do
 
    BN:= BN + "b";
 
  EndFor;
 
  F:= [[[1, AM], [-1, ""]], [[1, BN], [-1, ""]]];
 
  If Len(ARGV) = 1 Then
 
    S:= $apcocoa/gbmr.MRBP(X, Ordering, R, F);
 
  Else
 
    S:= $apcocoa/gbmr.MRBP(X, Ordering, R, F, ARGV[2], ARGV[3], 1);
 
  EndIf;
 
Return S;
 
EndDefine;
 
 
 
 
 
Baumslag2(m, n, [DegreeBound, LoopBound]) (optional parameters in "[ ]")
 
 
 
Baumslag-Solitar group with the following presentation < a, b | b * a^m = a^n * b >  
 
 
 
Define Baumslag2(...)
 
  If Not Len(ARGV) = 2 And Not Len(ARGV) = 4 Then
 
    Error("Error in Baumslag1(...). There have to be two argument (n and m for exponents) or four arguments (n, m, degree, loops)");
 
  EndIf;
 
  For I:= 1 To Len(ARGV) Do
 
    If Not Type(ARGV[I]) = INT Then
 
      Error("Error in Baumslag1(...). The Type of the Arguments must be INT");
 
    ElIf ARGV[I] < 1 Then
 
      Error("Error in Baumslag1(...). The integer arguments must be positive");
 
    EndIf;
 
  EndFor;
 
  X:= "abcdABCD";
 
  Ordering:= "LLEX";
 
  R:= [];
 
   AM:= "";
 
   AN:= "";
 
 
   For I:= 1 To ARGV[1] Do
 
   For I:= 1 To ARGV[1] Do
     AM:= AM + "a";  
+
     BA:= BA + "a";  
 
   EndFor;
 
   EndFor;
 
   For I:= 1 To ARGV[2] Do
 
   For I:= 1 To ARGV[2] Do
     AN:= AN + "a";  
+
     AB:= "a" + Ab;  
 
   EndFor;
 
   EndFor;
   F1 := [[1, "aA"], [-1, ""]];
+
   Append(G,[BA,AB]);
  F2 := [[1, "bB"], [-1, ""]];
+
   Return $apcocoa/gbmr.BGB(G,DB,LB,OFlag);
  F3 := [[1, "cC"], [-1, ""]];
 
  F4 := [[1, "dD"], [-1, ""]];
 
  F5 := [[1, "Aa"], [-1, ""]];
 
  F6 := [[1, "Bb"], [-1, ""]];
 
  F7 := [[1, "Cc"], [-1, ""]];
 
  F8 := [[1, "Dd"], [-1, ""]];
 
  F:= [F1, F2, F3, F4, F5, F6, F7, F8, [[1, "a"], [-1, "c"]], [[1, "b"], [-1, "d"]], [[1, "b" + AN], [-1, AM + "b"]]];
 
  If Len(ARGV) = 1 Then
 
    S:= $apcocoa/gbmr.MRBP(X, Ordering, R, F);
 
   Else
 
    S:= $apcocoa/gbmr.MRBP(X, Ordering, R, F, ARGV[2], ARGV[3], 1);
 
  EndIf;
 
  Return S;
 
 
  EndDefine;
 
  EndDefine;

Revision as of 13:24, 18 June 2013

Computation Examples for Non-abelian Groups

Computations of Baumslag groups

Recall that the Baumslag-Solitar groups have the following presentation

BS(m,n)<a, b | b*a^m = a^n*b> where m, n are natural numbers

We enumerate partial Groebner bases for the Baumslag-Solitar groups as follows.

/*Use the ApCoCoA package ncpoly.*/
Use ZZ/(2)[a[1..2],b[1..2]];
NC.SetOrdering("LLEX");
A1:=[[a[1],a[2]],[1]];
A2:=[[a[2],a[1]],[1]];
B1:=[[b[1],b[2]],[1]];
B2:=[[b[2],b[1]],[1]];
-- Relation ba^2=a^3b. Change 2 and 3 in "()" to make another relation
R:=[[b[1],a[1]^(2)],[a[1]^(3),b[1]]];
G:=[A1,A2,B1,B2,R];
-- Enumerate a partial Groebner basis (see NC.GB for more details)
NC.GB(G,31,1,100,1000);
/*Use the ApCoCoA package gbmr.*/
-- See NCo.BGB for more details on the parameters DB, LB and OFlag.
Define BS(M,N,DB,LB,OFlag)
  $apcocoa/gbmr.SetX("aAbB");
  $apcocoa/gbmr.SetOrdering("LLEX");
  G:= [["aA",""],["Aa",""],["bB",""],["bB",""]];
  BA:= "b";
  AB:= "b";
  For I:= 1 To ARGV[1] Do
    BA:= BA + "a"; 
  EndFor;
  For I:= 1 To ARGV[2] Do
    AB:= "a" + Ab; 
  EndFor;
  Append(G,[BA,AB]);
  Return $apcocoa/gbmr.BGB(G,DB,LB,OFlag);
EndDefine;