1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491 |
- % CALI user documentation
- % H.-G. Graebe | Univ. Leipzig | Version 2.1
- \documentstyle[12pt]{article}
- \date{Oct. 20, 1993}
- \textheight 21cm
- \textwidth 15cm
- \voffset -60pt
- \hoffset -45pt
- \newcommand{\gr}{Gr\"obner }
- \newcommand{\x}{{\bf x}}
- \newcommand{\ind}[1]{{\em #1}\index{#1}}
- \newcommand{\pbx}[1]{\mbox{}\hfill \parbox[t]{12cm}{#1} \pagebreak[3]}
- \newcommand{\nl}{\newline \hspace*{5mm}}
- %\makeindex
- \title{CALI\\[20pt] A REDUCE Package for \\
- Commutative Algebra \\Version 2.1}
- \author{
- Hans-Gert Gr\"abe \\[15pt]
- Universit\"at Leipzig\\
- Fachbereich Mathematik/Informatik \\
- Augustusplatz 10 -- 11\\
- 04109 Leipzig / Germany\\[20pt]
- email : graebe@informatik.uni-leipzig.d400.de}
- \begin{document}
- \maketitle
- \vfill
- Key words : \gr algorithms for ideals and modules, free resolution,
- local standard bases, Hilbert series, independent sets, primary
- decomposition, constructive commutative algebra
- \pagebreak
- \tableofcontents
- \pagebreak
- \section{Introduction}
- This package contains algorithms for computations in commutative
- algebra closely related to the \gr algorithm for ideals and modules.
- Its heart is a new implementation of the \gr algorithm\footnote{ The
- data representation even for polynomials is different from that given
- in the groebner package distributed with REDUCE (and rests on ideas
- used in the dipoly package)} that allows the computation of syzygies,
- too. This implementation is also applicable to submodules of free
- modules with generators represented as rows of a matrix.
- Moreover CALI contains facilities for local computations, using a
- modern implementation of Mora's standard basis algorithm, see
- \cite{MPT} and \cite{Gr23}, that works for arbitrary term orders.
- The full analogy between modules over the local ring \linebreak[1]
- $k[x_v:v\in H]_{\bf m}$ and homogeneous (in fact H-local) modules
- over $k[x_v:v\in H]$ is reflected through the switch
- \ind{noetherian}. Turn it on (\gr basis, the default) or off (local
- standard basis) to choose the right standard basis algorithm
- automatically.
- CALI extends also the restricted term order facilities of the
- groebner package, defining term orders by degree vector lists, and
- the rigid implementation of the sugar idea, by a more flexible
- \ind{ecart} vector, in particular useful for local computations, see
- \cite{Gr23}.
- \medskip
- The package was designed mainly as a symbolic mode programming
- environment extending the build-in facilities of REDUCE for the
- computational approach to problems arising naturally in commutative
- algebra. But an algebraic mode interface allows to access (in a more
- rigid frame) all important features implemented symbolically and thus
- should be favoured for short sample computations.
- On the other hand, tedious computations are strongly recommended to
- be done symbolically since this allows considerably more flexibility
- and avoids unnecessary translations of intermediate results from
- CALI's internal data representation to the algebraic mode and vice
- versa. Moreover, one can easily extend the package with new symbolic
- mode scripts, or do more difficult interactive computations. For all
- these purposes the symbolic mode interface offers substantially more
- facilities than the algebraic one.
- \medskip
- For a detailed description of special symbolic mode procedures one
- should consult the source text and the comments therein. In this
- manual we can give only a brief description of the main ideas
- incorporated into the package CALI. We concentrate on the data
- structure design and the description of the more advanced algorithms.
- For sample computations from several fields of commutative algebra
- the reader may consult also the {\em cali.tst} file.
- \medskip
- As main topics CALI contains facilities for
- \begin{itemize}
- \item defining rings, ideals and modules,
- \item computing \gr bases and local standard bases,
- \item computing syzygies, resolutions and (graded) Betti numbers,
- \item computing Hilbert series, multiplicities, independent sets,
- dimensions.
- \item computing normal forms and representations,
- \item computing sums, products, intersections, quotients, elimination
- ideals etc.
- \item primality tests, radicals, unmixed parts, primary decompositions
- etc. of ideals and modules.
- \item scripts for advanced applications of \gr bases (blowup,
- associated graded ring, analytic spread, symmetric algebra,
- monomial curves etc.)
- \end{itemize}
- Below we will use freely without further explanation the notions
- common for text books and papers about constructive commutative
- algebra, assuming the reader to be familiar with the corresponding
- ideas and concepts. For further references see e.g. the text books
- \cite{BKW} and \cite{CLO} or the survey papers \cite{B1}, \cite{B2},
- \cite{Ro}.
- \subsection{Description of the Documents Distributed with CALI}
- The CALI package contains the following files~:
- \begin{quote}
- cali.chg
- \pbx{a detailed report of changes from v. 2.0 to v. 2.1.}
- cali.log
- \pbx{the output file, that cali.tst should produce with
- \begin{quote} \tt
- load\_package cali;
- out "logfile"\$
- in "cali.tst";
- shut "logfile"\$
- \end{quote}}
- cali.red
- \pbx{the CALI source file. It should be compiled (see below) in the
- usual way and added to the REDUCE fast load file system or be
- accessible in the current path.}
- cali.tex
- \pbx{this manual.}
- cali.tst
- \pbx{a test file with various examples and applications of CALI.}
- \end{quote}
- CALI should be precompiled as usual, i.e. either using the {\em
- makefasl} utility of REDUCE or ``by hand'' via
- \begin{verbatim}
- faslout "cali"$
- in "cali.red"$
- faslend$
- \end{verbatim}
- and then loaded via
- \begin{verbatim}
- load_package cali;
- \end{verbatim}
- Upon successful loading CALI responses with a message containing the
- version number and the last update of the distribution.
- There may be some trouble on smaller machines to compile CALI in the
- described way since it goes beyond the 100k limit for source code
- recommended by the REDUCE system's administration. In this case one
- can try to load the compiler previously and to extend the BPS space~:
- \begin{verbatim}
- load compiler;
- lisp set!-bps!-size 1000000;
- faslout "cali"$
- in "cali.red"$
- faslend$
- \end{verbatim}
- \begin{center}
- \fbox{\parbox{12cm}{Feel free to contact me by email if You have
- problems to get CALI started. Also comments, hints, bug reports etc.
- are welcome.}}
- \end{center}
- \subsection{CALI's Language Concept}
- From a certain point of view one of the major disadvantage of the
- current RLISP (and the underlying PSL) language is the fact
- that it supports modularity and data encapsulation only in a
- rudimentary way. Since all parts of code loaded into a session are
- visible all the time name conflicts between different packages may
- occur, will occur (even not issuing a warning message), and are hard
- to prevent, since packages are developped (and are still developping)
- by different research groups at different places and different time.
- A (yet rudimentary) concept of REDUCE packages and modules indicates the
- direction into what the REDUCE designers are looking for a solution
- for this general problem.
- \medskip
- CALI (2.0 and higher) follows a name concept for internal procedures
- to mimick data encapsulation at a syntactical level. We hope this way
- on the one hand to resolve the conflicts described above at least for
- the internal part of CALI and on the other hand to anticipate a
- desirable future and already foregoing development of REDUCE towards
- a true modularity.
- The package CALI is divided into several modules, each of them
- introducing either a single new data type together with basic
- facilities, constructors, and selectors or a collection of algorithms
- subject to a common problem. Each module contains \ind{internal
- procedures}, conceptually hidden by this module, \ind{local
- procedures}, designed for a CALI wide usage, and \ind{global
- procedures}, exported by CALI into the general (algebraic or
- symbolic) environment of REDUCE. A header module \ind{cali} contains
- all (fluid) global variables and switches defined by the pacakge
- CALI.
- Along these lines the CALI procedures available in symbolic mode are
- divided into three types with the following naming convention~:
- \begin{quote}
- \verb|module!=procedure|
- \pbx{internal to the given module.}
- \verb|module_procedure|
- \pbx{exported by the given module into the local CALI environment.}
- \verb|procedure!*|
- \pbx{a global procedure usually having a semantically equivalent
- procedure (possibly with another parameter list) without trailing
- asterisk in algebraic mode.}
- \end{quote}
- \subsection{New and Improved Facilities in V. 2.1}
- The major changes in v. 2.1. reflect the experience we've got from the
- use of CALI 2.0. The following changes are worth mentioning
- explicitely~:
- \begin{enumerate}
- \item The \ind{ecart} handled globally in v. 2.0. now became local to
- each base ring.
- \item The algebraic rule concept was adapted to CALI. It allows to
- supply rule based coefficient domains. This is a more efficient way
- to deal with (easy) algebraic numbers than through the {\em arnum
- package}.
- \item The \gr factorization algorithm was seriously improved.
- \item The local standard basis part was improved~:
- \begin{enumerate}
-
- \item Base elements without reductum are handled separately
- to do full (and not only lead term) reduction with respect to
- them.
-
- \item Switches \ind{detectunits} and \ind{factorunits} allow
- to remove polynomial unit factors in an early stage of the
- computation.
- \item \ind{lazy} now switches between Mora's (lazy) and
- Lazard's approaches rather than between the lazy and the
- global versions of Mora's approach.
- \end{enumerate}
- \item \ind{listtest} and \ind{listminimize} provide an unified
- concept for different list operations previously scattered in the
- source text.
- \item There are several new quotient algorithms at the symbolic level
- (both the general element and the intersection approaches are
- available) and new features for the computation of equidimensional
- hull and equidimensional radical.
- \item A new module \ind{scripts} offers advanced applications of \gr
- bases.
- \item Several advanced procedures initialize a \gr basis computation
- over a certain intermediate base ring or term order as e.g.
- \ind{eliminate}, \ind{resolve}, \ind{matintersect} or all
- \ind{primary decomposition} procedures. Interrupting a computation in
- v. 2.1. now the original values of CALI's global variables should be
- restored, since all intermediate procedures work with local copies of
- the global variables only.\footnote{Note that not all REDUCE versions
- support this environment recovering. Moreover recovering the base
- ring this way may cause some trouble since the intermediate ring,
- installed with \ind{setring}, changed possibly the internal variable
- order set by {\em setkorder}.} This doesn't apply to advanced
- procedures that change the current base ring as e.g. \ind{blowup},
- \ind{preimage}, \ind{sym} etc.
- \end{enumerate}
- \section{The Computational Model}
- This section gives a short introduction into the data type design of
- CALI at different levels. First (\S 1 and 2) we describe CALI's way
- of algorithmic translation of the abstract algebraic objects {\em
- ring of polynomials, ideal} and (finitely generated) {\em module}.
- Then (\S 3 and 4) we describe the algebraic mode interface of CALI
- and the switches and global variables to drive a session. Finally (\S
- 5) we give a more detailed overview of the basic (symbolic mode) data
- structures involved with CALI. We refer to the appendix for a short
- summary of the commands available in algebraic mode.
- \subsection{The Base Ring}
- A polynomial ring consists in CALI of the following data~:
- \begin{quote}
- a list of variable names
- \pbx{All variables not occuring in the list of ring names are treated
- as parameters. Computations are executed denominatorfree, but the
- results are valid only over the corresponding parameter {\em field}
- extension.}
- a term order and a term order tag
- \pbx{They describe the way in which the terms in each polynomial (and
- polynomial vector) are ordered.}
- an ecart vector
- \pbx{A list of positive integers corresponding to the variable
- names.}
- \end{quote}
- A \ind{base ring} may be defined (in algebraic mode) through the
- command \newline
- \verb| setring ring | with ring ::= \{vars,tord,tag[,ecart]\} resp.
- \begin{verbatim}
- setring(vars, tord, tag [,ecart])
- \end{verbatim}
- \index{setring}
- This sets the global (symbolic) variable \ind{cali!=basering}. Here
- {\tt vars} is the list of variable names, {\tt tord} a (possibly
- empty) list of weight lists, the \ind{degree vectors}, and {\tt tag}
- the tag LEX or REVLEX. Optionally one can supply {\tt ecart}, a list
- of positive integers of the same length as {\tt vars}, to set an ecart
- vector different from the default one (see below).
- The degree vectors must have the same length as {\tt vars}. If $(w_1\
- \ldots\ w_k)$ is the list of degree vectors then
- \[x^a<x^b \qquad :\Leftrightarrow \qquad
- \parbox[t]{8cm}{either\hfill
- \parbox[t]{6cm}{$w_j(x^a)=w_j(x^b)$\hfill for $j<i$ \hfill and \\[8pt]
- $w_i(x^a)<w_i(x^b)$} \\[10pt] or\hfill
- \parbox[t]{6cm}{$w_j(x^a)=w_j(x^b)$\hfill for all $j$ \hfill and \\[8pt]
- $x^a<_{lex}x^b$ resp. $x^a<_{revlex}x^b$}}
- \]
- Here $<_{lex}$ resp. $<_{revlex}$ denote the
- \ind{lexicographic} (tag=LEX) resp. \ind{reverse lexicographic}
- (tag=REVLEX) term orders with respect to the variable order given in
- {\tt vars}, i.e.
- \[x^a<x^b \qquad :\Leftrightarrow \qquad
- \parbox[t]{7cm}{\centering
- $\exists\ j\ \forall\ i<j\ :\ a_i=b_i$\hfill \\[8pt] and\\[8pt]
- $a_j<b_j$\ (lex.)\hfill or\hfill $a_j>b_j$\ (rev.-lex.)\\}
- \]
- Every term order can be represented in such a way, see \cite{MR88}.
- During the ring setting the term order will be checked to be
- noetherian (i.e. to fulfill the descending chain condition) provided
- the switch \ind{noetherian} is on (the default). The same applies
- turning {\em noetherian on}~: If the term order of the underlying
- base ring isn't noetherian the switch can't be turned over. Hence,
- starting from a non noetherian term order, one should define {\em
- first} a new ring and {\em then} turn the switch on.
- Useful term orders can be defined by the procedures
- \begin{quote}
- \verb|degreeorder vars|, \index{degreeorder}
- \pbx{that returns $tord=\{\{1,\ldots ,1\}\}$,}
- \verb|localorder vars|, \index{localorder}
- \pbx{that returns $tord=\{\{-1,\ldots ,-1\}\}$ (a non noetherian term
- order for computations in local rings) or}
- \verb|eliminationorder(vars,elimvars)|, \index{eliminationorder}
- \pbx{that returns a term order for elimination of the variables in
- {\tt elimvars}, a subset of all {\tt vars}. It's recommended to
- combine it with the tag REVLEX.}
- \end{quote}
- \noindent Examples :
- \begin{verbatim}
- vars:={x,y,z};
- tord:=degreeorder vars; % Returns {{1,1,1}}
- setring(vars,tord,lex); % GRADLEX in the groebner package.
- % or
- setring({a,b,c,d},{},lex); % LEX in the groebner package.
- % or
- vars:={a,b,c,x,y,z};
- tord:=eliminationorder(vars,{x,y,z})
- % Returns {{0,0,0,1,1,1},{1,1,1,0,0,0}}
- setring(vars,tord,revlex);
- \end{verbatim}
- \pagebreak[2]
- The base ring is initialized with \newline
- \verb|{{t,x,y,z},{{1,1,1,1}},revlex,{1,1,1,1}}|,\newline
- i.e. $S=k[t,x,y,z]$ supplied with the degreewise reverse
- lexicographic term order.
- \medskip
- \noindent\verb|getring m|\index{getring} returns the ring attached to
- the object with the identifier {\tt m}. E.g.
- \begin{verbatim}
- setring getring m;
- \end{verbatim}
- (re)sets the base ring to the base ring of the formerly defined
- object (ideal or module)~{\tt m}.
- \begin{verbatim}
- getring();
- \end{verbatim}
- returns the currently active base ring.
- CALI defines also an \ind{ecart vector}, attaching to each variable a
- positive weight with respect to that homogenizations and related
- algorithms are executed. It may be set optionally by the user during
- the \ind{setring} command. (Default~: If the term order is a
- (positive) degree order then the ecart is the first degree vector,
- otherwise each ecart equals 1).
- The ecart vector is used in several places for efficiency reason (\gr
- basis computation with the sugar strategy) or for termination (local
- standard bases). If the input is homogeneous the ecart vector should
- reflect this homogeneity rather than the first degree vector to
- obtain the best possible performance. For a discussion of local
- computations with encoupled ecart vector see \cite{Gr23}. In general
- the ecart vector is recommended to be chosen in such a way that the
- input examples become close to be homogeneous. \ind{Homogenizations}
- and \ind{Hilbert series} are computed with respect to this ecart
- vector.
- \medskip
- \noindent \verb|getecart()|\index{getecart} returns the ecart vector
- currently set.
- \subsection{Ideals and Modules}
- If $S=k[x_v,\ v \in H]$ is a polynomial ring, a matrix $M$ of size
- $r\times c$ defines a map
- \[f\ :\ S^r \longrightarrow S^c\]
- by the following rule
- \[ f(v):=v\cdot M \qquad \mbox{ for } v \in S^r.\]
- There are two modules, connected with such a map, $im\ f$, the
- submodule of $S^c$ generated by the rows of $M$, and $coker\ f\
- (=S^c/im\ f)$. Conceptually we will identify $M$ with $im\ f$ for the
- basic algebra, and with $coker\ f$ for more advanced topics of
- commutative algebra (Hilbert series, dimension, resolution etc.)
- following widely accepted conventions.
- With respect to a fixed basis $\{e_1,\ldots ,e_c\}$ one can define
- module term orders on $S^c$, \gr bases of submodules of $S^c$ etc.
- They generalize the corresponding notions for ideal bases. See
- \cite{E} or \cite{MM} for a detailed introduction to this area of
- computational commutative algebra. This allows to define joint
- facilities for both ideals and submodules of free modules. Moreover
- computing syzygies the latter come in in a natural way.
- CALI handles ideal and module bases in a unique way representing them
- as rows of a \ind{dpmat} ({\bf d}istributive {\bf p}olynomial {\bf
- mat}rix). It attaches to each unit vector $e_i$ a monomial $x^{a_i}$,
- the $i$-th \ind{column degree} and represents the rows of a dpmat $M$
- as lists of module terms $x^ae_i$, sorted with respect to the
- following \ind{module term order}
- \bigskip
- \begin{tabular}{cccp{6cm}}
- $x^ae_i<x^be_j$ & $:\Leftrightarrow$ & either &
- {\centering $x^ax^{a_i}<x^bx^{a_j}$ in $S$\\}\\
- & & or &
- {\centering $x^ax^{a_i}=x^bx^{a_j}$ \\ and \\
- $i<j$ (lex.) resp. $i>j$ (revlex.)\\}
- \end{tabular}
- Every dpmat $M$ has its own column degrees (no default !). They are
- managed through a global (symbolic) variable \ind{cali!=degrees}.
- \begin{quote}
- \verb|getdegrees m| \index{getdegrees}
- \pbx{returns the column degrees of the object with identifier m.}
- \verb|getdegrees()|
- \pbx{returns the current setting of {\em cali!=degrees}.}
- \verb|setdegrees <list of monomials>| \index{setdegrees}
- \pbx{sets {\em cali!=degrees} correspondingly. Use this command
- before executing {\em setmodule} to give a dpmat prescribed column
- degrees since cali!=degrees has no default value and changes during
- computations. A good guess is to supply the empty list (i.e. all
- column degrees are equal to $\x^0$). Be careful defining modules
- without prescribed column degrees.}
- \end{quote}
- To distinguish between \ind{ideals} and \ind{modules} the former are
- represented as a \ind{dpmat} with $c=0$ (and hence without column
- degrees). If $I \subset S$ is such an ideal one has to distinguish
- between the ideal $I$ (with $c=0$, allowing special ideal operations
- as e.g. ideal multiplication) and the submodule $I$ of the free
- onedimensional module $S^1$ (with $c=1$, allowing matrix operations
- as e.g. transposition, matrix multiplication etc.). \ind{ideal2mat}
- converts an (algebraic) list of polynomials into an (algebraic)
- matrix column whereas \ind{flatten} collects all matrix entries into
- a list.
- \subsection{The Algebraic Mode Interface}
- Corresponding to CALI's general philosophy explained in the
- introduction the algebraic mode interface translates algebraic input
- into CALI's internal data representation, calls the corresponding
- symbolic functions, and retranslates the result back into algebraic
- mode. Since \gr basis computations may be very tedious even on small
- examples, one should find a well balance between the storage of
- results computed earlier and the unavoidable time overhead and memory
- request associated with the management of these results.
- Therefore CALI distinguishes between {\em free} and {\em bounded}
- \index{free identifier}\index{bounded identifier} identifiers. Free
- identifiers stand only for their value whereas to bounded identifiers
- several internal information is attached to their property list for
- later use.
- \medskip
- After the initialization of the {\em base ring} bounded identifiers
- for ideals or modules should be declared via
- \begin{verbatim}
- setmodule(name,matrix value)
- \end{verbatim}
- resp.
- \begin{verbatim}
- setideal(name,list of polynomials)
- \end{verbatim}
- \index{setmodule}\index{setideal}
- This way the corresponding internal representation (as \ind{dpmat})
- is attached to {\tt name} as the property \ind{basis}, the prefix
- form as its value and the current base ring as the property
- \ind{ring}.
- Performing any algebraic operation on objects defined this way their
- ring will be compared with the current base ring (including the term
- order). If they are different an error message occurs. If {\tt m} is
- a valid name, after resetting the base ring
- \begin{verbatim}
- setmodule(m1,m)
- \end{verbatim}
- reevaluates {\tt m} with respect to the new base ring (since the
- {\em value} of {\tt m} is its prefix form) and assigns the reordered
- dpmat to {\tt m1} clearing all information previously computed for
- {\tt m1} ({\tt m1} and {\tt m} may coincide).
- All computations are performed with respect to the ring $S=k[x_v\in
- {\tt vars}]$ over the field $k$. Nevertheless by efficiency reasons
- \ind{base coefficients} are represented in a denominatorfree way as
- standard forms. Hence the computational properties of the base
- coefficient domain depend on the \ind{dmode} and also on auxiliary
- variables, contained in the expressions, but not in the variable
- list. They are assumed to be parameters.
- Best performance will be obtained with integer or modular domain
- modes, but one can also try \ind{algebraic numbers} as coefficients
- as e.g. generated by {\tt sqrt} or the {\tt arnum} package. To avoid
- an unnecessary slow-down connected with the management of simplified
- algebraic expressions there is a switch \ind{hardzerotest} (default~:
- off) that may be turned on to force an additional simplification of
- algebraic coefficients during each zero test. It should be turned on
- only for domain modes without canonical representations as e.g.
- mixtures of arnums and square roots. We remind the general zero
- decision problem for such domains.
- Alternatively, CALI offers the possibility to define a set of
- algebraic substitution rules that will affect CALI's base coefficient
- arithmetic only.
- \begin{quote}
- \verb|setrules <rule list>|\index{setrules}
- \pbx{transfers the (algebraic) rule list into the internal
- representation stored at the global variable \ind{cali!=rules}.
- In particular, {\tt setrules \{\}} clears the rules previously set.}
- \verb|getrules()|\index{getrules}
- \pbx{returns the internal CALI rules list in algebraic form.}
- \end{quote}
- We recommend to use \ind{setrules} for computations with algebraic
- numbers since they are better adapted to the data structure of CALI
- than the algebraic numbers provided by the REDUCE's arnum package.
- Note, that due to the zero decision problem
- complicated {\em setrules} based computations may produce wrong
- results if base coefficient's pseudodivision is involved (as e.g.
- with \ind{dp\_pseudodivmod}). In this case we recommend to enlarge
- the variable set and add the defining equations of the algebraic
- numbers to the equations of the problem.
- \medskip
- The standard domain (Integer) doesn't allow denominators for input.
- \ind{setideal} clears automatically the common denominator of each
- input expression whereas a polynomial matrix with true rational
- coefficients will be rejected by \ind{setmodule}.
- \medskip
- One can save/initialize ideal and module bases together with their
- accompanying data (base ring, degrees) to/from a file~:
- \begin{verbatim}
- savemat(m,name)
- \end{verbatim}
- resp.
- \begin{verbatim}
- initmat name
- \end{verbatim} execute the file transfer from/to disk files with the
- specified file {\tt name}. E.g.
- \begin{verbatim}
- savemat(m,"myfile");
- \end{verbatim}
- saves the base ring and the ideal basis of $m$ to the file ``myfile''
- whereas
- \begin{verbatim}
- setideal(m,initmat "myfile");
- \end{verbatim}
- sets the current base ring (via a call to \ind{setring}) to the base
- ring of $m$ saved at ``myfile'' and then recovers the basis of $m$
- from the same file.
- \subsection{Switches and Global Variables}
- There are several switches, (fluid) global variables, and a trace
- facility to control CALI's computations.
- \medskip
- \subsubsection*{Switches}
- \begin{quote}
- \ind{bcsimp}
- \pbx{on : Cancel out gcd's of base coefficients. (Default : on)}
- \ind{binomial}
- \pbx{on : cause the system to do multireductions on ideals defined by
- binomials. Not applicable to syzygy and relations computation.
- (Default : off)}
- \ind{detectunits}
- \pbx{on : replace polynomials of the form \newline
- $\langle monomial\rangle *
- \langle polynomial\ unit\rangle $ by $\langle monomial\rangle$
- during interreductions and standard basis computations.
- Affects only local computations. (Default : off)}
- \ind{factorunits}
- \pbx{on : factor polynomials and remove polynomial unit factors
- during interreductions and standard basis computations.
- Affects only local computations. (Default : off)}
- \ind{hardzerotest}
- \pbx{on : try an additional algebraic simplification of base
- coefficients at each base coefficient's zero test. Useful only for
- advanced base coefficient domains without canonical REDUCE
- representation. May slow down the computation drastically.
- (Default~: off)}
- \ind{lazy}
- \pbx{on : choose Mora's lazy standard basis algorithm.
- off : choose Lazard's standard basis approach (homogenizing base
- elements).
- Affects only local computations. (Default : on)}
- \ind{noetherian}
- \pbx{on : choose algorithms for noetherian term orders.
- off : choose algorithms for local term orders.
- (Default : on)}
- \ind{red\_total}
- \pbx{on : apply normal form algorithms iteratively also to the
- reductum.
- off : reduce only until leading terms are standard.
- Affects only noetherian term orders. (Default : on)}
- \end{quote}
- \subsubsection*{Tracing}
- Intermediate output during the computations is controlled by the
- global (symbolic) variable \ind{cali!=trace} (Default : 0, no
- tracing).
- \begin{verbatim}
- lisp (cali!=trace:=..);
- \end{verbatim}
- changes the current value. Set it equal to 2 for a sparce tracing (a dot for
- each reduction step).
- Other good suggestions are the values 30 or 40 for tracing the \gr
- algorithm or $>70$ for tracing the normal form algorithm. The higher
- \ind{cali!=trace} the more intermediate information will be given.
- \subsubsection*{Global Variables}
- \begin{quote}
- \ind{cali!=basering}
- \pbx{The currently active base ring initialized e.g. by
- \ind{setring}.}
- \ind{cali!=degrees}
- \pbx{The currently active module component degrees initialized e.g.
- by \ind{setdegrees}.}
- \ind{cali!=monset}
- \pbx{A list of variable names considered as non zero divisors during
- \gr basis computations initialized e.g. by \ind{setmonset}. Useful
- e.g. for binomial ideals defining monomial varieties or other prime
- ideals.}
- \ind{cali!=rules}
- \pbx{Algebraic ``replaceby'' rules introduced to CALI with the
- \ind{setrules} command.}
- \ind{cali!=trace}
- \pbx{A symbolic variable managing the output of intermediate
- information to the screen.}
- \end{quote}
- \subsection{The Basic Data Structures}
- In the following we describe the most important (symbolic) data
- structure layers underlying the dpmat representation in CALI.
- \subsubsection*{Base Coefficients}
- Base coefficients are standard forms in the variables outside the
- variable list of the current ring. Although standard forms form an
- integral domain, all computations are executed "denominatorfree" over
- the corresponding quotient field, i.e. gcd's are canceled out without
- request. To avoid this set the switch \ind{bcsimp} off.\footnote{This
- induces a rapid base coefficient's growth and doesn't yield {\bf
- Z}-\gr bases in the sense of \cite{GTZ} since the S-pair criteria are
- different.}
- The base coefficient domain is assumed to be a gcd-domain with
- effective divisibility test. In the given implementation we use the
- s.f. procedure {\em qremf}. We had some trouble with it under {\em on
- factor}.
- CALI v. 2.1. offers additionally the possibility to supply the
- parameters occuring as base coefficients with a (global) set of
- algebraic rules.\footnote{This is different from the LET rule
- mechanism since they must be present in symbolic mode. Hence for a
- simultaneous application of the same rules in algebraic mode outside
- CALI they must additionally be declared in the usual way.}
- \ind{setrules} converts an algebraic mode rules list as e.g. used in
- WHERE statements into the internal CALI format.
- \subsubsection*{Base Ring}
- The \ind{base ring} is defined by its {\tt name list}, the {\tt
- degree matrix} (a list of lists of integers), the {\tt ring tag} (LEX
- or REVLEX), and the {\tt ecart}. The name list contains a phantom
- name {\tt cali!=mk} for the module component at place 0.
- \medskip
- The module {\bf ring} exports among others the following procedures
- to define a base ring~:
- \begin{quote}
- \verb|ring_define(name list, degree matrix, ring tag, ecart)|
- \index{ring\_define}
- \pbx{combines the given parameters to a ring.}
- \verb|ring_sum(a,b)|\index{ring\_sum}
- \pbx{returns a ring, that is constructed in the following way : Its
- variable list is the union of the (disjoint) lists of the variables
- of the rings $a$ and $b$ (in this order) whereas the degree list is
- the union of the (appropriately shifted) degree lists of $b$ and $a$
- (in this order). The ring tag is that of $a$. Hence it returns
- (essentially) the ring $b\bigoplus a$ if $b$ has a degree part (e.g.
- useful for elimination problems, introducing ``big'' new variables)
- and the ring $a\bigoplus b$ if $b$ has no degree part (introducing
- ``small'' new variables).}
- \verb|setring!* <ring> |\index{setring}
- \pbx{sets {\em cali!=basering} and {\em cali!=ecart} and checks for
- consistency with the switch \ind{noetherian}. It also sets through
- \ind{setkorder} the current variable list as main variables. It is
- strongly recommended to use {\em setring!* \ldots} instead of {\em
- cali!=basering:=\ldots}.}
- \end{quote}
- \verb|degreeorder!*| , \verb|localorder!*| and \verb|eliminationorder!*|
- \index{degreeorder}
- \index{localorder}
- \index{eliminationorder}
- define term order matrices in full analogy to algebraic mode.
- \medskip
- \noindent Example :
- \begin{verbatim}
- vars:='(x y z)
- setring!* ring_define(vars,degreeorder!* vars,'lex,'(1 1 1));
- % GRADLEX in the groebner package.
- \end{verbatim}
- \subsubsection*{Monomials}
- The current version uses a place-driven exponent representation
- closely related to a vector model. This model handles term orders and
- module term orders in a unique way. The zero component of the
- exponent list of a monomial contains its module component ($>0$) or 0
- (ring element). All computations are executed with respect to a
- \ind{current ring} (\ind{cali!=basering}) and a \ind{current module}
- (\ind{cali!=degrees}). For efficiency reasons every monomial has a
- precomputed degree part that should be reevaluated if {\tt
- cali!=basering} (i.e. the term order) or {\tt cali!=degrees} were
- changed. {\tt cali!=degrees} contains the list of column degrees of
- the current module and will be set automatically by (almost) all
- dpmat procedure calls. Since monomial operations use the degree list
- that was precomputed with respect to fixed column degrees (and base ring)
- \begin{quote}\bf
- watch carefully for {\tt cali!=degrees} programming at the monomial
- or dpoly level !
- \end{quote}
- \subsubsection*{Polynomials and Polynomial Vectors}
- CALI uses a distributive representation as a list of terms for both
- polynomials and polynomial vectors, where a \ind{term} is a dotted
- pair
- \[(monomial\ .\ base\ coefficient).\]
- The \ind{ecart} of a polynomial (vector) $f=\sum{t_i}$ with (module)
- terms $t_i$ is defined as \[max(ec(t_i))-ec(lt(t_i)),\] see
- \cite{Gr23}. Here $ec(t_i)$ denotes the ecart of the term $t_i$.
- \subsubsection*{Ideal Bases}
- Ideal bases are one of the main ingredients for dpmats. They are
- represented as lists of \ind{base elements} and contain together with
- each dpoly entry the following information~:
- \begin{itemize}
- \item a number (the row number of the polynomial vector in the
- corresponding dpmat).
- \item the dpoly, its ecart (as the main sort criterion), and length.
- \item a representation part, that may contain a representation of the
- given dpoly in terms of a certain fixed basis (default : empty).
- \end{itemize}
- The representation part is managed during normal form computations
- and other row arithmetic of dpmats appropriately.
- \begin{quote}
- \verb|bas_setrelations b|\index{bas\_setrelations}
- \pbx{sets the relation part of the base element $i$ in the base list
- $b$ to $e_i$.}
- \verb|bas_removerelations b|\index{bas\_removerelations}
- \pbx{removes all relations, i.e. replaces them with the zero
- polynomial vector.}
- \verb|bas_getrelations b|\index{bas\_getrelations}
- \pbx{gets the relation part of $b$ as a separate base list.}
- \end{quote}
- \subsubsection*{Ideals, Matrices, and Matrix Operations}
- Ideals and matrices, represented as \ind{dpmat}s, are the central
- data type of the CALI package, as already explained above. Every
- dpmat $m$ combines the following information~:
- \begin{itemize}
- \item its size (\ind{dpmat\_rows} m,\ind{dpmat\_cols} m),
- \item its base list (\ind{dpmat\_list} m) and
- \item its column degrees as an assoc. list of monomials
- (\ind{dpmat\_coldegs} m). If this list is empty, all degrees are
- assumed to be equal to $x^0$.
- \end{itemize}
- The module {\bf dpmat} contains the algorithms for the basic
- management of this data structure whereas the modules {\bf matop} and
- {\bf quot} collect procedures for the algebraic management of dpmats
- with analogous semantics as their algebraic mode counterparts as e.g.
- \begin{center}
- \parbox{14cm}
- {\ind{annihilator1!*}, \ind{idealpower!*}, \ind{matqquot!*},
- \ind{matquot!*}, \ind{modequalp!*}, \ind{modulequotient1!*},
- \ind{submodulep!*}.}
- \end{center}
- The following procedures take a list of dpmats as their (single)
- argument~:
- \begin{center}
- \parbox{14cm}
- {\ind{directsum!*}, \ind{idealprod!*}, \ind{matappend!*},
- \ind{matsum!*}, \ind{matintersect!*}.}
- \end{center}
- \section{About the Algorithms Implemented in CALI}
- Below we give a short explanation of the main algorithmic ideas of
- CALI and the way they are implemented (symbolically).
- \subsection{Normal Form Algorithms}
- Normal form algorithms reduce polynomials (or polynomial vectors)
- with respect to a given finite set of generators of an ideal or
- module. The result is not unique except for a total normal form with
- respect to a \gr basis. Furthermore different reduction strategies
- may yield significant differences in computing time.
- CALI reduces by first matching, usually keeping base lists sorted
- with respect to the sort predicate \ind{red\_better}, sorting at
- first by ascending ecart and then by ascending length. This order is
- good for both noetherian and non noetherian term orders.
- Overload red\_better for other reduction strategies.
- \medskip
- There are different reduction procedures for noetherian and non
- noetherian term orders according to the general theory. For a given
- ideal basis $B\subset S$ and a polynomial $f\in S$ they produce a
- (pseudo) normal form $h\in S$ such that $h\equiv u\cdot f\ mod\ B$
- where $u\in S$ is a polynomial unit, i.e. a (polynomially
- represented) non zero domain element in the noetherian case
- (pseudodivision of $f$ by $B$) or a polynomial with a scalar as
- leading term in the non noetherian case.
- Advanced applications of normal form algorithms and \gr /standard
- bases may be build up from these different sources in an unified
- manner, \cite{Gr23} and \cite{ala}. This is reflected through the
- switch \ind{noetherian}. Turning it on (the default) or off causes
- CALI to refer automatically to the \gr or local standard basis
- methods (defined in the modules {\bf red} and {\bf mora} resp.).
- This applies to the interfacing procedures \ind{interreduce!*},
- \ind{gbasis!*}, \ind{syzygies!*}, \ind{normalform!*} and \ind{mod!*}
- and to more advanced applications derived from them. They branch
- according to it either to the global or the local normal form
- procedures \ind{red\_interreduce}, \ind{mora\_interreduce} etc.
- \begin{quote}
- \verb|interreduce!* m|\index{interreduce}
- \pbx{returns an interreduced basis of the dpmat $m$, i.e. the leading
- terms of the result are not divisible by each other.}
- \verb|mod!*(f,m)|\index{mod}
- \pbx{returns the pair $(h.u)$ where $h$ is the pseudo normal form of
- the dpoly $f$ modulo the dpmat $m$ and $u$ the corresponding
- polynomial unit multiplier.}
- \verb|normalform!*(a,b)|\index{normalform}
- \pbx{Returns $\{a_1,r,z\}$ with $a_1=z*a-r*b$ where the rows of the
- dpmat $a_1$ are the normalforms of the rows of the dpmat $a$ with
- respect to the dpmat $b$.}
- \end{quote}
- For local standard bases the ideal generated by the basic polynomials
- may have components not passing through the origin. Although they do
- not contribute to the ideal in $Loc(S)=S_{\bf m}$ they usually
- heavily increase the computational effort needed for the standard basis
- computation, interreduction etc.. Hence for local
- term orders one should try to remove polynomial units as soon as they
- are detected. To remove them in an early stage of the computations
- one can either try the (cheap) test, whether $f\in S$ is of the form
- $\langle monomial\rangle *\langle polynomial\ unit\rangle$ (switch
- \ind{detectunits}, def.: off) or factor $f$ completely and remove
- polynomial unit factors (switch \ind{factorunits}, def.: off).
- The procedure \ind{deleteunits!*} tries to factor basis polynomials
- and removes polynomial units occuring as one of the factors.
- \subsection{The Standard Basis Algorithms}
- The modules {\bf groeb} and {\bf mora} contain the \gr resp. standard
- basis algorithms with syzygy computation facility and related
- algorithms.
- As described above there are common procedures
- \begin{quote}
- \verb|gbasis!* m|\index{gbasis}
- \pbx{that returns a minimal \gr or standard basis of the dpmat $m$,}
- \verb|syzygies!* m|\index{syzygies}
- \pbx{that returns an interreduced basis of the first syzygy module of
- the dpmat $m$ and}
- \verb|syzygies1!* m|\index{syzygies1}
- \pbx{that returns a (not yet interreduced) basis of the syzygy module
- of the dpmat $m$.}
- \end{quote}
- These procedures start the general \gr resp. standard basis
- calculation
- \begin{verbatim}
- groeb_stbasis(m,t,t,t,cali!=monset);
- or
- mora_stbasis(m,t,t,t,cali!=monset);
- \end{verbatim}\index{groeb\_stbasis}\index{mora\_stbasis}
- that returns, applied to the dpmat $m$, three dpmats $g,c,s$ with
- \begin{quote}
- $g$ --- the minimal reduced \gr basis of $m$,
- $c$ --- the transition matrix $g=c\cdot m$, and
- $s$ --- the (not yet interreduced) syzygy matrix of $m$.
- \end{quote}
- The pair list management uses the sugar strategy, see \cite{GMNRT},
- with respect to the ecart vector \ind{cali!=ecart}. If the input is
- homogeneous and \ind{cali!=ecart} reflects this homogeneity then
- pairs are sorted by ascending degree. Hence no superfluous base
- elements will be computed in this case. In general the sugar strategy
- performs best if the ecart vector is chosen to make the input close
- to be homogeneous.
- If requested, the change matrix or the syzygy matrix will be computed
- through the representation part of the involved base elements. For
- this purpose it will be set appropriately at the beginning of {\em
- \ldots\_stbasis} to trace up the reduction steps of the algorithm. At
- the end these results are split up and relations are removed.
- There is another global variable \ind{cali!=monset} that may contain
- a list of variable names (a subset of the variable names of the
- current base ring). During the "pure" \gr algorithm (without syzygy
- and representation computations) common monomial factors, containing
- only these variables will be canceled out. This shortcut is useful if
- some of the variables are known to be non zero divisors as e.g. in
- most implicitation problems.
- \begin{quote}
- \verb|setmonset!* m|\index{setmonset}
- \pbx{initializes {\em cali!=monset} with a given list of variables
- $m$.}
- \end{quote}
- Local standard bases can essentially be computed in two different
- ways. The switch \ind{lazy} drives CALI to branch into Mora's (on,
- the default) or Lazard's (off) approach, respectively. There are
- several versions of Mora's normal form algorithm published in
- \cite{MPT}. {\em lazy} refers to the lazy version as the most
- effective one, but without the early termination test, since this
- test is available only for zerodimensional ideals.
- Experts commonly agree that Mora's approach is better for
- ``computable'' examples, but sample computations done by the author
- on large examples indicate, that both approaches are in fact
- independent. The speedup of the latter seems to depend mainly on the
- fact that in Lazard's approach {\em total} normal forms are available
- during intermediate computations.
- \medskip
- Beginning with version 2.0 CALI contains also its own \gr
- factorization facility~:
- \begin{quote}
- \verb|groebfactor!*(m,c)|\index{groebfactor}\footnote{{\em
- groebfactorize} in v. 2.0., but this collides with the REDUCE
- groebner package}.
- \pbx{Returns for the dpmat ideal $m$ and the constraint polynomial
- $c$ a minimal list of \gr bases $G_a$ such that $V(m)\bigcap
- D(c)=\bigcup_a V(G_a)\bigcap D(c)$, where $V(G)$ is the set of common
- zeroes of the ideal $G$ and $D(c)$ the set of points where $c$
- doesn't vanish.}
- \end{quote}
- During a preprocessing it splits the submitted basis $m$ by a
- recursive factorization of polynomials and interreduction of bases
- into a (reduced) list of smaller subproblems consisting of a partly
- computed \gr basis, a constraint list, and a list of pairs not yet
- proceeded. The main procedure forces the next subproblem to be
- processed until another factorization is possible. Then the
- subproblem splits into subsubproblems, and the subproblem list will
- be updated. Subproblems are kept sorted with respect to their
- expected dimension \ind{easydim} forcing this way a {\em depth first}
- recursion. Returned and not yet interreduced \gr bases are, after
- interreduction, subject to another call of the preprocessor since
- interreduced polynomials may factor anew.
- \medskip
- \subsection{Basic Algorithms in Ideal Theory}
- \gr and local standard bases are the heart of several basic
- algorithms in ideal theory, see e.g. \cite[6.2.]{BKW}. CALI offers
- the following facilities~:
- \begin{quote}
- \verb|submodulep!*(m,n)|\index{submodulep}
- \pbx{tests the dpmat $m$ for being a submodule of the dpmat $n$
- reducing the basis elements of $m$ with respect to $n$. The result
- will be correct provided $n$ is a \gr basis.}
- \verb|modequalp!*(m,n)|\index{modequalp}
- \pbx{ = submodulep!*(m,n) and submodulep!*(n,m).}
- \verb|eliminate!*(m,<variable list>)| \index{eliminate}
- \pbx{computes the elimination ideal/module eliminating the variables
- in the given variable list (a subset of the variables of the current
- base ring). Changes temporarily the term order to degrevlex. For {\em
- monset} see \ind{cali!=monset}.}
- \verb|matintersect!* l|\index{matintersect}
- \footnote{This can be done for ideals and
- modules in an unique way. Hence {\em idealintersect!*} has been
- removed in v. 2.1.}
- \pbx{computes the intersection of the dpmats in the dpmat list $l$
- along \cite[6.20]{BKW}.}
- \verb|dpgcd!*(a,b)| \index{dpgcd}
- \pbx{computes the gcd of two dpolys $a$ and $b$ by the syzygy method~:
- The syzygy module of $\{a,b\}$ is generated by a single element
- $[-b_0\ \ a_0]$ with $a=ga_0, b=gb_0$, where $g$ is the gcd of $a$
- and $b$. Since it uses dpoly pseudodivision it may work not properly
- with \ind{setrules}.}
- \end{quote}
- CALI offers several quotient algorithms. They rest on the computation
- of quotients by a single element of the following kind~: Assume
- $M\subset S^c, v\in S^c, f\in S$. Then there are
- \begin{quote}
- the \ind{module quotient} $M : (v) = \{g\in S\ |\ gv\in M\}$,
- the \ind{ideal quotient} $M : (f) = \{w\in S^c\ |\ fw\in M\}$, and
- the \ind{stable quotient} $M : (f)^\infty = \{w\in S^c\ |\ \exists\,
- n\, :\, f^nw\in M\}$.
- \end{quote}
- CALI uses the elimination approach \cite[4.4.]{CLO} and
- \cite[6.38]{BKW} for their computation~:
- \begin{quote}
- \verb|matquot!*(M,f)|\index{matquot}
- \pbx{returns the module or ideal quotient $M:(f)$ depending on $f$.}
- \verb|matqquot!*(M,f)|\index{matqquot}
- \pbx{returns the stable quotient $M:(f)^\infty$.}
- \end{quote}
- \ind{matquot!*} calls the pseudo division with remainder
- \begin{quote}
- \verb|dp_pseudodivmod(g,f)|\index{dp\_pseudodivmod}
- \pbx{that returns a dpoly list $\{q,r,z\}$ such that $z\cdot g =
- q\cdot f + r$ with a dpoly unit $z$.\ ($g, f$ and $r$ must belong to
- the same free module). This is done uniformly for noetherian and
- local term orders with an extended normal form algorithm as described
- in \cite{ala}.}
- \end{quote}
- \medskip
- In the same way one defines the quotient of a module by another
- module (both embedded in a common free module $S^c$), the quotient of
- a module by an ideal, and the stable quotient of a module by an
- ideal. Algorithms for their computation can be obtained from the
- corresponding algorithms for a single element as divisor either by
- the generic element method \cite{E} or as an intersection
- \cite[6.31]{BKW}. CALI offers both approaches (\_x=1 or 2 below) at
- the symbolic level, but for true quotients only the latter one is
- integrated into the algebraic mode interface.
- \begin{quote}
- \verb|idealquotient_x!*(M,I)|\index{idealquotient}
- \pbx{returns the ideal quotient $M:I$ of the dpmat $M$ by the dpmat
- ideal $I$.}
- \verb|modulequotient_x!*(M,N)|\index{modulequotient}
- \pbx{returns the module quotient $M:N$ of the dpmat $M$ by the dpmat
- $N$.}
- \verb|annihilator_x!* M|\index{annihilator}
- \pbx{returns the annihilator of $coker\ M$, i.e. the module quotient
- $S^c:M$, if $M$ is a submodule of $S^c$.}
- \verb|matstabquot!*(M,I)|\index{matstabquot}
- \pbx{returns the stable quotient $M:I^\infty$ (only by the general element
- method).}
- \end{quote}
- \subsection{Monomial Ideals}
- Monomial ideals occur as ideals of leading terms of (ideal's) \gr
- bases and also as components of leading term modules of submodules of
- free modules, see \cite{GrI}, and reflect some properties of the
- original ideal/module. Several parameters of the original ideal may
- be read off from it as e.g. dimension and Hilbert series.
- The module {\bf moid} contains the corresponding algorithms on
- monomial ideals. Monomial ideals are lists of monomials, kept sorted
- by descending lexicographic order as proposed in \cite{BS}.
- \begin{quote}
- \verb|moid_primes u| \index{moid\_primes}
- \pbx{returns the minimal primes (as a list of lists of variable
- names) of the monomial ideal $u$ using an adaption of the algorithm,
- proposed in \cite{BS} for the computation of the codimension.}
- \verb|indepvarsets!* m| \index{indepvarsets}
- \pbx{returns (based on {\em moid\_primes}) the list of strongly
- independent sets of $m$, see \cite{KW} and \cite{GrI} for
- definitions.}
- \verb|dim!* m| \index{dim}
- \pbx{returns the dimension of $coker\ m$ as the size of the largest
- independent set.\footnotemark}
- \footnotetext{The problem of the determination of the
- dimension of an arbitrary monomial ideal is NP-hard in the number of
- variables, \cite{BS}.}
- \verb|codim!* m| \index{codim}
- \pbx{returns the codimension of $coker\ m$.}
- \verb|easyindepset!* m| \index{easyindepset}
- \pbx{returns a maximal with respect to inclusion independent set of
- $m$.}
- \verb|easydim!* m| \index{easydim}
- \pbx{is a fast dimension algorithm (based on {\em easyindepset}), that
- will be correct if $m$ is (radically) unmixed. Since it is
- significantly faster than the general dimension algorithm, it should
- be used, if all maximal independent sets are known to be of equal
- cardinality (as e.g. for prime or unmixed ideals, see \cite{GrI}).}
- \end{quote}
- \pagebreak[3]
- Hilbert series are computed with respect to the \ind{ecart vector},
- i.e. for a monomial ideal $I$ in the polynomial ring $R$
- \[H(R/I,t) := \sum_{i\geq 0}{|\{x^a:ec(a)=i\}|\cdot t^i} =
- \frac{Q(t)}{\prod_x{\left(1-t^{ec(x)}\right)} }.\]
- $H(R/I,t)$ is known to be a rational function with pole order at
- $t=1$ equal to $dim\ R/I$.
- \begin{quote}
- \verb|hilb1 m or hilb2 m| \index{hilb1} \index{hilb2}
- \pbx{returns the Hilbert series numerator $Q(t)$ using different
- algorithms, see \cite{BS} for {\em hilb1} and \cite{BCRT} for {\em
- hilb2}. Experiments suggest that the former is better for few
- generators of high degree whereas the latter has to be preferred for
- many generators of low degree.}
- \verb|hilbseries1 m or hilbseries2 m| \index{hilbseries1}
- \index{hilbseries2}
- \pbx{returns the reduced Hilbert series (i.e. with relative prime
- numerator and denominator) as a standard quotient.}
- \verb|degree!* m| \index{degree}
- \pbx{returns the value of the numerator of the reduced Hilbert series
- representation at $t=1$. For the standard ecart this is the degree of
- $coker\ m$.}
- \end{quote}
- \subsection{Zerodimensional Ideals and Modules}
- There are several algorithms that either force the reduction of a
- given problem to dimension zero or work only for zerodimensional
- ideals or modules. The CALI module {\bf odim} offers such
- algorithms. It contains, e.g.
- \begin{quote}
- \verb|dimzerop!* m| \index{dimzerop}
- \pbx{that tests a dpmat $m$ for being zerodimensional.}
- \verb|getkbase!* m| \index{getkbase}
- \pbx{that returns a (monomial) k-vector space basis of $Coker\ m$
- provided $m$ is a \gr basis.}
- \verb|odim_parameter m| \index{odim\_parameter}
- \pbx{that returns a parameter of the dpmat $m$, i.e. a variable $x
- \in vars$ such that $k[x]\bigcap Ann\ S^c/m=(0)$, or {\em nil} if $m$
- is zerodimensional.}
- \verb|odim_up(a,m)| \index{odim\_up}
- \pbx{that returns an univariate polynomial (of smallest possible
- degree if $m$ is a gbasis) in the variable $a$ inside the
- zerodimensional dpmat ideal $m$ using Buchberger's approach,
- \cite{B1}.}
- \end{quote}
- \subsection{Primary Decomposition and Related Algorithms}
- The algorithms of the module {\bf prime} implement the ideas of
- \cite{GTZ} with modifications along \cite{Kr} and their natural
- generalizations to modules as e.g. explained in \cite{Ru}. It
- contains also algorithms for the computation of the unmixed part of a
- given module and the unmixed radical of a given ideal (along the same
- lines). We followed the stepwise recursion decreasing dimension in
- each step by 1 as proposed in (the final version of) \cite{GTZ}
- rather than the ``one step'' method described in \cite{BKW} since
- handling leading coefficients, i.e. standard forms, depending on
- several variables is a quite hard job for REDUCE.
- In the following procedures $m$ must be a \gr basis.
- \begin{quote}
- \verb|zeroradical!* m| \index{zeroradical}
- \pbx{returns the radical of the zerodimensional ideal $m$, using
- squarefree decomposition of univariate polynomials.}
- \verb|zeroprimes!* m| \index{zeroprimes}
- \pbx{computes as in \cite{GTZ} the list of prime ideals of $Ann\ F/M$
- if $m$ is zerodimensional, using the (sparse) general position
- argument from \cite{KW}.}
- \verb|zeroprimarydecomposition!* m| \index{zeroprimarydecomposition}
- \pbx{computes the primary components of the zerodimensional dpmat $m$
- using prime splitting with the prime ideals of $Ann\ F/M$. It returns
- a list of two-element lists with first entry the primary component
- and second entry the corresponding associated prime ideal.}
- \verb|isprime!* m| \index{isprime}
- \pbx{a (one step) primality test for ideals, extracted from
- \cite{GTZ}.}
- \verb|isolatedprimes!* m| \index{isolatedprimes}
- \pbx{computes (only) the isolated prime ideals of $Ann\ F/M$.}
- \verb|radical!* m| \index{radical}
- \pbx{computes the radical of the dpmat ideal $m$, reducing as in
- \cite{GTZ} to the zerodimensional case.}
- \verb|easyprimarydecomposition!* m| \index{easyprimarydecomposition}
- \pbx{computes the primary components of the dpmat $m$, if it has no
- embedded components. The algorithm uses prime splitting with the
- isolated prime ideals of $Ann\ F/M$. It returns a list of two-element
- lists as in {\em zeroprimarydecomposition!*}.}
- \verb|primarydecomposition!* m| \index{zeroprimarydecomposition}
- \pbx{computes the primary components of the zerodimensional dpmat $m$
- using prime splitting with the prime ideals of $Ann\ F/M$. It returns
- a list of two-element lists as in {\em zeroprimarydecomposition!*}.}
- \verb|unmixedradical!* m| \index{unmixedradical}
- \pbx{returns the unmixed radical, i.e. the intersection of the
- isolated primes of top dimension, associated to the dpmat ideal $m$.}
- \verb|eqhull!* m| \index{eqhull}
- \pbx{returns the equidimensional hull, i.e. the intersection of the
- top dimensional primary components of the dpmat $m$.}
- \end{quote}
- \subsection{Advanced Algorithms}
- The module {\bf scripts} just under further development offers some
- advanced topics of the \gr bases theory. It introduces the new data
- structure of a \ind{map} between base rings~:
- \medskip
- A ring map
- \[ \phi\ :\ R\longrightarrow S\]
- for $R=k[r_i], S=k[s_j]$ is represented in symbolic mode as a list
- \[ \{preimage\_ring\ R,\ image\_ring\ S, subst\_list\},\]
- where {\tt subst\_list} is a substitution list $\{r_1=\phi_1(s),
- r_2=\phi_2(s),\ldots \}$ in algebraic prefix form, i.e. looks like
- {\tt (list (equal var image) \ldots )}.
- The central tool for several applications is the computation of the
- preimage $\phi^{-1}(I)\subset R$ of an ideal $I\subset S$ either
- under a polynomial map $\phi$ or its closure in $R$ under a rational
- map $\phi$, see \cite[7.69 and 7.71]{BKW}.
- \begin{quote}
- \verb|preimage!*(m,map)| \index{preimage}
- \pbx{computes the preimage of the ideal $m$ in algebraic prefix form
- under the given polynomial map and sets the current base ring to the
- preimage ring. Returns the result also in algebraic prefix form.}
- \verb|ratpreimage!*(m,map)| \index{ratpreimage}
- \pbx{computes the closure of the preimage of the ideal $m$ in
- algebraic prefix form under the given rational map and sets the
- current base ring to the preimage ring. Returns the result also in
- algebraic prefix form.}
- \end{quote}
- Derived applications are
- \begin{quote}
- \verb|affine_monomial_curve!*(l,R)|\index{affine\_monomial\_curve}
- \pbx{$l$ is a list of integers, $R$ a list of variable names of the
- same length as $l$. The procedure sets the current base ring and
- returns the defining ideal of the affine monomial curve with generic
- point $(t^i\ :\ i\in l)$ computing the corresponding preimage.}
- \verb|analytic_spread!* M|\index{analytic\_spread}
- \pbx{Computes the analytic spread of $M$, i.e. the dimension of the
- exceptional fiber ${\cal R}(M)/m{\cal R}(M)$ of the blowup along $M$
- over the irrelevant ideal $m$ of the current base ring.}
-
- \verb|assgrad!*(M,N,vars)|\index{assgrad}
- \pbx{Computes the associated graded ring \[gr_R(N):=
- (R/N\oplus N/N^2\oplus\ldots)={\cal R}(N)/N{\cal R}(N)\] over the ring
- $R=S/M$, where $M$ and
- $N$ are dpmat ideals defined over the current base ring $S$. {\tt
- vars} is a list of new variable names one for each generator of $N$.
- They are used to create a second ring $T$ with degree order
- corresponding to the ecart of the row degrees of $N$ and a ring map
- \[\phi : S\oplus T\longrightarrow S.\]
- It returns a dpmat ideal $J$ such that $(S\oplus T)/J$ is a
- presentation of the
- desired associated graded ring over the new current base ring
- $S\oplus T$.}
-
- \verb|blowup!*(M,N,vars)|\index{blowup}
- \pbx{Computes the blow up ${\cal R}(N):=R[N\cdot t]$ of $N$ over
- the ring $R=S/M$, where $M$ and $N$ are dpmat ideals defined over the
- current base ring $S$. {\tt vars} is a list of new variable names one
- for each generator of $N$. They are used to create a second ring $T$
- with degree order corresponding to the ecart of the row degrees of
- $N$ and a ring map
- \[\phi : S\oplus T\longrightarrow S.\]
- It returns a dpmat ideal $J$ such that $(S\oplus T)/J$ is
- a presentation of the
- desired blowup ring over the new current base ring $S\oplus T$.}
-
- \verb|proj_monomial_curve!*(l,R)|\index{proj\_monomial\_curve}
- \pbx{$l$ is a list of integers, $R$ a list of variable names of the
- same length as $l$. The procedure set the current base ring and
- returns the defining ideal of the projective monomial curve with
- generic point \mbox{$(s^{d-i}\cdot t^i\ :\ i\in l)$} in $R$, where
- \mbox{$d=max\{ x\, :\, x\in l\}$}, computing the corresponding preimage.}
- \verb|sym!*(M,vars)|\index{sym}
- \pbx{Computes the symmetric algebra $Sym(M)$ where $M$ is a dpmat ideal
- defined over the current base ring $S$. {\tt vars} is a list of new
- variable names one for each generator of $M$. They are used to create
- a second ring $R$ with degree order corresponding to the ecart of the
- row degrees of $N$ and a ring map
- \[\phi : S\oplus R\longrightarrow S.\]
- It returns a dpmat ideal $J$ such that $(S\oplus R)/J$ is the
- desired symmetric algebra over the new current base ring $S\oplus R$.}
-
- \end{quote}
- There are several other applications~:
- \begin{quote}
- \verb|affine_points!* m| \index{affine\_points}
- \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
- with as many columns as the current base ring has ring variables.
- Its rows represent the affine coordinates of a collection of points.
- This procedure returns the intersection of the maximal ideals
- corresponding to these points.}
- \verb|minimal_generators!* m| \index{minimal\_generators}
- \pbx{returns a set of minimal generators of the dpmat $m$ inspecting
- the first syzygy module.}
- \verb|proj_points!* m| \index{proj\_points}
- \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
- with as many columns as the current base ring has ring variables.
- Its rows represent the homogeneous coordinates of a collection of
- points in projective space. This procedure returns the intersection
- of the maximal homogeneous ideals corresponding to these points.}
- \verb|symbolic_power!*(m,d)| \index{symbolic\_power}
- \pbx{returns the d'th symbolic power of the prime dpmat ideal $m$ as
- the equidimensional hull of the d'th true power. (Hence applies also
- to unmixed ideals.)}
- \end{quote}
- \pagebreak
- \appendix
- \section{A Short Description of Procedures Available in Algebraic
- Mode}
- Here we give a short description, ordered alphabetically, of the
- procedures offered by CALI in the algebraic mode interface.
- If not stated explicitely procedures take (algebraic mode) polynomial
- matrices ($c>0$) or polynomial lists ($c=0$) $m,m1,m2,\ldots $ as
- input and return results of the same type. $gb$ stands for a bounded
- identifier with precomputed \gr basis, $gbr$ for one with precomputed
- resolution. For the mechanism of \ind{bounded identifiers} see the
- section ``Algebraic Mode Interface''.
- \subsection{Basic Algorithms}
- \begin{quote}
- \verb|annihilator m| \index{annihilator}
- \pbx{returns the annihilator of the dpmat $m\subseteq S^c$, i.e.
- $Ann\ S^c/M$.}
- \verb|bettinumbers gbr| \index{bettinumbers}
- \pbx{extracts the list of Betti numbers from the resolution of $gbr$.}
- \verb|codim gb| \index{codim}
- \pbx{returns the codimension of $S^c/gb$.}
- \verb|degree gb| \index{degree}
- \pbx{returns the multiplicity of $gb$ as the sum of the coefficients
- of the Hilbert series numerator.}
- \verb|degsfromresolution gbr| \index{degsfromresolution}
- \pbx{returns the list of column degrees from the minimal resolution
- of $gbr$.}
- \verb|deleteunits m| \index{deleteunits}
- \pbx{factors each basis element of the dpmat ideal $m$ and removes
- factors that are polynomial units. Applies only for non noetherian
- term orders.}
- \verb|dim gb| \index{dim}
- \pbx{returns the dimension of $S^c/gb$.}
- \verb|dimzerop gb| \index{dimzerop}
- \pbx{tests whether $S^c/gb$ is zerodimensional.}
- \verb|directsum(m1,m2,...)| \index{directsum}
- \pbx{returns the direct sum of the modules $m1,m2,\ldots$, embedded
- into the direct sum of the corresponding free modules.}
- \verb|dpgcd(f,g)| \index{dpgcd}
- \pbx{returns the gcd of two polynomials $f$ and $g$, computed by the
- syzygy method.}
- \verb|easydim m and easyindepset m| \index{easydim}\index{easyindepset}
- \pbx{ If the given ideal or module is unmixed (e.g. prime) then all
- maximal strongly independent sets are of equal size and one can look
- for a maximal with respect to inclusion rather than size strongly
- independent set. These procedures don't test the input for being a
- \gr basis or unmixed, but construct a maximal with respect to
- inclusion independent set of the basic leading terms resp. detect
- from this (an approximation for) the dimension.}
- \verb|eliminate(m,<variable list>)| \index{eliminate}
- \pbx{computes the elimination ideal/module eliminating the variables
- in the given variable list (a subset of the variables of the current
- base ring). Changes temporarily the term order to degrevlex.}
- \verb|gbasis m| \index{gbasis}
- \pbx{returns the \gr resp. local standard basis of the bounded
- identifier $m$.}
- \verb|getdegrees() or getdegrees m| \index{getdegrees}
- \pbx{returns the currently active column degrees, i.e. the value of
- \ind{cali!=degrees} converted to algebraic mode, or those of the
- bounded identifier $m$.}
- \verb|getecart()| \index{getecart}
- \pbx{returns the currently active ecart vector converted to algebraic
- mode.}
- \verb|getkbase gb| \index{getkbase}
- \pbx{returns a k-vector space basis of $S^c/gb$, consisting of module
- terms, provided $gb$ is zerodimensional.}
- \verb|getleadterms gb| \index{getleadterms}
- \pbx{returns the dpmat of leading terms of a \gr resp. local standard
- basis of $gb$.}
- \verb|getmonset()| \index{getmonset}
- \pbx{returns the value of \ind{cali!=monset}.}
- \verb|getrules()| \index{getrules}
- \pbx{returns the currently active rule list, introduced with
- \ind{setrules}.}
- \verb|gradedbettinumbers gbr| \index{gradedbettinumbers}
- \pbx{extracts the list of degree lists of the free summands in a
- minimal resolution of $gbr$.}
- \verb|groebfactor m|\footnote{{\em groebfactorize} in v. 2.0., but
- this conflicts with the groebner package of REDUCE} \index{groebfactor}
- \pbx{returns for the dpmat ideal $m$ a (reduced) list of dpmats such
- that the union of their zeroes is exactly the zero set of $m$.
- Factors all polynomials involved in the \gr algorithms of the partial
- results.}
- \verb|hilbseries gb| \index{hilbseries}
- \pbx{returns the Hilbert series of $gb$ with denominator $(1-x)^d$,
- where $d$ is the dimension of $gb$ (if the term order is a
- degreeorder with default ecart).}
- \verb|idealpower(m,n)| \index{idealpower}
- \pbx{returns the interreduced basis of the ideal power $m^n$ with
- respect to the integer $n\geq 0$.}
- \verb|idealprod(m1,m2,...)| \index{idealprod}
- \pbx{returns the interreduced basis of the ideal product
- \mbox{$m1\cdot m2\cdot \ldots$} of the ideals $m1,m2,\ldots$.}
- \verb|idealquotient(m1,m2)| \index{idealquotient}
- \pbx{returns the ideal quotient $m1:m2$ of the module $m1\subseteq
- S^c$ by the ideal $m2$.}
- \verb|idealsum(m1,m2,...)| \index{idealsum}
- \pbx{returns the interreduced basis of the ideal sum $m1+m2+\ldots$.}
- \verb|indepvarsets gb| \index{indepvarsets}
- \pbx{returns the list of strongly independent sets of $gb$ with
- respect to the current term order, see \cite{KW} for a definition in
- the case of ideals and \cite{GrI} for submodules of free modules.}
- \verb|initmat(m,<file name>| \index{initmat}
- \pbx{initialize the dpmat $m$ together with its base ring, term order
- and column degrees from a file.}
- \verb|interreduce m| \index{interreduce}
- \pbx{returns the interreduced module basis given by the rows of $m$,
- i.e. a basis with pairwise indivisible leading terms.}
- \verb|matappend(m1,m2,...)| \index{matappend}
- \pbx{collects the rows of the dpmats $m1,m2,\ldots $ to a common
- matrix. $m1,m2,\ldots$ must be submodules of the same free module,
- i.e. have equal column degrees (and size).}
- \verb|mathomogenize(m,var)| \index{mathomogenize}
- \footnote{Dehomogenize with \verb|sub(z=1,m)| if $z$ is the
- homogenizing variable.}
- \pbx{returns the result obtained by homogenization of the rows of m
- with respect to the variable {\tt var} and the current \ind{ecart
- vector}.}
- \verb|matintersect(m1,m2,...)| \index{matintersect}
- \footnote{It works also for ideals, hence {\em
- idealintersect} was removed in v. 2.1.}
- \pbx{returns the interreduced basis of the intersection $m1\bigcap
- m2\bigcap \ldots$.}
- \verb|matqquot(m,f)| \index{matqquot}
- \pbx{returns the stable quotient $m:(f)^\infty$ of the dpmat $m$ by
- the polynomial $f\in S$.}
- \verb|matquot(m,f)| \index{matquot}
- \pbx{returns the quotient $m:(f)$ of the dpmat $m$ by the polynomial
- $f\in S$.}
- \verb|matstabquot(m1,id)| \index{matstabquot}
- \pbx{returns the stable quotient $m1:id^infty$ of the dpmat $m1$ by
- the ideal $id$.}
- \verb|matsum(m1,m2,...)| \index{matsum}
- \pbx{returns the interreduced basis of the module sum $m1+m2+\ldots$
- in a common free module.}
- \verb|a mod m| \index{mod}
- \pbx{computes the (true) normal form(s), i.e. a standard quotient
- representation, of $a$ modulo the dpmat $m$. $a$ may be either a
- polynomial or a polynomial list ($c=0$) or a matrix ($c>0$) of the
- correct number of columns.}
- \verb|modequalp(gb1,gb2)| \index{modequalp}
- \pbx{tests, whether $gb1$ and $gb2$ are equal (returns YES or NO).}
- \verb|modulequotient(m1,m2)| \index{modulequotient}
- \pbx{returns the module quotient $m1:m2$ of two dpmats $m1,m2$ in a
- common free module.}
- \verb|normalform(m1,m2)| \index{normalform}
- \pbx{returns a list of three dpmats $\{m3,r,z\}$, where $m3$ is the
- normalform of $m1$ modulo $m2$, $z$ a scalar matrix of polynomial
- units (i.e. polynomials of degree 0 in the noetherian case and
- polynomials with leading term of degree 0 in the tangent cone case),
- and $r$ the relation matrix, such that \[m3=z*m1+r*m2.\]}
- \verb|resolve(m[,d])| \index{resolve}
- \pbx{returns the first $d$ members of the minimal resolution of the
- bounded identifier $m$ as a list of matrices. If the resolution has
- less than $d$ non zero members, only those are collected. (Default~:
- $d=100$)}
- \verb|savemat(m,<file name>| \index{savemat}
- \pbx{save the dpmat $m$ together with the settings of it base ring,
- term order and column degrees to a file.}
- \verb|setdegrees <list of monomials>| \index{setdegrees}
- \pbx{set \ind{cali!=degrees}.}
- \verb|setgbasis m| \index{setgbasis}
- \pbx{declares the rows of the bounded identifier $m$ to be already a
- \gr resp. local standard basis thus avoiding a possibly time
- consuming \gr or standard basis computation.}
- \verb|setrules <rule list>| \index{setrules}
- \pbx{introduces an algebraic rule list to CALI.}
- \verb|sieve(m,<variable list>)| \index{sieve}
- \pbx{sieves out all base elements with leading terms having a factor
- contained in the specified variable list (a subset of the variables
- of the current base ring). Useful for elimination problems solved
- ``by hand''.}
- \verb|submodulep(m,gb)| \index{submodulep}
- \pbx{tests, whether $m$ is a submodule of $gb$ (returns YES or NO).
- $gb$ must be a bounded identifier with precomputed \gr basis.}
- \verb|syzygies m| \index{syzygies}
- \pbx{returns the first syzygy module of the bounded identifier $m$.}
- \verb|tangentcone gb| \index{tangentcone}
- \pbx{returns the tangent cone part, i.e. the homogeneous part of
- highest degree with respect to the first degree vector of the term
- order from the \gr basis elements of the dpmat $gb$. The term order
- must be a degree order.}
- \end{quote}
- \subsection{Primary Decomposition and Related Problems}
- \begin{quote}
- \verb|isprime gb| \index{isprime}
- \pbx{tests the ideal $gb$ to be prime.}
- \verb|iszeroradical gb| \index{iszeroradical}
- \pbx{tests the zerodimensional ideal $gb$ to be radical.}
- \verb|zeroradical gb| \index{zeroradical}
- \pbx{returns the radical of the zerodimensional ideal $gb$.}
- \end{quote}
- The following procedures don't assume that $m$ is a \gr basis, since
- the algorithm needs several \gr basis computations anyway. They
- return either lists of ideals (primes of the dpmat $m$ under
- consideration) or lists of pairs consisting of the primary
- components of $m$ and their associated primes.
- \begin{quote}
- \verb|easyprimarydecomposition m| \index{easyprimarydecomposition}
- \pbx{a short primary decomposition using ideal separation of isolated
- primes of $m$. Yields true results only for modules without embedded
- components.}
- \verb|eqhull m| \index{eqhull}
- \pbx{returns the equidimensional hull of the dpmat $m$.}
- \verb|isolatedprimes m| \index{isolatedprimes}
- \pbx{returns the list of isolated primes of the dpmat $m$, i.e. the
- isolated primes of $Ann\ S^c/m$.}
- \verb|primarydecomposition m| \index{primarydecomposition}
- \pbx{returns the primary decomposition of the dpmat $m$.}
- \verb|radical m| \index{radical}
- \pbx{returns the radical of the dpmat ideal $m$.}
- \verb|unmixedradical m| \index{unmixedradical}
- \pbx{returns the unmixed radical of the dpmat ideal $m$.}
- \verb|zeroprimarydecomposition m| \index{zeroprimarydecomposition}
- \pbx{returns the primary decomposition of the zerodimensional dpmat
- $m$.}
- \verb|zeroprimes m| \index{zeroprimes}
- \pbx{returns the list of primes of the zerodimensional dpmat $m$.}
- \end{quote}
- \subsection{Scripts}
- \begin{quote}
- \verb|affine_monomial_curve(l,R)|\index{affine\_monomial\_curve}
- \pbx{$l$ is a list of integers, $R$ a list of variable names of the
- same length as $l$. The procedure set the current base ring and
- returns the defining ideal of the affine monomial curve with generic
- point $(t^i\ :\ i\in l)$.}
- \verb|affine_points m| \index{affine\_points}
- \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
- with as many columns as the current base ring has ring variables.
- Its rows represent the affine coordinates of a collection of points.
- This procedure returns the intersection of the maximal ideals
- corresponding to these points.}
- \verb|analytic_spread M|\index{analytic\_spread}
- \pbx{Computes the analytic spread of $M$.}
-
- \verb|assgrad(M,N,vars)|\index{assgrad}
- \pbx{Computes the associated graded ring $gr_R(N)$ over $R=S/M$, where
- $S$ is the current
- base ring. {\tt vars} is a list of new variable names one for
- each generator of $N$. They are used to create a second ring $T$
- to return an ideal $J$ such that $(S\oplus T)/J$ is the desired
- associated graded ring over the new current base ring $S\oplus T$.}
-
- \verb|blowup(M,N,vars)|\index{blowup}
- \pbx{Computes the blow up ${\cal R}(N)$ of $N$ over the ring $R=S/M$,
- where $S$ is the current base ring. {\tt vars} is a list of new
- variable names one for each generator of $N$. They are used to create
- a second ring $T$ to return an ideal $J$ such that $(S\oplus T)/J$ is
- the desired blowup ring over the new current base ring $S\oplus T$.}
-
- \verb|flatten m| \index{flatten}
- \pbx{converts the matrix $m$ into a list of its entries.}
- \verb|ideal2mat m| \index{ideal2mat}
- \pbx{converts the ideal (=list of polynomials) $m$ into a column
- vector.}
- \verb|matjac(m,<variable list>)| \index{matjac}
- \pbx{returns the Jacobian matrix of the ideal m with respect to the
- supplied variable list}
- \verb|minimal_generators m| \index{minimal\_generators}
- \pbx{returns a set of minimal generators of the dpmat $m$.}
- \verb|minors(m,b)| \index{minors}
- \pbx{returns the list of minors of size $b\times b$ of the dpmat
- $m$.}
- \verb|preimage(m,map)| \index{preimage}
- \pbx{computes the preimage of the ideal $m$ under the given
- polynomial map and sets the current base ring to the preimage ring.}
- \verb|proj_monomial_curve(l,R)|\index{proj\_monomial\_curve}
- \pbx{$l$ is a list of integers, $R$ a list of variable names of the
- same length as $l$. The procedure set the current base ring and
- returns the defining ideal of the projective monomial curve with
- generic point \mbox{$(s^{d-i}\cdot t^i\ :\ i\in l)$} in $R$ where $d=max\{
- x\, :\, x\in l\}$.}
- \verb|proj_points m| \index{proj\_points}
- \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
- with as many columns as the current base ring has ring variables.
- Its rows represent the homogeneous coordinates of a collection of
- points in projective space. This procedure returns the intersection
- of the maximal homogeneous ideals corresponding to these points.}
- \verb|random_linear_form(vars,bound)| \index{random\_linear\_form}
- \pbx{returns a random linear form in the variables {\tt vars} with integer
- coefficients less than the supplied {\tt bound}.}
- \verb|ratpreimage(m,map)| \index{ratpreimage}
- \pbx{computes the closure of the preimage of the ideal $m$ under the
- given rational map and sets the current base ring to the preimage
- ring.}
- \verb|singular_locus(M,c)| \index{singular\_locus}
- \pbx{returns the defining ideal of the singular locus of $Spec\ S/M$
- where $M$ is an ideal of codimension $c$, adding to $M$ the ideal of
- the $c$-minors of the Jacobian of $M$.}
- \verb|sym(M,vars)|\index{sym}
- \pbx{Computes the symmetric algebra $Sym(M)$ where $M$ is an ideal
- defined over the current base ring $S$. {\tt vars} is a list of new
- variable names one for each generator of $M$. They are used to create
- a second ring $R$ to return an ideal $J$ such that $(S\oplus R)/J$ is
- the desired symmetric algebra over the new current base ring $S\oplus
- R$.}
-
- \verb|symbolic_power(m,d)| \index{symbolic\_power}
- \pbx{returns the d'th symbolic power of the prime dpmat ideal $m$.}
- \verb|varopt m| \index{varopt}
- \pbx{finds a heuristically optimal variable order, see \cite{BGK}.
- \[\tt vars:=varopt\ m;\ setring(vars,\{\},lex);\ setideal(m,m);\]
- changes to the lexicographic term order with heuristically best
- performance for a lexicographic \gr basis computation.}
- \end{quote}
- \pagebreak
- \section{Algebraic Mode vs. Symbolic Mode}
- Here is a summary of algebraic mode procedures and their symbolic
- mode equivalents.
- \bigskip
- \begin{tabular}{|p{6cm}|p{7cm}|}
- \hline
- algebraic mode & symbolic mode\\
- \hline
- affine\_monomial\_curve(l,R)&affine\_monomial\_curve!*(l,R)\\
- affine\_points m& affine\_points!* m\\
- analytic\_spread M&analytic\_spread!* M\\
- annihilator m& annihilator1(2)!* m\\
- assgrad(M,N,vars)&assgrad!*(M,N,vars)\\
- bettinumbers m& bettinumbers!*(resolution)\\
- blowup(M,N,vars)&blowup!*(M,N,vars)\\
- codim m&codim!* m\\
- degsfromresolution m &\\
- degree m& degree!* m \\
- degreeorder vars & degreeorder!* vars\\
- deleteunits m& deleteunits!* m\\
- dim m& dim!* m \\
- dimzerop m& dimzerop!* m\\
- directsum(m1,m2,\ldots )& directsum!*(list of dpmats)\\
- dpgcd(f,g) & dpgcd!*(f,g)\\
- easydim m& easydim!* m\\
- easyindepset m& easyindepset!* m\\
- easyprimarydecomposition m& easyprimarydecomposition!* m\\
- eliminate(m, list of var. names)& eliminate!*(m, list of var. names)\\
- eliminationorder vars & eliminationorder!* vars \\
- eqhull m& eqhull!* m\\
- flatten m& flatten!* m\\
- gbasis m& gbasis!* m\\
- getdegrees() or getdegrees m& dpmat\_coldegs m\\
- getecart() & ring\_ecart cali!=basering\\
- getkbase m& getkbase!* m\\
- getleadterms gb & getleadterms!* m\\
- getmonset()&cali!=monset\\
- getring() or getring m& cali!=basering\\
- \end{tabular}
- \begin{tabular}{|p{6cm}|p{7cm}|}
- getrules()& cali!=rules\\
- gradedbettinumbers m& gradedbettinumbers!*(resolution)\\
- groebfactor m& groebfactor!*(m,con)\\
- hilbseries m&
- hilbseries1 m \nl or hilbseries2 m \nl or hilbseries3(resolution)\\
- idealpower(m,n)& idealpower!*(m,n)\\
- idealprod(m1,m2,\ldots )& idealprod!*(list of dpmats) or \nl
- idealprod2(a,b)\\
- idealquotient(m,n)& idealquotient1(2)!*(m,n)\\
- idealsum(m1,m2,\ldots )& matsum!*(list of dpmats)\\
- ideal2mat m&ideal2mat!* m\\
- indepvarsets m& indepvarsets!* m \\
- initmat(file name)& initmat!*(file name)\\
- interreduce m& interreduce!* m\\
- isolatedprimes m& isolatedprimes!* m\\
- isprime m& isprime!* m\\
- iszeroradical m& iszeroradical!* m\\
- localorder vars & localorder!* vars\\
- matappend(m1,m2,\ldots )& matappend!*(list of dpmats)\\
- mathomogenize(m,var. name)& mathomogenize!*(m,var. name)\\
- matintersect(m1,m2,\ldots )& matintersect!*(list of dpmats)\\
- matjac(m,list of var. names)&\\
- matquot(m,f)& matquot!*(m,f)\\
- matqquot(m,f)& matqquot!*(m,f)\\
- matstabquot(m,n)& matstabquot!*(m,n)\\
- matsum(m1,m2,\ldots )& matsum!*(list of dpmats)\\
- minimal\_generators m& minimal\_generators!* m\\
- minors(m,k)&minors!*(m,k)\\
- mod(a,m) or a mod m & mod!*(a,m)\\
- modequalp(m1,m2)& modequalp!*(m1,m2)\\
- modulequotient(m,n)& modulequotient1(2)!*(m,n)\\
- \end{tabular}
- \begin{tabular}{|p{6cm}|p{7cm}|}
- normalform(m1,m2)& normalform!*(m1,m2)\\
- preimage(m,map)& preimage!*(m,map)\\
- primarydecomposition m& primarydecomposition!* m\\
- proj\_monomial\_curve(l,R)&proj\_monomial\_curve!*(l,R)\\
- proj\_points m& proj\_points!* m\\
- radical m& radical!* m\\
- random\_linear\_form(vars,bound)&\\
- ratpreimage(m,map)& ratpreimage!*(m,map)\\
- resolve(m[,d])& resolve!*(m,d)\\
- savemat(m,file name)& savemat!*(m,file name)\\
- setdegrees(list of monomials) &
- cali!=degrees:=\nl assoc. list of monomials\\
- setecart(list of integer) & setecart!*(list of integers) \\
- setgbasis m&\\
- setideal(id, list of polynomials) &dpmat\_from\_a(alg. prefix form)\\
- setmodule(id,matrix) & dpmat\_from\_a(alg. prefix form)\\
- setmonset(var. list)& setmonset!*(var. list)\\
- setring(vars,\nl term order,tag[,ecart]) &
- setring!* \nl ring\_define(vars,tord,tag,ecart)\\
- setrules(rules list)& setrules!*(rules list)\\
- sieve(m,list of var. names) & dpmat\_sieve(m,list of var. names)\\
- singular\_locus(M,c)& \\
- submodulep(m1,m2)& submodulep!*(m1,m2)\\
- sym(M,vars)&sym!*(M,vars)\\
- symbolic\_power(m,d)& symbolic\_power!*(m,d)\\
- syzygies m& syzygies!* m or syzygies1!* m\\
- tangentcone gb& tangentcone!* m\\
- unmixedradical m& unmixedradical!* m\\
- varopt m& varopt!* m\\
- zeroprimarydecomposition m& zeroprimarydecomposition!* m\\
- zeroprimes m& zeroprimes!* m\\
- zeroradical m& zeroradical!* m\\
- \hline
- \end{tabular}
- \pagebreak
- \section{The CALI Module Structure}
- \vfill
- \begin{tabular}{|p{1.5cm}||p{5.5cm}|p{2cm}|p{4cm}|}
- \hline
- \sloppy
- name & subject & data type & representation \\
- \hline
- cali & Header module, contains \linebreak
- global variables, switches etc. & --- & ---\\
- bcsf & Base coefficient arithmetic & base coeff. & standard forms \\
- ring & Base ring setting, definition of the term order & base ring &
- special type RING\\
- mo & monomial arithmetic & monomials & (exp. list . degree list)\\
- dpoly & Polynomial and vector arith\-metic & dpolys & list of terms\\
- bas & Operations on base lists & base list & list of base elements \\
- dpmat & Operations on polynomial matrices, the central data type of
- CALI & dpmat & special type DPMAT\\
- red & Normal form algorithms for noetherian term orders & --- & ---\\
- groeb & \gr basis algorithm and related ones for noetherian term
- orders & --- & ---\\
- mora & Modifications for non noetherian term orders & --- & ---\\
- matop & Operations on (lists of) \linebreak dpmats that correspond to
- ideal/module operations & --- & ---\\
- quot & Different quotient algorithms & --- & --- \\
- moid & Monomial ideal algorithms & monomial ideal & list of monomials \\
- res & Resolutions of dpmats & resolution & list of dpmats \\
- interf & Interface to algebraic mode & --- & ---\\
- odim & Algorithms for zerodimensional ideals and modules & --- & ---\\
- prime & Primary decomposition and related questions & --- & ---\\
- scripts & Advanced applications & --- & ---\\
- \hline
- \end{tabular}
- \vfill
- \pagebreak
- \begin{theindex}
- \item affine\_monomial\_curve, 27, 36
- \item affine\_points, 28, 36
- \item algebraic numbers, 12
- \item analytic\_spread, 27, 36
- \item annihilator, 23, 30
- \item annihilator1, 18
- \item assgrad, 27, 36
- \indexspace
- \item bas\_getrelations, 18
- \item bas\_removerelations, 17
- \item bas\_setrelations, 17
- \item base coefficients, 12
- \item base elements, 17
- \item base ring, 8, 16
- \item basis, 12
- \item bcsimp, 13, 15
- \item bettinumbers, 30
- \item binomial, 13
- \item blowup, 7, 27, 36
- \item bounded identifier, 11
- \item bounded identifiers, 30
- \indexspace
- \item cali, 6
- \item cali!=basering, 8, 14, 16
- \item cali!=degrees, 10, 15, 16, 31, 34
- \item cali!=ecart, 20
- \item cali!=monset, 15, 20, 22, 31
- \item cali!=rules, 12, 15
- \item cali!=trace, 14, 15
- \item codim, 24, 30
- \item column degree, 10
- \item current module, 16
- \item current ring, 16
- \indexspace
- \item degree, 24, 30
- \item degree vectors, 8
- \item degreeorder, 8, 16
- \item degsfromresolution, 30
- \item deleteunits, 19, 30
- \item detectunits, 6, 13, 19
- \item dim, 23, 30
- \item dimzerop, 25, 30
- \item directsum, 18, 30
- \item dmode, 12
- \item dp\_pseudodivmod, 12, 22
- \item dpgcd, 22, 31
- \item dpmat, 10--12, 18
- \item dpmat\_coldegs, 18
- \item dpmat\_cols, 18
- \item dpmat\_list, 18
- \item dpmat\_rows, 18
- \indexspace
- \item easydim, 21, 24, 31
- \item easyindepset, 24, 31
- \item easyprimarydecomposition, 26, 35
- \item ecart, 3, 6, 17
- \item ecart vector, 9, 24, 33
- \item eliminate, 7, 22, 31
- \item eliminationorder, 9, 16
- \item eqhull, 26, 35
- \indexspace
- \item factorunits, 6, 14, 19
- \item flatten, 11, 36
- \item free identifier, 11
- \indexspace
- \item gbasis, 19, 20, 31
- \item getdegrees, 11, 31
- \item getecart, 10, 31
- \item getkbase, 25, 31
- \item getleadterms, 31
- \item getmonset, 31
- \item getring, 9
- \item getrules, 12, 31
- \item global procedures, 6
- \item gradedbettinumbers, 32
- \item groeb\_stbasis, 20
- \item groebfactor, 21, 32
- \indexspace
- \item hardzerotest, 12, 14
- \item hilb1, 24
- \item hilb2, 24
- \item Hilbert series, 10
- \item hilbseries, 32
- \item hilbseries1, 24
- \item hilbseries2, 24
- \item Homogenizations, 10
- \indexspace
- \item ideal quotient, 22
- \item ideal2mat, 11, 36
- \item idealpower, 18, 32
- \item idealprod, 18, 32
- \item idealquotient, 23, 32
- \item ideals, 11
- \item idealsum, 32
- \item indepvarsets, 23, 32
- \item initmat, 32
- \item internal procedures, 6
- \item interreduce, 19, 32
- \item isolatedprimes, 26, 35
- \item isprime, 25, 35
- \item iszeroradical, 35
- \indexspace
- \item lazy, 6, 14, 21
- \item lexicographic, 8
- \item listminimize, 7
- \item listtest, 7
- \item local procedures, 6
- \item localorder, 9, 16
- \indexspace
- \item map, 26
- \item matappend, 18, 33
- \item mathomogenize, 33
- \item matintersect, 7, 18, 22, 33
- \item matjac, 37
- \item matqquot, 18, 22, 33
- \item matquot, 18, 22, 33
- \item matstabquot, 23, 33
- \item matsum, 18, 33
- \item minimal\_generators, 28, 37
- \item minors, 37
- \item mod, 19, 33
- \item modequalp, 18, 22, 33
- \item module quotient, 22
- \item module term order, 10
- \item modulequotient, 23, 33
- \item modulequotient1, 18
- \item modules, 11
- \item moid\_primes, 23
- \item mora\_interreduce, 19
- \item mora\_stbasis, 20
- \indexspace
- \item noetherian, 3, 8, 14, 16, 19
- \item normalform, 19, 34
- \indexspace
- \item odim\_parameter, 25
- \item odim\_up, 25
- \indexspace
- \item preimage, 7, 27, 37
- \item primary decomposition, 7
- \item primarydecomposition, 35
- \item proj\_monomial\_curve, 28, 37
- \item proj\_points, 29, 37
- \indexspace
- \item radical, 26, 35
- \item random\_linear\_form, 37
- \item ratpreimage, 27, 37
- \item red\_better, 18
- \item red\_interreduce, 19
- \item red\_total, 14
- \item resolve, 7, 34
- \item reverse lexicographic, 8
- \item ring, 12
- \item ring\_define, 16
- \item ring\_sum, 16
- \indexspace
- \item savemat, 34
- \item scripts, 7
- \item setdegrees, 11, 15, 34
- \item setgbasis, 34
- \item setideal, 12, 13
- \item setkorder, 16
- \item setmodule, 12, 13
- \item setmonset, 15, 21
- \item setring, 7--9, 13, 14, 16
- \item setrules, 12, 15, 22, 31, 34
- \item sieve, 34
- \item singular\_locus, 37
- \item stable quotient, 22
- \item submodulep, 18, 21, 34
- \item sym, 7, 28, 37
- \item symbolic\_power, 29, 38
- \item syzygies, 19, 20, 34
- \item syzygies1, 20
- \indexspace
- \item tangentcone, 35
- \item term, 17
- \indexspace
- \item unmixedradical, 26, 35
- \indexspace
- \item varopt, 38
- \indexspace
- \item zeroprimarydecomposition, 25, 26, 36
- \item zeroprimes, 25, 36
- \item zeroradical, 25, 35
- \end{theindex}
- \pagebreak
- \begin{thebibliography}{xxx}
- \bibitem{BS} D. Bayer, M. Stillman : Computation of Hilbert
- functions, {\it J. Symb. Comp. \bf 14} (1992), 31 - 50.
- \bibitem{BKW} T. Becker, H. Kredel, V. Weispfenning : \gr bases. A
- computational approach to commutative algebra. Grad. Texts in Math.
- 141, Springer, New York 1993.
- \bibitem{BCRT} A. M. Bigatti, P. Conti, L. Robbiano, C. Traverso : A
- divide and conquer algorithm for Hilbert-Poincare series,
- multiplicity and dimension of monomial ideals, to appear.
- \bibitem{BGK} W. Boege, R. Gebauer, H. Kredel : Some examples for
- solving systems of algebraic equations by calculating \gr bases. {\it
- J. Symb. Comp. \bf 2} (1986), 83 - 98.
- \bibitem{B1} B. Buchberger : \gr bases : An algorithmic method in
- polynomial ideal theory. In : Recent trends in multidimensional
- system theory (N.~K.~Bose ed), Reidel, Dortrecht 1985, 184 - 232.
- \bibitem{B2} B. Buchberger : Applications of \gr bases in non-linear
- computational geometry. L.N.C.S. 296 (1988), 52 - 80.
- \bibitem{CLO} D. Cox, J. Little, D. O'Shea : Ideals, varieties, and
- algorithms. Undergrad. Texts in Math., Springer, New York 1992.
- \bibitem{E} D. Eisenbud : \gr bases. A chapter from :
- Commutative algebra with a view toward algebraic geometry.
- A book in preparation.
- \bibitem{GTZ} P. Gianni, B. Trager, G. Zacharias : \gr bases and
- primary decomposition of polynomial ideals, {\it J. Symb. Comp. \bf
- 6} (1988), 149 - 167.
- \bibitem{GMNRT} A. Giovini, T. Mora, G. Niesi, L. Robbiano \& C.
- Traverso : "One sugar cube, please" or Selection strategies in the
- Buchberger algorithm. In : Proceedings of the ISSAC'91, ACM Press
- 1991, 49 - 54.
- \bibitem{GrI} H.-G. Gr\"abe : Two remarks on independent sets,
- {\it J. Alg. Comb. \bf 2} (1993), 137 - 145.
- \bibitem{Gr23} H.-G. Gr\"abe : The tangent cone algorithm and
- homogenization. To appear
- \bibitem{ala} H.-G. Gr\"abe : Algorithms in local algebra. To appear
- \bibitem{Kr} H. Kredel : Primary ideal decomposition, in : Proc.
- EUROCAL'87, Lecture Notes in Comp. Sci. 378 (1986), 270 - 281.
- \bibitem{KW} H. Kredel, V. Weispfenning : Computing dimension and
- independent sets for polynomial ideals, {\it J. Symb. Comp. \bf 6}
- (1988), 231 - 247.
- \bibitem{MM} H.-M. M\"oller, F. Mora : New constructive methods in
- classical ideal theory, {\it J. Alg. \bf 100} (1986), 138 -178.
- \bibitem{MR88} T. Mora, L. Robbiano : The Gr\"obner fan of an ideal.
- {\it J. Symb. Comp. \bf 6} (1988), 183 - 208.
- \bibitem{Mo88} T. Mora : Seven variations on standard bases.
- Preprint, Univ. Genova, 1988.
- \bibitem{MPT} T. Mora, G. Pfister, C. Traverso : An introduction to
- the tangent cone algorithm, to appear
- \bibitem{Ro} L. Robbiano : Computer algebra and commutative algebra.
- L.N.C.S. 357 (1989), 31 - 44.
- \bibitem{Ru} E. W. Rutman : \gr bases and primary decomposition of
- modules. {\it J. Symb. Comp. \bf 14} (1992), 483 - 503.
- \end{thebibliography}
- \end{document}
|