CoCoA System Computations in Commutative Algebra  
Home Page  CoCoA Release Notes

== A few new functions have been added: ==  MayerVietorisTreeN1 for monomial ideals (via CoCoAServer) From the paper: Anna M. Bigatti, Eduardo SaenzdeCabezon *(n1)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 CastelnuovoMumford 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. ==
== A few new functions have been added: ==  ApproxBBasis5 (Stable Order Ideal) for approximate points (via CoCoAServer) From the paper: John Abbott, Claudia Fassino, MariaLaura 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 powerproducts L it still returns the smallest Lexsegment 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)
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 cuttingedge 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.
While we are still working in preparation for CoCoA5, this release of CoCoA4 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: "oneline" function definitions will print out a warning (see below)  Warn about use of "End" instead of "EndIf", "EndDefine", ...
 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 CoCoA4!!!!! 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) ======================================================================
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 CoCoA5 (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 CoCoA4!!!!! 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]
 added: AffHilbertSeries for nonhomogenous input  added: warning when HilbertSeries is called on nonhomogenous input  fixed: buglets in the manual  fixed: Radical for nonhomogeneous input  changed: SmoothFactor now requires second arg to be positive.  big big integers: now you can compute FloatStr(Fact(10^7)); [GMP compiled with "noalloca"]  User Interfaces: .... Updated EmacsUI:  "Open Recent" in "File" menu  showparenmode: highlight region between parenthesis and new default settings for nonexpert installation (MacOSX and MSWindows)  Cc, Cv, etc bindings  TAB for completion (toggle) Fixed GUI: now communicates with CoCoAServer
 Communication with CoCoALib0.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
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 CoCoA5 C++ library * $contrib/CantStop  the first game in CoCoA ;) [rules at http://www.boardgamegeek.com/viewitem.php3?gameid=41]
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 CoCoA5 C++ library * $contrib/CantStop  the first game in CoCoA ;) [rules at http://www.boardgamegeek.com/viewitem.php3?gameid=41]
Main new features:
A full description of the architecture of CoCoA 3 is presented in the Capani's Ph.D. Thesis (gzipped postscript format).