## All Completed Tasks new on redmine (Task Table)

Tasks we believe to have been completed are moved from the table to here.
The dates are only approximate and this table is updated less often than it should be (too much work on CoCoALib ;-).

2006 | 2007 | 2008 | 2009 | 2010 | 2011 | 2012 | 2013 | 2014
--- | --- | --- | --- | --- | --- | --- | --- | ---

## 2014

2014-01 CoCoA5 language We shall need a new parser (and interpreter) for CoCoA 5. Much of the design of the new language has already been completed, and a late prototype of the new lexer already exists. The new parser and interpreter are now at first prototype (i.e. stage (2abc)). This task should split into several more focussed smaller tasks. Roughly the recent news are:

- design of the language, problems about global variables, ....
- August 2010: prototype GUI/IDE with debugger, portability.
- September 2010: polynomial rings
- October 2010: functions returning lists
- November 2010: functions on rings and RingElems
- December 2010: tested and ported functions on lists from cocoa4 packages
- January 2011: homomorphisms
- February 2011: matrices

See more at CoCoALib-functions.html Abbott, Bigatti, Lagorio (+Figari)

## 2012

2012-03-16 NumTheory file names After renaming ZZ/QQ to BigInt/BigRat (so that ZZ/QQ are reserved for the corresponding rings) it no longer makes sense for `NumTheoryQQ` to have the QQ suffix. Find a better name for it, and perhaps for `NumTheory` too. Abbott

2012-02 Rename "RingZ/RingQ" to "RingZZ/RingQQ"? Since we use ZZ/QQ in CoCoA-5, it would make sense for the fns `RingZ/RingQ` to be called `RingZZ/RingQQ` as this is more coherent. Decide and, if favourable, implement. Time est.: 2 days. Abbott+Bigatti

2012-02 Rename "ZZ/QQ" into "BigInt/BigRat" There is a name collision between cocoalib ZZ, type name for big integers, and cocoa ZZ, the ring of integers; the same occurs for QQ. It took a long time to decide the new names, and the decision is for BigInt and BigRat to replace ZZ and QQ in cocoalib. Many consequential changes. Try using GMPXX implementation for BigInt? Abbott+Bigatti

## 2011

2011-11 Rename "MachineInteger" into "MachineInt" Choosing BigInt as the new name for the class ZZ suggests to change all classes and functions with "Integer" into "Int"... hidden surprises? We hope not.. Abbott

2011-08-03 DecimalStr New fn: `DecimalStr` with slightly cleaner semantics than the one implemented in CoCoA-4. Abbott

2011-08-02 Decimal conversion New fns: `MantissaAndExponent` and `FloatStr`. Abbott

2011-07-26 Normaliz update Visit to Osnabrueck: developing new structure for Normaliz and updated integration into CoCoALib and CoCoA-5 Abbott + Bigatti + Bruns + Soeger

2011-07-06 DateTime New function `DateTime(date, time)` storing the date and time in format yyyymmdd, hhmmss. Abbott + Bigatti

2011-05-17 Task Table: conversion into XML The HTML version of the task table was too tedious to update. The conversion into XML (with C++ code to create the HTML pages) should encourage us to update it more frequently making the whole lot more meaningful. Bigatti

2011-05-09 Integration of C code for Toric Ideals This implementation is NOT ROBUST and NOT THREAD-SAFE, but it works (needed for the CoCoASchool) Bigatti

2011-05-03 Renamed RandomBitStream to RandomBoolStream New, clearer name for the class of objects which generate random booleans. Abbott

2011-05-03 New RandomSource class New class of objects for generating random values of 3 types (bool, long, and ZZ). Abbott

2011-05-03 New Makefile target "veryclean" All Makefiles now offer two targets for cleaning up: `clean` and `veryclean`. Abbott

2011-04-22 Multigraded Hilbert Series And related work for CoCoASchool. Still needs proper implementation with inheritance. Bigatti

2011-04-10 CoCoA5 manual The manual for cocoa5 will still use the CoCoAHelp.xml file and structure. The html and the latex version will use the same xsl code, and the online version is treated by ad-hoc code in CoCoA-5: OnlineHelp.[HC]. This has survived for long enough with just minor improvement and no obvious design holes. So I consider it done! Bigatti

