up previous next
GBasis5, and more

calculations using the CoCoAServer
Syntax

-operation-5(same as -operation-)
-operation-5x(same as -operation-, Info5: RECORD)
GBasis5(M:IDEAL, MODULE):LIST
GBasis5x(M:IDEAL, MODULE,  Info5: RECORD):LIST


Description
These functions are implemented in CoCoALib (requires an active CoCoAServer).

Mostly the same as GBasis , Intersection , Elim , but computed using the CoCoAServer.

All the 5 functions behave like the corresponding function in CoCoA-4, i.e. should give the same output!

All the 5x functions allow extra options to be set, such as (twin)floating point computations, parameters, shifts, different orderings, gradings...

NB if you set incompatible options with the CurrentRing (e.g. a different grading or ordering) the resulting GBasis will be incompatible with CurrentRing... of course!

Example
  ----[  parameters ]-----------------------------------------------
  M := $cocoa5.AddParamOrdMat(DegRevLexMat(3), 1); // compatible Term Ordering
  Use ZZ/(32003)[a, x,y,z], Ord(M);
  
  I := Ideal((a-1)x+(a^2+a)y,(a+1)x + y);
  GBasis5(I);
  GBasis5x(I, Record(NumParams=1));
  
  ----[  Twin floats  ]--------------------------------------------------
  Use QQ[x[0..5]];
  L := [Randomized(DensePoly(4)) | I In 1..2];
  Time LT(Ideal(L));
  LT5x(Ideal(L), Record(FloatPrecision=128));
  
  ----[  Elimination  ]----------------
  Use QQ[x,y,z,w[3..5]], Weights([7, 4, 3, 1, 1, 1]);
  
  I := Ideal(
  	   x - 7413431 w[4]^7 - 9162341 w[3]*w[4]*w[5]^5,
  	   y - 6521443 w[4]^4 - 2312257 w[3]^2*w[4]*w[5],
  	   z - 5329421 w[4]^3 - 2122414 w[3]*w[5]^2
  	   );
  
  Time E := Elim([w[3],w[4]], I);
  E5 := Elim5([w[3],w[4]], I);  // usually much faster than CoCoA4
  E = E5;
  
  ----[  Intersection  ]-------------------------------
  Use QQ[x,y,z], Weights(1,2,1);
  I := Ideal(xy, z^2);
  J := Ideal(yz, x-z);
  Intersection5(I, J);
  // with parameters
  M := CoCoA5.AddParamOrdMat(DegRevLexMat(3), 2); -- 2 parameters
  Use ZZ/(32003)[a,b, x,y,z], Ord(M);
  II := Ideal(x-y);
  I := (a-b+1) * x * II;
  J := (a+1) * y * II;
  Intersection5x(I, J, Record(NumParams=2)); -- 2 parameters
  
  ----[  Syzygies  ]--------------------------------------
  Use ZZ/(101)[x,y,z], Weights(1,2,4);
  L := [Vector(x^2,x^2), Vector(xy,xy)];
  S5 := SyzOfGens5(L);
  
  ----[  Modules  ]---------------------------------------------------------
  Use QQ[x,y,z], PosTo;
  M := Module([x,z], [z,y]);
  ReducedGBasis(M);
  ReducedGBasis5(M);
  ReducedGBasis5x(M, Record(IsPosTo=False));
  
  Use QQ[x,y,z], Weights([1,2,4]);
  M := Module([x^2-y,1],[x^4-z,y^2]);
  Info5 := Record();
  Info5.ModuleShifts := Mat([[0,2]]);
  GBasis5x(M, Info5);
  
  // Grading given via OrdMat and Grading Dim
  OrdMat := Mat([[1,1,1],[2,1,1],[1,1,0]]); // Ring Grading (first 2 Rows)
                                            // Plus order (last row)
  Use ZZ/(101)[x,y,z], Ord(OrdMat), ToPos;
  M := Module([y-x,0,0], [x,0,z], [0,y^2-z^2,0]);
  X := ReducedGBasis5(Module(Gens(M)));
  // GBasis on a module with shifts
  Info5 := Record();
  Info5.OrdMat := OrdMat;
  Info5.GradingDim := 2;
  Info5.ModuleShifts := Mat([[3,1,2],[2,2,5]]); // GrDim rows!!
  ReducedGBasis5x(M, Info5);


See Also