From ApCoCoAWiki


We are developing a replacement for the GroebnerFramework sitting on top of the CoCoALib. Once the CoCoA5Client has matured a little we plan to integrate this work into it. The GroebnerFramework is currently kept in a separate patch that can be applied to the CoCoALib 0.96CVS tree. Once the CoCoALib 0.96 has been released we plan to integrate the patch into CoCoALib 0.97CVS.

Using the GroebnerFramework

To start the Groebnerframework type in the following command:

mabshoff@hilbert:/usr/local/GFW5-2006-05-24> ./GFrameWork5 -f inputs/c8_h.cocoa5 2> ~/sample.log
reading input from file inputs/c8_h.cocoa5
inputs/c8_h.cocoa5 exists and has been opened

CoCoA5 Groebner-Framework 0.0.1 using CoCoALib  0.9600
Type help for help and quit to exit

C5FW 1 >

You will be greeted with the command prompt. The input file has to be passed via the -f switch and you should redirect the logging output via 2> to some log file. Future builds will let you specifiy a log file.

At the command prompt you can enter a couple different commands:

  • run: do iterations until there are no more pairs.
  • step #n: do #n iterations and wait for next command. If we reduce all pairs before #n of iterations we stop.
  • print gbasis: prints gbasis on screen (this might be a lot of text)
  • print special: prints only polynomials which maxDeg<4 or Len<19:
  • print fgbasis filename: saves gbase into filename. Content of filename is overwritten.
  • print fspecial filename: saves special polynomials into filename. Content of filename is overwritten.
  • quit: quits framework. All unsafed work is lost.

If you press CTRL-C while doing reductions the framework will finish the current reductions and then drop you back into the command prompt.

Creating Input for thre GroebnerFramework

The input file has the same format as the communication between CoCoA 4.6 and the CoCoAServer. To create input you need to run the following sequence of commands:

MEMORY.PKG.CoCoA5.PrintOnPath := GetEnv("PWD");
MEMORY.PKG.CoCoA5.EnableSocket := False;
MEMORY.TMP_CoCoA5_CreatingBenchmarks := True;

This creates the input file Cocoa4Request.cocoa5 in the current directory. Some warnings might pop up when doing this - you can safely ignore those.

FIXME: GBasis5x(Ideal, Record with ExName) to set name for input file.


  • activate option to do reduction until first non-zero normal form
  • CTRL-C should also terminate printing of gbasis/polynomials in general
  • add -l for log output
  • fix steps < 0
  • exception handling for parser, this fixes a crash if one uses non 7bit ASCII in filenames, etc.
  • avoid copy of GBasis
  • set logging levels/option
  • add more statistics
  • load/save status of computation for painless restarts (long term goal)