cali.tex 85 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491
  1. % CALI user documentation
  2. % H.-G. Graebe | Univ. Leipzig | Version 2.1
  3. \documentstyle[12pt]{article}
  4. \date{Oct. 20, 1993}
  5. \textheight 21cm
  6. \textwidth 15cm
  7. \voffset -60pt
  8. \hoffset -45pt
  9. \newcommand{\gr}{Gr\"obner }
  10. \newcommand{\x}{{\bf x}}
  11. \newcommand{\ind}[1]{{\em #1}\index{#1}}
  12. \newcommand{\pbx}[1]{\mbox{}\hfill \parbox[t]{12cm}{#1} \pagebreak[3]}
  13. \newcommand{\nl}{\newline \hspace*{5mm}}
  14. %\makeindex
  15. \title{CALI\\[20pt] A REDUCE Package for \\
  16. Commutative Algebra \\Version 2.1}
  17. \author{
  18. Hans-Gert Gr\"abe \\[15pt]
  19. Universit\"at Leipzig\\
  20. Fachbereich Mathematik/Informatik \\
  21. Augustusplatz 10 -- 11\\
  22. 04109 Leipzig / Germany\\[20pt]
  23. email : graebe@informatik.uni-leipzig.d400.de}
  24. \begin{document}
  25. \maketitle
  26. \vfill
  27. Key words : \gr algorithms for ideals and modules, free resolution,
  28. local standard bases, Hilbert series, independent sets, primary
  29. decomposition, constructive commutative algebra
  30. \pagebreak
  31. \tableofcontents
  32. \pagebreak
  33. \section{Introduction}
  34. This package contains algorithms for computations in commutative
  35. algebra closely related to the \gr algorithm for ideals and modules.
  36. Its heart is a new implementation of the \gr algorithm\footnote{ The
  37. data representation even for polynomials is different from that given
  38. in the groebner package distributed with REDUCE (and rests on ideas
  39. used in the dipoly package)} that allows the computation of syzygies,
  40. too. This implementation is also applicable to submodules of free
  41. modules with generators represented as rows of a matrix.
  42. Moreover CALI contains facilities for local computations, using a
  43. modern implementation of Mora's standard basis algorithm, see
  44. \cite{MPT} and \cite{Gr23}, that works for arbitrary term orders.
  45. The full analogy between modules over the local ring \linebreak[1]
  46. $k[x_v:v\in H]_{\bf m}$ and homogeneous (in fact H-local) modules
  47. over $k[x_v:v\in H]$ is reflected through the switch
  48. \ind{noetherian}. Turn it on (\gr basis, the default) or off (local
  49. standard basis) to choose the right standard basis algorithm
  50. automatically.
  51. CALI extends also the restricted term order facilities of the
  52. groebner package, defining term orders by degree vector lists, and
  53. the rigid implementation of the sugar idea, by a more flexible
  54. \ind{ecart} vector, in particular useful for local computations, see
  55. \cite{Gr23}.
  56. \medskip
  57. The package was designed mainly as a symbolic mode programming
  58. environment extending the build-in facilities of REDUCE for the
  59. computational approach to problems arising naturally in commutative
  60. algebra. But an algebraic mode interface allows to access (in a more
  61. rigid frame) all important features implemented symbolically and thus
  62. should be favoured for short sample computations.
  63. On the other hand, tedious computations are strongly recommended to
  64. be done symbolically since this allows considerably more flexibility
  65. and avoids unnecessary translations of intermediate results from
  66. CALI's internal data representation to the algebraic mode and vice
  67. versa. Moreover, one can easily extend the package with new symbolic
  68. mode scripts, or do more difficult interactive computations. For all
  69. these purposes the symbolic mode interface offers substantially more
  70. facilities than the algebraic one.
  71. \medskip
  72. For a detailed description of special symbolic mode procedures one
  73. should consult the source text and the comments therein. In this
  74. manual we can give only a brief description of the main ideas
  75. incorporated into the package CALI. We concentrate on the data
  76. structure design and the description of the more advanced algorithms.
  77. For sample computations from several fields of commutative algebra
  78. the reader may consult also the {\em cali.tst} file.
  79. \medskip
  80. As main topics CALI contains facilities for
  81. \begin{itemize}
  82. \item defining rings, ideals and modules,
  83. \item computing \gr bases and local standard bases,
  84. \item computing syzygies, resolutions and (graded) Betti numbers,
  85. \item computing Hilbert series, multiplicities, independent sets,
  86. dimensions.
  87. \item computing normal forms and representations,
  88. \item computing sums, products, intersections, quotients, elimination
  89. ideals etc.
  90. \item primality tests, radicals, unmixed parts, primary decompositions
  91. etc. of ideals and modules.
  92. \item scripts for advanced applications of \gr bases (blowup,
  93. associated graded ring, analytic spread, symmetric algebra,
  94. monomial curves etc.)
  95. \end{itemize}
  96. Below we will use freely without further explanation the notions
  97. common for text books and papers about constructive commutative
  98. algebra, assuming the reader to be familiar with the corresponding
  99. ideas and concepts. For further references see e.g. the text books
  100. \cite{BKW} and \cite{CLO} or the survey papers \cite{B1}, \cite{B2},
  101. \cite{Ro}.
  102. \subsection{Description of the Documents Distributed with CALI}
  103. The CALI package contains the following files~:
  104. \begin{quote}
  105. cali.chg
  106. \pbx{a detailed report of changes from v. 2.0 to v. 2.1.}
  107. cali.log
  108. \pbx{the output file, that cali.tst should produce with
  109. \begin{quote} \tt
  110. load\_package cali;
  111. out "logfile"\$
  112. in "cali.tst";
  113. shut "logfile"\$
  114. \end{quote}}
  115. cali.red
  116. \pbx{the CALI source file. It should be compiled (see below) in the
  117. usual way and added to the REDUCE fast load file system or be
  118. accessible in the current path.}
  119. cali.tex
  120. \pbx{this manual.}
  121. cali.tst
  122. \pbx{a test file with various examples and applications of CALI.}
  123. \end{quote}
  124. CALI should be precompiled as usual, i.e. either using the {\em
  125. makefasl} utility of REDUCE or ``by hand'' via
  126. \begin{verbatim}
  127. faslout "cali"$
  128. in "cali.red"$
  129. faslend$
  130. \end{verbatim}
  131. and then loaded via
  132. \begin{verbatim}
  133. load_package cali;
  134. \end{verbatim}
  135. Upon successful loading CALI responses with a message containing the
  136. version number and the last update of the distribution.
  137. There may be some trouble on smaller machines to compile CALI in the
  138. described way since it goes beyond the 100k limit for source code
  139. recommended by the REDUCE system's administration. In this case one
  140. can try to load the compiler previously and to extend the BPS space~:
  141. \begin{verbatim}
  142. load compiler;
  143. lisp set!-bps!-size 1000000;
  144. faslout "cali"$
  145. in "cali.red"$
  146. faslend$
  147. \end{verbatim}
  148. \begin{center}
  149. \fbox{\parbox{12cm}{Feel free to contact me by email if You have
  150. problems to get CALI started. Also comments, hints, bug reports etc.
  151. are welcome.}}
  152. \end{center}
  153. \subsection{CALI's Language Concept}
  154. From a certain point of view one of the major disadvantage of the
  155. current RLISP (and the underlying PSL) language is the fact
  156. that it supports modularity and data encapsulation only in a
  157. rudimentary way. Since all parts of code loaded into a session are
  158. visible all the time name conflicts between different packages may
  159. occur, will occur (even not issuing a warning message), and are hard
  160. to prevent, since packages are developped (and are still developping)
  161. by different research groups at different places and different time.
  162. A (yet rudimentary) concept of REDUCE packages and modules indicates the
  163. direction into what the REDUCE designers are looking for a solution
  164. for this general problem.
  165. \medskip
  166. CALI (2.0 and higher) follows a name concept for internal procedures
  167. to mimick data encapsulation at a syntactical level. We hope this way
  168. on the one hand to resolve the conflicts described above at least for
  169. the internal part of CALI and on the other hand to anticipate a
  170. desirable future and already foregoing development of REDUCE towards
  171. a true modularity.
  172. The package CALI is divided into several modules, each of them
  173. introducing either a single new data type together with basic
  174. facilities, constructors, and selectors or a collection of algorithms
  175. subject to a common problem. Each module contains \ind{internal
  176. procedures}, conceptually hidden by this module, \ind{local
  177. procedures}, designed for a CALI wide usage, and \ind{global
  178. procedures}, exported by CALI into the general (algebraic or
  179. symbolic) environment of REDUCE. A header module \ind{cali} contains
  180. all (fluid) global variables and switches defined by the pacakge
  181. CALI.
  182. Along these lines the CALI procedures available in symbolic mode are
  183. divided into three types with the following naming convention~:
  184. \begin{quote}
  185. \verb|module!=procedure|
  186. \pbx{internal to the given module.}
  187. \verb|module_procedure|
  188. \pbx{exported by the given module into the local CALI environment.}
  189. \verb|procedure!*|
  190. \pbx{a global procedure usually having a semantically equivalent
  191. procedure (possibly with another parameter list) without trailing
  192. asterisk in algebraic mode.}
  193. \end{quote}
  194. \subsection{New and Improved Facilities in V. 2.1}
  195. The major changes in v. 2.1. reflect the experience we've got from the
  196. use of CALI 2.0. The following changes are worth mentioning
  197. explicitely~:
  198. \begin{enumerate}
  199. \item The \ind{ecart} handled globally in v. 2.0. now became local to
  200. each base ring.
  201. \item The algebraic rule concept was adapted to CALI. It allows to
  202. supply rule based coefficient domains. This is a more efficient way
  203. to deal with (easy) algebraic numbers than through the {\em arnum
  204. package}.
  205. \item The \gr factorization algorithm was seriously improved.
  206. \item The local standard basis part was improved~:
  207. \begin{enumerate}
  208. \item Base elements without reductum are handled separately
  209. to do full (and not only lead term) reduction with respect to
  210. them.
  211. \item Switches \ind{detectunits} and \ind{factorunits} allow
  212. to remove polynomial unit factors in an early stage of the
  213. computation.
  214. \item \ind{lazy} now switches between Mora's (lazy) and
  215. Lazard's approaches rather than between the lazy and the
  216. global versions of Mora's approach.
  217. \end{enumerate}
  218. \item \ind{listtest} and \ind{listminimize} provide an unified
  219. concept for different list operations previously scattered in the
  220. source text.
  221. \item There are several new quotient algorithms at the symbolic level
  222. (both the general element and the intersection approaches are
  223. available) and new features for the computation of equidimensional
  224. hull and equidimensional radical.
  225. \item A new module \ind{scripts} offers advanced applications of \gr
  226. bases.
  227. \item Several advanced procedures initialize a \gr basis computation
  228. over a certain intermediate base ring or term order as e.g.
  229. \ind{eliminate}, \ind{resolve}, \ind{matintersect} or all
  230. \ind{primary decomposition} procedures. Interrupting a computation in
  231. v. 2.1. now the original values of CALI's global variables should be
  232. restored, since all intermediate procedures work with local copies of
  233. the global variables only.\footnote{Note that not all REDUCE versions
  234. support this environment recovering. Moreover recovering the base
  235. ring this way may cause some trouble since the intermediate ring,
  236. installed with \ind{setring}, changed possibly the internal variable
  237. order set by {\em setkorder}.} This doesn't apply to advanced
  238. procedures that change the current base ring as e.g. \ind{blowup},
  239. \ind{preimage}, \ind{sym} etc.
  240. \end{enumerate}
  241. \section{The Computational Model}
  242. This section gives a short introduction into the data type design of
  243. CALI at different levels. First (\S 1 and 2) we describe CALI's way
  244. of algorithmic translation of the abstract algebraic objects {\em
  245. ring of polynomials, ideal} and (finitely generated) {\em module}.
  246. Then (\S 3 and 4) we describe the algebraic mode interface of CALI
  247. and the switches and global variables to drive a session. Finally (\S
  248. 5) we give a more detailed overview of the basic (symbolic mode) data
  249. structures involved with CALI. We refer to the appendix for a short
  250. summary of the commands available in algebraic mode.
  251. \subsection{The Base Ring}
  252. A polynomial ring consists in CALI of the following data~:
  253. \begin{quote}
  254. a list of variable names
  255. \pbx{All variables not occuring in the list of ring names are treated
  256. as parameters. Computations are executed denominatorfree, but the
  257. results are valid only over the corresponding parameter {\em field}
  258. extension.}
  259. a term order and a term order tag
  260. \pbx{They describe the way in which the terms in each polynomial (and
  261. polynomial vector) are ordered.}
  262. an ecart vector
  263. \pbx{A list of positive integers corresponding to the variable
  264. names.}
  265. \end{quote}
  266. A \ind{base ring} may be defined (in algebraic mode) through the
  267. command \newline
  268. \verb| setring ring | with ring ::= \{vars,tord,tag[,ecart]\} resp.
  269. \begin{verbatim}
  270. setring(vars, tord, tag [,ecart])
  271. \end{verbatim}
  272. \index{setring}
  273. This sets the global (symbolic) variable \ind{cali!=basering}. Here
  274. {\tt vars} is the list of variable names, {\tt tord} a (possibly
  275. empty) list of weight lists, the \ind{degree vectors}, and {\tt tag}
  276. the tag LEX or REVLEX. Optionally one can supply {\tt ecart}, a list
  277. of positive integers of the same length as {\tt vars}, to set an ecart
  278. vector different from the default one (see below).
  279. The degree vectors must have the same length as {\tt vars}. If $(w_1\
  280. \ldots\ w_k)$ is the list of degree vectors then
  281. \[x^a<x^b \qquad :\Leftrightarrow \qquad
  282. \parbox[t]{8cm}{either\hfill
  283. \parbox[t]{6cm}{$w_j(x^a)=w_j(x^b)$\hfill for $j<i$ \hfill and \\[8pt]
  284. $w_i(x^a)<w_i(x^b)$} \\[10pt] or\hfill
  285. \parbox[t]{6cm}{$w_j(x^a)=w_j(x^b)$\hfill for all $j$ \hfill and \\[8pt]
  286. $x^a<_{lex}x^b$ resp. $x^a<_{revlex}x^b$}}
  287. \]
  288. Here $<_{lex}$ resp. $<_{revlex}$ denote the
  289. \ind{lexicographic} (tag=LEX) resp. \ind{reverse lexicographic}
  290. (tag=REVLEX) term orders with respect to the variable order given in
  291. {\tt vars}, i.e.
  292. \[x^a<x^b \qquad :\Leftrightarrow \qquad
  293. \parbox[t]{7cm}{\centering
  294. $\exists\ j\ \forall\ i<j\ :\ a_i=b_i$\hfill \\[8pt] and\\[8pt]
  295. $a_j<b_j$\ (lex.)\hfill or\hfill $a_j>b_j$\ (rev.-lex.)\\}
  296. \]
  297. Every term order can be represented in such a way, see \cite{MR88}.
  298. During the ring setting the term order will be checked to be
  299. noetherian (i.e. to fulfill the descending chain condition) provided
  300. the switch \ind{noetherian} is on (the default). The same applies
  301. turning {\em noetherian on}~: If the term order of the underlying
  302. base ring isn't noetherian the switch can't be turned over. Hence,
  303. starting from a non noetherian term order, one should define {\em
  304. first} a new ring and {\em then} turn the switch on.
  305. Useful term orders can be defined by the procedures
  306. \begin{quote}
  307. \verb|degreeorder vars|, \index{degreeorder}
  308. \pbx{that returns $tord=\{\{1,\ldots ,1\}\}$,}
  309. \verb|localorder vars|, \index{localorder}
  310. \pbx{that returns $tord=\{\{-1,\ldots ,-1\}\}$ (a non noetherian term
  311. order for computations in local rings) or}
  312. \verb|eliminationorder(vars,elimvars)|, \index{eliminationorder}
  313. \pbx{that returns a term order for elimination of the variables in
  314. {\tt elimvars}, a subset of all {\tt vars}. It's recommended to
  315. combine it with the tag REVLEX.}
  316. \end{quote}
  317. \noindent Examples :
  318. \begin{verbatim}
  319. vars:={x,y,z};
  320. tord:=degreeorder vars; % Returns {{1,1,1}}
  321. setring(vars,tord,lex); % GRADLEX in the groebner package.
  322. % or
  323. setring({a,b,c,d},{},lex); % LEX in the groebner package.
  324. % or
  325. vars:={a,b,c,x,y,z};
  326. tord:=eliminationorder(vars,{x,y,z})
  327. % Returns {{0,0,0,1,1,1},{1,1,1,0,0,0}}
  328. setring(vars,tord,revlex);
  329. \end{verbatim}
  330. \pagebreak[2]
  331. The base ring is initialized with \newline
  332. \verb|{{t,x,y,z},{{1,1,1,1}},revlex,{1,1,1,1}}|,\newline
  333. i.e. $S=k[t,x,y,z]$ supplied with the degreewise reverse
  334. lexicographic term order.
  335. \medskip
  336. \noindent\verb|getring m|\index{getring} returns the ring attached to
  337. the object with the identifier {\tt m}. E.g.
  338. \begin{verbatim}
  339. setring getring m;
  340. \end{verbatim}
  341. (re)sets the base ring to the base ring of the formerly defined
  342. object (ideal or module)~{\tt m}.
  343. \begin{verbatim}
  344. getring();
  345. \end{verbatim}
  346. returns the currently active base ring.
  347. CALI defines also an \ind{ecart vector}, attaching to each variable a
  348. positive weight with respect to that homogenizations and related
  349. algorithms are executed. It may be set optionally by the user during
  350. the \ind{setring} command. (Default~: If the term order is a
  351. (positive) degree order then the ecart is the first degree vector,
  352. otherwise each ecart equals 1).
  353. The ecart vector is used in several places for efficiency reason (\gr
  354. basis computation with the sugar strategy) or for termination (local
  355. standard bases). If the input is homogeneous the ecart vector should
  356. reflect this homogeneity rather than the first degree vector to
  357. obtain the best possible performance. For a discussion of local
  358. computations with encoupled ecart vector see \cite{Gr23}. In general
  359. the ecart vector is recommended to be chosen in such a way that the
  360. input examples become close to be homogeneous. \ind{Homogenizations}
  361. and \ind{Hilbert series} are computed with respect to this ecart
  362. vector.
  363. \medskip
  364. \noindent \verb|getecart()|\index{getecart} returns the ecart vector
  365. currently set.
  366. \subsection{Ideals and Modules}
  367. If $S=k[x_v,\ v \in H]$ is a polynomial ring, a matrix $M$ of size
  368. $r\times c$ defines a map
  369. \[f\ :\ S^r \longrightarrow S^c\]
  370. by the following rule
  371. \[ f(v):=v\cdot M \qquad \mbox{ for } v \in S^r.\]
  372. There are two modules, connected with such a map, $im\ f$, the
  373. submodule of $S^c$ generated by the rows of $M$, and $coker\ f\
  374. (=S^c/im\ f)$. Conceptually we will identify $M$ with $im\ f$ for the
  375. basic algebra, and with $coker\ f$ for more advanced topics of
  376. commutative algebra (Hilbert series, dimension, resolution etc.)
  377. following widely accepted conventions.
  378. With respect to a fixed basis $\{e_1,\ldots ,e_c\}$ one can define
  379. module term orders on $S^c$, \gr bases of submodules of $S^c$ etc.
  380. They generalize the corresponding notions for ideal bases. See
  381. \cite{E} or \cite{MM} for a detailed introduction to this area of
  382. computational commutative algebra. This allows to define joint
  383. facilities for both ideals and submodules of free modules. Moreover
  384. computing syzygies the latter come in in a natural way.
  385. CALI handles ideal and module bases in a unique way representing them
  386. as rows of a \ind{dpmat} ({\bf d}istributive {\bf p}olynomial {\bf
  387. mat}rix). It attaches to each unit vector $e_i$ a monomial $x^{a_i}$,
  388. the $i$-th \ind{column degree} and represents the rows of a dpmat $M$
  389. as lists of module terms $x^ae_i$, sorted with respect to the
  390. following \ind{module term order}
  391. \bigskip
  392. \begin{tabular}{cccp{6cm}}
  393. $x^ae_i<x^be_j$ & $:\Leftrightarrow$ & either &
  394. {\centering $x^ax^{a_i}<x^bx^{a_j}$ in $S$\\}\\
  395. & & or &
  396. {\centering $x^ax^{a_i}=x^bx^{a_j}$ \\ and \\
  397. $i<j$ (lex.) resp. $i>j$ (revlex.)\\}
  398. \end{tabular}
  399. Every dpmat $M$ has its own column degrees (no default !). They are
  400. managed through a global (symbolic) variable \ind{cali!=degrees}.
  401. \begin{quote}
  402. \verb|getdegrees m| \index{getdegrees}
  403. \pbx{returns the column degrees of the object with identifier m.}
  404. \verb|getdegrees()|
  405. \pbx{returns the current setting of {\em cali!=degrees}.}
  406. \verb|setdegrees <list of monomials>| \index{setdegrees}
  407. \pbx{sets {\em cali!=degrees} correspondingly. Use this command
  408. before executing {\em setmodule} to give a dpmat prescribed column
  409. degrees since cali!=degrees has no default value and changes during
  410. computations. A good guess is to supply the empty list (i.e. all
  411. column degrees are equal to $\x^0$). Be careful defining modules
  412. without prescribed column degrees.}
  413. \end{quote}
  414. To distinguish between \ind{ideals} and \ind{modules} the former are
  415. represented as a \ind{dpmat} with $c=0$ (and hence without column
  416. degrees). If $I \subset S$ is such an ideal one has to distinguish
  417. between the ideal $I$ (with $c=0$, allowing special ideal operations
  418. as e.g. ideal multiplication) and the submodule $I$ of the free
  419. onedimensional module $S^1$ (with $c=1$, allowing matrix operations
  420. as e.g. transposition, matrix multiplication etc.). \ind{ideal2mat}
  421. converts an (algebraic) list of polynomials into an (algebraic)
  422. matrix column whereas \ind{flatten} collects all matrix entries into
  423. a list.
  424. \subsection{The Algebraic Mode Interface}
  425. Corresponding to CALI's general philosophy explained in the
  426. introduction the algebraic mode interface translates algebraic input
  427. into CALI's internal data representation, calls the corresponding
  428. symbolic functions, and retranslates the result back into algebraic
  429. mode. Since \gr basis computations may be very tedious even on small
  430. examples, one should find a well balance between the storage of
  431. results computed earlier and the unavoidable time overhead and memory
  432. request associated with the management of these results.
  433. Therefore CALI distinguishes between {\em free} and {\em bounded}
  434. \index{free identifier}\index{bounded identifier} identifiers. Free
  435. identifiers stand only for their value whereas to bounded identifiers
  436. several internal information is attached to their property list for
  437. later use.
  438. \medskip
  439. After the initialization of the {\em base ring} bounded identifiers
  440. for ideals or modules should be declared via
  441. \begin{verbatim}
  442. setmodule(name,matrix value)
  443. \end{verbatim}
  444. resp.
  445. \begin{verbatim}
  446. setideal(name,list of polynomials)
  447. \end{verbatim}
  448. \index{setmodule}\index{setideal}
  449. This way the corresponding internal representation (as \ind{dpmat})
  450. is attached to {\tt name} as the property \ind{basis}, the prefix
  451. form as its value and the current base ring as the property
  452. \ind{ring}.
  453. Performing any algebraic operation on objects defined this way their
  454. ring will be compared with the current base ring (including the term
  455. order). If they are different an error message occurs. If {\tt m} is
  456. a valid name, after resetting the base ring
  457. \begin{verbatim}
  458. setmodule(m1,m)
  459. \end{verbatim}
  460. reevaluates {\tt m} with respect to the new base ring (since the
  461. {\em value} of {\tt m} is its prefix form) and assigns the reordered
  462. dpmat to {\tt m1} clearing all information previously computed for
  463. {\tt m1} ({\tt m1} and {\tt m} may coincide).
  464. All computations are performed with respect to the ring $S=k[x_v\in
  465. {\tt vars}]$ over the field $k$. Nevertheless by efficiency reasons
  466. \ind{base coefficients} are represented in a denominatorfree way as
  467. standard forms. Hence the computational properties of the base
  468. coefficient domain depend on the \ind{dmode} and also on auxiliary
  469. variables, contained in the expressions, but not in the variable
  470. list. They are assumed to be parameters.
  471. Best performance will be obtained with integer or modular domain
  472. modes, but one can also try \ind{algebraic numbers} as coefficients
  473. as e.g. generated by {\tt sqrt} or the {\tt arnum} package. To avoid
  474. an unnecessary slow-down connected with the management of simplified
  475. algebraic expressions there is a switch \ind{hardzerotest} (default~:
  476. off) that may be turned on to force an additional simplification of
  477. algebraic coefficients during each zero test. It should be turned on
  478. only for domain modes without canonical representations as e.g.
  479. mixtures of arnums and square roots. We remind the general zero
  480. decision problem for such domains.
  481. Alternatively, CALI offers the possibility to define a set of
  482. algebraic substitution rules that will affect CALI's base coefficient
  483. arithmetic only.
  484. \begin{quote}
  485. \verb|setrules <rule list>|\index{setrules}
  486. \pbx{transfers the (algebraic) rule list into the internal
  487. representation stored at the global variable \ind{cali!=rules}.
  488. In particular, {\tt setrules \{\}} clears the rules previously set.}
  489. \verb|getrules()|\index{getrules}
  490. \pbx{returns the internal CALI rules list in algebraic form.}
  491. \end{quote}
  492. We recommend to use \ind{setrules} for computations with algebraic
  493. numbers since they are better adapted to the data structure of CALI
  494. than the algebraic numbers provided by the REDUCE's arnum package.
  495. Note, that due to the zero decision problem
  496. complicated {\em setrules} based computations may produce wrong
  497. results if base coefficient's pseudodivision is involved (as e.g.
  498. with \ind{dp\_pseudodivmod}). In this case we recommend to enlarge
  499. the variable set and add the defining equations of the algebraic
  500. numbers to the equations of the problem.
  501. \medskip
  502. The standard domain (Integer) doesn't allow denominators for input.
  503. \ind{setideal} clears automatically the common denominator of each
  504. input expression whereas a polynomial matrix with true rational
  505. coefficients will be rejected by \ind{setmodule}.
  506. \medskip
  507. One can save/initialize ideal and module bases together with their
  508. accompanying data (base ring, degrees) to/from a file~:
  509. \begin{verbatim}
  510. savemat(m,name)
  511. \end{verbatim}
  512. resp.
  513. \begin{verbatim}
  514. initmat name
  515. \end{verbatim} execute the file transfer from/to disk files with the
  516. specified file {\tt name}. E.g.
  517. \begin{verbatim}
  518. savemat(m,"myfile");
  519. \end{verbatim}
  520. saves the base ring and the ideal basis of $m$ to the file ``myfile''
  521. whereas
  522. \begin{verbatim}
  523. setideal(m,initmat "myfile");
  524. \end{verbatim}
  525. sets the current base ring (via a call to \ind{setring}) to the base
  526. ring of $m$ saved at ``myfile'' and then recovers the basis of $m$
  527. from the same file.
  528. \subsection{Switches and Global Variables}
  529. There are several switches, (fluid) global variables, and a trace
  530. facility to control CALI's computations.
  531. \medskip
  532. \subsubsection*{Switches}
  533. \begin{quote}
  534. \ind{bcsimp}
  535. \pbx{on : Cancel out gcd's of base coefficients. (Default : on)}
  536. \ind{binomial}
  537. \pbx{on : cause the system to do multireductions on ideals defined by
  538. binomials. Not applicable to syzygy and relations computation.
  539. (Default : off)}
  540. \ind{detectunits}
  541. \pbx{on : replace polynomials of the form \newline
  542. $\langle monomial\rangle *
  543. \langle polynomial\ unit\rangle $ by $\langle monomial\rangle$
  544. during interreductions and standard basis computations.
  545. Affects only local computations. (Default : off)}
  546. \ind{factorunits}
  547. \pbx{on : factor polynomials and remove polynomial unit factors
  548. during interreductions and standard basis computations.
  549. Affects only local computations. (Default : off)}
  550. \ind{hardzerotest}
  551. \pbx{on : try an additional algebraic simplification of base
  552. coefficients at each base coefficient's zero test. Useful only for
  553. advanced base coefficient domains without canonical REDUCE
  554. representation. May slow down the computation drastically.
  555. (Default~: off)}
  556. \ind{lazy}
  557. \pbx{on : choose Mora's lazy standard basis algorithm.
  558. off : choose Lazard's standard basis approach (homogenizing base
  559. elements).
  560. Affects only local computations. (Default : on)}
  561. \ind{noetherian}
  562. \pbx{on : choose algorithms for noetherian term orders.
  563. off : choose algorithms for local term orders.
  564. (Default : on)}
  565. \ind{red\_total}
  566. \pbx{on : apply normal form algorithms iteratively also to the
  567. reductum.
  568. off : reduce only until leading terms are standard.
  569. Affects only noetherian term orders. (Default : on)}
  570. \end{quote}
  571. \subsubsection*{Tracing}
  572. Intermediate output during the computations is controlled by the
  573. global (symbolic) variable \ind{cali!=trace} (Default : 0, no
  574. tracing).
  575. \begin{verbatim}
  576. lisp (cali!=trace:=..);
  577. \end{verbatim}
  578. changes the current value. Set it equal to 2 for a sparce tracing (a dot for
  579. each reduction step).
  580. Other good suggestions are the values 30 or 40 for tracing the \gr
  581. algorithm or $>70$ for tracing the normal form algorithm. The higher
  582. \ind{cali!=trace} the more intermediate information will be given.
  583. \subsubsection*{Global Variables}
  584. \begin{quote}
  585. \ind{cali!=basering}
  586. \pbx{The currently active base ring initialized e.g. by
  587. \ind{setring}.}
  588. \ind{cali!=degrees}
  589. \pbx{The currently active module component degrees initialized e.g.
  590. by \ind{setdegrees}.}
  591. \ind{cali!=monset}
  592. \pbx{A list of variable names considered as non zero divisors during
  593. \gr basis computations initialized e.g. by \ind{setmonset}. Useful
  594. e.g. for binomial ideals defining monomial varieties or other prime
  595. ideals.}
  596. \ind{cali!=rules}
  597. \pbx{Algebraic ``replaceby'' rules introduced to CALI with the
  598. \ind{setrules} command.}
  599. \ind{cali!=trace}
  600. \pbx{A symbolic variable managing the output of intermediate
  601. information to the screen.}
  602. \end{quote}
  603. \subsection{The Basic Data Structures}
  604. In the following we describe the most important (symbolic) data
  605. structure layers underlying the dpmat representation in CALI.
  606. \subsubsection*{Base Coefficients}
  607. Base coefficients are standard forms in the variables outside the
  608. variable list of the current ring. Although standard forms form an
  609. integral domain, all computations are executed "denominatorfree" over
  610. the corresponding quotient field, i.e. gcd's are canceled out without
  611. request. To avoid this set the switch \ind{bcsimp} off.\footnote{This
  612. induces a rapid base coefficient's growth and doesn't yield {\bf
  613. Z}-\gr bases in the sense of \cite{GTZ} since the S-pair criteria are
  614. different.}
  615. The base coefficient domain is assumed to be a gcd-domain with
  616. effective divisibility test. In the given implementation we use the
  617. s.f. procedure {\em qremf}. We had some trouble with it under {\em on
  618. factor}.
  619. CALI v. 2.1. offers additionally the possibility to supply the
  620. parameters occuring as base coefficients with a (global) set of
  621. algebraic rules.\footnote{This is different from the LET rule
  622. mechanism since they must be present in symbolic mode. Hence for a
  623. simultaneous application of the same rules in algebraic mode outside
  624. CALI they must additionally be declared in the usual way.}
  625. \ind{setrules} converts an algebraic mode rules list as e.g. used in
  626. WHERE statements into the internal CALI format.
  627. \subsubsection*{Base Ring}
  628. The \ind{base ring} is defined by its {\tt name list}, the {\tt
  629. degree matrix} (a list of lists of integers), the {\tt ring tag} (LEX
  630. or REVLEX), and the {\tt ecart}. The name list contains a phantom
  631. name {\tt cali!=mk} for the module component at place 0.
  632. \medskip
  633. The module {\bf ring} exports among others the following procedures
  634. to define a base ring~:
  635. \begin{quote}
  636. \verb|ring_define(name list, degree matrix, ring tag, ecart)|
  637. \index{ring\_define}
  638. \pbx{combines the given parameters to a ring.}
  639. \verb|ring_sum(a,b)|\index{ring\_sum}
  640. \pbx{returns a ring, that is constructed in the following way : Its
  641. variable list is the union of the (disjoint) lists of the variables
  642. of the rings $a$ and $b$ (in this order) whereas the degree list is
  643. the union of the (appropriately shifted) degree lists of $b$ and $a$
  644. (in this order). The ring tag is that of $a$. Hence it returns
  645. (essentially) the ring $b\bigoplus a$ if $b$ has a degree part (e.g.
  646. useful for elimination problems, introducing ``big'' new variables)
  647. and the ring $a\bigoplus b$ if $b$ has no degree part (introducing
  648. ``small'' new variables).}
  649. \verb|setring!* <ring> |\index{setring}
  650. \pbx{sets {\em cali!=basering} and {\em cali!=ecart} and checks for
  651. consistency with the switch \ind{noetherian}. It also sets through
  652. \ind{setkorder} the current variable list as main variables. It is
  653. strongly recommended to use {\em setring!* \ldots} instead of {\em
  654. cali!=basering:=\ldots}.}
  655. \end{quote}
  656. \verb|degreeorder!*| , \verb|localorder!*| and \verb|eliminationorder!*|
  657. \index{degreeorder}
  658. \index{localorder}
  659. \index{eliminationorder}
  660. define term order matrices in full analogy to algebraic mode.
  661. \medskip
  662. \noindent Example :
  663. \begin{verbatim}
  664. vars:='(x y z)
  665. setring!* ring_define(vars,degreeorder!* vars,'lex,'(1 1 1));
  666. % GRADLEX in the groebner package.
  667. \end{verbatim}
  668. \subsubsection*{Monomials}
  669. The current version uses a place-driven exponent representation
  670. closely related to a vector model. This model handles term orders and
  671. module term orders in a unique way. The zero component of the
  672. exponent list of a monomial contains its module component ($>0$) or 0
  673. (ring element). All computations are executed with respect to a
  674. \ind{current ring} (\ind{cali!=basering}) and a \ind{current module}
  675. (\ind{cali!=degrees}). For efficiency reasons every monomial has a
  676. precomputed degree part that should be reevaluated if {\tt
  677. cali!=basering} (i.e. the term order) or {\tt cali!=degrees} were
  678. changed. {\tt cali!=degrees} contains the list of column degrees of
  679. the current module and will be set automatically by (almost) all
  680. dpmat procedure calls. Since monomial operations use the degree list
  681. that was precomputed with respect to fixed column degrees (and base ring)
  682. \begin{quote}\bf
  683. watch carefully for {\tt cali!=degrees} programming at the monomial
  684. or dpoly level !
  685. \end{quote}
  686. \subsubsection*{Polynomials and Polynomial Vectors}
  687. CALI uses a distributive representation as a list of terms for both
  688. polynomials and polynomial vectors, where a \ind{term} is a dotted
  689. pair
  690. \[(monomial\ .\ base\ coefficient).\]
  691. The \ind{ecart} of a polynomial (vector) $f=\sum{t_i}$ with (module)
  692. terms $t_i$ is defined as \[max(ec(t_i))-ec(lt(t_i)),\] see
  693. \cite{Gr23}. Here $ec(t_i)$ denotes the ecart of the term $t_i$.
  694. \subsubsection*{Ideal Bases}
  695. Ideal bases are one of the main ingredients for dpmats. They are
  696. represented as lists of \ind{base elements} and contain together with
  697. each dpoly entry the following information~:
  698. \begin{itemize}
  699. \item a number (the row number of the polynomial vector in the
  700. corresponding dpmat).
  701. \item the dpoly, its ecart (as the main sort criterion), and length.
  702. \item a representation part, that may contain a representation of the
  703. given dpoly in terms of a certain fixed basis (default : empty).
  704. \end{itemize}
  705. The representation part is managed during normal form computations
  706. and other row arithmetic of dpmats appropriately.
  707. \begin{quote}
  708. \verb|bas_setrelations b|\index{bas\_setrelations}
  709. \pbx{sets the relation part of the base element $i$ in the base list
  710. $b$ to $e_i$.}
  711. \verb|bas_removerelations b|\index{bas\_removerelations}
  712. \pbx{removes all relations, i.e. replaces them with the zero
  713. polynomial vector.}
  714. \verb|bas_getrelations b|\index{bas\_getrelations}
  715. \pbx{gets the relation part of $b$ as a separate base list.}
  716. \end{quote}
  717. \subsubsection*{Ideals, Matrices, and Matrix Operations}
  718. Ideals and matrices, represented as \ind{dpmat}s, are the central
  719. data type of the CALI package, as already explained above. Every
  720. dpmat $m$ combines the following information~:
  721. \begin{itemize}
  722. \item its size (\ind{dpmat\_rows} m,\ind{dpmat\_cols} m),
  723. \item its base list (\ind{dpmat\_list} m) and
  724. \item its column degrees as an assoc. list of monomials
  725. (\ind{dpmat\_coldegs} m). If this list is empty, all degrees are
  726. assumed to be equal to $x^0$.
  727. \end{itemize}
  728. The module {\bf dpmat} contains the algorithms for the basic
  729. management of this data structure whereas the modules {\bf matop} and
  730. {\bf quot} collect procedures for the algebraic management of dpmats
  731. with analogous semantics as their algebraic mode counterparts as e.g.
  732. \begin{center}
  733. \parbox{14cm}
  734. {\ind{annihilator1!*}, \ind{idealpower!*}, \ind{matqquot!*},
  735. \ind{matquot!*}, \ind{modequalp!*}, \ind{modulequotient1!*},
  736. \ind{submodulep!*}.}
  737. \end{center}
  738. The following procedures take a list of dpmats as their (single)
  739. argument~:
  740. \begin{center}
  741. \parbox{14cm}
  742. {\ind{directsum!*}, \ind{idealprod!*}, \ind{matappend!*},
  743. \ind{matsum!*}, \ind{matintersect!*}.}
  744. \end{center}
  745. \section{About the Algorithms Implemented in CALI}
  746. Below we give a short explanation of the main algorithmic ideas of
  747. CALI and the way they are implemented (symbolically).
  748. \subsection{Normal Form Algorithms}
  749. Normal form algorithms reduce polynomials (or polynomial vectors)
  750. with respect to a given finite set of generators of an ideal or
  751. module. The result is not unique except for a total normal form with
  752. respect to a \gr basis. Furthermore different reduction strategies
  753. may yield significant differences in computing time.
  754. CALI reduces by first matching, usually keeping base lists sorted
  755. with respect to the sort predicate \ind{red\_better}, sorting at
  756. first by ascending ecart and then by ascending length. This order is
  757. good for both noetherian and non noetherian term orders.
  758. Overload red\_better for other reduction strategies.
  759. \medskip
  760. There are different reduction procedures for noetherian and non
  761. noetherian term orders according to the general theory. For a given
  762. ideal basis $B\subset S$ and a polynomial $f\in S$ they produce a
  763. (pseudo) normal form $h\in S$ such that $h\equiv u\cdot f\ mod\ B$
  764. where $u\in S$ is a polynomial unit, i.e. a (polynomially
  765. represented) non zero domain element in the noetherian case
  766. (pseudodivision of $f$ by $B$) or a polynomial with a scalar as
  767. leading term in the non noetherian case.
  768. Advanced applications of normal form algorithms and \gr /standard
  769. bases may be build up from these different sources in an unified
  770. manner, \cite{Gr23} and \cite{ala}. This is reflected through the
  771. switch \ind{noetherian}. Turning it on (the default) or off causes
  772. CALI to refer automatically to the \gr or local standard basis
  773. methods (defined in the modules {\bf red} and {\bf mora} resp.).
  774. This applies to the interfacing procedures \ind{interreduce!*},
  775. \ind{gbasis!*}, \ind{syzygies!*}, \ind{normalform!*} and \ind{mod!*}
  776. and to more advanced applications derived from them. They branch
  777. according to it either to the global or the local normal form
  778. procedures \ind{red\_interreduce}, \ind{mora\_interreduce} etc.
  779. \begin{quote}
  780. \verb|interreduce!* m|\index{interreduce}
  781. \pbx{returns an interreduced basis of the dpmat $m$, i.e. the leading
  782. terms of the result are not divisible by each other.}
  783. \verb|mod!*(f,m)|\index{mod}
  784. \pbx{returns the pair $(h.u)$ where $h$ is the pseudo normal form of
  785. the dpoly $f$ modulo the dpmat $m$ and $u$ the corresponding
  786. polynomial unit multiplier.}
  787. \verb|normalform!*(a,b)|\index{normalform}
  788. \pbx{Returns $\{a_1,r,z\}$ with $a_1=z*a-r*b$ where the rows of the
  789. dpmat $a_1$ are the normalforms of the rows of the dpmat $a$ with
  790. respect to the dpmat $b$.}
  791. \end{quote}
  792. For local standard bases the ideal generated by the basic polynomials
  793. may have components not passing through the origin. Although they do
  794. not contribute to the ideal in $Loc(S)=S_{\bf m}$ they usually
  795. heavily increase the computational effort needed for the standard basis
  796. computation, interreduction etc.. Hence for local
  797. term orders one should try to remove polynomial units as soon as they
  798. are detected. To remove them in an early stage of the computations
  799. one can either try the (cheap) test, whether $f\in S$ is of the form
  800. $\langle monomial\rangle *\langle polynomial\ unit\rangle$ (switch
  801. \ind{detectunits}, def.: off) or factor $f$ completely and remove
  802. polynomial unit factors (switch \ind{factorunits}, def.: off).
  803. The procedure \ind{deleteunits!*} tries to factor basis polynomials
  804. and removes polynomial units occuring as one of the factors.
  805. \subsection{The Standard Basis Algorithms}
  806. The modules {\bf groeb} and {\bf mora} contain the \gr resp. standard
  807. basis algorithms with syzygy computation facility and related
  808. algorithms.
  809. As described above there are common procedures
  810. \begin{quote}
  811. \verb|gbasis!* m|\index{gbasis}
  812. \pbx{that returns a minimal \gr or standard basis of the dpmat $m$,}
  813. \verb|syzygies!* m|\index{syzygies}
  814. \pbx{that returns an interreduced basis of the first syzygy module of
  815. the dpmat $m$ and}
  816. \verb|syzygies1!* m|\index{syzygies1}
  817. \pbx{that returns a (not yet interreduced) basis of the syzygy module
  818. of the dpmat $m$.}
  819. \end{quote}
  820. These procedures start the general \gr resp. standard basis
  821. calculation
  822. \begin{verbatim}
  823. groeb_stbasis(m,t,t,t,cali!=monset);
  824. or
  825. mora_stbasis(m,t,t,t,cali!=monset);
  826. \end{verbatim}\index{groeb\_stbasis}\index{mora\_stbasis}
  827. that returns, applied to the dpmat $m$, three dpmats $g,c,s$ with
  828. \begin{quote}
  829. $g$ --- the minimal reduced \gr basis of $m$,
  830. $c$ --- the transition matrix $g=c\cdot m$, and
  831. $s$ --- the (not yet interreduced) syzygy matrix of $m$.
  832. \end{quote}
  833. The pair list management uses the sugar strategy, see \cite{GMNRT},
  834. with respect to the ecart vector \ind{cali!=ecart}. If the input is
  835. homogeneous and \ind{cali!=ecart} reflects this homogeneity then
  836. pairs are sorted by ascending degree. Hence no superfluous base
  837. elements will be computed in this case. In general the sugar strategy
  838. performs best if the ecart vector is chosen to make the input close
  839. to be homogeneous.
  840. If requested, the change matrix or the syzygy matrix will be computed
  841. through the representation part of the involved base elements. For
  842. this purpose it will be set appropriately at the beginning of {\em
  843. \ldots\_stbasis} to trace up the reduction steps of the algorithm. At
  844. the end these results are split up and relations are removed.
  845. There is another global variable \ind{cali!=monset} that may contain
  846. a list of variable names (a subset of the variable names of the
  847. current base ring). During the "pure" \gr algorithm (without syzygy
  848. and representation computations) common monomial factors, containing
  849. only these variables will be canceled out. This shortcut is useful if
  850. some of the variables are known to be non zero divisors as e.g. in
  851. most implicitation problems.
  852. \begin{quote}
  853. \verb|setmonset!* m|\index{setmonset}
  854. \pbx{initializes {\em cali!=monset} with a given list of variables
  855. $m$.}
  856. \end{quote}
  857. Local standard bases can essentially be computed in two different
  858. ways. The switch \ind{lazy} drives CALI to branch into Mora's (on,
  859. the default) or Lazard's (off) approach, respectively. There are
  860. several versions of Mora's normal form algorithm published in
  861. \cite{MPT}. {\em lazy} refers to the lazy version as the most
  862. effective one, but without the early termination test, since this
  863. test is available only for zerodimensional ideals.
  864. Experts commonly agree that Mora's approach is better for
  865. ``computable'' examples, but sample computations done by the author
  866. on large examples indicate, that both approaches are in fact
  867. independent. The speedup of the latter seems to depend mainly on the
  868. fact that in Lazard's approach {\em total} normal forms are available
  869. during intermediate computations.
  870. \medskip
  871. Beginning with version 2.0 CALI contains also its own \gr
  872. factorization facility~:
  873. \begin{quote}
  874. \verb|groebfactor!*(m,c)|\index{groebfactor}\footnote{{\em
  875. groebfactorize} in v. 2.0., but this collides with the REDUCE
  876. groebner package}.
  877. \pbx{Returns for the dpmat ideal $m$ and the constraint polynomial
  878. $c$ a minimal list of \gr bases $G_a$ such that $V(m)\bigcap
  879. D(c)=\bigcup_a V(G_a)\bigcap D(c)$, where $V(G)$ is the set of common
  880. zeroes of the ideal $G$ and $D(c)$ the set of points where $c$
  881. doesn't vanish.}
  882. \end{quote}
  883. During a preprocessing it splits the submitted basis $m$ by a
  884. recursive factorization of polynomials and interreduction of bases
  885. into a (reduced) list of smaller subproblems consisting of a partly
  886. computed \gr basis, a constraint list, and a list of pairs not yet
  887. proceeded. The main procedure forces the next subproblem to be
  888. processed until another factorization is possible. Then the
  889. subproblem splits into subsubproblems, and the subproblem list will
  890. be updated. Subproblems are kept sorted with respect to their
  891. expected dimension \ind{easydim} forcing this way a {\em depth first}
  892. recursion. Returned and not yet interreduced \gr bases are, after
  893. interreduction, subject to another call of the preprocessor since
  894. interreduced polynomials may factor anew.
  895. \medskip
  896. \subsection{Basic Algorithms in Ideal Theory}
  897. \gr and local standard bases are the heart of several basic
  898. algorithms in ideal theory, see e.g. \cite[6.2.]{BKW}. CALI offers
  899. the following facilities~:
  900. \begin{quote}
  901. \verb|submodulep!*(m,n)|\index{submodulep}
  902. \pbx{tests the dpmat $m$ for being a submodule of the dpmat $n$
  903. reducing the basis elements of $m$ with respect to $n$. The result
  904. will be correct provided $n$ is a \gr basis.}
  905. \verb|modequalp!*(m,n)|\index{modequalp}
  906. \pbx{ = submodulep!*(m,n) and submodulep!*(n,m).}
  907. \verb|eliminate!*(m,<variable list>)| \index{eliminate}
  908. \pbx{computes the elimination ideal/module eliminating the variables
  909. in the given variable list (a subset of the variables of the current
  910. base ring). Changes temporarily the term order to degrevlex. For {\em
  911. monset} see \ind{cali!=monset}.}
  912. \verb|matintersect!* l|\index{matintersect}
  913. \footnote{This can be done for ideals and
  914. modules in an unique way. Hence {\em idealintersect!*} has been
  915. removed in v. 2.1.}
  916. \pbx{computes the intersection of the dpmats in the dpmat list $l$
  917. along \cite[6.20]{BKW}.}
  918. \verb|dpgcd!*(a,b)| \index{dpgcd}
  919. \pbx{computes the gcd of two dpolys $a$ and $b$ by the syzygy method~:
  920. The syzygy module of $\{a,b\}$ is generated by a single element
  921. $[-b_0\ \ a_0]$ with $a=ga_0, b=gb_0$, where $g$ is the gcd of $a$
  922. and $b$. Since it uses dpoly pseudodivision it may work not properly
  923. with \ind{setrules}.}
  924. \end{quote}
  925. CALI offers several quotient algorithms. They rest on the computation
  926. of quotients by a single element of the following kind~: Assume
  927. $M\subset S^c, v\in S^c, f\in S$. Then there are
  928. \begin{quote}
  929. the \ind{module quotient} $M : (v) = \{g\in S\ |\ gv\in M\}$,
  930. the \ind{ideal quotient} $M : (f) = \{w\in S^c\ |\ fw\in M\}$, and
  931. the \ind{stable quotient} $M : (f)^\infty = \{w\in S^c\ |\ \exists\,
  932. n\, :\, f^nw\in M\}$.
  933. \end{quote}
  934. CALI uses the elimination approach \cite[4.4.]{CLO} and
  935. \cite[6.38]{BKW} for their computation~:
  936. \begin{quote}
  937. \verb|matquot!*(M,f)|\index{matquot}
  938. \pbx{returns the module or ideal quotient $M:(f)$ depending on $f$.}
  939. \verb|matqquot!*(M,f)|\index{matqquot}
  940. \pbx{returns the stable quotient $M:(f)^\infty$.}
  941. \end{quote}
  942. \ind{matquot!*} calls the pseudo division with remainder
  943. \begin{quote}
  944. \verb|dp_pseudodivmod(g,f)|\index{dp\_pseudodivmod}
  945. \pbx{that returns a dpoly list $\{q,r,z\}$ such that $z\cdot g =
  946. q\cdot f + r$ with a dpoly unit $z$.\ ($g, f$ and $r$ must belong to
  947. the same free module). This is done uniformly for noetherian and
  948. local term orders with an extended normal form algorithm as described
  949. in \cite{ala}.}
  950. \end{quote}
  951. \medskip
  952. In the same way one defines the quotient of a module by another
  953. module (both embedded in a common free module $S^c$), the quotient of
  954. a module by an ideal, and the stable quotient of a module by an
  955. ideal. Algorithms for their computation can be obtained from the
  956. corresponding algorithms for a single element as divisor either by
  957. the generic element method \cite{E} or as an intersection
  958. \cite[6.31]{BKW}. CALI offers both approaches (\_x=1 or 2 below) at
  959. the symbolic level, but for true quotients only the latter one is
  960. integrated into the algebraic mode interface.
  961. \begin{quote}
  962. \verb|idealquotient_x!*(M,I)|\index{idealquotient}
  963. \pbx{returns the ideal quotient $M:I$ of the dpmat $M$ by the dpmat
  964. ideal $I$.}
  965. \verb|modulequotient_x!*(M,N)|\index{modulequotient}
  966. \pbx{returns the module quotient $M:N$ of the dpmat $M$ by the dpmat
  967. $N$.}
  968. \verb|annihilator_x!* M|\index{annihilator}
  969. \pbx{returns the annihilator of $coker\ M$, i.e. the module quotient
  970. $S^c:M$, if $M$ is a submodule of $S^c$.}
  971. \verb|matstabquot!*(M,I)|\index{matstabquot}
  972. \pbx{returns the stable quotient $M:I^\infty$ (only by the general element
  973. method).}
  974. \end{quote}
  975. \subsection{Monomial Ideals}
  976. Monomial ideals occur as ideals of leading terms of (ideal's) \gr
  977. bases and also as components of leading term modules of submodules of
  978. free modules, see \cite{GrI}, and reflect some properties of the
  979. original ideal/module. Several parameters of the original ideal may
  980. be read off from it as e.g. dimension and Hilbert series.
  981. The module {\bf moid} contains the corresponding algorithms on
  982. monomial ideals. Monomial ideals are lists of monomials, kept sorted
  983. by descending lexicographic order as proposed in \cite{BS}.
  984. \begin{quote}
  985. \verb|moid_primes u| \index{moid\_primes}
  986. \pbx{returns the minimal primes (as a list of lists of variable
  987. names) of the monomial ideal $u$ using an adaption of the algorithm,
  988. proposed in \cite{BS} for the computation of the codimension.}
  989. \verb|indepvarsets!* m| \index{indepvarsets}
  990. \pbx{returns (based on {\em moid\_primes}) the list of strongly
  991. independent sets of $m$, see \cite{KW} and \cite{GrI} for
  992. definitions.}
  993. \verb|dim!* m| \index{dim}
  994. \pbx{returns the dimension of $coker\ m$ as the size of the largest
  995. independent set.\footnotemark}
  996. \footnotetext{The problem of the determination of the
  997. dimension of an arbitrary monomial ideal is NP-hard in the number of
  998. variables, \cite{BS}.}
  999. \verb|codim!* m| \index{codim}
  1000. \pbx{returns the codimension of $coker\ m$.}
  1001. \verb|easyindepset!* m| \index{easyindepset}
  1002. \pbx{returns a maximal with respect to inclusion independent set of
  1003. $m$.}
  1004. \verb|easydim!* m| \index{easydim}
  1005. \pbx{is a fast dimension algorithm (based on {\em easyindepset}), that
  1006. will be correct if $m$ is (radically) unmixed. Since it is
  1007. significantly faster than the general dimension algorithm, it should
  1008. be used, if all maximal independent sets are known to be of equal
  1009. cardinality (as e.g. for prime or unmixed ideals, see \cite{GrI}).}
  1010. \end{quote}
  1011. \pagebreak[3]
  1012. Hilbert series are computed with respect to the \ind{ecart vector},
  1013. i.e. for a monomial ideal $I$ in the polynomial ring $R$
  1014. \[H(R/I,t) := \sum_{i\geq 0}{|\{x^a:ec(a)=i\}|\cdot t^i} =
  1015. \frac{Q(t)}{\prod_x{\left(1-t^{ec(x)}\right)} }.\]
  1016. $H(R/I,t)$ is known to be a rational function with pole order at
  1017. $t=1$ equal to $dim\ R/I$.
  1018. \begin{quote}
  1019. \verb|hilb1 m or hilb2 m| \index{hilb1} \index{hilb2}
  1020. \pbx{returns the Hilbert series numerator $Q(t)$ using different
  1021. algorithms, see \cite{BS} for {\em hilb1} and \cite{BCRT} for {\em
  1022. hilb2}. Experiments suggest that the former is better for few
  1023. generators of high degree whereas the latter has to be preferred for
  1024. many generators of low degree.}
  1025. \verb|hilbseries1 m or hilbseries2 m| \index{hilbseries1}
  1026. \index{hilbseries2}
  1027. \pbx{returns the reduced Hilbert series (i.e. with relative prime
  1028. numerator and denominator) as a standard quotient.}
  1029. \verb|degree!* m| \index{degree}
  1030. \pbx{returns the value of the numerator of the reduced Hilbert series
  1031. representation at $t=1$. For the standard ecart this is the degree of
  1032. $coker\ m$.}
  1033. \end{quote}
  1034. \subsection{Zerodimensional Ideals and Modules}
  1035. There are several algorithms that either force the reduction of a
  1036. given problem to dimension zero or work only for zerodimensional
  1037. ideals or modules. The CALI module {\bf odim} offers such
  1038. algorithms. It contains, e.g.
  1039. \begin{quote}
  1040. \verb|dimzerop!* m| \index{dimzerop}
  1041. \pbx{that tests a dpmat $m$ for being zerodimensional.}
  1042. \verb|getkbase!* m| \index{getkbase}
  1043. \pbx{that returns a (monomial) k-vector space basis of $Coker\ m$
  1044. provided $m$ is a \gr basis.}
  1045. \verb|odim_parameter m| \index{odim\_parameter}
  1046. \pbx{that returns a parameter of the dpmat $m$, i.e. a variable $x
  1047. \in vars$ such that $k[x]\bigcap Ann\ S^c/m=(0)$, or {\em nil} if $m$
  1048. is zerodimensional.}
  1049. \verb|odim_up(a,m)| \index{odim\_up}
  1050. \pbx{that returns an univariate polynomial (of smallest possible
  1051. degree if $m$ is a gbasis) in the variable $a$ inside the
  1052. zerodimensional dpmat ideal $m$ using Buchberger's approach,
  1053. \cite{B1}.}
  1054. \end{quote}
  1055. \subsection{Primary Decomposition and Related Algorithms}
  1056. The algorithms of the module {\bf prime} implement the ideas of
  1057. \cite{GTZ} with modifications along \cite{Kr} and their natural
  1058. generalizations to modules as e.g. explained in \cite{Ru}. It
  1059. contains also algorithms for the computation of the unmixed part of a
  1060. given module and the unmixed radical of a given ideal (along the same
  1061. lines). We followed the stepwise recursion decreasing dimension in
  1062. each step by 1 as proposed in (the final version of) \cite{GTZ}
  1063. rather than the ``one step'' method described in \cite{BKW} since
  1064. handling leading coefficients, i.e. standard forms, depending on
  1065. several variables is a quite hard job for REDUCE.
  1066. In the following procedures $m$ must be a \gr basis.
  1067. \begin{quote}
  1068. \verb|zeroradical!* m| \index{zeroradical}
  1069. \pbx{returns the radical of the zerodimensional ideal $m$, using
  1070. squarefree decomposition of univariate polynomials.}
  1071. \verb|zeroprimes!* m| \index{zeroprimes}
  1072. \pbx{computes as in \cite{GTZ} the list of prime ideals of $Ann\ F/M$
  1073. if $m$ is zerodimensional, using the (sparse) general position
  1074. argument from \cite{KW}.}
  1075. \verb|zeroprimarydecomposition!* m| \index{zeroprimarydecomposition}
  1076. \pbx{computes the primary components of the zerodimensional dpmat $m$
  1077. using prime splitting with the prime ideals of $Ann\ F/M$. It returns
  1078. a list of two-element lists with first entry the primary component
  1079. and second entry the corresponding associated prime ideal.}
  1080. \verb|isprime!* m| \index{isprime}
  1081. \pbx{a (one step) primality test for ideals, extracted from
  1082. \cite{GTZ}.}
  1083. \verb|isolatedprimes!* m| \index{isolatedprimes}
  1084. \pbx{computes (only) the isolated prime ideals of $Ann\ F/M$.}
  1085. \verb|radical!* m| \index{radical}
  1086. \pbx{computes the radical of the dpmat ideal $m$, reducing as in
  1087. \cite{GTZ} to the zerodimensional case.}
  1088. \verb|easyprimarydecomposition!* m| \index{easyprimarydecomposition}
  1089. \pbx{computes the primary components of the dpmat $m$, if it has no
  1090. embedded components. The algorithm uses prime splitting with the
  1091. isolated prime ideals of $Ann\ F/M$. It returns a list of two-element
  1092. lists as in {\em zeroprimarydecomposition!*}.}
  1093. \verb|primarydecomposition!* m| \index{zeroprimarydecomposition}
  1094. \pbx{computes the primary components of the zerodimensional dpmat $m$
  1095. using prime splitting with the prime ideals of $Ann\ F/M$. It returns
  1096. a list of two-element lists as in {\em zeroprimarydecomposition!*}.}
  1097. \verb|unmixedradical!* m| \index{unmixedradical}
  1098. \pbx{returns the unmixed radical, i.e. the intersection of the
  1099. isolated primes of top dimension, associated to the dpmat ideal $m$.}
  1100. \verb|eqhull!* m| \index{eqhull}
  1101. \pbx{returns the equidimensional hull, i.e. the intersection of the
  1102. top dimensional primary components of the dpmat $m$.}
  1103. \end{quote}
  1104. \subsection{Advanced Algorithms}
  1105. The module {\bf scripts} just under further development offers some
  1106. advanced topics of the \gr bases theory. It introduces the new data
  1107. structure of a \ind{map} between base rings~:
  1108. \medskip
  1109. A ring map
  1110. \[ \phi\ :\ R\longrightarrow S\]
  1111. for $R=k[r_i], S=k[s_j]$ is represented in symbolic mode as a list
  1112. \[ \{preimage\_ring\ R,\ image\_ring\ S, subst\_list\},\]
  1113. where {\tt subst\_list} is a substitution list $\{r_1=\phi_1(s),
  1114. r_2=\phi_2(s),\ldots \}$ in algebraic prefix form, i.e. looks like
  1115. {\tt (list (equal var image) \ldots )}.
  1116. The central tool for several applications is the computation of the
  1117. preimage $\phi^{-1}(I)\subset R$ of an ideal $I\subset S$ either
  1118. under a polynomial map $\phi$ or its closure in $R$ under a rational
  1119. map $\phi$, see \cite[7.69 and 7.71]{BKW}.
  1120. \begin{quote}
  1121. \verb|preimage!*(m,map)| \index{preimage}
  1122. \pbx{computes the preimage of the ideal $m$ in algebraic prefix form
  1123. under the given polynomial map and sets the current base ring to the
  1124. preimage ring. Returns the result also in algebraic prefix form.}
  1125. \verb|ratpreimage!*(m,map)| \index{ratpreimage}
  1126. \pbx{computes the closure of the preimage of the ideal $m$ in
  1127. algebraic prefix form under the given rational map and sets the
  1128. current base ring to the preimage ring. Returns the result also in
  1129. algebraic prefix form.}
  1130. \end{quote}
  1131. Derived applications are
  1132. \begin{quote}
  1133. \verb|affine_monomial_curve!*(l,R)|\index{affine\_monomial\_curve}
  1134. \pbx{$l$ is a list of integers, $R$ a list of variable names of the
  1135. same length as $l$. The procedure sets the current base ring and
  1136. returns the defining ideal of the affine monomial curve with generic
  1137. point $(t^i\ :\ i\in l)$ computing the corresponding preimage.}
  1138. \verb|analytic_spread!* M|\index{analytic\_spread}
  1139. \pbx{Computes the analytic spread of $M$, i.e. the dimension of the
  1140. exceptional fiber ${\cal R}(M)/m{\cal R}(M)$ of the blowup along $M$
  1141. over the irrelevant ideal $m$ of the current base ring.}
  1142. \verb|assgrad!*(M,N,vars)|\index{assgrad}
  1143. \pbx{Computes the associated graded ring \[gr_R(N):=
  1144. (R/N\oplus N/N^2\oplus\ldots)={\cal R}(N)/N{\cal R}(N)\] over the ring
  1145. $R=S/M$, where $M$ and
  1146. $N$ are dpmat ideals defined over the current base ring $S$. {\tt
  1147. vars} is a list of new variable names one for each generator of $N$.
  1148. They are used to create a second ring $T$ with degree order
  1149. corresponding to the ecart of the row degrees of $N$ and a ring map
  1150. \[\phi : S\oplus T\longrightarrow S.\]
  1151. It returns a dpmat ideal $J$ such that $(S\oplus T)/J$ is a
  1152. presentation of the
  1153. desired associated graded ring over the new current base ring
  1154. $S\oplus T$.}
  1155. \verb|blowup!*(M,N,vars)|\index{blowup}
  1156. \pbx{Computes the blow up ${\cal R}(N):=R[N\cdot t]$ of $N$ over
  1157. the ring $R=S/M$, where $M$ and $N$ are dpmat ideals defined over the
  1158. current base ring $S$. {\tt vars} is a list of new variable names one
  1159. for each generator of $N$. They are used to create a second ring $T$
  1160. with degree order corresponding to the ecart of the row degrees of
  1161. $N$ and a ring map
  1162. \[\phi : S\oplus T\longrightarrow S.\]
  1163. It returns a dpmat ideal $J$ such that $(S\oplus T)/J$ is
  1164. a presentation of the
  1165. desired blowup ring over the new current base ring $S\oplus T$.}
  1166. \verb|proj_monomial_curve!*(l,R)|\index{proj\_monomial\_curve}
  1167. \pbx{$l$ is a list of integers, $R$ a list of variable names of the
  1168. same length as $l$. The procedure set the current base ring and
  1169. returns the defining ideal of the projective monomial curve with
  1170. generic point \mbox{$(s^{d-i}\cdot t^i\ :\ i\in l)$} in $R$, where
  1171. \mbox{$d=max\{ x\, :\, x\in l\}$}, computing the corresponding preimage.}
  1172. \verb|sym!*(M,vars)|\index{sym}
  1173. \pbx{Computes the symmetric algebra $Sym(M)$ where $M$ is a dpmat ideal
  1174. defined over the current base ring $S$. {\tt vars} is a list of new
  1175. variable names one for each generator of $M$. They are used to create
  1176. a second ring $R$ with degree order corresponding to the ecart of the
  1177. row degrees of $N$ and a ring map
  1178. \[\phi : S\oplus R\longrightarrow S.\]
  1179. It returns a dpmat ideal $J$ such that $(S\oplus R)/J$ is the
  1180. desired symmetric algebra over the new current base ring $S\oplus R$.}
  1181. \end{quote}
  1182. There are several other applications~:
  1183. \begin{quote}
  1184. \verb|affine_points!* m| \index{affine\_points}
  1185. \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
  1186. with as many columns as the current base ring has ring variables.
  1187. Its rows represent the affine coordinates of a collection of points.
  1188. This procedure returns the intersection of the maximal ideals
  1189. corresponding to these points.}
  1190. \verb|minimal_generators!* m| \index{minimal\_generators}
  1191. \pbx{returns a set of minimal generators of the dpmat $m$ inspecting
  1192. the first syzygy module.}
  1193. \verb|proj_points!* m| \index{proj\_points}
  1194. \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
  1195. with as many columns as the current base ring has ring variables.
  1196. Its rows represent the homogeneous coordinates of a collection of
  1197. points in projective space. This procedure returns the intersection
  1198. of the maximal homogeneous ideals corresponding to these points.}
  1199. \verb|symbolic_power!*(m,d)| \index{symbolic\_power}
  1200. \pbx{returns the d'th symbolic power of the prime dpmat ideal $m$ as
  1201. the equidimensional hull of the d'th true power. (Hence applies also
  1202. to unmixed ideals.)}
  1203. \end{quote}
  1204. \pagebreak
  1205. \appendix
  1206. \section{A Short Description of Procedures Available in Algebraic
  1207. Mode}
  1208. Here we give a short description, ordered alphabetically, of the
  1209. procedures offered by CALI in the algebraic mode interface.
  1210. If not stated explicitely procedures take (algebraic mode) polynomial
  1211. matrices ($c>0$) or polynomial lists ($c=0$) $m,m1,m2,\ldots $ as
  1212. input and return results of the same type. $gb$ stands for a bounded
  1213. identifier with precomputed \gr basis, $gbr$ for one with precomputed
  1214. resolution. For the mechanism of \ind{bounded identifiers} see the
  1215. section ``Algebraic Mode Interface''.
  1216. \subsection{Basic Algorithms}
  1217. \begin{quote}
  1218. \verb|annihilator m| \index{annihilator}
  1219. \pbx{returns the annihilator of the dpmat $m\subseteq S^c$, i.e.
  1220. $Ann\ S^c/M$.}
  1221. \verb|bettinumbers gbr| \index{bettinumbers}
  1222. \pbx{extracts the list of Betti numbers from the resolution of $gbr$.}
  1223. \verb|codim gb| \index{codim}
  1224. \pbx{returns the codimension of $S^c/gb$.}
  1225. \verb|degree gb| \index{degree}
  1226. \pbx{returns the multiplicity of $gb$ as the sum of the coefficients
  1227. of the Hilbert series numerator.}
  1228. \verb|degsfromresolution gbr| \index{degsfromresolution}
  1229. \pbx{returns the list of column degrees from the minimal resolution
  1230. of $gbr$.}
  1231. \verb|deleteunits m| \index{deleteunits}
  1232. \pbx{factors each basis element of the dpmat ideal $m$ and removes
  1233. factors that are polynomial units. Applies only for non noetherian
  1234. term orders.}
  1235. \verb|dim gb| \index{dim}
  1236. \pbx{returns the dimension of $S^c/gb$.}
  1237. \verb|dimzerop gb| \index{dimzerop}
  1238. \pbx{tests whether $S^c/gb$ is zerodimensional.}
  1239. \verb|directsum(m1,m2,...)| \index{directsum}
  1240. \pbx{returns the direct sum of the modules $m1,m2,\ldots$, embedded
  1241. into the direct sum of the corresponding free modules.}
  1242. \verb|dpgcd(f,g)| \index{dpgcd}
  1243. \pbx{returns the gcd of two polynomials $f$ and $g$, computed by the
  1244. syzygy method.}
  1245. \verb|easydim m and easyindepset m| \index{easydim}\index{easyindepset}
  1246. \pbx{ If the given ideal or module is unmixed (e.g. prime) then all
  1247. maximal strongly independent sets are of equal size and one can look
  1248. for a maximal with respect to inclusion rather than size strongly
  1249. independent set. These procedures don't test the input for being a
  1250. \gr basis or unmixed, but construct a maximal with respect to
  1251. inclusion independent set of the basic leading terms resp. detect
  1252. from this (an approximation for) the dimension.}
  1253. \verb|eliminate(m,<variable list>)| \index{eliminate}
  1254. \pbx{computes the elimination ideal/module eliminating the variables
  1255. in the given variable list (a subset of the variables of the current
  1256. base ring). Changes temporarily the term order to degrevlex.}
  1257. \verb|gbasis m| \index{gbasis}
  1258. \pbx{returns the \gr resp. local standard basis of the bounded
  1259. identifier $m$.}
  1260. \verb|getdegrees() or getdegrees m| \index{getdegrees}
  1261. \pbx{returns the currently active column degrees, i.e. the value of
  1262. \ind{cali!=degrees} converted to algebraic mode, or those of the
  1263. bounded identifier $m$.}
  1264. \verb|getecart()| \index{getecart}
  1265. \pbx{returns the currently active ecart vector converted to algebraic
  1266. mode.}
  1267. \verb|getkbase gb| \index{getkbase}
  1268. \pbx{returns a k-vector space basis of $S^c/gb$, consisting of module
  1269. terms, provided $gb$ is zerodimensional.}
  1270. \verb|getleadterms gb| \index{getleadterms}
  1271. \pbx{returns the dpmat of leading terms of a \gr resp. local standard
  1272. basis of $gb$.}
  1273. \verb|getmonset()| \index{getmonset}
  1274. \pbx{returns the value of \ind{cali!=monset}.}
  1275. \verb|getrules()| \index{getrules}
  1276. \pbx{returns the currently active rule list, introduced with
  1277. \ind{setrules}.}
  1278. \verb|gradedbettinumbers gbr| \index{gradedbettinumbers}
  1279. \pbx{extracts the list of degree lists of the free summands in a
  1280. minimal resolution of $gbr$.}
  1281. \verb|groebfactor m|\footnote{{\em groebfactorize} in v. 2.0., but
  1282. this conflicts with the groebner package of REDUCE} \index{groebfactor}
  1283. \pbx{returns for the dpmat ideal $m$ a (reduced) list of dpmats such
  1284. that the union of their zeroes is exactly the zero set of $m$.
  1285. Factors all polynomials involved in the \gr algorithms of the partial
  1286. results.}
  1287. \verb|hilbseries gb| \index{hilbseries}
  1288. \pbx{returns the Hilbert series of $gb$ with denominator $(1-x)^d$,
  1289. where $d$ is the dimension of $gb$ (if the term order is a
  1290. degreeorder with default ecart).}
  1291. \verb|idealpower(m,n)| \index{idealpower}
  1292. \pbx{returns the interreduced basis of the ideal power $m^n$ with
  1293. respect to the integer $n\geq 0$.}
  1294. \verb|idealprod(m1,m2,...)| \index{idealprod}
  1295. \pbx{returns the interreduced basis of the ideal product
  1296. \mbox{$m1\cdot m2\cdot \ldots$} of the ideals $m1,m2,\ldots$.}
  1297. \verb|idealquotient(m1,m2)| \index{idealquotient}
  1298. \pbx{returns the ideal quotient $m1:m2$ of the module $m1\subseteq
  1299. S^c$ by the ideal $m2$.}
  1300. \verb|idealsum(m1,m2,...)| \index{idealsum}
  1301. \pbx{returns the interreduced basis of the ideal sum $m1+m2+\ldots$.}
  1302. \verb|indepvarsets gb| \index{indepvarsets}
  1303. \pbx{returns the list of strongly independent sets of $gb$ with
  1304. respect to the current term order, see \cite{KW} for a definition in
  1305. the case of ideals and \cite{GrI} for submodules of free modules.}
  1306. \verb|initmat(m,<file name>| \index{initmat}
  1307. \pbx{initialize the dpmat $m$ together with its base ring, term order
  1308. and column degrees from a file.}
  1309. \verb|interreduce m| \index{interreduce}
  1310. \pbx{returns the interreduced module basis given by the rows of $m$,
  1311. i.e. a basis with pairwise indivisible leading terms.}
  1312. \verb|matappend(m1,m2,...)| \index{matappend}
  1313. \pbx{collects the rows of the dpmats $m1,m2,\ldots $ to a common
  1314. matrix. $m1,m2,\ldots$ must be submodules of the same free module,
  1315. i.e. have equal column degrees (and size).}
  1316. \verb|mathomogenize(m,var)| \index{mathomogenize}
  1317. \footnote{Dehomogenize with \verb|sub(z=1,m)| if $z$ is the
  1318. homogenizing variable.}
  1319. \pbx{returns the result obtained by homogenization of the rows of m
  1320. with respect to the variable {\tt var} and the current \ind{ecart
  1321. vector}.}
  1322. \verb|matintersect(m1,m2,...)| \index{matintersect}
  1323. \footnote{It works also for ideals, hence {\em
  1324. idealintersect} was removed in v. 2.1.}
  1325. \pbx{returns the interreduced basis of the intersection $m1\bigcap
  1326. m2\bigcap \ldots$.}
  1327. \verb|matqquot(m,f)| \index{matqquot}
  1328. \pbx{returns the stable quotient $m:(f)^\infty$ of the dpmat $m$ by
  1329. the polynomial $f\in S$.}
  1330. \verb|matquot(m,f)| \index{matquot}
  1331. \pbx{returns the quotient $m:(f)$ of the dpmat $m$ by the polynomial
  1332. $f\in S$.}
  1333. \verb|matstabquot(m1,id)| \index{matstabquot}
  1334. \pbx{returns the stable quotient $m1:id^infty$ of the dpmat $m1$ by
  1335. the ideal $id$.}
  1336. \verb|matsum(m1,m2,...)| \index{matsum}
  1337. \pbx{returns the interreduced basis of the module sum $m1+m2+\ldots$
  1338. in a common free module.}
  1339. \verb|a mod m| \index{mod}
  1340. \pbx{computes the (true) normal form(s), i.e. a standard quotient
  1341. representation, of $a$ modulo the dpmat $m$. $a$ may be either a
  1342. polynomial or a polynomial list ($c=0$) or a matrix ($c>0$) of the
  1343. correct number of columns.}
  1344. \verb|modequalp(gb1,gb2)| \index{modequalp}
  1345. \pbx{tests, whether $gb1$ and $gb2$ are equal (returns YES or NO).}
  1346. \verb|modulequotient(m1,m2)| \index{modulequotient}
  1347. \pbx{returns the module quotient $m1:m2$ of two dpmats $m1,m2$ in a
  1348. common free module.}
  1349. \verb|normalform(m1,m2)| \index{normalform}
  1350. \pbx{returns a list of three dpmats $\{m3,r,z\}$, where $m3$ is the
  1351. normalform of $m1$ modulo $m2$, $z$ a scalar matrix of polynomial
  1352. units (i.e. polynomials of degree 0 in the noetherian case and
  1353. polynomials with leading term of degree 0 in the tangent cone case),
  1354. and $r$ the relation matrix, such that \[m3=z*m1+r*m2.\]}
  1355. \verb|resolve(m[,d])| \index{resolve}
  1356. \pbx{returns the first $d$ members of the minimal resolution of the
  1357. bounded identifier $m$ as a list of matrices. If the resolution has
  1358. less than $d$ non zero members, only those are collected. (Default~:
  1359. $d=100$)}
  1360. \verb|savemat(m,<file name>| \index{savemat}
  1361. \pbx{save the dpmat $m$ together with the settings of it base ring,
  1362. term order and column degrees to a file.}
  1363. \verb|setdegrees <list of monomials>| \index{setdegrees}
  1364. \pbx{set \ind{cali!=degrees}.}
  1365. \verb|setgbasis m| \index{setgbasis}
  1366. \pbx{declares the rows of the bounded identifier $m$ to be already a
  1367. \gr resp. local standard basis thus avoiding a possibly time
  1368. consuming \gr or standard basis computation.}
  1369. \verb|setrules <rule list>| \index{setrules}
  1370. \pbx{introduces an algebraic rule list to CALI.}
  1371. \verb|sieve(m,<variable list>)| \index{sieve}
  1372. \pbx{sieves out all base elements with leading terms having a factor
  1373. contained in the specified variable list (a subset of the variables
  1374. of the current base ring). Useful for elimination problems solved
  1375. ``by hand''.}
  1376. \verb|submodulep(m,gb)| \index{submodulep}
  1377. \pbx{tests, whether $m$ is a submodule of $gb$ (returns YES or NO).
  1378. $gb$ must be a bounded identifier with precomputed \gr basis.}
  1379. \verb|syzygies m| \index{syzygies}
  1380. \pbx{returns the first syzygy module of the bounded identifier $m$.}
  1381. \verb|tangentcone gb| \index{tangentcone}
  1382. \pbx{returns the tangent cone part, i.e. the homogeneous part of
  1383. highest degree with respect to the first degree vector of the term
  1384. order from the \gr basis elements of the dpmat $gb$. The term order
  1385. must be a degree order.}
  1386. \end{quote}
  1387. \subsection{Primary Decomposition and Related Problems}
  1388. \begin{quote}
  1389. \verb|isprime gb| \index{isprime}
  1390. \pbx{tests the ideal $gb$ to be prime.}
  1391. \verb|iszeroradical gb| \index{iszeroradical}
  1392. \pbx{tests the zerodimensional ideal $gb$ to be radical.}
  1393. \verb|zeroradical gb| \index{zeroradical}
  1394. \pbx{returns the radical of the zerodimensional ideal $gb$.}
  1395. \end{quote}
  1396. The following procedures don't assume that $m$ is a \gr basis, since
  1397. the algorithm needs several \gr basis computations anyway. They
  1398. return either lists of ideals (primes of the dpmat $m$ under
  1399. consideration) or lists of pairs consisting of the primary
  1400. components of $m$ and their associated primes.
  1401. \begin{quote}
  1402. \verb|easyprimarydecomposition m| \index{easyprimarydecomposition}
  1403. \pbx{a short primary decomposition using ideal separation of isolated
  1404. primes of $m$. Yields true results only for modules without embedded
  1405. components.}
  1406. \verb|eqhull m| \index{eqhull}
  1407. \pbx{returns the equidimensional hull of the dpmat $m$.}
  1408. \verb|isolatedprimes m| \index{isolatedprimes}
  1409. \pbx{returns the list of isolated primes of the dpmat $m$, i.e. the
  1410. isolated primes of $Ann\ S^c/m$.}
  1411. \verb|primarydecomposition m| \index{primarydecomposition}
  1412. \pbx{returns the primary decomposition of the dpmat $m$.}
  1413. \verb|radical m| \index{radical}
  1414. \pbx{returns the radical of the dpmat ideal $m$.}
  1415. \verb|unmixedradical m| \index{unmixedradical}
  1416. \pbx{returns the unmixed radical of the dpmat ideal $m$.}
  1417. \verb|zeroprimarydecomposition m| \index{zeroprimarydecomposition}
  1418. \pbx{returns the primary decomposition of the zerodimensional dpmat
  1419. $m$.}
  1420. \verb|zeroprimes m| \index{zeroprimes}
  1421. \pbx{returns the list of primes of the zerodimensional dpmat $m$.}
  1422. \end{quote}
  1423. \subsection{Scripts}
  1424. \begin{quote}
  1425. \verb|affine_monomial_curve(l,R)|\index{affine\_monomial\_curve}
  1426. \pbx{$l$ is a list of integers, $R$ a list of variable names of the
  1427. same length as $l$. The procedure set the current base ring and
  1428. returns the defining ideal of the affine monomial curve with generic
  1429. point $(t^i\ :\ i\in l)$.}
  1430. \verb|affine_points m| \index{affine\_points}
  1431. \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
  1432. with as many columns as the current base ring has ring variables.
  1433. Its rows represent the affine coordinates of a collection of points.
  1434. This procedure returns the intersection of the maximal ideals
  1435. corresponding to these points.}
  1436. \verb|analytic_spread M|\index{analytic\_spread}
  1437. \pbx{Computes the analytic spread of $M$.}
  1438. \verb|assgrad(M,N,vars)|\index{assgrad}
  1439. \pbx{Computes the associated graded ring $gr_R(N)$ over $R=S/M$, where
  1440. $S$ is the current
  1441. base ring. {\tt vars} is a list of new variable names one for
  1442. each generator of $N$. They are used to create a second ring $T$
  1443. to return an ideal $J$ such that $(S\oplus T)/J$ is the desired
  1444. associated graded ring over the new current base ring $S\oplus T$.}
  1445. \verb|blowup(M,N,vars)|\index{blowup}
  1446. \pbx{Computes the blow up ${\cal R}(N)$ of $N$ over the ring $R=S/M$,
  1447. where $S$ is the current base ring. {\tt vars} is a list of new
  1448. variable names one for each generator of $N$. They are used to create
  1449. a second ring $T$ to return an ideal $J$ such that $(S\oplus T)/J$ is
  1450. the desired blowup ring over the new current base ring $S\oplus T$.}
  1451. \verb|flatten m| \index{flatten}
  1452. \pbx{converts the matrix $m$ into a list of its entries.}
  1453. \verb|ideal2mat m| \index{ideal2mat}
  1454. \pbx{converts the ideal (=list of polynomials) $m$ into a column
  1455. vector.}
  1456. \verb|matjac(m,<variable list>)| \index{matjac}
  1457. \pbx{returns the Jacobian matrix of the ideal m with respect to the
  1458. supplied variable list}
  1459. \verb|minimal_generators m| \index{minimal\_generators}
  1460. \pbx{returns a set of minimal generators of the dpmat $m$.}
  1461. \verb|minors(m,b)| \index{minors}
  1462. \pbx{returns the list of minors of size $b\times b$ of the dpmat
  1463. $m$.}
  1464. \verb|preimage(m,map)| \index{preimage}
  1465. \pbx{computes the preimage of the ideal $m$ under the given
  1466. polynomial map and sets the current base ring to the preimage ring.}
  1467. \verb|proj_monomial_curve(l,R)|\index{proj\_monomial\_curve}
  1468. \pbx{$l$ is a list of integers, $R$ a list of variable names of the
  1469. same length as $l$. The procedure set the current base ring and
  1470. returns the defining ideal of the projective monomial curve with
  1471. generic point \mbox{$(s^{d-i}\cdot t^i\ :\ i\in l)$} in $R$ where $d=max\{
  1472. x\, :\, x\in l\}$.}
  1473. \verb|proj_points m| \index{proj\_points}
  1474. \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
  1475. with as many columns as the current base ring has ring variables.
  1476. Its rows represent the homogeneous coordinates of a collection of
  1477. points in projective space. This procedure returns the intersection
  1478. of the maximal homogeneous ideals corresponding to these points.}
  1479. \verb|random_linear_form(vars,bound)| \index{random\_linear\_form}
  1480. \pbx{returns a random linear form in the variables {\tt vars} with integer
  1481. coefficients less than the supplied {\tt bound}.}
  1482. \verb|ratpreimage(m,map)| \index{ratpreimage}
  1483. \pbx{computes the closure of the preimage of the ideal $m$ under the
  1484. given rational map and sets the current base ring to the preimage
  1485. ring.}
  1486. \verb|singular_locus(M,c)| \index{singular\_locus}
  1487. \pbx{returns the defining ideal of the singular locus of $Spec\ S/M$
  1488. where $M$ is an ideal of codimension $c$, adding to $M$ the ideal of
  1489. the $c$-minors of the Jacobian of $M$.}
  1490. \verb|sym(M,vars)|\index{sym}
  1491. \pbx{Computes the symmetric algebra $Sym(M)$ where $M$ is an ideal
  1492. defined over the current base ring $S$. {\tt vars} is a list of new
  1493. variable names one for each generator of $M$. They are used to create
  1494. a second ring $R$ to return an ideal $J$ such that $(S\oplus R)/J$ is
  1495. the desired symmetric algebra over the new current base ring $S\oplus
  1496. R$.}
  1497. \verb|symbolic_power(m,d)| \index{symbolic\_power}
  1498. \pbx{returns the d'th symbolic power of the prime dpmat ideal $m$.}
  1499. \verb|varopt m| \index{varopt}
  1500. \pbx{finds a heuristically optimal variable order, see \cite{BGK}.
  1501. \[\tt vars:=varopt\ m;\ setring(vars,\{\},lex);\ setideal(m,m);\]
  1502. changes to the lexicographic term order with heuristically best
  1503. performance for a lexicographic \gr basis computation.}
  1504. \end{quote}
  1505. \pagebreak
  1506. \section{Algebraic Mode vs. Symbolic Mode}
  1507. Here is a summary of algebraic mode procedures and their symbolic
  1508. mode equivalents.
  1509. \bigskip
  1510. \begin{tabular}{|p{6cm}|p{7cm}|}
  1511. \hline
  1512. algebraic mode & symbolic mode\\
  1513. \hline
  1514. affine\_monomial\_curve(l,R)&affine\_monomial\_curve!*(l,R)\\
  1515. affine\_points m& affine\_points!* m\\
  1516. analytic\_spread M&analytic\_spread!* M\\
  1517. annihilator m& annihilator1(2)!* m\\
  1518. assgrad(M,N,vars)&assgrad!*(M,N,vars)\\
  1519. bettinumbers m& bettinumbers!*(resolution)\\
  1520. blowup(M,N,vars)&blowup!*(M,N,vars)\\
  1521. codim m&codim!* m\\
  1522. degsfromresolution m &\\
  1523. degree m& degree!* m \\
  1524. degreeorder vars & degreeorder!* vars\\
  1525. deleteunits m& deleteunits!* m\\
  1526. dim m& dim!* m \\
  1527. dimzerop m& dimzerop!* m\\
  1528. directsum(m1,m2,\ldots )& directsum!*(list of dpmats)\\
  1529. dpgcd(f,g) & dpgcd!*(f,g)\\
  1530. easydim m& easydim!* m\\
  1531. easyindepset m& easyindepset!* m\\
  1532. easyprimarydecomposition m& easyprimarydecomposition!* m\\
  1533. eliminate(m, list of var. names)& eliminate!*(m, list of var. names)\\
  1534. eliminationorder vars & eliminationorder!* vars \\
  1535. eqhull m& eqhull!* m\\
  1536. flatten m& flatten!* m\\
  1537. gbasis m& gbasis!* m\\
  1538. getdegrees() or getdegrees m& dpmat\_coldegs m\\
  1539. getecart() & ring\_ecart cali!=basering\\
  1540. getkbase m& getkbase!* m\\
  1541. getleadterms gb & getleadterms!* m\\
  1542. getmonset()&cali!=monset\\
  1543. getring() or getring m& cali!=basering\\
  1544. \end{tabular}
  1545. \begin{tabular}{|p{6cm}|p{7cm}|}
  1546. getrules()& cali!=rules\\
  1547. gradedbettinumbers m& gradedbettinumbers!*(resolution)\\
  1548. groebfactor m& groebfactor!*(m,con)\\
  1549. hilbseries m&
  1550. hilbseries1 m \nl or hilbseries2 m \nl or hilbseries3(resolution)\\
  1551. idealpower(m,n)& idealpower!*(m,n)\\
  1552. idealprod(m1,m2,\ldots )& idealprod!*(list of dpmats) or \nl
  1553. idealprod2(a,b)\\
  1554. idealquotient(m,n)& idealquotient1(2)!*(m,n)\\
  1555. idealsum(m1,m2,\ldots )& matsum!*(list of dpmats)\\
  1556. ideal2mat m&ideal2mat!* m\\
  1557. indepvarsets m& indepvarsets!* m \\
  1558. initmat(file name)& initmat!*(file name)\\
  1559. interreduce m& interreduce!* m\\
  1560. isolatedprimes m& isolatedprimes!* m\\
  1561. isprime m& isprime!* m\\
  1562. iszeroradical m& iszeroradical!* m\\
  1563. localorder vars & localorder!* vars\\
  1564. matappend(m1,m2,\ldots )& matappend!*(list of dpmats)\\
  1565. mathomogenize(m,var. name)& mathomogenize!*(m,var. name)\\
  1566. matintersect(m1,m2,\ldots )& matintersect!*(list of dpmats)\\
  1567. matjac(m,list of var. names)&\\
  1568. matquot(m,f)& matquot!*(m,f)\\
  1569. matqquot(m,f)& matqquot!*(m,f)\\
  1570. matstabquot(m,n)& matstabquot!*(m,n)\\
  1571. matsum(m1,m2,\ldots )& matsum!*(list of dpmats)\\
  1572. minimal\_generators m& minimal\_generators!* m\\
  1573. minors(m,k)&minors!*(m,k)\\
  1574. mod(a,m) or a mod m & mod!*(a,m)\\
  1575. modequalp(m1,m2)& modequalp!*(m1,m2)\\
  1576. modulequotient(m,n)& modulequotient1(2)!*(m,n)\\
  1577. \end{tabular}
  1578. \begin{tabular}{|p{6cm}|p{7cm}|}
  1579. normalform(m1,m2)& normalform!*(m1,m2)\\
  1580. preimage(m,map)& preimage!*(m,map)\\
  1581. primarydecomposition m& primarydecomposition!* m\\
  1582. proj\_monomial\_curve(l,R)&proj\_monomial\_curve!*(l,R)\\
  1583. proj\_points m& proj\_points!* m\\
  1584. radical m& radical!* m\\
  1585. random\_linear\_form(vars,bound)&\\
  1586. ratpreimage(m,map)& ratpreimage!*(m,map)\\
  1587. resolve(m[,d])& resolve!*(m,d)\\
  1588. savemat(m,file name)& savemat!*(m,file name)\\
  1589. setdegrees(list of monomials) &
  1590. cali!=degrees:=\nl assoc. list of monomials\\
  1591. setecart(list of integer) & setecart!*(list of integers) \\
  1592. setgbasis m&\\
  1593. setideal(id, list of polynomials) &dpmat\_from\_a(alg. prefix form)\\
  1594. setmodule(id,matrix) & dpmat\_from\_a(alg. prefix form)\\
  1595. setmonset(var. list)& setmonset!*(var. list)\\
  1596. setring(vars,\nl term order,tag[,ecart]) &
  1597. setring!* \nl ring\_define(vars,tord,tag,ecart)\\
  1598. setrules(rules list)& setrules!*(rules list)\\
  1599. sieve(m,list of var. names) & dpmat\_sieve(m,list of var. names)\\
  1600. singular\_locus(M,c)& \\
  1601. submodulep(m1,m2)& submodulep!*(m1,m2)\\
  1602. sym(M,vars)&sym!*(M,vars)\\
  1603. symbolic\_power(m,d)& symbolic\_power!*(m,d)\\
  1604. syzygies m& syzygies!* m or syzygies1!* m\\
  1605. tangentcone gb& tangentcone!* m\\
  1606. unmixedradical m& unmixedradical!* m\\
  1607. varopt m& varopt!* m\\
  1608. zeroprimarydecomposition m& zeroprimarydecomposition!* m\\
  1609. zeroprimes m& zeroprimes!* m\\
  1610. zeroradical m& zeroradical!* m\\
  1611. \hline
  1612. \end{tabular}
  1613. \pagebreak
  1614. \section{The CALI Module Structure}
  1615. \vfill
  1616. \begin{tabular}{|p{1.5cm}||p{5.5cm}|p{2cm}|p{4cm}|}
  1617. \hline
  1618. \sloppy
  1619. name & subject & data type & representation \\
  1620. \hline
  1621. cali & Header module, contains \linebreak
  1622. global variables, switches etc. & --- & ---\\
  1623. bcsf & Base coefficient arithmetic & base coeff. & standard forms \\
  1624. ring & Base ring setting, definition of the term order & base ring &
  1625. special type RING\\
  1626. mo & monomial arithmetic & monomials & (exp. list . degree list)\\
  1627. dpoly & Polynomial and vector arith\-metic & dpolys & list of terms\\
  1628. bas & Operations on base lists & base list & list of base elements \\
  1629. dpmat & Operations on polynomial matrices, the central data type of
  1630. CALI & dpmat & special type DPMAT\\
  1631. red & Normal form algorithms for noetherian term orders & --- & ---\\
  1632. groeb & \gr basis algorithm and related ones for noetherian term
  1633. orders & --- & ---\\
  1634. mora & Modifications for non noetherian term orders & --- & ---\\
  1635. matop & Operations on (lists of) \linebreak dpmats that correspond to
  1636. ideal/module operations & --- & ---\\
  1637. quot & Different quotient algorithms & --- & --- \\
  1638. moid & Monomial ideal algorithms & monomial ideal & list of monomials \\
  1639. res & Resolutions of dpmats & resolution & list of dpmats \\
  1640. interf & Interface to algebraic mode & --- & ---\\
  1641. odim & Algorithms for zerodimensional ideals and modules & --- & ---\\
  1642. prime & Primary decomposition and related questions & --- & ---\\
  1643. scripts & Advanced applications & --- & ---\\
  1644. \hline
  1645. \end{tabular}
  1646. \vfill
  1647. \pagebreak
  1648. \begin{theindex}
  1649. \item affine\_monomial\_curve, 27, 36
  1650. \item affine\_points, 28, 36
  1651. \item algebraic numbers, 12
  1652. \item analytic\_spread, 27, 36
  1653. \item annihilator, 23, 30
  1654. \item annihilator1, 18
  1655. \item assgrad, 27, 36
  1656. \indexspace
  1657. \item bas\_getrelations, 18
  1658. \item bas\_removerelations, 17
  1659. \item bas\_setrelations, 17
  1660. \item base coefficients, 12
  1661. \item base elements, 17
  1662. \item base ring, 8, 16
  1663. \item basis, 12
  1664. \item bcsimp, 13, 15
  1665. \item bettinumbers, 30
  1666. \item binomial, 13
  1667. \item blowup, 7, 27, 36
  1668. \item bounded identifier, 11
  1669. \item bounded identifiers, 30
  1670. \indexspace
  1671. \item cali, 6
  1672. \item cali!=basering, 8, 14, 16
  1673. \item cali!=degrees, 10, 15, 16, 31, 34
  1674. \item cali!=ecart, 20
  1675. \item cali!=monset, 15, 20, 22, 31
  1676. \item cali!=rules, 12, 15
  1677. \item cali!=trace, 14, 15
  1678. \item codim, 24, 30
  1679. \item column degree, 10
  1680. \item current module, 16
  1681. \item current ring, 16
  1682. \indexspace
  1683. \item degree, 24, 30
  1684. \item degree vectors, 8
  1685. \item degreeorder, 8, 16
  1686. \item degsfromresolution, 30
  1687. \item deleteunits, 19, 30
  1688. \item detectunits, 6, 13, 19
  1689. \item dim, 23, 30
  1690. \item dimzerop, 25, 30
  1691. \item directsum, 18, 30
  1692. \item dmode, 12
  1693. \item dp\_pseudodivmod, 12, 22
  1694. \item dpgcd, 22, 31
  1695. \item dpmat, 10--12, 18
  1696. \item dpmat\_coldegs, 18
  1697. \item dpmat\_cols, 18
  1698. \item dpmat\_list, 18
  1699. \item dpmat\_rows, 18
  1700. \indexspace
  1701. \item easydim, 21, 24, 31
  1702. \item easyindepset, 24, 31
  1703. \item easyprimarydecomposition, 26, 35
  1704. \item ecart, 3, 6, 17
  1705. \item ecart vector, 9, 24, 33
  1706. \item eliminate, 7, 22, 31
  1707. \item eliminationorder, 9, 16
  1708. \item eqhull, 26, 35
  1709. \indexspace
  1710. \item factorunits, 6, 14, 19
  1711. \item flatten, 11, 36
  1712. \item free identifier, 11
  1713. \indexspace
  1714. \item gbasis, 19, 20, 31
  1715. \item getdegrees, 11, 31
  1716. \item getecart, 10, 31
  1717. \item getkbase, 25, 31
  1718. \item getleadterms, 31
  1719. \item getmonset, 31
  1720. \item getring, 9
  1721. \item getrules, 12, 31
  1722. \item global procedures, 6
  1723. \item gradedbettinumbers, 32
  1724. \item groeb\_stbasis, 20
  1725. \item groebfactor, 21, 32
  1726. \indexspace
  1727. \item hardzerotest, 12, 14
  1728. \item hilb1, 24
  1729. \item hilb2, 24
  1730. \item Hilbert series, 10
  1731. \item hilbseries, 32
  1732. \item hilbseries1, 24
  1733. \item hilbseries2, 24
  1734. \item Homogenizations, 10
  1735. \indexspace
  1736. \item ideal quotient, 22
  1737. \item ideal2mat, 11, 36
  1738. \item idealpower, 18, 32
  1739. \item idealprod, 18, 32
  1740. \item idealquotient, 23, 32
  1741. \item ideals, 11
  1742. \item idealsum, 32
  1743. \item indepvarsets, 23, 32
  1744. \item initmat, 32
  1745. \item internal procedures, 6
  1746. \item interreduce, 19, 32
  1747. \item isolatedprimes, 26, 35
  1748. \item isprime, 25, 35
  1749. \item iszeroradical, 35
  1750. \indexspace
  1751. \item lazy, 6, 14, 21
  1752. \item lexicographic, 8
  1753. \item listminimize, 7
  1754. \item listtest, 7
  1755. \item local procedures, 6
  1756. \item localorder, 9, 16
  1757. \indexspace
  1758. \item map, 26
  1759. \item matappend, 18, 33
  1760. \item mathomogenize, 33
  1761. \item matintersect, 7, 18, 22, 33
  1762. \item matjac, 37
  1763. \item matqquot, 18, 22, 33
  1764. \item matquot, 18, 22, 33
  1765. \item matstabquot, 23, 33
  1766. \item matsum, 18, 33
  1767. \item minimal\_generators, 28, 37
  1768. \item minors, 37
  1769. \item mod, 19, 33
  1770. \item modequalp, 18, 22, 33
  1771. \item module quotient, 22
  1772. \item module term order, 10
  1773. \item modulequotient, 23, 33
  1774. \item modulequotient1, 18
  1775. \item modules, 11
  1776. \item moid\_primes, 23
  1777. \item mora\_interreduce, 19
  1778. \item mora\_stbasis, 20
  1779. \indexspace
  1780. \item noetherian, 3, 8, 14, 16, 19
  1781. \item normalform, 19, 34
  1782. \indexspace
  1783. \item odim\_parameter, 25
  1784. \item odim\_up, 25
  1785. \indexspace
  1786. \item preimage, 7, 27, 37
  1787. \item primary decomposition, 7
  1788. \item primarydecomposition, 35
  1789. \item proj\_monomial\_curve, 28, 37
  1790. \item proj\_points, 29, 37
  1791. \indexspace
  1792. \item radical, 26, 35
  1793. \item random\_linear\_form, 37
  1794. \item ratpreimage, 27, 37
  1795. \item red\_better, 18
  1796. \item red\_interreduce, 19
  1797. \item red\_total, 14
  1798. \item resolve, 7, 34
  1799. \item reverse lexicographic, 8
  1800. \item ring, 12
  1801. \item ring\_define, 16
  1802. \item ring\_sum, 16
  1803. \indexspace
  1804. \item savemat, 34
  1805. \item scripts, 7
  1806. \item setdegrees, 11, 15, 34
  1807. \item setgbasis, 34
  1808. \item setideal, 12, 13
  1809. \item setkorder, 16
  1810. \item setmodule, 12, 13
  1811. \item setmonset, 15, 21
  1812. \item setring, 7--9, 13, 14, 16
  1813. \item setrules, 12, 15, 22, 31, 34
  1814. \item sieve, 34
  1815. \item singular\_locus, 37
  1816. \item stable quotient, 22
  1817. \item submodulep, 18, 21, 34
  1818. \item sym, 7, 28, 37
  1819. \item symbolic\_power, 29, 38
  1820. \item syzygies, 19, 20, 34
  1821. \item syzygies1, 20
  1822. \indexspace
  1823. \item tangentcone, 35
  1824. \item term, 17
  1825. \indexspace
  1826. \item unmixedradical, 26, 35
  1827. \indexspace
  1828. \item varopt, 38
  1829. \indexspace
  1830. \item zeroprimarydecomposition, 25, 26, 36
  1831. \item zeroprimes, 25, 36
  1832. \item zeroradical, 25, 35
  1833. \end{theindex}
  1834. \pagebreak
  1835. \begin{thebibliography}{xxx}
  1836. \bibitem{BS} D. Bayer, M. Stillman : Computation of Hilbert
  1837. functions, {\it J. Symb. Comp. \bf 14} (1992), 31 - 50.
  1838. \bibitem{BKW} T. Becker, H. Kredel, V. Weispfenning : \gr bases. A
  1839. computational approach to commutative algebra. Grad. Texts in Math.
  1840. 141, Springer, New York 1993.
  1841. \bibitem{BCRT} A. M. Bigatti, P. Conti, L. Robbiano, C. Traverso : A
  1842. divide and conquer algorithm for Hilbert-Poincare series,
  1843. multiplicity and dimension of monomial ideals, to appear.
  1844. \bibitem{BGK} W. Boege, R. Gebauer, H. Kredel : Some examples for
  1845. solving systems of algebraic equations by calculating \gr bases. {\it
  1846. J. Symb. Comp. \bf 2} (1986), 83 - 98.
  1847. \bibitem{B1} B. Buchberger : \gr bases : An algorithmic method in
  1848. polynomial ideal theory. In : Recent trends in multidimensional
  1849. system theory (N.~K.~Bose ed), Reidel, Dortrecht 1985, 184 - 232.
  1850. \bibitem{B2} B. Buchberger : Applications of \gr bases in non-linear
  1851. computational geometry. L.N.C.S. 296 (1988), 52 - 80.
  1852. \bibitem{CLO} D. Cox, J. Little, D. O'Shea : Ideals, varieties, and
  1853. algorithms. Undergrad. Texts in Math., Springer, New York 1992.
  1854. \bibitem{E} D. Eisenbud : \gr bases. A chapter from :
  1855. Commutative algebra with a view toward algebraic geometry.
  1856. A book in preparation.
  1857. \bibitem{GTZ} P. Gianni, B. Trager, G. Zacharias : \gr bases and
  1858. primary decomposition of polynomial ideals, {\it J. Symb. Comp. \bf
  1859. 6} (1988), 149 - 167.
  1860. \bibitem{GMNRT} A. Giovini, T. Mora, G. Niesi, L. Robbiano \& C.
  1861. Traverso : "One sugar cube, please" or Selection strategies in the
  1862. Buchberger algorithm. In : Proceedings of the ISSAC'91, ACM Press
  1863. 1991, 49 - 54.
  1864. \bibitem{GrI} H.-G. Gr\"abe : Two remarks on independent sets,
  1865. {\it J. Alg. Comb. \bf 2} (1993), 137 - 145.
  1866. \bibitem{Gr23} H.-G. Gr\"abe : The tangent cone algorithm and
  1867. homogenization. To appear
  1868. \bibitem{ala} H.-G. Gr\"abe : Algorithms in local algebra. To appear
  1869. \bibitem{Kr} H. Kredel : Primary ideal decomposition, in : Proc.
  1870. EUROCAL'87, Lecture Notes in Comp. Sci. 378 (1986), 270 - 281.
  1871. \bibitem{KW} H. Kredel, V. Weispfenning : Computing dimension and
  1872. independent sets for polynomial ideals, {\it J. Symb. Comp. \bf 6}
  1873. (1988), 231 - 247.
  1874. \bibitem{MM} H.-M. M\"oller, F. Mora : New constructive methods in
  1875. classical ideal theory, {\it J. Alg. \bf 100} (1986), 138 -178.
  1876. \bibitem{MR88} T. Mora, L. Robbiano : The Gr\"obner fan of an ideal.
  1877. {\it J. Symb. Comp. \bf 6} (1988), 183 - 208.
  1878. \bibitem{Mo88} T. Mora : Seven variations on standard bases.
  1879. Preprint, Univ. Genova, 1988.
  1880. \bibitem{MPT} T. Mora, G. Pfister, C. Traverso : An introduction to
  1881. the tangent cone algorithm, to appear
  1882. \bibitem{Ro} L. Robbiano : Computer algebra and commutative algebra.
  1883. L.N.C.S. 357 (1989), 31 - 44.
  1884. \bibitem{Ru} E. W. Rutman : \gr bases and primary decomposition of
  1885. modules. {\it J. Symb. Comp. \bf 14} (1992), 483 - 503.
  1886. \end{thebibliography}
  1887. \end{document}