CoCoA System
Computations in Commutative Algebra
Home Page

# CoCoA Release Notesdownload page

## CoCoA 5.0.1

Beta version for teh MonICA School and Conference in Castro Urdiales.
Added AlexanderDual, PrimaryDecomposition, and optimized some functions on monomial ideals.
CoCoA 5 is still missing an updated manual, and modules, resolutions, ideal of points. See CoCoALib-functions.html for the available functions.

## CoCoA 5.0.0

First Beta version for the CoCoASchool in Passau
CoCoA 5 is still missing an updated manual, and modules, resolutions, ideal of points. See CoCoALib-functions.html for the available functions.

## CoCoA 4.7.5

```

==  A few new functions have been added:  ==

--  MayerVietorisTreeN1 for monomial ideals (via CoCoAServer)
From the paper:  Anna M. Bigatti, Eduardo Saenz-de-Cabezon
*(n-1)-st Koszul homology and the structure of monomial ideals*

--  link to Frobby, a library for computations with monomial ideals
Type
? frobby
for more details

--  IsInRadical and MinDegInIdeal: functions for radical membership
--  Reg: the Castelnuovo-Mumford regularity
--  Ker: kernel of an algebra homomorphism
--  InverseSystem: the inverse system of an ideal of derivation

==  Changes to existing functions ==

Latex/LaTeX modified so that it returns a string.  This way the output
can be printed on a file (see the manual for latex)

The  Source  command now issues an 'obsolescent' warning if used with
a package id; just specify the full path of the package as a string.

The function  \$gb.Step(M)  is now obsolescent; replace it by the
equivalent  \$gb.Steps(M,1)  to avoid the warning.

Printing of resolutions is now like this (we believe it's more readable)
0 --> S(-4) --> S(-2) + S(-3)^2 --> S(-1)^2 + S(-2) --> S

==  Changes to the syntax  ==

The construct  Repeat...EndRepeat;  is now obsolescent.
It may easily be replaced by  While True Do ... EndWhile;

The construct  Cond...EndCond;  is now obsolescent.
You should use an  If...Then  construct instead.

The construct  Alias...In...EndAlias;  is now obsolescent.
You should use a global alias instead (or write out the package name
directly).

The trailing If construct is now obsolescent;
just replace it by a proper If...Then construct.

The keyword  ElsIf  is now obsolescent;
just replace it by the keyword  Elif.

The keyword  EoF  is now obsolescent;
just comment out the rest of the file.

The keyword  NewLine  is now obsolescent;
just use several separate PrintLn commands instead or the function NewLine()

The commands  Delete & Clear  are now obsolescent.
You can get a similar effect by assigning zero to the variables to be cleared.

The command  Destroy  is morally obsolescent
as it will not be needed  in CoCoA 5.

==  Several minor bugs have been fixed in the code and in the manual.  ==

```

## CoCoA 4.7.4

```

==  A few new functions have been added:  ==

--  ApproxBBasis5 (Stable Order Ideal) for approximate points (via CoCoAServer)
From the paper:  John Abbott, Claudia Fassino, Maria-Laura Torrente
*Stable Border Bases for Ideals of Points*

--  NBM5 (Stable Order Ideal) for approximate points (via CoCoAServer)
From the paper:   Claudia Fassino
*Almost Vanishing Polynomials for Sets of Limited Precision Points*

--  ImplicitPlot/ImplicitPlotOn, PlotPoints/PlotPointsOn
Output to a file the coordinates of the points to plot, so you can
visualize them with gnuplot.

--  LexSegmentIdeal (for an ideal I)
Returns the ideal with the same Hilbert function as I.
If the argument is a list of power-products L it still returns the
smallest Lex-segment Ideal containing L.

--  AllIndetsCalled("x")
This function returns the list of all indeterminates whose name is the
given string.  Up to version 4.7.3 you could achieve this just by evaluating
the name itself: "Use Q[x[0..4]];  x;" (see below)

==  Changes to the syntax:  ==

--  explicit Print/PrintLn now required inside a "Define...EndDefine":
you will get a warning if you use an implicit print inside a function
(i.e. without the explicit print command).  Example: the function
Define NSquare(N)
N^2;
EndDefine;
Now you should be explicit about whether you mean "Print N^2" or "Return N^2".
This helps detect a forgotten "Return" when defining a function.

--  Use Q[x[0..4]];  x;
This shortcut is no longer allowed because it can be confusing:
"x[2];" is different from "L := x;  L[2];"
(see above: AllIndetsCalled)

--  QQ[x,y,z];  ZZ[x[1..4];  ZZ/(3)[a,b];
this is the new way to write the rings of rationals and integers.
Q and Z are still allowed, but are obsolescent

==  Several minor bugs have been fixed in the code and in the manual.  ==

--  multivariate GCD (could disappear into an infinite loop)
--  integer matrix Det (could very rarely give 0 instead of the correct value)
```