2011-03-30 all machine integers to long All all related work Abbott + Bigatti

2011-03-30 ExternalLibs-GSL for numerical computations Simoes + Bigatti

2011-01-28 Printing Polynomials First extensive testing of printing polynomials in several polynomial rings highlighted missing "style improvements". Improved, added test-output, updated documentation (in CoCoAReports) Bigatti

2011-01-19 lcm Implemented `lcm` so that it exists whenever `gcd` exists. Ported to cocoa-5. Abbott + Bigatti

## 2010

2010-12-15 Examples and tests use cout/cerr Example programs and tests now use the standard C++ iostreams (rather than GlobalOutput and so on). This change makes the code easier to understand, and prepares the way for moving GlobalOutput etc into the server directory. Abbott

2010-11-11 GlobalManager incorporates GMPMemMgr GlobalManager significantly revised. It now creates GMPAllocator internally (if told to do so). New simpler interface for ctor of GlobalManager. Updated documentation accordingly. Abbott

2010-10-29 Memory leak on test-hilbert1 After the recent improvement of GlobalManager and Reference Counting a sort of memory leak resulted in test-hilbert1: it was the global variable with precomputed powers of polynomials. Bigatti

2010-10-12 Integration with Normaliz Normaliz is now designed as a C++ library. It is still in a transition phase, but the foundations are set! Fruits of a 3 week visit in Genova of Christof Söger. Abbott + Bigatti + Söger

2010-10-08 Better Makefiles Improved various Makefiles: they work better with "-j" flag. Thanks to Christof Söger for his help. Abbott

2010-10-06 Exception safety Fixed subtle exception-safety bug in all ring and PPMonoid ctors. Abbott

2010-07-09 PPMonoid homomorphisms Implement homomorphisms for PPMonoids; first very simplistic implementation. Abbott

2010-06-29 Generators for random ZZs Following the style of `RandomLongStream` make a class for generators of random ZZs. Abbott

2010-03-22 New version 0.9937 New version to signal the fixing of many minor bug and the embarrassing bug in subtraction of a machine integer from a `ZZ`. Upgrading strongly recommended. Abbott

2010-03-22 Tests and bug fixes for ZZ Added tests for `ZZ`. Fixed several bugs which were discovered. Abbott

2010-03-22 Add iterator classes for continued fractions Two new classes: one for producing the partial quotient, the for producing the convergents. I've preferred simplicity of ultimate speed. Abbott

2010-03-18 Add ctors for ZZ and QQ from a string Done. Abbott

2010-03-18 Example using `monomial` Added ex-PolyRing2.C showing how to write a simple function to pass exponent vectors to the function monomial. This way looks more natural than calling power many times when writing complicated power-products. Bigatti

2010-03-18 Rational coeffs in `monomial`, also for principal ideals Added new pseudo-ctors for monomials which accept rational coefficients. Similarly for principal ideals. Abbott

2010-03-11 index.html for examples directory Automatic generation of examples/index.html with description of examples. (also to be loaded on cocoalib web page examples/index.html) Bigatti

