# Difference between revisions of "History"

(converted stars into bullets, indenting and structure might need a little fixing up.) |
|||

Line 12: | Line 12: | ||

CoCoA 3 is written in C language and is designed to offer: | 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). | A full description of the architecture of CoCoA 3 is presented in the Capani's Ph.D. Thesis (gzipped postscript format). | ||

Line 32: | Line 32: | ||

Main new features: | 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). | Started mirroring of CoCoA at Regensburg (Germany). | ||

Line 43: | Line 43: | ||

Main new features: | 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). | Started mirroring of CoCoA at Reed College, Portland, Oregon (US). | ||

Line 55: | Line 55: | ||

Main new features: | 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). | |

Line 67: | Line 67: | ||

Main new features: | 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. | |

Line 78: | Line 78: | ||

Main new features: | 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). | |

− | |||

==July 2000== | ==July 2000== | ||

Line 92: | Line 91: | ||

Main new features: | Main new features: | ||

− | + | * Unified graphical interface for Windows and Linux (hopefully soon for Macintosh too); | |

− | + | * Ideals of multiple points; | |

− | + | * Improved Emacs interface. | |

− | |||

− | |||

==May 2001== | ==May 2001== | ||

Line 102: | Line 99: | ||

Main new features: | 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 ideals of multiple points; | ||

Line 121: | Line 118: | ||

# NEW/UPDATED PACKAGES: | # 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) | # 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. | |

==December 2003== | ==December 2003== | ||

Line 140: | Line 137: | ||

# The names and location of all CoCoA packages have been systematically changed: | # 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). | # Predefined aliases for all packages (type Aliases(); in CoCoA). | ||

# NEW/UPDATED PACKAGES: | # 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) | # 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: | # 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. | |

==January 2005== | ==January 2005== | ||

CoCoA 4.4 Pre-release 1 | CoCoA 4.4 Pre-release 1 | ||

− | GBasis5, ReducedGBasis5, LT5, ... -- calls to the CoCoA5Server | + | * GBasis5, ReducedGBasis5, LT5, ... -- calls to the CoCoA5Server |

− | + | * IsPPrime -- | |

− | IsPPrime -- | + | * NextPPrime -- these were added to allow an RSA demo, might be useful anyway. |

− | NextPPrime -- these were added to allow an RSA demo, might be useful anyway. | + | * PowerMod -- |

− | PowerMod -- | + | * GCDFreeBasis -- |

− | + | * RefineGCDFreeBasis -- these were added to support LinearSimplify | |

− | GCDFreeBasis -- | + | * FactorMultiplicity -- |

− | RefineGCDFreeBasis -- these were added to support LinearSimplify | + | * LinearSimplify |

− | FactorMultiplicity -- | + | * OpenSocket -- added to facilitate intercommunication with CoCoALib server |

− | + | * Fixed a bug in the factorizer which could cause a crash in rare cases. | |

− | LinearSimplify | + | * 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/"". |

− | |||

− | OpenSocket -- added to facilitate intercommunication with CoCoALib server | ||

− | |||

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

− | |||

− | |||

− | |||

− | |||

− | |||

NEW/UPDATED PACKAGES: | 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] | |

− | |||

− | |||

− | |||

==May 2005== | ==May 2005== | ||

CoCoA 4.4 | CoCoA 4.4 | ||

− | All $cocoa/* packages have been renamed to remove ""cocoa/"". | + | * All $cocoa/* packages have been renamed to remove ""cocoa/"". |

− | + | * GBasis5, ReducedGBasis5, LT5, ... -- calls to the CoCoALib server | |

− | 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 | |

− | The NUL character is silently ignored in string constants. | + | * NumContent -- numerical content of a poly with integer coeffs |

− | The character with code 255 is handled correctly in string constants. | + | * IsPPrime -- |

− | + | * NextPPrime -- these were added to allow an RSA demo, might be useful anyway. | |

− | ClearDenom -- clear common denominator of a poly with rational coeffs | + | * PowerMod -- |

− | NumContent -- numerical content of a poly with integer coeffs | + | * GCDFreeBasis -- compute a GCD free basis for integers |

− | + | * RefineGCDFreeBasis -- refine a GCD free basis of integers | |

− | IsPPrime -- | + | * FactorMultiplicity -- count how many times a factor divides a given integer |

− | NextPPrime -- these were added to allow an RSA demo, might be useful anyway. | + | * LinearSimplify -- find a simplifying linear substitution for a univariate polynomial |

− | PowerMod -- | + | * SmoothFactor -- find small prime factors of an integer |

− | + | * OpenSocket -- added to facilitate intercommunication with CoCoALib server | |

− | GCDFreeBasis -- compute a GCD free basis for integers | + | * Fixed a bug in the factorizer which could cause a crash in rare cases. |

− | RefineGCDFreeBasis -- refine a GCD free basis of integers | + | * Ext, Depth, Presentation... |

− | FactorMultiplicity -- count how many times a factor divides a given integer | + | ** the functions of ext.cpkg are better documented |

− | + | ** and directly accessible (i.e. without ""Ext."" prefix) | |

− | LinearSimplify -- find a simplifying linear substitution for a univariate polynomial | + | * IsTermOrdering, IsPositiveGrading -- tests on matrices |

− | SmoothFactor -- find small prime factors of an integer | + | * PositiveGrading4, HilbertSeriesMultiDeg |

− | + | ** work around for the limitation | |

− | OpenSocket -- added to facilitate intercommunication with CoCoALib server | + | ** on multigradings |

− | + | * RegularityIndex -- regularity index of a Hilbert Function | |

− | Fixed a bug in the factorizer which could cause a crash in rare cases. | + | * PrintBettiDiagram -- a ""Macaulay style"" Betti numbers diagram |

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

− | Ext, Depth, Presentation... | ||

− | |||

− | |||

− | IsTermOrdering, IsPositiveGrading -- tests on matrices | ||

− | |||

− | PositiveGrading4, HilbertSeriesMultiDeg | ||

− | |||

− | |||

− | RegularityIndex -- regularity index of a Hilbert Function | ||

− | |||

− | PrintBettiDiagram -- a ""Macaulay style"" Betti numbers diagram | ||

− | |||

− | * the official packages which used to be in packages/cocoa/ | ||

− | |||

NEW/UPDATED PACKAGES: | 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 ww.boardgamegeek.com] | |

− | |||

− | |||

− | |||

==ToDo== | ==ToDo== |

## Revision as of 13:30, 21 June 2005

This article is stub. more information should be added shortly.

## 1987

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

## 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.

## 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).

## 1995

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

## 1996

CoCoA 3.02b

## 1997

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).

## March 1998

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).

## July 1998

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).

## December 1998

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.

## June 1999

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).

## July 2000

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.

## May 2001

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.

## June 2003

CoCoALib 0.0 C++ library open to alpha testers August 2002 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.

## December 2003

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.

## January 2005

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]

## May 2005

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
- 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 ww.boardgamegeek.com

## ToDo

- add information about cocoa conferences and schools
- add information about developers of single versions
- add links
- write complete text