## CoCoA 4.7.3

```The "Numerical" package is no longer distributed as part of CoCoA;
instead it forms part of the extension ApCoCoA downloadable from
http://www.apcocoa.org/
This reorganization allows independent faster releases of the
cutting-edge code developed by the team in Germany.

A few new functions have been added:
- RealRootsApprox
- CharPoly, Eigenvectors
- AlmostQR, MatConcatAntiDiag, MatConcatDiag, MakeMatByRows, MakeMatByCols
- LexSegmentIdeal, StableIdeal, StronglyStableIdeal
- MinimalPresentation (and consequently updated Ext)

Several minor bugs have been fixed in the code and in the manual.
```

## CoCoA 4.7

```While we are still working in preparation for CoCoA-5, this release of
CoCoA-4 offers some bug fixes, but the main feature consists in a
further extension of the communication with CoCoALib (the GPL C++ library)
via CoCoAServer, in particular the Numerical functions developed by
the team in Dortmund.

Other new "5" functions are:
---
BBasis5, FGLM5, Gin5, PreprocessPts5
---
When you think CoCoA4 is too slow, try the corresponding "5" function!
=======================================================================
- New: GBasisTimeout
- Changed: Set(L) into MakeSet(L)
- Obsolescent: "one-line" function definitions will print out a
warning (see below)
- Warn about use of "End" instead of "EndIf", "EndDefine", ...
```

### Deprecated Commands

We are getting close to the release of a completely new CoCoA-5 (entirely based on CoCoALib)! This will also cause some (few!) changes in the CoCoALanguage. These changes are devoted to make CoCoA:
• more flexible (there will be a stronger and more powerful mathematical core)
• more robust (minimize ambiguity / unexpected behaviour)
• more helpful error messages (what do you think of CoCoA error messages??)
• less error prone (if you forget a ; you get a product instead of an Error msg)
• in 3 words: "nicer to use"!

#### Here is a list of obsolescent commands/syntax, start now!

```----------------------------------------------------------------------
-deprecated:          F(X) := X + 3;
-suggested:           Define F(X)  Return X + 3;  EndDefine;
-why?
We have seen this syntax can be dangerous!  Just a silly example:
You want to know whether Det(M) is 0 and type   Det(M) := 0;
You see your error and you correctly write      Det(M) = 0;
.... but now Det(M) is going to return 0 for any argument!
----------------------------------------------------------------------
-- NB this will be disabled starting from next version of CoCoA-4!!!!!
-deprecated:         Q[xyz];
-suggested:         Q[x,y,z];
-why?
we will allow Q[alpha, beta];
----------------------------------------------------------------------
-deprecated:           A B;  -- with A, B programming variables
-suggested:           A * B;
-why?
If you mean to write A; B; and forget the ";"  you get a product.
We will maintain  x^2y^3z^4 (i.e. products of indeterminates)
======================================================================
```

## CoCoA 4.6