2010-03-10 Revised CoCoALib build system The `configure` script now works better, and will get some compilation flags automatically from the GMP header file. Solved a problem about GMP version number (on Werner's new computer). Abbott

2010-03-05 New pseudo-ctors for polynomial rings Added new pseudo-ctors for polynomial rings which accept `PPOrderingCtor` values; this makes it easier for the user to specify the ordering. Abbott

2010-03-05 Multiplicative Order Modulo an Integer Added new function to `NumTheory` for computing the order of an element in the multiplicative group of coprime residues modulo an integer. Abbott

2010-02-15 Random machine integers Added new class `RandomLongStream` to represent generators of random machine integers (in a given range). Abbott

2010-02-10 Revised CoCoALib build system The `configure` script now works better, and will get some compilation flags automatically from the GMP header file. Also makes it relatively to specify a specific compiler and/or compilation flags. Abbott

2010-02-05 New version 0.9936 New version to mark the inclusion of many special functions for monomial ideals. Many thanks to Eduardo and the participants at the workshop in Ortigosa/Logroño. Bigatti

2010-01-20 New version 0.9935 New version to "celebrate" finally completing the update of twin floats (famous last words?) Abbott

2010-01-20 RingTwinFloat theory and implementation Updated twin float implementation in accordance with revised theoretical ideas. Abbott

## 2009

2009-12-29 ZZ max/min bug Removed the proxy class `ZZ::rtn` which caused a SEGV bug (see `test-bug4.C`). May lead to poor performance for arithmetic on ZZ values. Abbott

2009-12-23 Further refinement to conversion functions: `NumericCast` Added new conversion function `NumericCast`. This is just a placeholder for the corresponding feature in the BOOST library. Also added two new conversions from QQ to machine integers. Abbott

2009-12-11 New version 0.9934 New version because changes to `convert` are not backward compatible. Abbott

2009-12-11 Rename the function `convert` into `IsConvertible` The new name gives a clearer indication of what it does. Introduced a procedure called `convert` which throws in case of failure; there is a new error `ERR::BadConvert` for these failing cases. Abbott

2009-12-03 Rename EFGModule into FGModule? The emphasis on the word "effectively" seems useless here. When an object name suggests a property that property is effective. Abbott

2009-10-29 New version 0.9933 A new version number because the handshaking introduced in the CoCoAServer is not backward compatible (with CoCoA 4.7.5 or earlier). Abbott

2009-10-29 Implement proper handshake at end of session CoCoA4-CoCoAServer Modified CoCoAServer and the communications part of CoCoA4 so that they effect a proper handshake at the end of the session. This seems to solve the (intermittent) problems observed on some Linux boxes (where a race condition could let the socket die too early). Abbott

2009-10-28 Convert sugar into inheritance classes There are different kinds of sugar (StdDeg, wdeg, saturating,..): an abstract class representing gives clean code for the reduction process, and possibly also to the GroebnerMill. Bigatti

2009-10-08 RoundDiv function for pairs of integers Added a new function for computing the rounded quotient of pairs of integers. Abbott

2009-09-28 Unique implementation for div and deriv Like for other functions, also `div` and `deriv` have a unique implementation in SparsePolyRing.C instead of 3 copies in the DistrMPolyXX.C files. Bigatti

2009-09-22 IsHomog wrt first rows of weight Now we have IsHomogPartial and CmpWDegPartial considering the first i rows of weights (with i <= GradingDim) Bigatti

2009-07-30 Constructors for ideals We used to have `ideal(ring), ideal(ring, RingElem), ideal(ring, vector)`. Now we have other nice constructors `ideal(RingElem), ideal(vector)` the last returns en error when vector is empty. `ideal(RingElem, RingElem), ...` up to 4 RingElems Bigatti

2009-07-15 Round, floor, ceiling Make ordered rings offer round, floor & ceiling functions (since these cannot be implemented efficiently using the existing interface). This was actually completed some time ago (but I forgot to update the task table). Abbott

2009-07-08 Improved QQ Improved the QQ implementation: added functions `floor` and `ceil`. Corrected the embedding of QQ values into RingTwinFloat. Added `ex-QQ1` example program. Abbott

2009-07-02 New Version Made version 0.9931 in recognition of the substantial changes since the previous version (see below). Abbott

2009-07-02 New class for rationals Added the new class `QQ` for representing rational numbers. There are some basic arithmetic operations too. Abbott

2009-07-02 Improved NumTheory Varius functions in the recent NumTheory file have been improved: e.g. better interface, fewer bugs, clearer documentation. Thanks to the participants of the recent CoCoA School in Barcelona whose opinions help answer some philosophical design questions. Abbott

2009-06-05 New Version Made version 0.9930 in recognition of the substantial changes since the previous version. Abbott

2009-06-05 Basic Number Theory Functions Basic number theory functions (such as `gcd` and `lcm`) have been put together in a new file (namely `NumTheory.C`); some were simply moved from `ZZ.C` while others are new. The function signatures have been made more coherent, and more complete (i.e.allowing machine integers and ZZs to be used interchangeably). The `IsPrime` function now works over a wider range. `IsPPrime` has been renamed to `IsProbPrime` as the new name is more meaningful and memorable. Added several new functions: `EulerPhi`, `PrimitiveRoot`, `SmoothFactor` and `factor`. Added a new template class `factorization` to hold the results of factorizations. The code should also work correctly on both 32 and 64 bit computers (but in fact does not, sigh). Abbott

2009-05-20 Improved printing for residues (in quotients of Z) There is now a global option for specifying whether elements of a quotient of ZZ are printed as least non-negative residues or as least magnitude residues. The default is least magnitude (a change from the previous deault behaviour). The residues are now always printed without brackets -- previously brackets were used in some cases and not in others. Abbott+Bigatti

2009-05-20 Faster Makefiles Modified the Makefiles to use the archiver `ar` in a more economical manner; this make partial recompilation usefully faster. The Makefiles have been cleaned/improved as well. Abbott

2009-02-20 Documentation converted to txt2tags CoCoALib documentation is written in pure text. Using txt2tags we can keep it clean/readable while allowing pretty formatting and linking into HTML and TeX. Proper polishing will take some time. Bigatti

2009-02-13 Better matrix examples The example ex-matrix1.C has been reorganized and extended with examples for (Const)MatrixView Abbott+Bigatti

2009-02-11 `configure` arguments Version 0.9928. (1) Configuration for optimization/debugging using `--flags=ARG`. (2) Configuration for linking frobby using `--with-libfrobby=ARG` and added tests (just to check the linking has been successful) in cocoalib and cocoa4. Abbott+Bigatti

2009-02-09 New: abstract class for sugar Version 0.9927. First prototype for abstract class for sugar. Still unused, but makefile, dependencies and library.H had to be changed. Bigatti

2009-01-30 Enum instead of bool arguments in GReductor GReductor constructor had many boolean arguments: they have been converted into more meaningful "enum"s. Bigatti, Caboara

2009-01-30 Frobby integration Version 0.9926. First check-in for Frobby files. Configuration process not properly defined yet, but all code is in the right place and compilation flag is set. Makefile, dependencies and library.H had to be changed. Bigatti, Roune

2009-01-14 Improve configure script Configure behaves badly when gcc exists but g++ does not. Fix the script so that it works gracefully in both cases. One or two problems still remain (e.g. 64-bit on Mac G5) Abbott

## 2008

2008-12-17 Machine integers in place of RingElems Now using `MachineInteger` type whenever a machine integer value is used in place of `RingElem`. This avoids nasty surprises when C++ silently converts signed values into unsigned (or vice versa). New version 0.9925 to signal this wide-ranging change. Abbott

2008-12-16 Makefiles version 0.9924. Changed all Makefiles for compatibility with Solaris make which has no `-C` option: `make -C dir blah` now is `(cd dir; make blah)` [Thanks to Paul Whitener for testing on Solaris] Bigatti

2008-12-11 Revised symbol Now using `MachineInteger` type in ctors to specify the values of symbol indexes (but we check that the values fit into a `long`). Corrected two bugs in SymbolRange (an undetected overflow and an off-by-1 error). This improvement needed the update to `MachineInteger` values. Abbott

2008-12-11 Updated MachineInteger Revised `MachineInteger`. Fixed a bug, and added the new function `IsSignedLong` which simplifies use of `MachineInteger` values. Abbott

2008-11-24 Reorganized SOI/NBM, server changed too SOI/NBM now reside in their own separate file. Implementation has been tidied considerably, and enjoys a better structured organization. Each algorithm now offers three coherent interfaces, while the actual work is done by a single implementation of each underlying algorithm. Abbott

2008-11-24 Preprocessing is now rational, server changed too The preprocessing algorithms are now rational, so give exact results (rather than the rational aproximations produced when all input data were converted into `double`s). The speed of computation remains essentially unchanged. Abbott

2008-11-18 Fixed ideal inheritance code for RingWeyl version 0.9922. The missing ideal constructor in RingWeyl caused the ideal to be generated by the default constructor in SparsePolyRing (the code is identical). So the ideal did not call the specific RingWeyl::ideal operations. Now test-RingWeyl1 checks that 1 is in GBasis(ideal(x, dx)). Bigatti

2008-10-08 Error Codes version 0.9921. Error messages need to be expressive, but also short. To help non-english speakers, each error should produce an alphanumeric key/code which can be used to search in a manual of errors. We want to create an "index" of all coded errors with a more verbose explanation. Possibly it should also include some information about the most common occurences of a given error and some suggestions for debugging and/or fixing it. See CoCoAErrorCodes.html: CoCoA web page or local link in `doc/`.
Moreover the way to check the type of error in an ErrorInfo object has been changed (and herein lies the backward incompatibility). The new way should be simpler to use. Abbott

2008-09-22 Updated communication with CoCoA-4 version 0.9920. cocoa-4 and CoCoAServer communication has changed (you need the new cocoa5.cpkg for CoCoA-4): OperationCommunication allows variable number of arguments and sends the information to the server. So the function myReadArgs in RegisterServerOps.C now takes an extra argument, `NumArgs`. (added function linkability for the Frobby library, updated code for TmpMayerVietorisTree, added NBM) Bigatti

2008-09-22 Updated communication with CoCoA-4 version 0.9918.

- moved code for monomial ideals into TmpPPVector
- added code TmpMayerVietorisTree for irreducible decomposition of monomial ideals (E. Saenz de Cabezon)
- added stable order ideal algorithm (SOI)
- fixed multivariate GCD, same as CoCoA-4.7.4
- exponent overflow (and underflow) should now be detected when CoCoA_DEBUG is set.

Abbott, Bigatti

2008-04-22 No more IsPositive/IsNegative for ZZ Removed these two silly little fns from ZZ.H. In compensation, the usual infix comparison operators now handle specially the case when one of the args is 0. Note that `MachineInteger` does still have `IsNegative`! Abbott

2008-04-21 A few more matrix ops The `adjoint` function now works over every ring (added AdjointByDetOfMinors). Added some matrix norm functions (Frobenius, 1-norm, infinity-norm). Added PseudoInverse for full rank matrices. Moved fns related to PPOrderings into the new file MatrixForOrdering.H/C. Abbott

2008-04-18 Major revision of matrices New version: 0.9917 Added the concept of "matrix views". This should offer a good compromise between flexibility and efficiency. Matrices now have a coherent design principle (which I hope is "correct"). Minor changes may still occur as experience with the new design grows. Abbott

2008-02-12 Improved configuration improved GMP identification during configuration Abbott

## 2007

2007-12-06 Bug in RingDenseUPolyCleanImpl ctor A very well hidden bug has been fixed in RingDenseUPolyCleanImpl ctor. This depends on the creation of RingElems (0, 1, x) before the completion of the constructor.... so, just remember this: myRefCountZero(); must be the last line, and RingElems and RingHoms must be just before it. Bigatti

2007-12-05 StdDeg, log, and exponent Main changes are:

- log/myLog(pp, i) renamed into exponent/myExponent(pp, i)
- log/myLog(poly, i) renamed into MaxExponent/myMaxExponent(poly, i)
- return type for StdDeg/myStdDeg changed from `size_t` to `long`

CoCoALib version is now 0.9913. Bigatti

2007-11-28 Fix Eval in CoCoA-4.7 The `Eval` tried to be too general and failed. Fixed the code and the manual -- should be mathematically cleaner too. Abbott+Bigatti

2007-10-30 Move to GPL-3+ All major parts of the source of CoCoALib are henceforth released under the GNU Public licence version 3 or later. Previously the code was distributed under version 2 only. CoCoALib version is now 0.9912. Abbott

2007-10-10 Hilbert-Poincare version 0.9911. Another step in rewriting the Hilbert-Poincare code:

- added TmpPoincare.[CH] using DenseUPolyRing instead of unipoly (the old C code)
- modified TmpHilbert.C so that it can call the new code (HilbertNumeratorMod) as well as the old one (HilbertNumeratorMod_C).

Bigatti

2007-09-28 CoCoA-4.7.2 Double quotes for string constants As part of the "gentle migration" to a better language, change all strings in CoCoA-4 packages to be between double quotes instead of single quotes. Check other places too (e.g. manual). Abbott

2007-09-25 CoCoAServer version handling The contructor for ServerOpBase requires a LibraryInfo. This way the server can print all libraries which have been linked in (or the list of all available operations with the library they are defined in) Bigatti

2007-09-24 Release of CoCoA-4.7.3 Bigatti

2007-06-06 Resuscitate RandomBitStream Make RandomBitStream use GMP random number generator (which in turn uses the Mersenne Twister). Turned out to be easier than expected, which probably means there's a nasty bug hidden away somewhere. Code still needs a little tidying. Not sure how efficient it is either. Version is now 0.9907. Abbott

2007-06-06 Check indet names properly It should not be possible to construct rings where a symbol has an ambiguous interpretation. Perhaps even the arity of a symbol should be fixed in a ring (i.e.you cannot have `x[1]` and `x[2,3]` in the same ring). One version of NewPolyRing_DMPI seems to check this correctly but other pseudo ctors do not. Abstract a checking fn, and rectify the implementations. Much the same applied to PPMonoids. Bigatti

2007-06-01 CoCoA-4.7.2 matrix facilities Added functions CharPoly, Eigenvectors, and modified Det to work better on matrices of rationals. Updated the manual accordingly. (implementation subsequently updated twice) Abbott

2007-05-31 CoCoA-4.7.2 string constants CoCoA4 now warns about obsolescent syntax for string constants inside single quotes. The idea is to encourage all CoCoA4 users to migrate to double quotes in readiness for the transition to CoCoA5. All CoCoA4 packages and tests have been brought up to date (easier said than done). Anna has updated the CoCoA4 manual entry about strings. Abbott+Bigatti

2007-05-31 Zero to power zero gives error Not sure what the code did before, but now any attempt to compute the zeroth power of zero gives error. Abbott

2007-05-30 Snapshot releases Bigatti has a script to create a snapshot release of CoCoALib-0.99xx. Then the table in the page ChangeLog-0.99 has to be manually updated with release notes. Bigatti

2007-05-29 CoCoA-4.7.2 matrix facilities Added functions `RowMat`, `ColMat`, `NumRows`, `NumCols`. Updated the manual. Bigatti

2007-05-23 Release CoCoALib-0.99 The first public version with the new code organization. To be synchronous with first public release of ApCoCoALib by Dortmund. Bigatti

2007-05-22 PushFront/PushBack Modify the interface to the `PushBack` family of functions to make it more friendly: now they all accept zero coefficients and make sanity checks in debugging mode. Bigatti

2007-05-21 CoCoALib-0.9904 in CVS New version to "celebrate" the new `MachineInteger` class. Also fixed a long languishing bug in the linear system solver. Abbott

2007-05-21 Proper handling of machine integers Added new class `MachineInteger` in an attempt to circumvent undesirable automatic type conversions between C++ machine integer types. Class `ZZ` modified accordingly to act as a "proving ground". Abbott

2007-05-03 New source code organization Implement the new code organization agreed upon Genoa. The configuration and make files still need some tweaking. Bigatti

2007-05-03 CoCoAServer Mark III Redesign the server to accommodate properly the new code organization. The new design must improve modularity still further, and add suitable safety checks. Getting the design right is of particular importance here. Bigatti+Abbott

2007-05-03 PPMonoidEvZZ A new PP monoid with essentially unlimited exponent size. It seems some people need it. The code is new, and largely unchecked, but does pass a non-trivial test. Abbott

2007-04-04 Release CoCoA-4.7 Of course, this is not strictly work on CoCoALib, but it is related. Many of the new features in CoCoALib-0.98 will become accessible through the new CoCoA-4.7. A modified "internal" version of CoCoA-4.6 already exists, but we still need to document and check everything thoroughly. Bigatti,Abshoff

2007-04-04 Release CoCoALib-0.9801 Conduct all the usual pre-release checks (portability, documentation, etc). Release CoCoALib-0.9801 (with revised server, and some minor bug fixes). Abbott,Bigatti,Abshoff

2007-04-04 Integrate Gin5 and preprocessing into C4.7 Modify server to offer Gin5 and preprocessing fns; extend C4.7 interface package. Add tests for new CoCoALib fns (preprocessing and Gin5). Update the C4.7 manual. Bigatti, Abbott

2007-04-04 Integrate numerical routines into C4.7 Complete integration of the "numerical" routines into the C4.7-CoCoALib interface: minor revisions to the CoCoALib server, minor revisions to the C4.7 packages. Produce a test suite for the numerical functions (NB aim is to verify our code, not the underlying floating point matrix library). Complete manual for the numerical fns; Abbott can help with the language polishing. Abshoff, Heldt

2007-03-31 CoCoA4 manual XML tags Conclude dictionary of XML tags for the CoCoA4 manual. Bigatti, Hiddemann

2007-04-04 Revise CoCoAServer CoCoAServer has been redesigned so that it is easier to add new functions. The new design has vastly improved modularity, and should "scale well". It should make it easier for non-members of the CoCoA Team to add their functions. While the new design is surely a great improvement over the old, evolutionary one, it cannot yet be regarded as stable. After more experience has been gained, the design will be reviewed. Bigatti

2007-03-21 New code management structure After a review of existing code management structure and some consequent difficulties, a new management structure has been drafted allowing greater autonomy (and hopefully reducing "email synchronization"). The transition to the new structure should occur immediately after Easter; we expect the draft to be approved shortly.

2007-03-19 CoCoA Meeting in Genoa Last week Genoa welcomed almost everyone involved in the project. It was the second intense week in a row: important meetings, presentations about the various aspects of the project, numerous mini-meetings to make good use of the physical proximity of collaborators, etc.

2007-03-09 CoCoALib-0.98 Released After a long week of very intensive work by Abbott, Bigatti, Abshoff and Heldt, the internal version of CoCoALib was brought up to a level which would permit public release. Everyone learned that eight days' notice is definitely not enough for a full public release. This task was actually completed almost on time (i.e. only about 7 hours late).

2007-03-08 Sugar strategy in Buchberger's algorithm The implementation of the sugar strategy was incomplete: certain cases could not be handled. A stop-gap solution has been found and implemented; now everything works properly. The whole structure will be revised at a later date.

2007-03-07 Remove magic numbers from MemPool The MemPool code contains some magic numbers (minimal loaf sizes). Abstracted these into named values, and improved documentation.

2007-03-07 Update coding conventions The CoCoALib Coding Conventions need to be improved after discussions during and after the minicourse in Dortmund. Especially guidelines for when to use `inline` and when not. The guidelines are now publicly accessible on WWW at Genova. A further update will occur after 0.98 has been released.

2007-03-07 Improved compilation flags Modified compilation flags (with `g++`): more stringent warnings, and position independent code (almost never harmful, and sometimes beneficial).

2007-03-06 Dynamic Buchberger Algm First prototype of the Dynamic Buchberger's Algorithm. Uses a new way to compute the pairs, but there is still a problem with the GM criteria. Added procedures for the lex comparison of Hilbert functions, for use in the Dynamic Buchberger's Algorithm. Implemented the simplex algorithm, stage one. This implementation uses the CoCoALib matrices. This implementation uses GMP integers, and is for use in the Dynamic Buchberger Algorithm, NOT for huge optimization problems. Max.

2007-03-06 Sugar and PosWDegTO in the case of PosWDegTO orderings, Grading dim is now set to 0 and the sugar is now used. This is the case for most operations. This fixes a bug, since we cannot (yet) use WSugar as it does not work in these cases. Max.

2007-03-06 Interreduced non-homog GBasis In non-homogenous case, a new final stage interreduces the resulting Groebner basis. Max.

2007-03-06 FacetComplex name clash The name `complex` clashes with a name from the standard library. Changed our name to `FacetComplex`. Max.

2007-03-06 Eliminate RingZ type There was a special C++ ring type for the ring of integers, viz. `RingZ`. It did not appear to be of any great use in CoCoALib, and removing it did not make any existing code significantly harder to read/comprehend. Combined with making RingZ a global value, the updated code actually becomes simpler and more natural.

2007-03-06 Unique ring of integers After due deliberation we decided that Z, the ring of integers, and Q, the field of rationals should be unique "pre-existing" structures in the CoCoALib C++ run-time environment. This will make life rather easier (and more natural) for users of the library. Rather than use an ad hoc technique for managing these global values, we designed and implemented a coherent scheme for managing them (see next task).

2007-03-06 Management of Global Values A consequence of deciding to make the ring of integers a global value was the need to manage such a global value properly. The tricky part was ensuring the proper destruction of RingZ before `main` exits. Recall that C++ normally destroys globals after main has completed, and that the order of destruction cannot easily be governed; destroying values in the wrong order can cause to the program to crash just before it terminates. Another advantage of forcing destruction before `main` exits is that it makes debugging very much simpler. And of course it is simply good manners to clean up properly at the end of the program.

2007-03-05 Fix test-factor1 Randomization means that `test-factor1` can appear to fail, though it is behaving correctly. Fixed it so that the random effects cannot affect the validity. Several other tests were cleaned up too.

2007-03-05 Remove "New" Prefix for some homomorphisms The `New` prefix on some homomorphism pseudo-constructors is not useful and reduces readability of code using them. Change the names of the pseudo-constructors to eliminate the prefix, and ensuring that the resulting code will be easily readable.

2007-03-05 Canonical Homomorphisms Implement `CanonicalHom` which allows easy creation of certain canonical homomorphisms (and hopefully more readable code). Document clearly which cases are covered by `CanonicalHom`.

2007-02-27 Printing for DistrMPolyXXX objects The three DistrMPolyXXX implementations repeat virtually identical code for printing out the polynomials. This code could be moved up to SparsePolyRing so that there is only a single copy BUT then DistrMPoly objects would no longer be directly printable (for debugging). Perhaps this would not matter if they were not proper objects...?

2007-02-20 Index of examples The "examples/" directory needs an index page to help find and remind what the various examples illustrate. There are two levels of index: a brief "one-line" summary for each example, and a fuller description.

2007-02-08 Generate BuildInfo.C automatically Rather than generate BuildInfo.C automatically (which was deemed to be a bit too dynamic), an equivalent effect can be achieved simply by using special compilation flags for that one file. This removes the need for the ugly and complicated CXXFLAGS which we previously used for all files. In fact, CXXFLAGS was simplified further than expected: all the tricky stuff is concentrated inside the special case for BuildInfo.C. CoCoAServer.C needed some minor adjustment. A big benefit is that the command for compiling against the CoCoA library has become considerably simpler. Added a new example, updated the corresponding documentation.

2007-01-29 One line defns are obsolete Modify CoCoA4 so that one line fn defns produce an "obsolescent" warning, and replace all one line defns in the packages by proper fn defns.

2007-01-24 Unify three PolyRingHoms The implementations of the three PolyRingHoms (in the three different sort of SparsePolyRing) are virtually identical. Now we have polynomial iterators, it should be possibly to unify them into a single implementation in SparsePolyRingBase. Same thing for coeff embedding homs.

2007-01-18 Make TmpHilbertDir Make a separate directory for the Hilbert stuff. Perhaps following the scheme used for the factorizer code.

2007-01-16 Rename "raw" args Improve readability/comprehensibility of code by using "suggestive" names for fn args which are "raw" values. This conversion generally happens in parallel with other reviews of the code. It will eventually require a final "closing" assessment. While the task is simple, it is time-consuming to be sure that absolutely all changes have been effected. It does not seem possible to get the computer to check that the task is complete.

2007-01-15 SmartPtr in RingHom Use SmartPtrIRC in RingHom, probably as a data member. Was not as quick and simple as predicted, but did lead to an overhaul of the code (esp. regarding printing of homomorphisms).

2007-01-10 Use SmartPtrIRC in ring Put SmartPtrIRC in rings, modules; substitute ad hocreference counting with reuse of SmartPtrIRC.

2007-01-11 Clean includes in header files Sutter's coding conventions suggest using forward declarations instead of including header files. This makes (re)compilation faster, and expresses more clearly the true dependencies in the code. Task should take at most 1 week, unless more unpleasant surprises surface.

2007-01-11 Fix typedef ring The use of a typedef for [ring] causes trouble as a typedef cannot be forward declared as a class can. [ring] should become a trivial class forwarding all its operations to a SmartPtrIRC data member. Everything can be inline. Task should take at most 1 day.

2007-01-10 Attach old factorizer Attach old CoCoA4 factorizer to CoCoALib; mostly involves fiddling with makefiles and the "build system". A working factorizer was put in CVS for version 0.9713. This stopgap solution should be enough for a few months.

## 2006

2006-12-22 Minicourse Prepare CoCoALib minicourse (to be held in Dortmund); Bigatti might help. This task will occupy almost all of Abbott's time until the end of 2006.

2006-11-16 Migrate into SparsePolyRing The code for ideal in the multivariate polynomial rings is essentially repeated three times: simply copied for each of the specific ring implementations. This code should be migrated into SparsePolyRing, so that just a single copy exists. The migration should be possible, but this must be verified. It may also be possible for ideals in RingWeyl to be covered by this same migrated generic implementation -- again this must be assessed. Time estimate: 3-7 days.