[b5edd0] | 1 | @comment this file contains the list of new features and difference between Singular 3.* and Singular 4.* |
---|
| 2 | |
---|
| 3 | The purpose of this section is to describe new features and changes |
---|
[75f460] | 4 | between Singular 3-1-7 and Singular 4.* (formerly known as Spielwiese) both for developers |
---|
[03e4a6] | 5 | and Singular users. In what follows we will refer to the systems as Singular 3 and Singular 4. |
---|
[b5edd0] | 6 | |
---|
| 7 | @menu |
---|
[9dbaf34] | 8 | * Version schema for Singular:: |
---|
[b5edd0] | 9 | * Notes for Singular users:: |
---|
| 10 | * Notes for developers:: |
---|
| 11 | * Building Singular:: |
---|
| 12 | @end menu |
---|
| 13 | |
---|
[feb8e6] | 14 | @c --------------------------------------------------------------------------- |
---|
[75f460] | 15 | @node Version schema for Singular, Notes for Singular users, , Singular 3 and Singular 4 |
---|
[feb8e6] | 16 | @subsection Version schema for Singular |
---|
| 17 | @cindex Version schema for Singular |
---|
| 18 | @cindex Version number |
---|
| 19 | |
---|
[75f460] | 20 | @sc{Singular} version is of the form @code{a.b.c.d} which may also be written |
---|
[feb8e6] | 21 | as @code{a-b-c-d} where a,b,c and d are numbers: |
---|
| 22 | @itemize |
---|
[4c1c40] | 23 | @item a is changed with major, incompatible changes |
---|
| 24 | @item b is changed with incompatible changes (of some commands/libraries) |
---|
[feb8e6] | 25 | @item c is changed with compatible chnages (i.e. new commands, |
---|
| 26 | extended options, new algorithms, etc.) |
---|
| 27 | @item d is changed with each release (i.e. with bug fixes, etc.) |
---|
| 28 | @end itemize |
---|
| 29 | @sc{Singular} does also have "inofficiall" build orginating from |
---|
| 30 | a code version between "officiall" version: such builds display |
---|
[754f11] | 31 | "Development version a.b.c" in the header while "official" versions |
---|
| 32 | show "version a.b.c". Also the manual describes version a-b-c. |
---|
[feb8e6] | 33 | To get the complete version number, use |
---|
| 34 | @code{system("version");} or use @code{SINGULAR_VERSION} in C. |
---|
| 35 | |
---|
[b5edd0] | 36 | @c --------------------------------------------------------------------------- |
---|
[75f460] | 37 | @node Notes for Singular users, Notes for developers, Version schema for Singular, Singular 3 and Singular 4 |
---|
[b5edd0] | 38 | @subsection Notes for Singular users |
---|
| 39 | @cindex Notes for Singular users |
---|
| 40 | |
---|
[03e4a6] | 41 | @subsubheading Coefficient rings |
---|
| 42 | @cindex Coefficient rings |
---|
| 43 | |
---|
[75f460] | 44 | To allow for easy integration of new coefficient rings into Singular, the the way |
---|
[03e4a6] | 45 | coefficient rings are being handled has been redesigned. |
---|
| 46 | |
---|
| 47 | In general, the user syntax has not changed, however there are some changes in the behaviour of Singular: |
---|
[b5edd0] | 48 | |
---|
| 49 | @c table @asis |
---|
| 50 | @itemize @bullet |
---|
[76cb29] | 51 | @item setting @code{minpoly} results in changing the current coefficient domain |
---|
| 52 | and clears all previously defined varaiables of that ring |
---|
| 53 | |
---|
[03e4a6] | 54 | @item Minor changes in the output of coefficient ring description. Moreover the output of elements of certain rings has been improved (for example, reals). |
---|
| 55 | |
---|
| 56 | @item Algebraic and transcendental extensions of rationals and finite fields |
---|
| 57 | have been reimplemented. In particular, the heuristics for clearing denominators and factoring out content |
---|
| 58 | have been changed. In some cases this leads to a different, mathematically equivalent results of Groebner |
---|
| 59 | bases and related computations. For example a Groebner basis element may differ by a unit. |
---|
| 60 | |
---|
| 61 | @item Most noteably, due to the redesign of the coefficient rings, if the user sets the minimal polynomial |
---|
| 62 | all variables dependent on the current ring are deleted. |
---|
| 63 | |
---|
[b5edd0] | 64 | @end itemize |
---|
| 65 | @c @end table |
---|
| 66 | |
---|
| 67 | @subsubheading Ring-dependent options |
---|
| 68 | @cindex Ring-dependent options |
---|
| 69 | |
---|
[03e4a6] | 70 | Formally global Singular @ref{option} now belong to individual polynomial rings. This includes: |
---|
[b5edd0] | 71 | |
---|
| 72 | @c table @asis |
---|
| 73 | @itemize @bullet |
---|
[03e4a6] | 74 | @item @code{intStrategy} |
---|
[7d6b46] | 75 | @item @code{redTail} |
---|
| 76 | @item @code{redThrough} |
---|
[b5edd0] | 77 | @end itemize |
---|
| 78 | @c @end table |
---|
| 79 | |
---|
[7d6b46] | 80 | Also the following settings now belong to individual (currently active) polynomial rings: |
---|
| 81 | |
---|
| 82 | @c @item @code{degBound} |
---|
| 83 | @c @item @code{multBound} |
---|
| 84 | |
---|
| 85 | @c table @asis |
---|
| 86 | @itemize @bullet |
---|
| 87 | @item @code{short} |
---|
| 88 | @item @code{minpoly} |
---|
| 89 | @item @code{noether} |
---|
| 90 | @end itemize |
---|
| 91 | @c @end table |
---|
| 92 | |
---|
| 93 | |
---|
[03e4a6] | 94 | Hence setting these options only affects the current ring. Be aware of this |
---|
| 95 | when switching between different rings, since the options affect the |
---|
| 96 | result of various computations (in particular Groebner bases). |
---|
[b5edd0] | 97 | |
---|
[03e4a6] | 98 | @subsubheading New libraries depending on Singular 4 |
---|
| 99 | @cindex New libraries depending on Singular 4 |
---|
[b5edd0] | 100 | |
---|
[03e4a6] | 101 | In Singular 4 there several new features are implemented within a |
---|
[75f460] | 102 | dynamic module @code{syzextra.so}, not available in Singular 3. |
---|
[03e4a6] | 103 | It implements the low-level functions for Schreyer resolutions and many auxiliary functions. |
---|
[b7b51e5] | 104 | The following new libraries @ref{deRham_lib}, @ref{schreyer_lib} depend on it: |
---|
[b5edd0] | 105 | |
---|
| 106 | @c table @asis |
---|
| 107 | @itemize @bullet |
---|
[b7b51e5] | 108 | @item @ref{deRham_lib} - computes de Rham cohomology |
---|
[b5edd0] | 109 | @item @ref{schreyer_lib} - computes Schreyer resolution via several approaches. It also serves as a high-level wrapper to the dynamic module @code{syzextra.so} |
---|
| 110 | @end itemize |
---|
| 111 | @c @end table |
---|
| 112 | |
---|
[03e4a6] | 113 | @subsubheading Path names |
---|
| 114 | @cindex Path names |
---|
| 115 | |
---|
| 116 | @c table @asis |
---|
| 117 | @itemize @bullet |
---|
[75f460] | 118 | @item The tree structure of the binary Singular distribution has been changed. |
---|
[b3a87c6] | 119 | The typical tree now looks as show at @uref{https://github.com/Singular/Sources/wiki/Sw-tree} |
---|
[03e4a6] | 120 | |
---|
| 121 | @item Accordingly Singular search paths (where Singular searches for libraries, dynamic modules, etc.) have been changed. You can display them by calling Singular by @code{Singular -v}. |
---|
| 122 | |
---|
[96c5cb] | 123 | @item currently, multi-arch installations of Singular 4 aere not possible. |
---|
[03e4a6] | 124 | @end itemize |
---|
| 125 | @c @end table |
---|
| 126 | |
---|
| 127 | @subsubheading Library versioning |
---|
| 128 | @cindex Library versioning |
---|
| 129 | |
---|
[75f460] | 130 | Due to switching from Subversion to GIT revision control system for the Singular source code, |
---|
[4fb517c] | 131 | library version variables (displayed when loading a library) have changed. |
---|
[03e4a6] | 132 | |
---|
| 133 | |
---|
| 134 | @subsubheading New orderings for modules |
---|
| 135 | @cindex New orderings for modules |
---|
| 136 | |
---|
| 137 | The now can assign weights to module components, when defining a monomial ordering. For example |
---|
[76cb29] | 138 | @smallexample |
---|
| 139 | ring R = 0, (x,y,z), (am(1,2,3, 10,20,30,40), dp, C); |
---|
| 140 | deg(x*gen(1)); |
---|
[0641d2] | 141 | @expansion{} 11 |
---|
[76cb29] | 142 | @end smallexample |
---|
[03e4a6] | 143 | |
---|
[75f460] | 144 | will assign weights 1,2,3 to x,y,z respectively, and weights 10,20,30,40,0,0,... to |
---|
[03e4a6] | 145 | components of any free module defined over R. This ordering will first sort |
---|
[75f460] | 146 | by this weighted degree, then by dp on the ring monomials and then will give priority |
---|
[03e4a6] | 147 | to the large component index. |
---|
| 148 | |
---|
| 149 | @subsubheading Future benefits of Singular 4 |
---|
| 150 | @cindex Future benefits of Singular 4 |
---|
| 151 | |
---|
| 152 | The redesign of Singular will allow us to provide new features in the future, for example: |
---|
| 153 | |
---|
| 154 | @c table @asis |
---|
| 155 | @itemize @bullet |
---|
| 156 | @item Interpreter type for coefficient rings. |
---|
| 157 | @item User defined coefficient rings. |
---|
| 158 | @item Improved syntax for defining polynomial rings. |
---|
| 159 | @end itemize |
---|
| 160 | @c @end table |
---|
[b5edd0] | 161 | |
---|
| 162 | |
---|
| 163 | |
---|
| 164 | |
---|
| 165 | @c --------------------------------------------------------------------------- |
---|
[537c49] | 166 | @node Notes for developers, Building Singular, Notes for Singular users, Singular 3 and Singular 4 |
---|
[b5edd0] | 167 | @subsection Notes for developers |
---|
| 168 | @cindex Notes for developers |
---|
| 169 | |
---|
[03e4a6] | 170 | There has been an entensive process of refactoring, redesign and modularization |
---|
| 171 | of Singular to facilitate easier maintenance and future development: |
---|
[b5edd0] | 172 | |
---|
| 173 | @c table @asis |
---|
| 174 | @itemize @bullet |
---|
[03e4a6] | 175 | @item Build System : automake, libfac has been integrated into Factory |
---|
| 176 | @item Removed MP (Multi protocol) in favor of SSI links. |
---|
[75f460] | 177 | @item Separation/modularization into libraries and packages |
---|
[b5edd0] | 178 | @c add diagram as an image? |
---|
[03e4a6] | 179 | @item For easy integration of new coeffcient rings, |
---|
[75f460] | 180 | we defined a generic interface for coefficient |
---|
[03e4a6] | 181 | rings and a supporting framework for making them |
---|
| 182 | accessible to the user. |
---|
| 183 | |
---|
| 184 | In particular we have separated everything related to coeffcient rings into a separate library @code{libcoeffs}. |
---|
[cf214e8] | 185 | Dependency tree between restructured packages is show at @uref{http://www.singular.uni-kl.de/dox/singular.png} |
---|
[03e4a6] | 186 | |
---|
[8c704b] | 187 | In order to use @code{libSingular} as a C++ library, see @ref{libSingular}. |
---|
| 188 | |
---|
[b5edd0] | 189 | @end itemize |
---|
| 190 | @c @end table |
---|
| 191 | |
---|
| 192 | |
---|
[03e4a6] | 193 | |
---|
[7d6b46] | 194 | @c @subsubheading Changes to build system |
---|
| 195 | @c @cindex Changes to build system |
---|
| 196 | |
---|
[b5edd0] | 197 | |
---|
| 198 | @c --------------------------------------------------------------------------- |
---|
[537c49] | 199 | @node Building Singular, , Notes for developers, Singular 3 and Singular 4 |
---|
[b5edd0] | 200 | @subsection Building Singular |
---|
| 201 | @cindex Building Singular |
---|
| 202 | |
---|
[03e4a6] | 203 | The user can build and install Singular with the following standard UNIX-like procedure: |
---|
| 204 | |
---|
| 205 | @c table @asis |
---|
| 206 | @itemize @bullet |
---|
| 207 | @item Download and extract the latest official source package (.tar.gz). |
---|
| 208 | @item Run the configure script, for instance, @code{./configure}. |
---|
| 209 | @item Build Singular by running @code{make}. |
---|
| 210 | @item Install Singular by running @code{make install}. |
---|
| 211 | @end itemize |
---|
| 212 | @c @end table |
---|
| 213 | |
---|
| 214 | In contrast to Singular 3, there are now many more configuration options. |
---|
| 215 | |
---|
| 216 | All possible options for configure can be seen by running the configure script with |
---|
[75f460] | 217 | option @code{--help}. On a multicore compute consider running make with the |
---|
[03e4a6] | 218 | option @code{-f [cores]}. |
---|
| 219 | |
---|
[876c23] | 220 | @subsection Side-by-side installation |
---|
| 221 | |
---|
| 222 | Due to choosing paths according to FS standards it is no longer possible |
---|
| 223 | to have a side-by-side installation of different Singular versions or versions for different architectures. |
---|
[b5edd0] | 224 | @c --------------------------------------------------------------------------- |
---|