```Communication with CoCoALib via CoCoAServer has been improved:
more reliable and faster.  Available operations:
---
Colon5  Elim5  GBasis5  Homogenized5  Intersection5
LT5     ReducedGBasis5  Saturation5   SyzOfGens5
---
When you think CoCoA4 is too slow, try the "5" function!
======================================================================
- New: IsSymmetric, IsDiagonal, DiagonalMat

- New: IsTree5 (for complexes)

- "Ext" functions more robust (thanks to Alberto Damiano)

- Fixed bug in multivariate factorization (made CoCoA crash)

- Fixed bug in Cartesian product with empty list

- Fixed bug in ring names list

- Fixed bug in too long list constructor ".."

- Fixes and updates to the manual.
======================================================================
DEPRECATED COMMANDS:

We are getting close to the release of a completely new CoCoA-5 (entirely based
on CoCoALib)!  This will also cause some changes in the CoCoALanguage.
This changes are devoted to make CoCoA:

- more flexible (there will be a stronger and more powerful mathematical core)
- more robust   (minimize ambiguity / unexpected behaviour)
- more helpful error messages (what do you think of CoCoA error messages??)
- less error prone (if you forget a ; you get a product instead of an Error msg)
- in 3 words: "nicer to use"!

----------------------------------------------------------------------
Here is a list of obsolescent commands/syntax, start now!
----------------------------------------------------------------------
-- NB this will be disabled starting from next version of CoCoA-4!!!!!
-deprecated:         Q[xyz];
-suggested:         Q[x,y,z];
-why?
we will allow Q[alpha, beta];
----------------------------------------------------------------------
-deprecated:           A B;  -- with A, B programming variables
-suggested:           A * B;
-why?
If you mean to write A; B; and forget the ";"  you get a product.
we will maintain  x^2y^3z^4 (for indeterminates)
======================================================================
NEW/UPDATED PACKAGES:

* matrixmormalform  -  Smith Normal Form for matrices over PIDs
[more robust]

* control           -  Geometric Control Theory
[new]

```

## CoCoA 4.5.1

```-- added: AffHilbertSeries for non-homogenous input
-- added: warning when HilbertSeries is called on non-homogenous input

-- fixed: buglets in the manual
-- fixed: Radical for non-homogeneous input

-- changed: SmoothFactor now requires second arg to be positive.

-- big big integers: now you can compute  FloatStr(Fact(10^7));
[GMP compiled with "no-alloca"]

---- User Interfaces: ....----------------------------------------

Updated EmacsUI:
- "Open Recent" in "File" menu
- show-paren-mode: highlight region between parenthesis
and new default settings for non-expert installation (MacOSX and MSWindows)
- C-c, C-v, etc bindings
- TAB for completion (toggle)

Fixed GUI: now communicates with CoCoAServer
```

## CoCoA 4.5

```-- Communication with CoCoALib-0.94 via CoCoAServer

-- Ext, Depth, Presentation have been improved
-- BettiDiagram -- a "Macaulay style" Betti numbers diagram
-- BettiMatrix  -- a "matrix style" Betti numbers diagram

-- a bit more technical: customizable port for socket communications

```

## CoCoA 4.4

```All \$cocoa/* packages have been renamed to remove "cocoa/".

GBasis5, ReducedGBasis5, LT5, ...  -- calls to the CoCoALib server

The NUL character is silently ignored in string constants.
The character with code 255 is handled correctly in string constants.

ClearDenom  -- clear common denominator of a poly with rational coeffs
NumContent  -- numerical content of a poly with integer coeffs

IsPPrime    --
NextPPrime  -- these were added to allow an RSA demo, might be useful anyway.
PowerMod    --

GCDFreeBasis       -- compute a GCD free basis for integers
RefineGCDFreeBasis -- refine a GCD free basis of integers
FactorMultiplicity -- count how many times a factor divides a given integer

LinearSimplify  -- find a simplifying linear substitution for a univariate polynomial
SmoothFactor    -- find small prime factors of an integer

OpenSocket  -- added to facilitate intercommunication with CoCoALib server

Fixed a bug in the factorizer which could cause a crash in rare cases.

Ext, Depth, Presentation... -- the functions of ext.cpkg are better documented
-- and directly accessible (i.e. without "Ext." prefix)

IsTermOrdering, IsPositiveGrading -- tests on matrices

PositiveGrading4, HilbertSeriesMultiDeg -- work around for the limitation
-- on multigradings

RegularityIndex -- regularity index of a Hilbert Function

IsDefined -- the function "Defined" has been renamed with the bool prefix "Is"

PrintBettiDiagram -- a "Macaulay style" Betti numbers diagram

*  the official packages which used to be in packages/cocoa/
are in packages/ to simplify their use

NEW/UPDATED PACKAGES:

* \$combinatoria -- new function Permutations(L)

* \$cocoa5 -- calls to the CoCoA-5 C++ library

* \$contrib/CantStop -- the first game in CoCoA ;-)
[rules at http://www.boardgamegeek.com/viewitem.php3?gameid=41]
```

## CoCoA 4.4 Pre-release 1

```GBasis5, ReducedGBasis5, LT5, ...  -- calls to the CoCoA5Server

IsPPrime    --
NextPPrime  -- these were added to allow an RSA demo, might be useful anyway.
PowerMod    --

GCDFreeBasis       --
RefineGCDFreeBasis -- these were added to support LinearSimplify
FactorMultiplicity --

LinearSimplify

OpenSocket  -- added to facilitate intercommunication with CoCoALib server

Fixed a bug in the factorizer which could cause a crash in rare cases.

*  the official packages which used to be in packages/cocoa/
are in packages/ to simplify their use:
All \$cocoa/* packages have been renamed to remove "cocoa/".

NEW/UPDATED PACKAGES:

* \$combinatoria -- new function Permutations(L)

* \$cocoa5 -- calls to the CoCoA-5 C++ library

* \$contrib/CantStop -- the first game in CoCoA ;-)
[rules at http://www.boardgamegeek.com/viewitem.php3?gameid=41]
```

## CoCoA 4.3

This version of CoCoA is largely a consolidation of version 4.2. A number of bugs and inconsistencies have been corrected, with improvements to efficiency in certain cases. This new release should be more robust, and more helpful when an error occurs.

Main new features:

• The names and location of all CoCoA packages have been systematically changed:
• CoCoA packages now have names ending in .cpkg (this to avoid some difficulties on MacOS X);
• the directories containing the packages are now packages/cocoa and packages/contrib.
• Predefined aliases for all packages (type Aliases(); in CoCoA).
• NEW/UPDATED PACKAGES:
• \$cocoa/RealRoots for computing isolating intervals of real roots.
• \$cocoa/approx for finding simple approximations to rationals.
• \$cocoa/combinatoria a few assorted "combinatorial" functions.
• \$contrib/conductor for computing the conductor sequence of points.
• \$contrib/matrixnormafform for computing Smith normal form.
• NEW FUNCTIONS: (for details, see the corresponding entry in online help)
• StarPrintFold like StarPrint but with a specified line length limit
• Iroot compute integer approximations to square roots, cube roots, etc.
• ILogBase compute integer approximation to a logarithm
• RealRoots, RealRootRefine, RootBound determine isolating intervals for the real roots of a polynomial, refine such an interval, bound the magnitudes of the roots.
• FloatApprox, CFApprox, CFApproximants, ContFrac functions for finding "simple" rational numbers which approximate a given number
• DecimalStr print a fraction as a decimal (without exponent notation)
• PoincareShifts compute Hilbert-Poincare series for a module with shifts
• HilbertBasis computes a Hilbert basis for a submonoid of N^k
• LinKerModP computes the kernel of a matrix assuming its entries are coefficients modulo the current characteristic
• Subsets produce a list of all subsets, or just those of given cardinality
• Partitions list all integer partitions
• Gin compute the generic initial ideal of an ideal (probabilistic)
• IsStable, IsStronglyStable, IsLexSegment check whether a monomial ideal is stable/stronglystable/lexsegment
• PrimaryDecomposition compute the primary decomposition ONLY for squarefree monomial ideals
• Some existing functions have been usefully extended or improved:
• Toric for input with negative entries
• EvalHilbertFn for non-standard gradings over Z
• Sum a new version, usually faster than the old version.

## CoCoALib 0.0

C++ library open to alpha testers

## CoCoA 4.2

Main new features:

• NEW/UPDATED PACKAGES:
• \$contrib/ext computes Ext, presentations, and depth
• \$contrib/invariants computes homogeneous generators for an algebra of invariants, tests invariance of a polynomial
• All contributed packages have been moved: the package name no longer includes the name(s) of the author(s).
• The contributed packages thmproving and typevectors have been properly incorporated into CoCoA.
• NEW FUNCTIONS: (for details, see the corresponding entry in online help)
• ?keyword and ??keyword new shorthand for accessing the CoCoA on-line manual
• MapDown(F) convert a polynomial to a coefficient, or give an error if the polynomial is not constant.
• Mod2Rat(R, M, Q) convert a modular number to a rational using the algorithm of Wang, Guy and Davenport.

## CoCoA 4.1

Main new features:
• Approximations (FloatStr, MantissaAndExponent, Isqrt);
• flexible/extended ring change (BringIn, QZP, ZPQ);
• QuotientBasis; Discriminant; GetErrMesg;
• new packages from contributors (thmproving, typevectors).
• Improved ideals of multiple points;
• improved graphical interface;
• improved Emacs interface.

## CoCoA 3

settles down and becomes

## CoCoA 4

(July 2000)
Main new features:
• Unified graphical interface for Windows and Linux (hopefully soon for Macintosh too);
• Ideals of multiple points;
• Improved Emacs interface.

## CoCoA 3.7

Main new features:
• Multivariate factorization over the integers;
• utility functions for modules/vectors (IsTerm, LM, LPP, LPos, Monomials/IsToPos..);
• faster computation of operations on ideals (intersections, saturations,...);
• faster computation of the determinant of matrices with integer entries
• new packages from contributors (algmorph, galois).

## CoCoA 3.6

Main new features:
• a new package for computations with ideals of points;
• faster computation of Hilbert functions and Poincare series (the POINCARE panel is now unnecessary and so has been disabled);
• a new version of the package for computing radicals of ideals (which now works in greater generality);
• the possibility to have a system-wide Unix/Linux installation.

## CoCoA 3.5

Main new features:
• improvement of CoCoAL language;
• new memory management (simpler way to access variables of different rings);
• autoloading and autoinitializing of packages;
• univariate factorization over Z, Q, and Z/pZ for p prime;
• an updated online help system and an html manual;
• new packages from contributors (integer programming, special varieties, radical).

## CoCoA 3.4

Main new features:
• ring maps;
• improvement of CoCoAL language;
• univariate factorization over Z;
• computation of toric ideals;
• online help.
Started mirroring of CoCoA at Reed College, Portland, Oregon (US).

## CoCoA 3.3

Main new features:
• interactive Gröbner framework;
• new algorithms for minimal free resolutions;
• packages;
• new I/O management (devices).
Started mirroring of CoCoA at Regensburg (Germany).

## CoCoA 3.0b

First distributed release (at the COCOA IV Meeting, Genova).

### 1993

Antonio Capani joins Gianfranco Niesi in the design and the implementation of a new project: CoCoA 3.
CoCoA 3 is written in C language and is designed to offer:
• portability (90% of the system is independent of the platform)
• programmability (CoCoAL language)
• arbitrary precision for integer and rational numbers

A full description of the architecture of CoCoA 3 is presented in the Capani's Ph.D. Thesis (gzipped postscript format).

### 1988-1993

L. Robbiano coordinates the integration of the two projects into a single project: CoCoA. First release (COCOA II Meeting, Genova) of CoCoA developed by A. Giovini and G. Niesi in Pascal language. Initially the system was running only on Macintosh. Then it was ported to PC's by E. Armando who did some work on a second release of the system.

### 1987

Start of two small projects due to A. Giovini and G. Niesi.