cali.tex 116 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169
  1. % CALI user documentation
  2. % H.-G. Graebe | Univ. Leipzig | Version 2.2.1
  3. \documentstyle[11pt]{article}
  4. \date{June 28, 1995}
  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.2.1}
  17. \author{
  18. Hans-Gert Gr\"abe \\[15pt]
  19. Universit\"at Leipzig\\
  20. Institut f\"ur Informatik \\
  21. Augustusplatz 10 -- 11\\
  22. 04109 Leipzig / Germany\\[20pt]
  23. email: graebe@informatik.uni-leipzig.de}
  24. \begin{document}
  25. \maketitle
  26. \vfill
  27. Key words:
  28. affine and projective monomial curves,
  29. affine and projective sets of points,
  30. analytic spread,
  31. associated graded ring,
  32. blowup,
  33. border bases,
  34. constructive commutative algebra,
  35. dual bases,
  36. elimination,
  37. equidimensional part,
  38. extended \gr factorizer,
  39. free resolution,
  40. \gr algorithms for ideals and module,
  41. \gr factorizer,
  42. ideal and module operations,
  43. independent sets,
  44. intersections,
  45. lazy standard bases,
  46. local free resolutions,
  47. local standard bases,
  48. minimal generators,
  49. minors,
  50. normal forms,
  51. pfaffians,
  52. polynomial maps,
  53. primary decomposition,
  54. quotients,
  55. symbolic powers,
  56. symmetric algebra,
  57. triangular systems,
  58. weighted Hilbert series,
  59. primality test,
  60. radical,
  61. unmixed radical.
  62. \pagebreak
  63. \tableofcontents
  64. \pagebreak
  65. \section{Introduction}
  66. This package contains algorithms for computations in commutative
  67. algebra closely related to the \gr algorithm for ideals and modules.
  68. Its heart is a new implementation of the \gr algorithm\footnote{The
  69. data representation even for polynomials is different from that given
  70. in the {\tt groebner} package distributed with REDUCE (and rests on ideas
  71. used in the {\tt dipoly} package).} that allows the computation of
  72. syzygies, too. This implementation is also applicable to submodules of
  73. free modules with generators represented as rows of a matrix.
  74. Moreover CALI contains facilities for local computations, using a
  75. modern implementation of Mora's standard basis algorithm, see
  76. \cite{MPT} and \cite{tcah}, that works for arbitrary term orders.
  77. The full analogy between modules over the local ring \linebreak[1]
  78. $k[x_v:v\in H]_{\bf m}$ and homogeneous (in fact H-local) modules
  79. over $k[x_v:v\in H]$ is reflected through the switch
  80. \ind{Noetherian}. Turn it on (\gr basis, the default) or off (local
  81. standard basis) to choose appropriate algorithms
  82. automatically. In v.\ 2.2 we present an unified approach to both
  83. cases, using reduction with bounded ecart for non Noetherian term
  84. orders, see \cite{ala} for details. This allows to have a common
  85. driver for the \gr algorithm in both cases.
  86. CALI extends also the restricted term order facilities of the {\tt
  87. groebner} package, defining term orders by degree vector lists, and
  88. the rigid implementation of the sugar idea, by a more flexible
  89. \ind{ecart} vector, in particular useful for local computations, see
  90. \cite{tcah}.
  91. \medskip
  92. The package was designed mainly as a symbolic mode programming
  93. environment extending the build-in facilities of REDUCE for the
  94. computational approach to problems arising naturally in commutative
  95. algebra. An algebraic mode interface accesses (in a more rigid frame)
  96. all important features implemented symbolically and thus
  97. should be favored for short sample computations.
  98. On the other hand, tedious computations are strongly recommended to
  99. be done symbolically since this allows considerably more flexibility
  100. and avoids unnecessary translations of intermediate results from
  101. CALI's internal data representation to the algebraic mode and vice
  102. versa. Moreover, one can easily extend the package with new symbolic
  103. mode scripts, or do more difficult interactive computations. For all
  104. these purposes the symbolic mode interface offers substantially more
  105. facilities than the algebraic one.
  106. \medskip
  107. For a detailed description of special symbolic mode procedures one
  108. should consult the source code and the comments therein. In this
  109. manual we can give only a brief description of the main ideas
  110. incorporated into the package CALI. We concentrate on the data
  111. structure design and the description of the more advanced algorithms.
  112. For sample computations from several fields of commutative algebra
  113. the reader may consult also the {\em cali.tst} file.
  114. \medskip
  115. As main topics CALI contains facilities for
  116. \begin{itemize}
  117. \item defining rings, ideals and modules,
  118. \item computing \gr bases and local standard bases,
  119. \item computing syzygies, resolutions and (graded) Betti numbers,
  120. \item computing (now also weighted) Hilbert series, multiplicities,
  121. independent sets, and dimensions,
  122. \item computing normal forms and representations,
  123. \item computing sums, products, intersections, quotients, stable
  124. quotients, elimination ideals etc.,
  125. \item primality tests, computation of radicals, unmixed radicals,
  126. equidimensional parts, primary decompositions etc. of ideals and
  127. modules,
  128. \item advanced applications of \gr bases (blowup, associated graded
  129. ring, analytic spread, symmetric algebra, monomial curves etc.),
  130. \item applications of linear algebra techniques to zero dimensional
  131. ideals, as e.g.\ the FGLM change of term orders, border bases
  132. and affine and projective ideals of sets of points,
  133. \item splitting polynomial systems of equations mixing factorization and
  134. the \gr algorithm, triangular systems, and different versions of the
  135. extended \gr factorizer.
  136. \end{itemize}
  137. Below we will use freely without further explanation the notions
  138. common for text books and papers about constructive commutative
  139. algebra, assuming the reader to be familiar with the corresponding
  140. ideas and concepts. For further references see e.g.\ the text books
  141. \cite{BKW}, \cite{CLO} and \cite{Mishra} or the survey papers
  142. \cite{B1}, \cite{B2} and \cite{Ro}.
  143. \subsection{Description of the Documents Distributed with CALI}
  144. The CALI package contains the following files:
  145. \begin{quote}
  146. cali.chg
  147. \pbx{a detailed report of changes from v.\ 2.1 to v.\ 2.2. and 2.2.1}
  148. cali.log
  149. \pbx{the output file, that cali.tst should produce with
  150. \begin{quote} \tt
  151. load\_package cali;
  152. out "logfile"\$
  153. in "cali.tst";
  154. shut "logfile"\$
  155. \end{quote}}
  156. cali.red
  157. \pbx{the CALI source file.}
  158. cali.tex
  159. \pbx{this manual.}
  160. cali.tst
  161. \pbx{a test file with various examples and applications of CALI.}
  162. \end{quote}
  163. CALI should be precompiled as usual, i.e.\ either using the {\em
  164. makefasl} utility of REDUCE or ``by hand'' via
  165. \begin{verbatim}
  166. faslout "cali"$
  167. in "cali.red"$
  168. faslend$
  169. \end{verbatim}
  170. and then loaded via
  171. \begin{verbatim}
  172. load_package cali;
  173. \end{verbatim}
  174. Upon successful loading CALI responds with a message containing the
  175. version number and the last update of the distribution.
  176. \begin{center}
  177. \fbox{\parbox{12cm}{Feel free to contact me by email if You have
  178. problems to get CALI started. Also comments, hints, bug reports etc.
  179. are welcome.}}
  180. \end{center}
  181. \subsection{CALI's Language Concept}
  182. From a certain point of view one of the major disadvantage of the
  183. current RLISP (and the underlying PSL) language is the fact
  184. that it supports modularity and data encapsulation only in a
  185. rudimentary way. Since all parts of code loaded into a session are
  186. visible all the time, name conflicts between different packages may
  187. occur, will occur (even not issuing a warning message), and are hard
  188. to prevent, since packages are developed (and are still developing)
  189. by different research groups at different places and different time.
  190. A (yet rudimentary) concept of REDUCE packages and modules indicates the
  191. direction into what the REDUCE designers are looking for a solution
  192. for this general problem.
  193. \medskip
  194. CALI (2.0 and higher) follows a name concept for internal procedures
  195. to mimick data encapsulation at a semantical level. We hope this way
  196. on the one hand to resolve the conflicts described above at least for
  197. the internal part of CALI and on the other hand to anticipate a
  198. desirable future and already foregoing development of REDUCE towards
  199. a true modularity.
  200. The package CALI is divided into several modules, each of them
  201. introducing either a single new data type together with basic
  202. facilities, constructors, and selectors or a collection of algorithms
  203. subject to a common problem. Each module contains \ind{internal
  204. procedures}, conceptually hidden by this module, \ind{local
  205. procedures}, designed for a CALI wide use, and \ind{global
  206. procedures}, exported by CALI into the general (algebraic or
  207. symbolic) environment of REDUCE. A header \ind{module cali} contains
  208. all (fluid) global variables and switches defined by the pacakge
  209. CALI.
  210. Along these lines the CALI procedures available in symbolic mode are
  211. divided into three types with the following naming convention:
  212. \begin{quote}
  213. \verb|module!=procedure|
  214. \pbx{internal to the given module.}
  215. \verb|module_procedure|
  216. \pbx{exported by the given module into the local CALI environment.}
  217. \verb|procedure!*|
  218. \pbx{a global procedure usually having a semantically equivalent
  219. procedure (possibly with another parameter list) without trailing
  220. asterisk in algebraic mode.}
  221. \end{quote}
  222. There are also symbolic mode equivalents without trailing asterisk, if
  223. the algebraic procedure is not a {\em psopfn}, but a {\em symbolic
  224. operator}. They transfer data to CALI's internal structure and call
  225. the corresponding procedure with trailing asterisk. CALI 2.2
  226. distinguishes between algebraic and symbolic calls of such a
  227. procedure. In symbolic mode such a procedure calls the corresponding
  228. procedure with trailing asterisk directly without data transfer.
  229. \medskip
  230. CALI 2.2 follows also a more concise concept for global
  231. variables. There are three types of them:
  232. \begin{quote}
  233. True {\em fluid} global variables,
  234. \pbx{that are part of the current data structure, as e.g.\ the current
  235. base ring and the degree vector. They are often locally rebound to be
  236. restored after interrupts.}
  237. Global variables, stored on the property list of the package name {\tt
  238. cali},
  239. \pbx{that reflect the state of the computational model as e.g.\ the
  240. trace level, the output print level or the chosen version of the \gr
  241. basis algorithm. There are several such parameters in the module
  242. \ind{dualbases} to serve the common dual basis driver with
  243. information for different applications.}
  244. {\em Switches,}
  245. \pbx{that allow to choose different branches of algorithms. Note that
  246. this concept interferes with the second one. Different {\em versions}
  247. of algorithms, that apply different functions in a common driver, are
  248. {\em not} implemented through switches.}
  249. \end{quote}
  250. \subsection{New and Improved Facilities in v.\ 2.1}
  251. The major changes in v.\ 2.1 reflect the experience we've got from the
  252. use of CALI 2.0. The following changes are worth mentioning
  253. explicitely:
  254. \begin{enumerate}
  255. \item The algebraic rule concept was adapted to CALI. It allows to
  256. supply rule based coefficient domains. This is a more efficient way
  257. to deal with (easy) algebraic numbers than through the {\em arnum
  258. package}.
  259. \item \ind{listtest} and \ind{listminimize} provide an unified
  260. concept for different list operations previously scattered in the
  261. source text.
  262. \item There are several new quotient algorithms at the symbolic level
  263. (both the general element and the intersection approaches are
  264. available) and new features for the computation of equidimensional
  265. hull and equidimensional radical.
  266. \item A new \ind{module scripts} offers advanced applications of \gr
  267. bases.
  268. \item Several advanced procedures initialize a \gr basis computation
  269. over a certain intermediate base ring or term order as e.g.\
  270. \ind{eliminate}, \ind{resolve}, \ind{matintersect} or all
  271. \ind{primary decomposition} procedures. Interrupting a computation in
  272. v.\ 2.1 now restores the original values of CALI's global variables,
  273. since all intermediate procedures work with local copies of
  274. the global variables.\footnote{Note that recovering the base
  275. ring this way may cause some trouble since the intermediate ring,
  276. installed with \ind{setring}, changed possibly the internal variable
  277. order set by {\em setkorder}.} This doesn't apply to advanced
  278. procedures that change the current base ring as e.g.\ \ind{blowup},
  279. \ind{preimage}, \ind{sym} etc.
  280. \end{enumerate}
  281. \subsection{New and Improved Facilities in v.\ 2.2}
  282. Version 2.2 (beside bug fixes) incorporates several new facilities of
  283. constructive non linear algebra that we investigated the last two
  284. years, as e.g.\ dual bases, the \gr factorizer, triangular systems, and
  285. local standard bases. Essential changes concern the following topics:
  286. \begin{enumerate}
  287. \item The CALI modules \ind{red} and \ind{groeb} were rewritten and
  288. the \ind{module mora} was removed. This is
  289. due to new theoretical insight into standard bases theory as
  290. e.g.\ described in \cite{tcah} or \cite{ala}. The \gr basis algorithm
  291. is reorganized as a \gr driver with simplifier and base lists, that
  292. involves different versions of polynomial reduction according to the
  293. setting via \ind{gbtestversion}. It applies now to
  294. both noetherian and non noetherian term orders in a unified way.
  295. The switches \ind{binomial} and \ind{lazy} were removed.
  296. \item The \gr factorizer was thoroughly revised, extended along the
  297. lines explained in \cite{fgb}, and collected into a separate
  298. \ind{module groebf}. It now allows a list of constraints also in
  299. algebraic mode. Two versions of an \ind{extended \gr factorizer}
  300. produce \ind{triangular systems},
  301. i.e.\ a decomposition into quasi prime components, see \cite{efgb},
  302. that are well suited for further (numerical) evaluation. There is also
  303. a version of the \gr factorizer that allows a list of problems as
  304. input. This is especially useful, if a system is splitted with respect
  305. to a ``cheap'' (e.g. degrevlex) term order and the pieces are
  306. recomputed with respect to a ``hard'' (e.g. pure lex) term order.
  307. The extended \gr factorizer involves, after change to dimension zero,
  308. the computation of \ind{triangular systems}. The corresponding module
  309. \ind{triang} extends the facilities for zero dimensional ideals and
  310. modules in the \ind{module odim}.
  311. \item A new \ind{module lf} implements the \ind{dual bases} approach
  312. as described in \cite{MMM}. On this basis there are new
  313. implementations of \ind{affine\_points} and \ind{proj\_points}, that
  314. are significantly faster than the old ones. The linear algebra
  315. \ind{change of term orders} \cite{FGLM} is available, too. There are
  316. two versions, one with precomputed \ind{border basis}, the other with
  317. conventional normal forms.
  318. \item \ind{dpmat}s now have a \ind{gb-tag} that indicates, whether the
  319. given ideal or module basis is already a \gr basis. This avoids
  320. certain \gr basis recomputations especially during advanced algorithms
  321. as e.g.\ prime decomposition. In the algebraic interface \gr bases are
  322. computed automatically when needed rather than to issue an error
  323. message as in v.\ 2.1. So one can call \ind{modequalp} or \ind{dim}
  324. etc. not having computed \gr bases in advance. Note that such
  325. automatic computation can be avoided with \ind{setgbasis}.
  326. \item Hilbert series are now \ind{weighted Hilbert series}, since
  327. e.g.\ for blow up rings the generating ideal is multigraded. Usual
  328. Hilbert series are computed as in v.\ 2.1 with respect to the
  329. \ind{ecart vector}. Weighted Hilbert series accept a list of (integer)
  330. weight lists as second parameter.
  331. \item There are some name and conceptual changes to existing
  332. procedures and variables to have a more concise semantic concept. This
  333. concerns
  334. \begin{quote}
  335. \ind{tracing} (the trace parameter is now stored on the property list
  336. of {\tt cali} and should be set with \ind{setcalitrace}),
  337. choosing different versions of the \gr algorithm (through
  338. \ind{gbtestversion}) and the Hilbert series computation (through
  339. \ind{hftestversion}),
  340. some names (\ind{mat2list} replaced \ind{flatten}, \ind{HilbertSeries}
  341. replaced {\em hilbseries}) and
  342. parameter lists of some local and internal procedures (consult {\em
  343. cali.chg} for details).
  344. \end{quote}
  345. \item The \ind{revlex term order} is now the reverse lexicographic
  346. term order on the {\bf reversely} ordered variables. This is consistent
  347. with other computer algebra systems (e.g.\ SINGULAR or
  348. AXIOM)\footnote{But different to the currently distibuted {\tt
  349. groebner} package in REDUCE. Note that the computations in
  350. \cite{fgb} were done {\em before} these changes.} and implies the same
  351. order on the variables for deglex and degrevlex term orders (this was
  352. the main reason to change the definition).
  353. \item Ideals of minors, pfaffians and related stuff are now
  354. implemented as extension of the internal {\tt matrix} package and
  355. collected into a separate \ind{module calimat}. Thus they allow more
  356. general expressions, especially with variable exponents, as general
  357. REDUCE matrices do. So one can define generic ideals as e.g.\ ideals
  358. of minors or pfaffians of matrices, containing generic expressions as
  359. elements. They must be specified for further use in CALI substituting
  360. general exponents by integers.
  361. \end{enumerate}
  362. \subsection{New and Improved Facilities in v.\ 2.2.1\label{221}}
  363. The main change concerns the primary decomposition algorithm, where I
  364. fixed a serious bug for deciding, which embedded primes are really
  365. embedded\footnote{That there must be a bug was pointed out to me by
  366. Shimoyama Takeshi who compared different p.d.\ implementations. The
  367. bug is due to an incorrect test for embedded primes: A (superfluous)
  368. primary component may contain none of the isolated primary components,
  369. but their intersection! Note that neither \cite{GTZ} nor \cite{BKW}
  370. comment on that. Details of the implementation will appear in
  371. \cite{primary}.}. During that remake I incorporated also the \gr
  372. factorizer to compute isolated primes. Since REDUCE has no
  373. multivariate {\em modular} factorizer, the switch \ind{factorprimes}
  374. may be turned off to switch to the former algorithm.
  375. Some minor bugs are fixed, too, e.g.\ the bug that made \ind{radical}
  376. crashing.
  377. \section{The Computational Model}
  378. This section gives a short introduction into the data type design of
  379. CALI at different levels. First (\S 1 and 2) we describe CALI's way
  380. of algorithmic translation of the abstract algebraic objects {\em
  381. ring of polynomials, ideal} and (finitely generated) {\em module}.
  382. Then (\S 3 and 4) we describe the algebraic mode interface of CALI
  383. and the switches and global variables to drive a session. In the next
  384. chapter we give a more detailed overview of the basic (symbolic mode) data
  385. structures involved with CALI. We refer to the appendix for a short
  386. summary of the commands available in algebraic mode.
  387. \subsection{The Base Ring}
  388. A polynomial ring consists in CALI of the following data:
  389. \begin{quote}
  390. a list of variable names
  391. \pbx{All variables not occuring in the list of ring names are treated
  392. as parameters. Computations are executed denominatorfree, but the
  393. results are valid only over the corresponding parameter {\em field}
  394. extension.}
  395. a term order and a term order tag
  396. \pbx{They describe the way in which the terms in each polynomial (and
  397. polynomial vector) are ordered.}
  398. an ecart vector
  399. \pbx{A list of positive integers corresponding to the variable
  400. names.}
  401. \end{quote}
  402. A \ind{base ring} may be defined (in algebraic mode) through the
  403. command
  404. \begin{verbatim}
  405. setring <ring>
  406. \end{verbatim}
  407. with $<ring>$ ::= \{\, vars,\,tord,\,tag\,[,\,ecart\,]\,\} resp.
  408. \begin{verbatim}
  409. setring(vars, tord, tag [,ecart])
  410. \end{verbatim}
  411. \index{setring}
  412. This sets the global (symbolic) variable \ind{cali!=basering}. Here
  413. {\tt vars} is the list of variable names, {\tt tord} a (possibly
  414. empty) list of weight lists, the \ind{degree vectors}, and {\tt tag}
  415. the tag LEX or REVLEX. Optionally one can supply {\tt ecart}, a list
  416. of positive integers of the same length as {\tt vars}, to set an ecart
  417. vector different from the default one (see below).
  418. The degree vectors must have the same length as {\tt vars}. If $(w_1\
  419. \ldots\ w_k)$ is the list of degree vectors then
  420. \[x^a<x^b \qquad :\Leftrightarrow \qquad
  421. \parbox[t]{8cm}{either\hfill
  422. \parbox[t]{6cm}{$w_j(x^a)=w_j(x^b)$\hfill for $j<i$ \hfill and \\[8pt]
  423. $w_i(x^a)<w_i(x^b)$} \\[10pt] or\hfill
  424. \parbox[t]{6cm}{$w_j(x^a)=w_j(x^b)$\hfill for all $j$ \hfill and \\[8pt]
  425. $x^a<_{lex}x^b$ resp. $x^a<_{revlex}x^b$}}
  426. \]
  427. Here $<_{lex}$ resp. $<_{revlex}$ denote the
  428. \ind{lexicographic} (tag=LEX) resp. \ind{reverse lexicographic}
  429. (tag=REVLEX) term orders\footnote{The definition of the revlex term
  430. order changed for version 2.2.}
  431. with respect to the variable order given in {\tt vars}, i.e.\
  432. \[x^a<x^b \quad :\Leftrightarrow \quad
  433. \exists\ j\ \forall\ i<j\ :\ a_i=b_i\quad\mbox{and}\quad a_j<b_j\
  434. \mbox{(lex.)}\]
  435. or
  436. \[x^a<x^b \quad :\Leftrightarrow \quad
  437. \exists\ j\ \forall\ i>j\ :\ a_i=b_i\quad\mbox{and}\quad a_j>b_j\
  438. \mbox{(revlex.)}\]
  439. Every term order can be represented in such a way, see \cite{MR88}.
  440. During the ring setting the term order will be checked to be
  441. Noetherian (i.e.\ to fulfill the descending chain condition) provided
  442. the \ind{switch Noetherian} is on (the default). The same applies
  443. turning {\em noetherian on}: If the term order of the underlying
  444. base ring isn't Noetherian the switch can't be turned over. Hence,
  445. starting from a non Noetherian term order, one should define {\em
  446. first} a new ring and {\em then} turn the switch on.
  447. Useful term orders can be defined by the procedures
  448. \begin{quote}
  449. \verb|degreeorder vars|, \index{degreeorder}
  450. \pbx{that returns $tord=\{\{1,\ldots ,1\}\}$.}
  451. \verb|localorder vars|, \index{localorder}
  452. \pbx{that returns $tord=\{\{-1,\ldots ,-1\}\}$ (a non Noetherian term
  453. order for computations in local rings).}
  454. \verb|eliminationorder(vars,elimvars)|, \index{eliminationorder}
  455. \pbx{that returns a term order for elimination of the variables in
  456. {\tt elimvars}, a subset of all {\tt vars}. It's recommended to
  457. combine it with the tag REVLEX.}
  458. \verb|blockorder(vars,integerlist)|, \index{blockorder}
  459. \pbx{that returns the list of degree vectors for the block order with
  460. block lengths given in the {\tt integerlist}. Note that these numbers
  461. should sum up to the length of the variable list supplied as the first
  462. argument.}
  463. \end{quote}
  464. \noindent Examples:
  465. \begin{verbatim}
  466. vars:={x,y,z};
  467. tord:=degreeorder vars; % Returns {{1,1,1}}.
  468. setring(vars,tord,lex); % GRADLEX in the groebner package.
  469. % or
  470. setring({a,b,c,d},{},lex); % LEX in the groebner package.
  471. % or
  472. vars:={a,b,c,x,y,z};
  473. tord:=eliminationorder(vars,{x,y,z});
  474. tord:=reverse blockorder(vars,{3,3});
  475. % Return both {{0,0,0,1,1,1},{1,1,1,0,0,0}}.
  476. setring(vars,tord,revlex);
  477. \end{verbatim}
  478. \pagebreak[2]
  479. The base ring is initialized with \\[10pt]
  480. \verb|{{t,x,y,z},{{1,1,1,1}},revlex,{1,1,1,1}}|,\\[10pt]
  481. i.e.\ $S=k[t,x,y,z]$ supplied with the degree wise reverse
  482. lexicographic term order.
  483. \begin{quote}
  484. \verb|getring m|\index{getring}
  485. \pbx{returns the ring attached to the object with the identifier
  486. $m$. E.g.\ }
  487. \verb|setring getring m|
  488. \pbx{(re)sets the base ring to the base ring of the formerly defined
  489. object (ideal or module) $m$.}
  490. \verb|getring()|
  491. \pbx{returns the currently active base ring.}
  492. \end{quote}
  493. CALI defines also an \ind{ecart vector}, attaching to each variable a
  494. positive weight with respect to that homogenizations and related
  495. algorithms are executed. It may be set optionally by the user during
  496. the \ind{setring} command. (Default: If the term order is a
  497. (positive) degree order then the ecart is the first degree vector,
  498. otherwise each ecart equals 1).
  499. The ecart vector is used in several places for efficiency reason (\gr
  500. basis computation with the sugar strategy) or for termination (local
  501. standard bases). If the input is homogeneous the ecart vector should
  502. reflect this homogeneity rather than the first degree vector to
  503. obtain the best possible performance. For a discussion of local
  504. computations with encoupled ecart vector see \cite{tcah}. In general
  505. the ecart vector is recommended to be chosen in such a way that the
  506. input examples become close to be homogeneous. {\em Homogenizations}
  507. and \ind{Hilbert series} are computed with respect to this ecart
  508. vector.
  509. \medskip
  510. \noindent \verb|getecart()|\index{getecart} returns the ecart vector
  511. currently set.
  512. \subsection{Ideals and Modules}
  513. If $S=k[x_v,\ v \in H]$ is a polynomial ring, a matrix $M$ of size
  514. $r\times c$ defines a map
  515. \[f\ :\ S^r \longrightarrow S^c\]
  516. by the following rule
  517. \[ f(v):=v\cdot M \qquad \mbox{ for } v \in S^r.\]
  518. There are two modules, connected with such a map, $im\ f$, the
  519. submodule of $S^c$ generated by the rows of $M$, and $coker\ f\
  520. (=S^c/im\ f)$. Conceptually we will identify $M$ with $im\ f$ for the
  521. basic algebra, and with $coker\ f$ for more advanced topics of
  522. commutative algebra (Hilbert series, dimension, resolution etc.)
  523. following widely accepted conventions.
  524. With respect to a fixed basis $\{e_1,\ldots ,e_c\}$ one can define
  525. module term orders on $S^c$, \gr bases of submodules of $S^c$ etc.
  526. They generalize the corresponding notions for ideal bases. See
  527. \cite{E} or \cite{MM} for a detailed introduction to this area of
  528. computational commutative algebra. This allows to define joint
  529. facilities for both ideals and submodules of free modules. Moreover
  530. computing syzygies the latter come in in a natural way.
  531. CALI handles ideal and module bases in a unique way representing them
  532. as rows of a \ind{dpmat} ({\bf d}istributive {\bf p}olynomial {\bf
  533. mat}rix). It attaches to each unit vector $e_i$ a monomial $x^{a_i}$,
  534. the $i$-th \ind{column degree} and represents the rows of a dpmat $M$
  535. as lists of module terms $x^ae_i$, sorted with respect to a
  536. \ind{module term order}, that may be roughly\footnote{The correct
  537. definition is even more difficult.} described as
  538. \bigskip
  539. \begin{tabular}{cccp{6cm}}
  540. $x^ae_i<x^be_j$ & $:\Leftrightarrow$ & either &
  541. {\centering $x^ax^{a_i}<x^bx^{a_j}$ in $S$\\}\\
  542. & & or &
  543. {\centering $x^ax^{a_i}=x^bx^{a_j}$ \\ and \\
  544. $i<j$ (lex.) resp. $i>j$ (revlex.)\\}
  545. \end{tabular}
  546. Every dpmat $M$ has its own column degrees (no default !). They are
  547. managed through a global (symbolic) variable \ind{cali!=degrees}.
  548. \begin{quote}
  549. \verb|getdegrees m| \index{getdegrees}
  550. \pbx{returns the column degrees of the object with identifier m.}
  551. \verb|getdegrees()|
  552. \pbx{returns the current setting of {\em cali!=degrees}.}
  553. \verb|setdegrees <list of monomials>| \index{setdegrees}
  554. \pbx{sets {\em cali!=degrees} correspondingly. Use this command
  555. before executing {\em setmodule} to give a dpmat prescribed column
  556. degrees since cali!=degrees has no default value and changes during
  557. computations. A good guess is to supply the empty list (i.e.\ all
  558. column degrees are equal to $\x^0$). Be careful defining modules
  559. without prescribed column degrees.}
  560. \end{quote}
  561. To distinguish between \ind{ideals} and \ind{modules} the former are
  562. represented as a \ind{dpmat} with $c=0$ (and hence without column
  563. degrees). If $I \subset S$ is such an ideal one has to distinguish
  564. between the ideal $I$ (with $c=0$, allowing special ideal operations
  565. as e.g.\ ideal multiplication) and the submodule $I$ of the free
  566. one dimensional module $S^1$ (with $c=1$, allowing matrix operations
  567. as e.g.\ transposition, matrix multiplication etc.). \ind{ideal2mat}
  568. converts an (algebraic) list of polynomials into an (algebraic)
  569. matrix column whereas \ind{mat2list} collects all matrix entries into
  570. a list.
  571. \subsection{The Algebraic Mode Interface}
  572. Corresponding to CALI's general philosophy explained in the
  573. introduction the algebraic mode interface translates algebraic input
  574. into CALI's internal data representation, calls the corresponding
  575. symbolic functions, and retranslates the result back into algebraic
  576. mode. Since \gr basis computations may be very tedious even on small
  577. examples, one should find a well balance between the storage of
  578. results computed earlier and the unavoidable time overhead and memory
  579. request associated with the management of these results.
  580. Therefore CALI distinguishes between {\em free} and {\em bounded}
  581. \index{free identifier}\index{bounded identifier} identifiers. Free
  582. identifiers stand only for their value whereas to bounded identifiers
  583. several internal information is attached to their property list for
  584. later use.
  585. \medskip
  586. After the initialization of the {\em base ring} bounded identifiers
  587. for ideals or modules should be declared via
  588. \begin{verbatim}
  589. setmodule(name,matrix value)
  590. \end{verbatim}
  591. resp.
  592. \begin{verbatim}
  593. setideal(name,list of polynomials)
  594. \end{verbatim}
  595. \index{setmodule}\index{setideal}
  596. This way the corresponding internal representation (as \ind{dpmat})
  597. is attached to {\tt name} as the property \ind{basis}, the prefix
  598. form as its value and the current base ring as the property
  599. \ind{ring}.
  600. Performing any algebraic operation on objects defined this way their
  601. ring will be compared with the current base ring (including the term
  602. order). If they are different an error message occurs. If {\tt m} is
  603. a valid name, after resetting the base ring
  604. \begin{verbatim}
  605. setmodule(m1,m)
  606. \end{verbatim}
  607. reevaluates {\tt m} with respect to the new base ring (since the
  608. {\em value} of {\tt m} is its prefix form) and assigns the reordered
  609. dpmat to {\tt m1} clearing all information previously computed for
  610. {\tt m1} ({\tt m1} and {\tt m} may coincide).
  611. All computations are performed with respect to the ring $S=k[x_v\in
  612. {\tt vars}]$ over the field $k$. Nevertheless by efficiency reasons
  613. \ind{base coefficients} are represented in a denominator free way as
  614. standard forms. Hence the computational properties of the base
  615. coefficient domain depend on the \ind{dmode} and also on auxiliary
  616. variables, contained in the expressions, but not in the variable
  617. list. They are assumed to be parameters.
  618. Best performance will be obtained with integer or modular domain
  619. modes, but one can also try \ind{algebraic numbers} as coefficients
  620. as e.g.\ generated by {\tt sqrt} or the {\tt arnum} package. To avoid
  621. an unnecessary slow-down connected with the management of simplified
  622. algebraic expressions there is a \ind{switch hardzerotest} (default:
  623. off) that may be turned on to force an additional simplification of
  624. algebraic coefficients during each zero test. It should be turned on
  625. only for domain modes without canonical representations as e.g.\
  626. mixtures of arnums and square roots. We remind the general zero
  627. decision problem for such domains.
  628. Alternatively, CALI offers the possibility to define a set of
  629. algebraic substitution rules that will affect CALI's base coefficient
  630. arithmetic only.
  631. \begin{quote}
  632. \verb|setrules <rule list>|\index{setrules}
  633. \pbx{transfers the (algebraic) rule list into the internal
  634. representation stored at the {\tt cali} value {\tt rules}.
  635. In particular, {\tt setrules \{\}} clears the rules previously set.}
  636. \verb|getrules()|\index{getrules}
  637. \pbx{returns the internal CALI rules list in algebraic form.}
  638. \end{quote}
  639. We recommend to use \ind{setrules} for computations with algebraic
  640. numbers since they are better adapted to the data structure of CALI
  641. than the algebraic numbers provided by the {\tt arnum} package.
  642. Note, that due to the zero decision problem
  643. complicated {\em setrules} based computations may produce wrong
  644. results if base coefficient's pseudo division is involved (as e.g.\
  645. with \ind{dp\_pseudodivmod}). In this case we recommend to enlarge
  646. the variable set and add the defining equations of the algebraic
  647. numbers to the equations of the problem\footnote{A {\em qring}
  648. facility for the computation over quotient rings will be incorporated
  649. into future versions.}.
  650. \medskip
  651. The standard domain (Integer) doesn't allow denominators for input.
  652. \ind{setideal} clears automatically the common denominator of each
  653. input expression whereas a polynomial matrix with true rational
  654. coefficients will be rejected by \ind{setmodule}.
  655. \medskip
  656. One can save/initialize ideal and module bases together with their
  657. accompanying data (base ring, degrees) to/from a file:
  658. \begin{verbatim}
  659. savemat(m,name)
  660. \end{verbatim}
  661. resp.
  662. \begin{verbatim}
  663. initmat name
  664. \end{verbatim} execute the file transfer from/to disk files with the
  665. specified file {\tt name}. e.g.\
  666. \begin{verbatim}
  667. savemat(m,"myfile");
  668. \end{verbatim}
  669. saves the base ring and the ideal basis of $m$ to the file ``myfile''
  670. whereas
  671. \begin{verbatim}
  672. setideal(m,initmat "myfile");
  673. \end{verbatim}
  674. sets the current base ring (via a call to \ind{setring}) to the base
  675. ring of $m$ saved at ``myfile'' and then recovers the basis of $m$
  676. from the same file.
  677. \subsection{Switches and Global Variables}
  678. There are several switches, (fluid) global variables, a trace
  679. facility, and global parameters on the property list of the package
  680. name {\tt cali} to control CALI's computations.
  681. \medskip
  682. \subsubsection*{Switches}
  683. \begin{quote}
  684. \ind{bcsimp}
  685. \pbx{on: Cancel out gcd's of base coefficients. (Default: on)}
  686. \ind{detectunits}
  687. \pbx{on: replace polynomials of the form \newline
  688. $\langle monomial\rangle *
  689. \langle polynomial\ unit\rangle $ by $\langle monomial\rangle$
  690. during interreductions and standard basis computations.
  691. Affects only local computations. (Default: off)}
  692. \ind{factorprimes}
  693. \pbx{on: Invoke the \gr factorizer during computation of isolated
  694. primes. (Default: on). Note that REDUCE lacks a modular multivariate
  695. factorizer, hence for modular prime decomposition computations this
  696. switch has to be turned off.}
  697. \ind{factorunits}
  698. \pbx{on: factor polynomials and remove polynomial unit factors
  699. during interreductions and standard basis computations.
  700. Affects only local computations. (Default: off)}
  701. \ind{hardzerotest}
  702. \pbx{on: try an additional algebraic simplification of base
  703. coefficients at each base coefficient's zero test. Useful only for
  704. advanced base coefficient domains without canonical REDUCE
  705. representation. May slow down the computation drastically.
  706. (Default: off)}
  707. \ind{lexefgb}
  708. \pbx{on: Use the pure lexicographic term order and \ind{zerosolve}
  709. during reduction to dimension zero in the \ind{extended \gr
  710. factorizer}. This is a single, but possibly hard task compared to the
  711. degrevlex invocation of \ind{zerosolve1}. See \cite{efgb} for a
  712. discussion of different zero dimensional solver strategies.
  713. (Default: off)}
  714. \ind{Noetherian}
  715. \pbx{on: choose algorithms for Noetherian term orders.
  716. off: choose algorithms for local term orders.
  717. (Default: on)}
  718. \ind{red\_total}
  719. \pbx{on: compute total normal forms, i.e. apply reduction (Noetherian
  720. term orders) or reduction with bounded ecart (non Noetherian term
  721. orders to tail terms of polynomials, too.
  722. off: Do only top reduction.
  723. (Default: on)}
  724. \end{quote}
  725. \subsubsection*{Tracing}
  726. Different to v.\ 2.1 now intermediate output during the computations
  727. is controlled by the value of the {\tt trace} and {\tt printterms}
  728. entries on the property list of the package name {\tt cali}. The
  729. former value controls the intensity of the intermediate output
  730. (Default: 0, no tracing), the latter the number of terms printed in
  731. such intermediate polynomials (Default: all).
  732. \begin{quote}
  733. \verb|setcalitrace <n>|\index{setcalitrace}
  734. \pbx{changes the trace intensity. Set $n=2$ for a sparse tracing (a
  735. dot for each reduction step).
  736. Other good suggestions are the values 30 or 40 for tracing the \gr
  737. algorithm or $n>70$ for tracing the normal form algorithm. The higher
  738. $n$ the more intermediate information will be given.}
  739. \verb|setcaliprintterms <n>|\index{setcaliprintterms}
  740. \pbx{sets the number of terms that are printed in intermediate
  741. polynomials. Note that this does not affect the output of whole {\em
  742. dpmats}. The output of polynomials with more than $n$ terms ($n>0$)
  743. breaks off and continues with ellipses.}
  744. \verb|clearcaliprintterms()|\index{clearcaliprintterms}
  745. \pbx{clears the {\tt printterms} value forcing full intermediate
  746. output (according to the current trace level).}
  747. \end{quote}
  748. \subsubsection*{Global Variables}
  749. \begin{quote}
  750. \ind{cali!=basering}
  751. \pbx{The currently active base ring initialized e.g.\ by
  752. \ind{setring}.}
  753. \ind{cali!=degrees}
  754. \pbx{The currently active module component degrees initialized e.g.\
  755. by \ind{setdegrees}.}
  756. \ind{cali!=monset}
  757. \pbx{A list of variable names considered as non zero divisors during
  758. \gr basis computations initialized e.g.\ by \ind{setmonset}. Useful
  759. e.g.\ for binomial ideals defining monomial varieties or other prime
  760. ideals.}
  761. \end{quote}
  762. \subsubsection*{Entries on the Property List of {\tt cali}}
  763. This approach is new for v.\ 2.2. Information concerning the state of
  764. the computational model as e.g.\ trace intensity, base coefficient
  765. rules, or algorithm versions are stored as values on the property list
  766. of the package name \ind{cali}. This concerns
  767. \begin{quote}
  768. \ind{trace} and \ind{printterms}
  769. \pbx{see above.}
  770. \ind{efgb}
  771. \pbx{Changed by the \ind{switch lexefgb}.}
  772. \ind{groeb!=rf}
  773. \pbx{Reduction function invoked during the \gr algorithm. It can be
  774. changed with \ind{gbtestversion}\ $<n>$ ($n=1,2,3$, default is 1).}
  775. \ind{hf!=hf}
  776. \pbx{Variant for the computation of the Hilbert series numerator. It
  777. can be changed with \ind{hftestversion}\ $<n>$ ($n=1,2$, default is 1).}
  778. \ind{rules}
  779. \pbx{Algebraic ``replaceby'' rules introduced to CALI with the
  780. \ind{setrules} command.}
  781. \ind{evlf}, \ind{varlessp}, \ind{sublist}, \ind{varnames},
  782. \ind{oldborderbasis}, \ind{oldring}, \ind{oldbasis}
  783. \pbx{see \ind{module lf}, implementing the dual bases approach.}
  784. \end{quote}
  785. \section{Basic Data Structures}
  786. In the following we describe the data structure layers underlying the
  787. dpmat representation in CALI and some important (symbolic) procedures
  788. to handle them. We refer to the source code and the comments therein for
  789. a more complete survey about the procedures available for different
  790. data types.
  791. \subsection{The Coefficient Domain}
  792. Base coefficients as implemented in the \ind{module bcsf} are standard
  793. forms in the variables outside the variable list of the current
  794. ring. All computations are executed "denominator free" over the
  795. corresponding quotient field, i.e.\ gcd's are canceled out without
  796. request. To avoid this set the \ind{switch bcsimp} off.\footnote{This
  797. induces a rapid base coefficient's growth and doesn't yield {\bf
  798. Z}-\gr bases in the sense of \cite{GTZ} since the S-pair criteria are
  799. different.} In the given implementation we use the s.f. procedure {\em
  800. qremf} for effective divisibility test. We had some trouble with it
  801. under {\em on factor}.
  802. Additionally it is possible to supply the
  803. parameters occuring as base coefficients with a (global) set of
  804. algebraic rules.\footnote{This is different from the LET rule
  805. mechanism since they must be present in symbolic mode. Hence for a
  806. simultaneous application of the same rules in algebraic mode outside
  807. CALI they must additionally be declared in the usual way.}
  808. \begin{quote}
  809. \verb|setrules!* r|\index{setrules}
  810. \pbx{converts an algebraic mode rules list $r$ as e.g.\ used in
  811. WHERE statements into the internal CALI format.}
  812. \end{quote}
  813. \subsection{The Base Ring}
  814. The \ind{base ring} is defined by its {\tt name list}, the {\tt
  815. degree matrix} (a list of lists of integers), the {\tt ring tag} (LEX
  816. or REVLEX), and the {\tt ecart}. The name list contains a phantom
  817. name {\tt cali!=mk} for the module component at place 0.
  818. \medskip
  819. The \ind{module ring} exports among others the selectors
  820. \ind{ring\_names}, \ind{ring\_degrees}, \ind{ring\_tag},
  821. \ind{ring\_ecart}, the test function \ind{ring\_isnoetherian} and the
  822. transfer procedures from/to an (appropriate, printable by
  823. \ind{mathprint}) algebraic prefix form \ind{ring\_from\_a} (including
  824. extensive tests of the supplied parameters for consistency) and
  825. \ind{ring\_2a}.
  826. The following procedures allow to define a base ring:
  827. \begin{quote}
  828. \verb|ring_define(name list, degree matrix, ring tag, ecart)|
  829. \index{ring\_define}
  830. \pbx{combines the given parameters to a ring.}
  831. \verb|setring!* <ring> |\index{setring}
  832. \pbx{sets {\em cali!=basering} and checks for consistency with the
  833. \ind{switch Noetherian}. It also sets through
  834. \ind{setkorder} the current variable list as main variables. It is
  835. strongly recommended to use {\em setring!* \ldots} instead of {\em
  836. cali!=basering:=\ldots}.}
  837. \end{quote}
  838. \verb|degreeorder!*| , \verb|localorder!*|, \verb|eliminationorder!*|, and
  839. \verb|blockorder!*|
  840. \index{degreeorder}
  841. \index{localorder}
  842. \index{eliminationorder}
  843. \index{blockorder}
  844. define term order matrices in full analogy to algebraic mode.
  845. \medskip
  846. There are three ring constructors for special purposes:
  847. \begin{quote}
  848. \verb|ring_sum(a,b)|\index{ring\_sum}
  849. \pbx{returns a ring, that is constructed in the following way: Its
  850. variable list is the union of the (disjoint) lists of the variables
  851. of the rings $a$ and $b$ (in this order) whereas the degree list is
  852. the union of the (appropriately shifted) degree lists of $b$ and $a$
  853. (in this order). The ring tag is that of $a$. Hence it returns
  854. (essentially) the ring $b\bigoplus a$ if $b$ has a degree part (e.g.\
  855. useful for elimination problems, introducing ``big'' new variables)
  856. and the ring $a\bigoplus b$ if $b$ has no degree part (introducing
  857. ``small'' new variables).}
  858. \verb|ring_rlp(r,u)|\index{ring\_rlp}
  859. \pbx{$u$ is a subset of the names of the ring $r$. Returns the ring
  860. $r$, but with a term order ``first degrevlex on $u$, then the order on
  861. r''.}
  862. \verb|ring_lp(r,u)|\index{ring\_lp}
  863. \pbx{As $rlp$, but with a term order ``first lex on $u$, then the
  864. order on r''.}
  865. \end{quote}
  866. \noindent Example:
  867. \begin{verbatim}
  868. vars:='(x y z)
  869. setring!* ring_define(vars,degreeorder!* vars,'lex,'(1 1 1));
  870. % GRADLEX in the groebner package.
  871. \end{verbatim}
  872. \subsection{Monomials}
  873. The current version uses a place-driven exponent representation
  874. closely related to a vector model. This model handles term orders on $S$
  875. and module term orders on $S^c$ in a unique way. The zero component of the
  876. exponent list of a monomial contains its module component ($>0$) or 0
  877. (ring element). All computations are executed with respect to a
  878. {\em current ring} (\ind{cali!=basering}) and {\em current (monomial)
  879. weights} of the free generators $e_i, i=1,\ldots,c$, of $S^c$
  880. (\ind{cali!=degrees}). For efficiency reasons every monomial has a
  881. precomputed degree part that should be reevaluated if {\tt
  882. cali!=basering} (i.e.\ the term order) or {\tt cali!=degrees} were
  883. changed. {\tt cali!=degrees} contains the list of column degrees of
  884. the current module as an assoc. list and will be set automatically by
  885. (almost) all dpmat procedure calls. Since monomial operations use the
  886. degree list that was precomputed with respect to fixed column degrees
  887. (and base ring)
  888. \begin{quote}\bf
  889. watch carefully for {\tt cali!=degrees} programming at the monomial
  890. or dpoly level !
  891. \end{quote}
  892. As procedures there are selectors for the module component, the exponent and
  893. the degree parts, comparison procedures, procedures for the management of
  894. the module component and the degree vector, monomial arithmetic, transfer
  895. from/to prefix form, and more special tools.
  896. \subsection{Polynomials and Polynomial Vectors}
  897. CALI uses a distributive representation as a list of terms for both
  898. polynomials and polynomial vectors, where a \ind{term} is a dotted
  899. pair
  900. \[(<monomial>\ .\ <base\ coefficient>).\]
  901. The \ind{ecart} of a polynomial (vector) $f=\sum{t_i}$ with (module)
  902. terms $t_i$ is defined as \[max(ec(t_i))-ec(lt(t_i)),\] see
  903. \cite{tcah}. Here $ec(t_i)$ denotes the ecart of the term $t_i$, i.e.\
  904. the scalar product of the exponent vector of $t_i$ (including the
  905. monomial weight of the module generator) with the ecart vector of the
  906. current base ring.
  907. As procedures there are selectors, dpoly arithmetic including the management
  908. of the module component, procedures for reordering (and reevaluating)
  909. polynomials wrt.\ new term order degrees, for extracting common base
  910. coefficient or monomial factors, for transfer from/to prefix form and for
  911. homogenization and dehomogenization (wrt.\ the current ecart vector).
  912. Two advanced procedures use ideal theory ingredients:
  913. \begin{quote}
  914. \verb|dp_pseudodivmod(g,f)|\index{dp\_pseudodivmod}
  915. \pbx{returns a dpoly list $\{q,r,z\}$ such that $z\cdot g = q\cdot f +
  916. r$ and $z$ is a dpoly unit (i.e.\ a scalar for Noetherian term
  917. orders). For non Noetherian term orders the necessary modifications
  918. are described in \cite{ala}.
  919. $g, f$ and $r$ belong to the same free module or ideal.
  920. }
  921. \verb|dpgcd(a,b)| \index{dpgcd}
  922. \pbx{computes the gcd of two dpolys $a$ and $b$ by the syzygy method:
  923. The syzygy module of $\{a,b\}$ is generated by a single element
  924. $[-b_0\ \ a_0]$ with $a=ga_0, b=gb_0$, where $g$ is the gcd of $a$
  925. and $b$. Since it uses dpoly pseudodivision it may work not properly
  926. with \ind{setrules}.}
  927. \end{quote}
  928. \subsection{Base Lists}
  929. Ideal bases are one of the main ingredients for dpmats. They are
  930. represented as lists of \ind{base elements} and contain together with
  931. each dpoly entry the following information:
  932. \begin{itemize}
  933. \item a number (the row number of the polynomial vector in the
  934. corresponding dpmat).
  935. \item the dpoly, its ecart (as the main sort criterion), and length.
  936. \item a representation part, that may contain a representation of the
  937. given dpoly in terms of a certain fixed basis (default: empty).
  938. \end{itemize}
  939. The representation part is managed during normal form computations
  940. and other row arithmetic of dpmats appropriately with the following
  941. procedures:
  942. \begin{quote}
  943. \verb|bas_setrelations b|\index{bas\_setrelations}
  944. \pbx{sets the relation part of the base element $i$ in the base list
  945. $b$ to $e_i$.}
  946. \verb|bas_removerelations b|\index{bas\_removerelations}
  947. \pbx{removes all relations, i.e.\ replaces them with the zero
  948. polynomial vector.}
  949. \verb|bas_getrelations b|\index{bas\_getrelations}
  950. \pbx{gets the relation part of $b$ as a separate base list.}
  951. \end{quote}
  952. Further there are procedures for selection and construction of base
  953. elements and for the manipulation of lists of base elements as e.g.\
  954. sorting, renumbering, reordering, simplification, deleting zero base
  955. elements, transfer from/to prefix form, homogenization and dehomogenization.
  956. \subsection{Dpoly Matrices}
  957. Ideals and matrices, represented as \ind{dpmat}s, are the central
  958. data type of the CALI package, as already explained above. Every
  959. dpmat $m$ combines the following information:
  960. \begin{itemize}
  961. \item its size (\ind{dpmat\_rows} m,\ind{dpmat\_cols} m),
  962. \item its base list (\ind{dpmat\_list} m) and
  963. \item its column degrees as an assoc. list of monomials
  964. (\ind{dpmat\_coldegs} m). If this list is empty, all degrees are
  965. assumed to be equal to $x^0$.
  966. \item New in v.\ 2.2 there is a \ind{gb-tag} (\ind{dpmat\_gbtag} m),
  967. indicating that the given base list is already a \gr basis (under the
  968. given term order).
  969. \end{itemize}
  970. The \ind{module dpmat} contains selectors, constructors, and the
  971. algorithms for the basic management of this data structure as e.g.\
  972. file transfer, transfer from/to algebraic prefix forms, reordering,
  973. simplification, extracting row degrees and leading terms, dpmat matrix
  974. arithmetic, homogenization and dehomogenization.
  975. The modules {\em matop} and {\em quot} collect more advanced procedures
  976. for the algebraic management of dpmats.
  977. \subsection{Extending the REDUCE Matrix Package}
  978. In v.\ 2.2 minors, Jacobian matrix, and Pfaffians are available for
  979. general REDUCE matrices. They are collected in the \ind{module
  980. calimat} and allow to define procedures in more generality, especially
  981. allowing variable exponents in polynomial expressions. Such a
  982. generalization is especially useful for the investigation of whole
  983. classes of examples that may be obtained from a generic one by
  984. specialization. In the following $m$ is a matrix given in algebraic
  985. prefix form.
  986. \begin{quote}
  987. \verb|matjac(m,l)|\index{matjac}
  988. \pbx{returns the Jacobian matrix of the ideal $m$ (given as an
  989. algebraic mode list) with respect to the variable list $l$.}
  990. \verb|minors(m,k)|\index{minors}
  991. \pbx{returns the matrix of $k$-minors of the matrix $m$.}
  992. \verb|ideal_of_minors(m,k)|\index{ideal\_of\_minors}
  993. \pbx{returns the ideal of the $k$-minors of the matrix $m$.}
  994. \verb|pfaffian m|\index{pfaffian}
  995. \pbx{returns the pfaffian of a skewsymmetric matrix $m$.}
  996. \verb|ideal_of_pfaffians(m,k)|\index{ideal\_of\_pfaffians}
  997. \pbx{returns the ideal of the $2k$-pfaffians of the skewsymmetric
  998. matrix $m$.}
  999. \verb|random_linear_form(vars,bound)|\index{random\_linear\_form}
  1000. \pbx{returns a random linear form in algebraic prefix form in the
  1001. supplied variables $vars$ with integer coefficients bounded by the
  1002. supplied $bound$.}
  1003. \verb|singular_locus!*(m,c)|\index{singular\_locus}
  1004. \pbx{returns the singular locus of $m$ (as dpmat). $m$ must be an
  1005. ideal of codimension $c$ given as a list of polynomials in prefix
  1006. form. {\tt Singular\_locus} computes the ideal generated by the
  1007. corresponding Jacobian and $m$ itself.}
  1008. \end{quote}
  1009. \section{About the Algorithms Implemented in CALI}
  1010. Below we give a short explanation of the main algorithmic ideas of
  1011. CALI and the way they are implemented and may be accessed
  1012. (symbolically).
  1013. \subsection{Normal Form Algorithms}
  1014. For v.\ 2.2 we completely revised the implementation of normal form
  1015. algorithms due to the insight obtained from our investigations of
  1016. normal form procedures for local term orders in \cite{ala} and
  1017. \cite{tcah}. It allows a common handling of Noetherian and non
  1018. Noetherian term orders already on this level thus making superfluous
  1019. the former duplication of reduction procedures in the modules {\em
  1020. red} and {\em mora} as in v.\ 2.1.
  1021. \medskip
  1022. Normal form algorithms reduce polynomials (or polynomial vectors)
  1023. with respect to a given finite set of generators of an ideal or
  1024. module. The result is not unique except for a total normal form with
  1025. respect to a \gr basis. Furthermore different reduction strategies
  1026. may yield significant differences in computing time.
  1027. CALI reduces by first matching, usually keeping base lists sorted
  1028. with respect to the sort predicate \ind{red\_better}. In v.\ 2.2 we
  1029. sort solely by the dpoly length, since the introduction of
  1030. \ind{red\_TopRedBE}, i.e.\ reduction with bounded ecart, guarantees
  1031. termination also for non Noetherian term orders. Overload red\_better
  1032. for other reduction strategies.
  1033. \medskip
  1034. Reduction procedures produce for a given ideal basis $B\subset S$ and
  1035. a polynomial $f\in S$ a (pseudo) normal form $h\in S$ such that
  1036. $h\equiv u\cdot f\ mod\ B$ where $u\in S$ is a polynomial unit, i.e.\
  1037. a (polynomially represented) non zero domain element in the Noetherian
  1038. case (pseudodivision of $f$ by $B$) or a polynomial with a scalar as
  1039. leading term in the non Noetherian case. Following up the reduction
  1040. steps one can even produce a presentation of $h-u\cdot f$ as a
  1041. polynomial combination of the base elements in $B$.
  1042. More general, given for $f_i\in B$ and $f$ representations $f_i =
  1043. \sum{r_{ik}e_k} = R_i\cdot E^T$ and $f=R\cdot E^T$ as polynomial
  1044. combinations wrt.\ a fixed basis $E$ one can produce such a
  1045. presentation also for $h$. For this purpose the dpoly $f$ and its
  1046. representation are collected into a base element and reduced
  1047. simultaneously by the base list $B$, that collects the base elements
  1048. and their representations.
  1049. \medskip
  1050. The main procedures of the newly designed reduction package are the
  1051. following:
  1052. \begin{quote}
  1053. \verb|red_TopRedBE(bas,model)|\index{red\_TopRedBE}
  1054. \pbx{Top reduction with bounded ecart of the base element $model$ by
  1055. the base list $bas$, i.e.\ only reducing the top term and only with
  1056. base elements with ecart bounded by that of $model$.}
  1057. \verb|red_TopRed(bas,model)|\index{red\_TopRed}
  1058. \pbx{Top reduction of $model$, but without restrictions.}
  1059. \verb|red_TailRed(bas,model)|\index{red\_TailRed}
  1060. \pbx{Make tail reduction on $model$, i.e.\ top reduction on the tail
  1061. terms. For convergence this uses reduction with bounded ecart for non
  1062. Noetherian term orders and full reduction otherwise.}
  1063. \medskip
  1064. There is a common \ind{red\_TailRedDriver} that takes a top reduction
  1065. function as parameter. It can be used for experiments with other top
  1066. reduction procedure combinations.
  1067. \verb|red_TotalRed(bas,model)|\index{red\_TotalRed}
  1068. \pbx{A terminating total reduction, i.e. for Noetherian term orders
  1069. the classical one and for local term orders using tail reduction with
  1070. bounded ecart.}
  1071. \verb|red_Straight bas|\index{red\_Straight}
  1072. \pbx{Reduce (with {\em red\_TailRed}) the tails of the polynomials in
  1073. the base list $bas$.}
  1074. \verb|red_TopInterreduce bas|\index{red\_TopInterreduce}
  1075. \pbx{Reduces the base list $bas$ with $red\_TopRed$ until it
  1076. has pairwise incomparable leading terms, computes correct
  1077. representation parts, but does no tail reduction.}
  1078. \verb|red_Interreduce bas|\index{red\_Interreduce}
  1079. \pbx{Does top and, if {\tt on red\_total}, also tail interreduction on
  1080. the base list $bas$.}
  1081. \end{quote}
  1082. Usually, e.g.\ for ideal generation problems, there is no need to care
  1083. about the multiplier $u$. If nevertheless one needs its value, the
  1084. base element $f$ may be prepared with \ind{red\_prepare} to collect
  1085. this information in the 0-slot of its representation part. Extract
  1086. this information with \ind{red\_extract}.
  1087. \begin{quote}
  1088. \verb|red_redpol(bas,model)|\index{red\_redpol}
  1089. \pbx{combines this tool with a total reduction of the base element
  1090. $model$ and returns a dotted pair
  1091. \centerline{$(<reduced\ model> . <dpoly\ unit\ multiplier>)$.}}
  1092. \end{quote}
  1093. Advanced applications call the interfacing procedures
  1094. \begin{quote}
  1095. \verb|interreduce!* m|\index{interreduce}
  1096. \pbx{that returns an interreduced basis of the dpmat $m$.}
  1097. \verb|mod!*(f,m)|\index{mod}
  1098. \pbx{that returns the dotted pair $(h.u)$ where $h$ is the pseudo
  1099. normal form of the dpoly $f$ modulo the dpmat $m$ and $u$ the
  1100. corresponding polynomial unit multiplier.}
  1101. \verb|normalform!*(a,b)|\index{normalform}
  1102. \pbx{that returns $\{a_1,r,z\}$ with $a_1=z*a-r*b$ where the rows of
  1103. the dpmat $a_1$ are the normalforms of the rows of the dpmat $a$ with
  1104. respect to the dpmat $b$.}
  1105. \end{quote}
  1106. For local standard bases the ideal generated by the basic polynomials
  1107. may have components not passing through the origin. Although they do
  1108. not contribute to the ideal in $Loc(S)=S_{\bf m}$ they usually heavily
  1109. increase the necessary computational effort. Hence for local term
  1110. orders one should try to remove polynomial units as soon as they
  1111. are detected. To remove them from base elements in an early stage of
  1112. the computation one can either try the (cheap) test, whether $f\in S$
  1113. is of the form $\langle monomial\rangle *\langle polynomial\
  1114. unit\rangle$ or factor $f$ completely and remove polynomial unit
  1115. factors. For base elements this may be done with
  1116. \ind{bas\_detectunits} or \ind{bas\_factorunits}.
  1117. Moreover there are two switches \ind{detectunits} and
  1118. \ind{factorunits}, both off by default, that force such automatic
  1119. simplifications during more advanced computations.
  1120. The procedure \ind{deleteunits!*} tries explicitely to factor the
  1121. basis polynomials of a dpmat and to remove polynomial units occuring
  1122. as one of the factors.
  1123. \subsection{The \gr and Standard Basis Algorithms}
  1124. There is now a unique \ind{module groeb} that contains the \gr
  1125. resp. standard basis algorithms with syzygy computation facility and
  1126. related topics. There are common procedures (working for both
  1127. Noetherian and non Noetherian term orders)
  1128. \begin{quote}
  1129. \verb|gbasis!* m|\index{gbasis}
  1130. \pbx{that returns a minimal \gr or standard basis of the dpmat $m$,}
  1131. \verb|syzygies!* m|\index{syzygies}
  1132. \pbx{that returns an interreduced basis of the first syzygy module of
  1133. the dpmat $m$ and}
  1134. \verb|syzygies1!* m|\index{syzygies1}
  1135. \pbx{that returns a (not yet interreduced) basis of the syzygy module
  1136. of the dpmat $m$.}
  1137. \end{quote}
  1138. These procedures start the outer \gr engine (now also common for both
  1139. Noetherian and non Noetherian term orders)
  1140. \begin{quote}
  1141. \verb|groeb_stbasis(m,mgb,ch,syz)|\index{groeb\_stbasis}
  1142. \end{quote}
  1143. that returns, applied to the dpmat $m$, three dpmats $g,c,s$ with
  1144. \begin{quote}
  1145. $g$ --- the minimal reduced \gr basis of $m$ if $mgb=t$,
  1146. $c$ --- the transition matrix $g=c\cdot m$ if $ch=t$, and
  1147. $s$ --- the (not yet interreduced) syzygy matrix of $m$ if $syz=t$.
  1148. \end{quote}
  1149. The next layer manages the preparation of the representation parts
  1150. of the base elements to carry the syzygy information, calls the
  1151. {\em general internal driver}, and extracts the relevant information
  1152. from the result of that computation. The general internal driver
  1153. branches according to different reduction functions into several
  1154. versions. Upto now there are three different strategies for the
  1155. reduction procedures for the S-polynomial reduction (different
  1156. versions may be chosen via \ind{gbtestversion}):
  1157. \begin{enumerate}
  1158. \item Total reduction with local simplifier lists. For local term
  1159. orders this is (almost) Mora's first version for the tangent cone (the
  1160. default).
  1161. \item Total reduction with global simplifier list. For local term
  1162. orders this is (almost) Mora's SimpStBasis, see \cite{MPT}.
  1163. \item Total reduction with bounded ecart.
  1164. \end{enumerate}
  1165. The first two versions (almost) coincide for Noetherian term
  1166. orders. The third version reduces only with bounded ecart, thus
  1167. forcing more pairs to be treated than necessary, but usually less
  1168. expensive to be reduced. It is not yet well understood, whether this
  1169. idea is of practical importance.
  1170. \ind{groeb\_lazystbasis} calls the lazy standard basis driver instead,
  1171. that implements Mora's lazy algorithm, see \cite{MPT}. As
  1172. \ind{groeb\_homstbasis}, the computation of \gr and standard bases via
  1173. homogenization (Lazard's approach), it is not fully integrated into
  1174. the algebraic interface. Use
  1175. \begin{quote}
  1176. \verb|homstbasis!* m|\index{homstbasis}
  1177. \pbx{for the invocation of the homogenization approach to compute a
  1178. standard basis of the dpmat $m$ and}
  1179. \verb|lazystbasis!* m|\index{lazystbasis}
  1180. \pbx{for the lazy algorithm.}
  1181. \end{quote}
  1182. Experts commonly agree that the classical approach is better for
  1183. ``computable'' examples, but computations done by the author
  1184. on large examples indicate, that both approaches are in fact
  1185. independent.
  1186. \medskip
  1187. The pair list management uses the sugar strategy, see \cite{GMNRT},
  1188. with respect to the current ecart vector. If the input is homogeneous
  1189. and the ecart vector reflects this homogeneity then pairs are sorted
  1190. by ascending degree. Hence no superfluous base
  1191. elements will be computed in this case. In general the sugar strategy
  1192. performs best if the ecart vector is chosen to make the input close
  1193. to be homogeneous.
  1194. There is another global variable \ind{cali!=monset} that may contain
  1195. a list of variable names (a subset of the variable names of the
  1196. current base ring). During the ``pure'' \gr algorithm (without syzygy
  1197. and representation computations) common monomial factors containing
  1198. only these variables will be canceled out. This shortcut is useful if
  1199. some of the variables are known to be non zero divisors as e.g.\ in
  1200. most implicitation problems.
  1201. \begin{quote}
  1202. \verb|setmonset!* vars|\index{setmonset}
  1203. \pbx{initializes {\em cali!=monset} with a given list of variables
  1204. $vars$.}
  1205. \end{quote}
  1206. The \gr tools as e.g.\ pair criteria, pair list update, pair
  1207. management and S-polynomial construction are available.
  1208. \begin{quote}
  1209. \verb|groeb_mingb m|\index{groeb\_mingb}
  1210. \pbx{extracts a minimal \gr basis from the dpmat $m$, removing base
  1211. elements with leading terms, divisible by other leading terms.}
  1212. \verb|groeb_minimize(bas,syz)|\index{groeb\_minimize}
  1213. \pbx{minimizes the dpmat pair $(bas,syz)$ deleting superfluous base
  1214. elements from $bas$ using syzygies from $syz$ containing unit
  1215. entries.}
  1216. \end{quote}
  1217. \subsection{The \gr Factorizer}
  1218. If $\bar{k}$ is the algebraic closure of $k$,
  1219. $B:=\{f_1,\ldots,f_m\}\subset S$ a finite system of polynomials, and
  1220. $C:=\{g_1,\ldots,g_k\}$ a set of side conditions define the {\em
  1221. relative set of zeroes}
  1222. \[Z(B,C):=\{a\in \bar{k}^n : \forall\ f\in B\ f(a)=0\mbox{ and }
  1223. \forall g\in C\ g(a)\neq 0\}.\]
  1224. Its Zariski closure is the zero set of $I(B):<\prod C>$.
  1225. The \gr factorizer solves the following problem:
  1226. \begin{quote}
  1227. \it Find a collection $(B_\alpha,C_\alpha)$ of \gr bases $B_\alpha$
  1228. and side conditions $C_\alpha$ such that
  1229. \[Z(B,C) = \bigcup_\alpha Z(B_\alpha,C_\alpha).\]
  1230. \end{quote}
  1231. The \ind{module groebf} and the \ind{module triang} contain algorithms
  1232. related to that problem, triangular systems, and their generalizations
  1233. as described in \cite{fgb} and \cite{efgb}. V. 2.2 thus heavily
  1234. extends the algorithmic possibilities that were implemented in former
  1235. releases of CALI.
  1236. Note that, different to v.\ 2.1, we work with constraint {\em lists}.
  1237. \begin{quote}
  1238. \verb|groebfactor!*(bas,con)|\index{groebfactor}
  1239. \pbx{returns for the dpmat ideal $bas$ and the constraint list $con$
  1240. (of dpolys) a minimal list of $(dpmat, constraint\ list)$ pairs with
  1241. the desired property.}
  1242. \end{quote}
  1243. During a preprocessing it splits the submitted basis $bas$ by a
  1244. recursive factorization of polynomials and interreduction of bases
  1245. into a (reduced) list of smaller subproblems consisting of a partly
  1246. computed \gr basis, a constraint list, and a list of pairs not yet
  1247. processed. The main procedure forces the next subproblem to be
  1248. processed until another factorization is possible. Then the
  1249. subproblem splits into subsubproblems, and the subproblem list will
  1250. be updated. Subproblems are kept sorted with respect to their
  1251. expected dimension \ind{easydim} forcing this way a {\em depth first}
  1252. recursion. Returned and not yet interreduced \gr bases are, after
  1253. interreduction, subject to another call of the preprocessor since
  1254. interreduced polynomials may factor anew.
  1255. \begin{quote}
  1256. \verb|listgroebfactor!* l|\index{listgroebfactor}
  1257. \pbx{proceeds a whole list of dpmats (without constraints) at once and
  1258. strips off constraints at the end.}
  1259. \end{quote}
  1260. \medskip
  1261. Using the (ordinary) \gr factorizer even components of different
  1262. dimension may keep gluing together. The \ind{extended \gr factorizer}
  1263. involves a postprocessing, that guarantees a decomposition into
  1264. puredimensional components, given by triangular systems instead of \gr
  1265. bases. Triangular systems in positive dimension must not be \gr bases
  1266. of the underlying ideal. They should be preferred, since they are more
  1267. simple but contain all information about the (quasi) prime component
  1268. that they represent. The complete \gr basis of the corresponding
  1269. component can be obtained by an easy stable quotient computation, see
  1270. \cite{efgb}. We refer to the same paper for the definition of
  1271. \ind{triangular systems} in positive dimension, that is consistent
  1272. with our approach.
  1273. \begin{quote}
  1274. \verb|extendedgroebfactor!*(bas,c)| and
  1275. \verb|extendedgroebfactor1!*(bas,c)|
  1276. \index{extendedgroebfactor} \index{extendedgroebfactor1}
  1277. \pbx{return a list of results $\{b_i,c_i,v_i\}$ in algebraic prefix
  1278. form such that $b_i$ is a triangular set wrt.\ the variables $v_i$ and
  1279. $c_i$ is a list of constraints, such that $b_i:<\prod c_i>$ is the
  1280. (puredimensional) recontraction of the zerodimensional ideal
  1281. $b_i\bigotimes_k k(v_i)$. For the first version the recontraction is
  1282. not computed, hence the output may be not minimal. The second version
  1283. computes recontractions to decide superfluous components already
  1284. during the algorithm. Note that the stable quotient computation
  1285. involved for that purpose may drastically slow down the whole
  1286. attempt.}
  1287. \end{quote}
  1288. The postprocessing involves a change to dimension zero and invokes
  1289. (zero dimensional) triangular system computations from the
  1290. \ind{module triang}. In a first step \ind{groebf\_zeroprimes1}
  1291. incorporates the square free parts of certain univariate polynomials
  1292. into these systems and strips off the constraints (since relative sets
  1293. of zeroes in dimension zero are Zariski closed), using a splitting
  1294. approach analogous to the \gr factorizer. In a second step, according
  1295. to the \ind{switch lexefgb}, either \ind{zerosolve!*} or
  1296. \ind{zerosolve1!*} converts these intermediate results into lists of
  1297. triangular systems in prefix form. If \ind{lexefgb} is {\tt off} (the
  1298. default), the zero dimensional term order is degrevlex and
  1299. \ind{zerosolve1!*}, the ``slow turn to lex'' is involved, for {\tt on
  1300. lexefgb} the pure lexicographic term order and \ind{zerosolve!*},
  1301. M\"ollers original approach, see \cite{Moeller}, are used. Note that
  1302. for this term order we need only a single \gr basis computation at
  1303. this level.
  1304. A third version, \ind{zerosolve2!*}, mixes the first approach with the
  1305. FGLM change of term orders. It is not incorporated into the extended
  1306. \gr factorizer.
  1307. \subsection{Basic Operations on Ideals and Modules}
  1308. \gr and local standard bases are the heart of several basic
  1309. algorithms in ideal theory, see e.g.\ \cite[6.2.]{BKW}. CALI offers
  1310. the following facilities:
  1311. \begin{quote}
  1312. \verb|submodulep!*(m,n)|\index{submodulep}
  1313. \pbx{tests the dpmat $m$ for being a submodule of the dpmat $n$
  1314. reducing the basis elements of $m$ with respect to $n$. The result
  1315. will be correct provided $n$ is a \gr basis.}
  1316. \verb|modequalp!*(m,n)|\index{modequalp}
  1317. \pbx{ = submodulep!*(m,n) and submodulep!*(n,m).}
  1318. \verb|eliminate!*(m,<variable list>)| \index{eliminate}
  1319. \pbx{computes the elimination ideal/module eliminating the variables
  1320. in the given variable list (a subset of the variables of the current
  1321. base ring). Changes temporarily the term order to degrevlex.}
  1322. \verb|matintersect!* l|\index{matintersect}
  1323. \footnote{This can be done for ideals and
  1324. modules in an unique way. Hence {\em idealintersect!*} has been
  1325. removed in v.\ 2.1.}
  1326. \pbx{computes the intersection of the dpmats in the dpmat list $l$
  1327. along \cite[6.20]{BKW}.}
  1328. \end{quote}
  1329. CALI offers several quotient algorithms. They rest on the computation
  1330. of quotients by a single element of the following kind: Assume
  1331. $M\subset S^c, v\in S^c, f\in S$. Then there are
  1332. \begin{quote}
  1333. the \ind{module quotient} $M : (v) = \{g\in S\ |\ gv\in M\}$,
  1334. the \ind{ideal quotient} $M : (f) = \{w\in S^c\ |\ fw\in M\}$, and
  1335. the \ind{stable quotient} $M : (f)^\infty = \{w\in S^c\ |\ \exists\,
  1336. n\, :\, f^nw\in M\}$.
  1337. \end{quote}
  1338. CALI uses the elimination approach \cite[4.4.]{CLO} and
  1339. \cite[6.38]{BKW} for their computation:
  1340. \begin{quote}
  1341. \verb|matquot!*(M,f)|\index{matquot}
  1342. \pbx{returns the module or ideal quotient $M:(f)$ depending on $f$.}
  1343. \verb|matqquot!*(M,f)|\index{matqquot}
  1344. \pbx{returns the stable quotient $M:(f)^\infty$.}
  1345. \end{quote}
  1346. \ind{matquot!*} calls the pseudo division with remainder
  1347. \begin{quote}
  1348. \verb|dp_pseudodivmod(g,f)|\index{dp\_pseudodivmod}
  1349. \pbx{that returns a dpoly list $\{q,r,z\}$ such that $z\cdot g =
  1350. q\cdot f + r$ with a dpoly unit $z$.\ ($g, f$ and $r$ must belong to
  1351. the same free module). This is done uniformly for noetherian and
  1352. local term orders with an extended normal form algorithm as described
  1353. in \cite{ala}.}
  1354. \end{quote}
  1355. \medskip
  1356. In the same way one defines the quotient of a module by another
  1357. module (both embedded in a common free module $S^c$), the quotient of
  1358. a module by an ideal, and the stable quotient of a module by an
  1359. ideal. Algorithms for their computation can be obtained from the
  1360. corresponding algorithms for a single element as divisor either by
  1361. the generic element method \cite{E} or as an intersection
  1362. \cite[6.31]{BKW}. CALI offers both approaches (X=1 or 2 below) at
  1363. the symbolic level, but for true quotients only the latter one is
  1364. integrated into the algebraic mode interface.
  1365. \begin{quote}
  1366. \verb|idealquotientX!*(M,I)|\index{idealquotient}
  1367. \pbx{returns the ideal quotient $M:I$ of the dpmat $M$ by the dpmat
  1368. ideal $I$.}
  1369. \verb|modulequotientX!*(M,N)|\index{modulequotient}
  1370. \pbx{returns the module quotient $M:N$ of the dpmat $M$ by the dpmat
  1371. $N$.}
  1372. \verb|annihilatorX!* M|\index{annihilator}
  1373. \pbx{returns the annihilator of $coker\ M$, i.e.\ the module quotient
  1374. $S^c:M$, if $M$ is a submodule of $S^c$.}
  1375. \verb|matstabquot!*(M,I)|\index{matstabquot}
  1376. \pbx{returns the stable quotient $M:I^\infty$ (only by the general element
  1377. method).}
  1378. \end{quote}
  1379. \subsection{Monomial Ideals}
  1380. Monomial ideals occur as ideals of leading terms of (ideal's) \gr
  1381. bases and also as components of leading term modules of submodules of
  1382. free modules, see \cite{rois}, and reflect some properties of the
  1383. original ideal/module. Several parameters of the original ideal or
  1384. module may be read off from it as e.g.\ dimension and Hilbert series.
  1385. The \ind{module moid} contains the corresponding algorithms on
  1386. monomial ideals. Monomial ideals are lists of monomials, kept sorted
  1387. by descending lexicographic order as proposed in \cite{BS}.
  1388. \begin{quote}
  1389. \verb|moid_primes u| \index{moid\_primes}
  1390. \pbx{returns the minimal primes (as a list of lists of variable
  1391. names) of the monomial ideal $u$ using an adaption of the algorithm,
  1392. proposed in \cite{BS} for the computation of the codimension.}
  1393. \verb|indepvarsets!* m| \index{indepvarsets}
  1394. \pbx{returns (based on {\em moid\_primes}) the list of strongly
  1395. independent sets of $m$, see \cite{KW} and \cite{rois} for
  1396. definitions.}
  1397. \verb|dim!* m| \index{dim}
  1398. \pbx{returns the dimension of $coker\ m$ as the size of the largest
  1399. independent set.}
  1400. \verb|codim!* m| \index{codim}
  1401. \pbx{returns the codimension of $coker\ m$.}
  1402. \verb|easyindepset!* m| \index{easyindepset}
  1403. \pbx{returns a maximal with respect to inclusion independent set of
  1404. $m$.}
  1405. \verb|easydim!* m| \index{easydim}
  1406. \pbx{is a fast dimension algorithm (based on {\em easyindepset}), that
  1407. will be correct if $m$ is (radically) unmixed. Since it is
  1408. significantly faster than the general dimension
  1409. algorithm\footnotemark, it should
  1410. be used, if all maximal independent sets are known to be of equal
  1411. cardinality (as e.g.\ for prime or unmixed ideals, see \cite{rois}).}
  1412. \footnotetext{This algorithm is of linear time as opposed to the
  1413. problem to determine the dimension of an arbitrary monomial ideal,
  1414. that is known to be NP-hard in the number of variables, see
  1415. \cite{BS}.}
  1416. \end{quote}
  1417. \subsection{Hilbert Series}
  1418. CALI v. 2.2 now offers also \ind{weighted Hilbert series}, i.e.\
  1419. series that may reflect multihomogeneity of ideals and modules. For
  1420. this purpose
  1421. a weighted Hilbert series has a list of (integer) degree vectors
  1422. as second parameter, and the ideal(s) of leading terms are evaluated
  1423. wrt.\ these weights. For the output and polynomial arithmetic,
  1424. involved during the computation of the Hilbert series numerator, the
  1425. different weight levels are mapped onto the first variables of the
  1426. current ring. If $w$ is such a weight vector list and $I$ is a
  1427. monomial ideal in the polynomial ring $S=k[x_v\,:\,v\in V]$ we get
  1428. (using multi exponent notation)
  1429. \[H(S/I,t) := \sum_{\alpha}{|\{x^a\not\in I\,:\,w(a)=\alpha\}|\cdot
  1430. t^\alpha} = \frac{Q(t)}{\prod_{v\in V}{\left(1-t^{w(x_v)}\right)} }\]
  1431. for a certain polynomial Hilbert series numerator $Q(t)$. $H(R/I,t)$
  1432. is known to be a rational function with pole order at $t=1$ equal to
  1433. $dim\ R/I$. Note that \ind{WeightedHilbertSeries} returns a {\em
  1434. reduced} rational function where the gcd of numerator and denominator
  1435. is canceled out.
  1436. (Non weighted) Hilbert series call the weighted Hilbert series
  1437. procedure with a single weight vector, the ecart vector of the current
  1438. ring.
  1439. The Hilbert series numerator $Q(t)$ is computed using (the obvious
  1440. generalizations to the weighted case of) the algorithms in \cite{BS}
  1441. and \cite{BCRT}. Experiments suggest that the former is better for few
  1442. generators of high degree whereas the latter has to be preferred for
  1443. many generators of low degree. Choose the version with
  1444. \ind{hftestversion} $n$, $n=1,\,2$. Bayer/Stillman's approach ($n=1$)
  1445. is the default. In the following $m$ is a dpmat and \gr basis.
  1446. \begin{quote}
  1447. \verb|hf_whilb(m,w)| \index{hf\_whilb}
  1448. \pbx{returns the weighted Hilbert series numerator $Q(t)$ of $m$
  1449. according to the version chosen with \ind{hftestversion}.}
  1450. \verb|WeightedHilbertSeries!*(m,w)| \index{WeightedHilbertSeries}
  1451. \pbx{returns the weighted Hilbert series reduced rational function of
  1452. $m$ as s.q.}
  1453. \verb|HilbertSeries!*(m,w)| \index{HilbertSeries}
  1454. \pbx{returns the Hilbert series reduced rational function of $m$ wrt.\
  1455. the ecart vector of the current ring as s.q.}
  1456. \verb|hf_whilb3(u,w)| and \verb|hf_whs_from_resolution(u,w)|
  1457. \index{hf\_whilb3}
  1458. \index{hf\_whs\_from\_resolution}
  1459. \pbx{compute the weighted Hilbert series numerator and the
  1460. corresponding reduced rational function from (the column degrees of) a
  1461. given resolution $u$.}
  1462. \verb|degree!* m| \index{degree}
  1463. \pbx{returns the value of the numerator of the reduced Hilbert series
  1464. of $m$ at $t=1$. i.e.\ the sum of its coefficients. For the standard
  1465. ecart this is the degree of $coker\ m$.}
  1466. \end{quote}
  1467. \subsection{Resolutions}
  1468. Resolutions of ideals and modules, represented as lists of dpmats, are
  1469. computed via repeated syzygy computation with minimization steps
  1470. between them to get minimal bases and generators of syzygy
  1471. modules. Note that the algorithms apply simultaneously to both
  1472. Noetherian and non Noetherian term orders. For compatibility reasons
  1473. with further releases v. 2.2 introduces a second parameter to
  1474. bound the number of syzygy modules to be computed, since Hilbert's
  1475. syzygy theorem applies only to regular rings.
  1476. \begin{quote}
  1477. \verb|Resolve!*(m,d)| \index{Resolve}
  1478. \pbx{computes a minimal resolution of the dpmat $m$, i.e. a list of
  1479. dpmats $\{s_0, s_1, s_2,\ldots\}$, where $s_k$ is the $k$-th syzygy
  1480. module of $m$, upto part $s_d$.}
  1481. \verb|BettiNumbers!* c| and \verb|GradedBettiNumbers!* c|
  1482. \index{BettiNumbers}
  1483. \index{GradedBettiNumbers}
  1484. \pbx{returns the Betti numbers resp.\ the graded Betti numbers of the
  1485. resolution $c$, i.e.\ the list of the lengths resp.\ the degree lists
  1486. (according to the ecart) themselves of the dpmats in $c$.}
  1487. \end{quote}
  1488. \subsection{Zero Dimensional Ideals and Modules}
  1489. There are several algorithms that either force the reduction of a
  1490. given problem to dimension zero or work only for zero dimensional
  1491. ideals or modules. The \ind{module odim} offers such
  1492. algorithms. It contains, e.g.\
  1493. \begin{quote}
  1494. \verb|dimzerop!* m| \index{dimzerop}
  1495. \pbx{that tests a dpmat $m$ for being zero dimensional.}
  1496. \verb|getkbase!* m| \index{getkbase}
  1497. \pbx{that returns a (monomial) k-vector space basis of $Coker\ m$
  1498. provided $m$ is a \gr basis.}
  1499. \verb|odim_borderbasis m| \index{odim\_borderbasis}
  1500. \pbx{that returns a border basis, see \cite{MMM}, of the
  1501. zero dimensional dpmat $m$ as a list of base elements.}
  1502. \verb|odim_parameter m| \index{odim\_parameter}
  1503. \pbx{that returns a parameter of the dpmat $m$, i.e.\ a variable $x
  1504. \in vars$ such that $k[x]\bigcap Ann\ S^c/m=(0)$, or {\em nil} if $m$
  1505. is zero dimensional.}
  1506. \verb|odim_up(a,m)| \index{odim\_up}
  1507. \pbx{that returns an univariate polynomial (of smallest possible
  1508. degree if $m$ is a gbasis) in the variable $a$, that belongs to the
  1509. zero dimensional dpmat ideal $m$, using Buchberger's approach
  1510. \cite{B1}.}
  1511. \end{quote}
  1512. \subsection{Primary Decomposition and Related Algorithms}
  1513. The algorithms of the \ind{module prime} implement the ideas of
  1514. \cite{GTZ} with modifications along \cite{Kr} and their natural
  1515. generalizations to modules as e.g.\ explained in \cite{Ru}. Version
  1516. 2.2.1 fixes a serious bug detecting superfluous embedded primary
  1517. components, see section \ref{221}, and contains now a second primary
  1518. decomposition algorithm, based on ideal separation, as standard. For a
  1519. discussion about embedded primes and the ideal separation approach,
  1520. see \cite{primary}.
  1521. CALI contains also algorithms for the computation of the unmixed part
  1522. of a given module and the unmixed radical of a given ideal (along the
  1523. same lines). We followed the stepwise recursion decreasing dimension
  1524. in each step by 1 as proposed in (the final version of) \cite{GTZ}
  1525. rather than the ``one step'' method described in \cite{BKW} since
  1526. handling leading coefficients, i.e.\ standard forms, depending on
  1527. several variables is a quite hard job for
  1528. REDUCE\footnote{\ind{prime!=decompose2} implements this strategy in
  1529. the symbolic mode layer.}.
  1530. In the following procedures $m$ must be a \gr basis.
  1531. \begin{quote}
  1532. \verb|zeroradical!* m| \index{zeroradical}
  1533. \pbx{returns the radical of the zero dimensional ideal $m$, using
  1534. squarefree decomposition of univariate polynomials.}
  1535. \verb|zeroprimes!* m| \index{zeroprimes}
  1536. \pbx{computes as in \cite{GTZ} the list of prime ideals of $Ann\ F/M$
  1537. if $m$ is zero dimensional, using the (sparse) general position
  1538. argument from \cite{KW}.}
  1539. \verb|zeroprimarydecomposition!* m| \index{zeroprimarydecomposition}
  1540. \pbx{computes the primary components of the zero dimensional dpmat $m$
  1541. using prime splitting with the prime ideals of $Ann\ F/M$. It returns
  1542. a list of pairs with first entry the primary component
  1543. and second entry the corresponding associated prime ideal.}
  1544. \verb|isprime!* m| \index{isprime}
  1545. \pbx{a (one step) primality test for ideals, extracted from
  1546. \cite{GTZ}.}
  1547. \verb|isolatedprimes!* m| \index{isolatedprimes}
  1548. \pbx{computes (only) the isolated prime ideals of $Ann\ F/M$.}
  1549. \verb|radical!* m| \index{radical}
  1550. \pbx{computes the radical of the dpmat ideal $m$, reducing as in
  1551. \cite{GTZ} to the zero dimensional case.}
  1552. \verb|easyprimarydecomposition!* m| \index{easyprimarydecomposition}
  1553. \pbx{computes the primary components of the dpmat $m$, if it has no
  1554. embedded components. The algorithm uses prime splitting with the
  1555. isolated prime ideals of $Ann\ F/M$. It returns a list of pairs as in
  1556. {\em zeroprimarydecomposition!*}.}
  1557. \verb|primarydecomposition!* m| \index{primarydecomposition}
  1558. \pbx{computes the primary components of the dpmat $m$ along the lines
  1559. of \cite{GTZ}. It returns a list of two-element lists as in {\em
  1560. zeroprimarydecomposition!*}.}
  1561. \verb|unmixedradical!* m| \index{unmixedradical}
  1562. \pbx{returns the unmixed radical, i.e.\ the intersection of the
  1563. isolated primes of top dimension, associated to the dpmat ideal $m$.}
  1564. \verb|eqhull!* m| \index{eqhull}
  1565. \pbx{returns the equidimensional hull, i.e.\ the intersection of the
  1566. top dimensional primary components of the dpmat $m$.}
  1567. \end{quote}
  1568. \subsection{Advanced Algorithms}
  1569. The \ind{module scripts} just under further development offers some
  1570. advanced topics of the \gr bases theory. It introduces the new data
  1571. structure of a \ind{map} between base rings:
  1572. \medskip
  1573. A ring map
  1574. \[ \phi\ :\ R\longrightarrow S\]
  1575. for $R=k[r_i], S=k[s_j]$ is represented in symbolic mode as a list
  1576. \[ \{preimage\_ring\ R,\ image\_ring\ S, subst\_list\},\]
  1577. where {\tt subst\_list} is a substitution list $\{r_1=\phi_1(s),
  1578. r_2=\phi_2(s),\ldots \}$ in algebraic prefix form, i.e.\ looks like
  1579. {\tt (list (equal var image) \ldots )}.
  1580. The central tool for several applications is the computation of the
  1581. preimage $\phi^{-1}(I)\subset R$ of an ideal $I\subset S$ either
  1582. under a polynomial map $\phi$ or its closure in $R$ under a rational
  1583. map $\phi$, see \cite[7.69 and 7.71]{BKW}.
  1584. \begin{quote}
  1585. \verb|preimage!*(m,map)| \index{preimage}
  1586. \pbx{computes the preimage of the ideal $m$ in algebraic prefix form
  1587. under the given polynomial map and sets the current base ring to the
  1588. preimage ring. Returns the result also in algebraic prefix form.}
  1589. \verb|ratpreimage!*(m,map)| \index{ratpreimage}
  1590. \pbx{computes the closure of the preimage of the ideal $m$ in
  1591. algebraic prefix form under the given rational map and sets the
  1592. current base ring to the preimage ring. Returns the result also in
  1593. algebraic prefix form.}
  1594. \end{quote}
  1595. Derived applications are
  1596. \begin{quote}
  1597. \verb|affine_monomial_curve!*(l,vars)|\index{affine\_monomial\_curve}
  1598. \pbx{$l$ is a list of integers, $vars$ a list of variable names of the
  1599. same length as $l$. The procedure sets the current base ring and
  1600. returns the defining ideal of the affine monomial curve with generic
  1601. point $(t^i\ :\ i\in l)$ computing the corresponding preimage.}
  1602. \verb|analytic_spread!* M|\index{analytic\_spread}
  1603. \pbx{Computes the analytic spread of $M$, i.e.\ the dimension of the
  1604. exceptional fiber ${\cal R}(M)/m{\cal R}(M)$ of the blowup along $M$
  1605. over the irrelevant ideal $m$ of the current base ring.}
  1606. \verb|assgrad!*(M,N,vars)|\index{assgrad}
  1607. \pbx{Computes the associated graded ring \[gr_R(N):=
  1608. (R/N\oplus N/N^2\oplus\ldots)={\cal R}(N)/N{\cal R}(N)\] over the ring
  1609. $R=S/M$, where $M$ and
  1610. $N$ are dpmat ideals defined over the current base ring $S$. {\tt
  1611. vars} is a list of new variable names one for each generator of $N$.
  1612. They are used to create a second ring $T$ with degree order
  1613. corresponding to the ecart of the row degrees of $N$ and a ring map
  1614. \[\phi : S\oplus T\longrightarrow S.\]
  1615. It returns a dpmat ideal $J$ such that $(S\oplus T)/J$ is a
  1616. presentation of the
  1617. desired associated graded ring over the new current base ring
  1618. $S\oplus T$.}
  1619. \verb|blowup!*(M,N,vars)|\index{blowup}
  1620. \pbx{Computes the blow up ${\cal R}(N):=R[N\cdot t]$ of $N$ over
  1621. the ring $R=S/M$, where $M$ and $N$ are dpmat ideals defined over the
  1622. current base ring $S$. {\tt vars} is a list of new variable names one
  1623. for each generator of $N$. They are used to create a second ring $T$
  1624. with degree order corresponding to the ecart of the row degrees of
  1625. $N$ and a ring map
  1626. \[\phi : S\oplus T\longrightarrow S.\]
  1627. It returns a dpmat ideal $J$ such that $(S\oplus T)/J$ is
  1628. a presentation of the
  1629. desired blowup ring over the new current base ring $S\oplus T$.}
  1630. \verb|proj_monomial_curve!*(l,vars)|\index{proj\_monomial\_curve}
  1631. \pbx{$l$ is a list of integers, $vars$ a list of variable names of the
  1632. same length as $l$. The procedure set the current base ring and
  1633. returns the defining ideal of the projective monomial curve with
  1634. generic point \mbox{$(s^{d-i}\cdot t^i\ :\ i\in l)$} in $R$, where
  1635. \mbox{$d=max\{ x\, :\, x\in l\}$}, computing the corresponding preimage.}
  1636. \verb|sym!*(M,vars)|\index{sym}
  1637. \pbx{Computes the symmetric algebra $Sym(M)$ where $M$ is a dpmat ideal
  1638. defined over the current base ring $S$. {\tt vars} is a list of new
  1639. variable names one for each generator of $M$. They are used to create
  1640. a second ring $R$ with degree order corresponding to the ecart of the
  1641. row degrees of $N$ and a ring map
  1642. \[\phi : S\oplus R\longrightarrow S.\]
  1643. It returns a dpmat ideal $J$ such that $(S\oplus R)/J$ is the
  1644. desired symmetric algebra over the new current base ring $S\oplus R$.}
  1645. \end{quote}
  1646. There are several other applications:
  1647. \begin{quote}
  1648. \verb|minimal_generators!* m| \index{minimal\_generators}
  1649. \pbx{returns a set of minimal generators of the dpmat $m$ inspecting
  1650. the first syzygy module.}
  1651. \verb|nzdp!*(f,m)| \index{nzdp}
  1652. \pbx{tests whether the dpoly $f$ is a non zero divisor on $coker\
  1653. m$. $m$ must be a \gr basis.}
  1654. \verb|symbolic_power!*(m,d)| \index{symbolic\_power}
  1655. \pbx{returns the $d$\/th symbolic power of the prime dpmat ideal $m$ as
  1656. the equidimensional hull of the $d$\/th true power. (Hence applies also
  1657. to unmixed ideals.)}
  1658. \verb|varopt!* m| \index{varopt}
  1659. \pbx{finds a heuristically optimal variable order by the approach in
  1660. \cite{BGK} and returns the corresponding list of variables.}
  1661. \end{quote}
  1662. \subsection{Dual Bases}
  1663. For the general ideas underlying the dual bases approach see e.g.\
  1664. \cite{MMM}. This paper explains, that constructive problems from very
  1665. different areas of commutative algebra can be formulated in a unified
  1666. way as the computation of a basis for the intersection of the kernels
  1667. of a finite number of linear functionals generating a dual
  1668. $S$-module. Our implementation honours
  1669. this point of view, presenting two general drivers \ind{dualbases} and
  1670. \ind{dualhbases} for the computation of such bases (even as submodules
  1671. of a free module $M=S^m$) with affine resp.\ projective dimension zero.
  1672. Such a collection of $N$ linear functionals
  1673. \[L\,:\, M=S^m \longrightarrow k^N\]
  1674. should be given through values $\{[e_i,L(e_i)], i=1,\ldots,m\}$ on the
  1675. generators $e_i$ of $M$ and an evaluation function {\tt
  1676. evlf([p,L(p)],x)}, that evaluates $L(p\cdot x)$ from $L(p)$ for $p\in
  1677. M$ and the variable $x\in S$.
  1678. \ind{dualbases} starts with a list of such generator/value constructs
  1679. generating $M$ and performs Gaussian reduction on expressions $[p\cdot
  1680. x,L(p\cdot x)]$, where $p$ was already processed, $L(p)\neq 0$, and
  1681. $x\in S$ is a variable. These elements are processed in ascending order
  1682. wrt.\ the term order on $M$. This guarantees both termination and that
  1683. the resulting basis of $ker\ L$ is a \gr basis. The $N$ values of $L$
  1684. are attached to $N$ variables, that are ordered linearly. Gaussian
  1685. elimination is executed wrt.\ this variable order.
  1686. To initialize the dual bases driver one has to supply the basic
  1687. generator/value list (through the parameter list; for ideals just the
  1688. one element list containing the generator $[1\in S,L(1)]$), the
  1689. evaluation function, and the linear algebra variable order. The latter
  1690. are supplied via the property list of {\tt cali} as properties {\tt
  1691. evlf} and {\tt varlessp}. Different applications need more entries
  1692. on the property list of {\tt cali} to manage the communication between
  1693. the driver and the calling routine.
  1694. \ind{dualhbases} realizes the same idea for (homogeneous) ideals and
  1695. modules of (projective) dimension zero. It produces zerodimensional
  1696. ``slices'' with ascending degree until it reaches a supremum supplied
  1697. by the user, see \cite{MMM} for details.
  1698. \medskip
  1699. Applications concern affine and projective defining ideals of a finite
  1700. number of points\footnote{This substitutes the ``brute force'' method
  1701. computing the corresponding intersections directly as it was
  1702. implemented in v. 2.1. The new approach is significantly faster. The
  1703. old stuff is available as \ind{affine\_points1!*} and
  1704. \ind{proj\_points1!*}.} and two versions (with and without precomputed
  1705. border basis) of term order
  1706. changes for zerodimensional ideals and modules as first described in
  1707. \cite{FGLM}.
  1708. \begin{quote}
  1709. \verb|affine_points!* m| \index{affine\_points}
  1710. \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
  1711. with as many columns as the current base ring has ring variables. This
  1712. procedure returns the defining ideal of the collection of points in
  1713. affine space with coordinates given by the rows of $m$. Note that $m$
  1714. may contain parameters. In this case $k$ is treated as rational
  1715. function field.}
  1716. \verb|change_termorder!*(m,r)| and \verb|change_termorder1!*(m,r)|
  1717. \index{change\_termorder}
  1718. \index{change\_termorder1}
  1719. \pbx{$m$ is a \gr basis of a zero dimensional ideal wrt.\ the current
  1720. base ring. These procedures change the current ring to $r$ and compute
  1721. the \gr basis of $m$ wrt.\ the new ring $r$. The former uses a
  1722. precomputed border basis.}
  1723. \verb|proj_points!* m| \index{proj\_points}
  1724. \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
  1725. with as many columns as the current base ring has ring variables. This
  1726. procedure returns the defining ideal of the collection of points in
  1727. projective space with homogeneous coordinates given by the rows of
  1728. $m$. Note that $m$ may as for {\tt affine\_points} contain
  1729. parameters.}
  1730. \end{quote}
  1731. \pagebreak
  1732. \appendix
  1733. \section{A Short Description of Procedures Available in Algebraic
  1734. Mode}
  1735. Here we give a short description, ordered alphabetically, of {\bf
  1736. algebraic} procedures offered by CALI in the algebraic mode
  1737. interface\footnote{It does {\bf not} contain switches, get\ldots\
  1738. procedures, setting trace level and related stuff.}.
  1739. If not stated explicitely procedures take (algebraic mode) polynomial
  1740. matrices ($c>0$) or polynomial lists ($c=0$) $m,m1,m2,\ldots\ $ as
  1741. input and return results of the same type. $gb$ stands for a bounded
  1742. identifier\footnote{Different to v. 2.1 a \gr basis will be computed
  1743. automatically, if necessary.}, $gbr$ for one with precomputed
  1744. resolution. For the mechanism of \ind{bounded identifier} see the
  1745. section ``Algebraic Mode Interface''.
  1746. \begin{quote}
  1747. \verb|affine_monomial_curve(l,vars)|\index{affine\_monomial\_curve}
  1748. \pbx{$l$ is a list of integers, $vars$ a list of variable names of the
  1749. same length as $l$. The procedure sets the current base ring and
  1750. returns the defining ideal of the affine monomial curve with generic
  1751. point $(t^i\ :\ i\in l)$.}
  1752. \verb|affine_points m| \index{affine\_points}
  1753. \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
  1754. with as many columns as the current base ring has ring variables. This
  1755. procedure returns the defining ideal of the collection of points in
  1756. affine space with coordinates given by the rows of $m$. Note that $m$
  1757. may contain parameters. In this case $k$ is treated as rational
  1758. function field.}
  1759. \verb|analytic_spread m|\index{analytic\_spread}
  1760. \pbx{Computes the analytic spread of $m$.}
  1761. \verb|annihilator m| \index{annihilator}
  1762. \pbx{returns the annihilator of the dpmat $m\subseteq S^c$, i.e.\
  1763. $Ann\ S^c/M$.}
  1764. \verb|assgrad(M,N,vars)|\index{assgrad}
  1765. \pbx{Computes the associated graded ring $gr_R(N)$ over $R=S/M$, where
  1766. $S$ is the current
  1767. base ring. {\tt vars} is a list of new variable names, one for
  1768. each generator of $N$. They are used to create a second ring $T$
  1769. to return an ideal $J$ such that $(S\oplus T)/J$ is the desired
  1770. associated graded ring over the new current base ring $S\oplus T$.}
  1771. \verb|bettiNumbers gbr| \index{bettiNumbers}
  1772. \pbx{extracts the list of Betti numbers from the resolution of $gbr$.}
  1773. \verb|blowup(M,N,vars)|\index{blowup}
  1774. \pbx{Computes the blow up ${\cal R}(N)$ of $N$ over the ring $R=S/M$,
  1775. where $S$ is the current base ring. {\tt vars} is a list of new
  1776. variable names, one for each generator of $N$. They are used to create
  1777. a second ring $T$ to return an ideal $J$ such that $(S\oplus T)/J$ is
  1778. the desired blowup ring over the new current base ring $S\oplus T$.}
  1779. \verb|change_termorder(m,r)| and \verb|change_termorder1(m,r)|
  1780. \index{change\_termorder}
  1781. \index{change\_termorder1}
  1782. \pbx{Change the current ring to $r$ and compute the \gr basis of $m$
  1783. wrt.\ the new ring $r$ by the FGLM approach. The former uses
  1784. internally a precomputed border basis.}
  1785. \verb|codim gb| \index{codim}
  1786. \pbx{returns the codimension of $S^c/gb$.}
  1787. \verb|degree gb| \index{degree}
  1788. \pbx{returns the multiplicity of $gb$ as the sum of the coefficients
  1789. of the (classical) Hilbert series numerator.}
  1790. \verb|degsfromresolution gbr| \index{degsfromresolution}
  1791. \pbx{returns the list of column degrees from the minimal resolution
  1792. of $gbr$.}
  1793. \verb|deleteunits m| \index{deleteunits}
  1794. \pbx{factors each basis element of the dpmat ideal $m$ and removes
  1795. factors that are polynomial units. Applies only to non Noetherian
  1796. term orders.}
  1797. \verb|dim gb| \index{dim}
  1798. \pbx{returns the dimension of $S^c/gb$.}
  1799. \verb|dimzerop gb| \index{dimzerop}
  1800. \pbx{tests whether $S^c/gb$ is zerodimensional.}
  1801. \verb|directsum(m1,m2,...)| \index{directsum}
  1802. \pbx{returns the direct sum of the modules $m1,m2,\ldots$, embedded
  1803. into the direct sum of the corresponding free modules.}
  1804. \verb|dpgcd(f,g)| \index{dpgcd}
  1805. \pbx{returns the gcd of two polynomials $f$ and $g$, computed by the
  1806. syzygy method.}
  1807. \verb|easydim m| and \verb|easyindepset m|
  1808. \index{easydim}\index{easyindepset}
  1809. \pbx{ If the given ideal or module is unmixed (e.g.\ prime) then all
  1810. maximal strongly independent sets are of equal size and one can look
  1811. for a maximal with respect to inclusion rather than size strongly
  1812. independent set. These procedures don't test the input for being a
  1813. \gr basis or unmixed, but construct a maximal with respect to
  1814. inclusion independent set of the basic leading terms resp.\ detect
  1815. from this (an approximation for) the dimension.}
  1816. \verb|easyprimarydecomposition m| \index{easyprimarydecomposition}
  1817. \pbx{a short primary decomposition using ideal separation of isolated
  1818. primes of $m$, that yields true results only for modules without
  1819. embedded components. Returns a list of $\{component, associated\
  1820. prime\}$ pairs.}
  1821. \verb|eliminate(m,<variable list>)| \index{eliminate}
  1822. \pbx{computes the elimination ideal/module eliminating the variables
  1823. in the given variable list (a subset of the variables of the current
  1824. base ring). Changes temporarily the term order to degrevlex.}
  1825. \verb|eqhull m| \index{eqhull}
  1826. \pbx{returns the equidimensional hull of the dpmat $m$.}
  1827. \verb|extendedgroebfactor(m,c)| and \verb|extendedgroebfactor1(m,c)|
  1828. \index{extendedgroebfactor} \index{extendedgroebfactor1}
  1829. \pbx{return for a polynomial ideal $m$ and a list of (polynomial)
  1830. constraints $c$ a list of results $\{b_i,c_i,v_i\}$, where $b_i$ is a
  1831. triangular set wrt.\ the variables $v_i$ and $c_i$ is a list of
  1832. constraints, such that
  1833. $Z(m,c) = \bigcup Z(b_i,c_i)$. For the first version the output may be
  1834. not minimal. The second version decides superfluous components already
  1835. during the algorithm.}
  1836. \verb|gbasis gb| \index{gbasis}
  1837. \pbx{returns the \gr resp. local standard basis of $gb$.}
  1838. \verb|getkbase gb| \index{getkbase}
  1839. \pbx{returns a k-vector space basis of $S^c/gb$, consisting of module
  1840. terms, provided $gb$ is zerodimensional.}
  1841. \verb|getleadterms gb| \index{getleadterms}
  1842. \pbx{returns the dpmat of leading terms of a \gr resp. local standard
  1843. basis of $gb$.}
  1844. \verb|GradedBettinumbers gbr| \index{GradedBettinumbers}
  1845. \pbx{extracts the list of degree lists of the free summands in a
  1846. minimal resolution of $gbr$.}
  1847. \verb|groebfactor(m[,c])|\index{groebfactor}
  1848. \pbx{returns for the dpmat ideal $m$ and an optional constraint list
  1849. $c$ a (reduced) list of dpmats such that the union of their zeroes is
  1850. exactly $Z(m,c)$. Factors all polynomials involved in the \gr
  1851. algorithms of the partial results.}
  1852. \verb|HilbertSeries gb| \index{HilbertSeries}
  1853. \pbx{returns the Hilbert series of $gb$ with respect to the current
  1854. ecart vector.}
  1855. \verb|homstbasis m| \index{homstbasis}
  1856. \pbx{computes the standard basis of $m$ by Lazard's homogenization
  1857. approach.}
  1858. \verb|ideal2mat m| \index{ideal2mat}
  1859. \pbx{converts the ideal (=list of polynomials) $m$ into a column
  1860. vector.}
  1861. \verb|ideal_of_minors(mat,k)| \index{ideal\_of\_minors}
  1862. \pbx{computes the generators for the ideal of $k$-minors of the matrix
  1863. $mat$.}
  1864. \verb|ideal_of_pfaffians(mat,k)| \index{ideal\_of\_pfaffians}
  1865. \pbx{computes the generators for the ideal of the $2k$-pfaffians of
  1866. the skewsymmetric matrix $mat$.}
  1867. \verb|idealpower(m,n)| \index{idealpower}
  1868. \pbx{returns the interreduced basis of the ideal power $m^n$ with
  1869. respect to the integer $n\geq 0$.}
  1870. \verb|idealprod(m1,m2,...)| \index{idealprod}
  1871. \pbx{returns the interreduced basis of the ideal product
  1872. \mbox{$m1\cdot m2\cdot \ldots$} of the ideals $m1,m2,\ldots$.}
  1873. \verb|idealquotient(m1,m2)| \index{idealquotient}
  1874. \pbx{returns the ideal quotient $m1:m2$ of the module $m1\subseteq
  1875. S^c$ by the ideal $m2$.}
  1876. \verb|idealsum(m1,m2,...)| \index{idealsum}
  1877. \pbx{returns the interreduced basis of the ideal sum $m1+m2+\ldots$.}
  1878. \verb|indepvarsets gb| \index{indepvarsets}
  1879. \pbx{returns the list of strongly independent sets of $gb$ with
  1880. respect to the current term order, see \cite{KW} for a definition in
  1881. the case of ideals and \cite{rois} for submodules of free modules.}
  1882. \verb|initmat(m,<file name>| \index{initmat}
  1883. \pbx{initializes the dpmat $m$ together with its base ring, term order
  1884. and column degrees from a file.}
  1885. \verb|interreduce m| \index{interreduce}
  1886. \pbx{returns the interreduced module basis given by the rows of $m$,
  1887. i.e.\ a basis with pairwise indivisible leading terms.}
  1888. \verb|isolatedprimes m| \index{isolatedprimes}
  1889. \pbx{returns the list of isolated primes of the dpmat $m$, i.e.\ the
  1890. isolated primes of $Ann\ S^c/M$.}
  1891. \verb|isprime gb| \index{isprime}
  1892. \pbx{tests the ideal $gb$ to be prime.}
  1893. \verb|iszeroradical gb| \index{iszeroradical}
  1894. \pbx{tests the zerodimensional ideal $gb$ to be radical.}
  1895. \verb|lazystbasis m| \index{lazystbasis}
  1896. \pbx{computes the standard basis of $m$ by the lazy algorithm, see
  1897. e.g.\ \cite{MPT}.}
  1898. \verb|listgroebfactor in| \index{listgroebfactor}
  1899. \pbx{computes for the list $in$ of ideal bases a list $out$ of \gr
  1900. bases by the \gr factorization method, such that
  1901. $\bigcup_{m\in in}Z(m) = \bigcup_{m\in out}Z(m)$.}
  1902. \verb|mat2list m| \index{mat2list}
  1903. \pbx{converts the matrix $m$ into a list of its entries.}
  1904. \verb|matappend(m1,m2,...)| \index{matappend}
  1905. \pbx{collects the rows of the dpmats $m1,m2,\ldots $ to a common
  1906. matrix. $m1,m2,\ldots$ must be submodules of the same free module,
  1907. i.e.\ have equal column degrees (and size).}
  1908. \verb|mathomogenize(m,var)| \index{mathomogenize}
  1909. \footnote{Dehomogenize with {\tt sub(z=1,m)} if $z$ is the
  1910. homogenizing variable.}
  1911. \pbx{returns the result obtained by homogenization of the rows of m
  1912. with respect to the variable {\tt var} and the current \ind{ecart
  1913. vector}.}
  1914. \verb|matintersect(m1,m2,...)| \index{matintersect}
  1915. \pbx{returns the interreduced basis of the intersection $m1\bigcap
  1916. m2\bigcap \ldots$.}
  1917. \verb|matjac(m,<variable list>)| \index{matjac}
  1918. \pbx{returns the Jacobian matrix of the ideal m with respect to the
  1919. supplied variable list}
  1920. \verb|matqquot(m,f)| \index{matqquot}
  1921. \pbx{returns the stable quotient $m:(f)^\infty$ of the dpmat $m$ by
  1922. the polynomial $f\in S$.}
  1923. \verb|matquot(m,f)| \index{matquot}
  1924. \pbx{returns the quotient $m:(f)$ of the dpmat $m$ by the polynomial
  1925. $f\in S$.}
  1926. \verb|matstabquot(m1,id)| \index{matstabquot}
  1927. \pbx{returns the stable quotient $m1:id^\infty$ of the dpmat $m1$ by
  1928. the ideal $id$.}
  1929. \verb|matsum(m1,m2,...)| \index{matsum}
  1930. \pbx{returns the interreduced basis of the module sum $m1+m2+\ldots$
  1931. in a common free module.}
  1932. \verb|minimal_generators m| \index{minimal\_generators}
  1933. \pbx{returns a set of minimal generators of the dpmat $m$.}
  1934. \verb|minors(m,b)| \index{minors}
  1935. \pbx{returns the matrix of minors of size $b\times b$ of the matrix
  1936. $m$.}
  1937. \verb|a mod m| \index{mod}
  1938. \pbx{computes the (true) normal form(s), i.e.\ a standard quotient
  1939. representation, of $a$ modulo the dpmat $m$. $a$ may be either a
  1940. polynomial or a polynomial list ($c=0$) or a matrix ($c>0$) of the
  1941. correct number of columns.}
  1942. \verb|modequalp(gb1,gb2)| \index{modequalp}
  1943. \pbx{tests, whether $gb1$ and $gb2$ are equal (returns YES or NO).}
  1944. \verb|modulequotient(m1,m2)| \index{modulequotient}
  1945. \pbx{returns the module quotient $m1:m2$ of two dpmats $m1,m2$ in a
  1946. common free module.}
  1947. \verb|normalform(m1,m2)| \index{normalform}
  1948. \pbx{returns a list of three dpmats $\{m3,r,z\}$, where $m3$ is the
  1949. normalform of $m1$ modulo $m2$, $z$ a scalar matrix of polynomial
  1950. units (i.e.\ polynomials of degree 0 in the noetherian case and
  1951. polynomials with leading term of degree 0 in the tangent cone case),
  1952. and $r$ the relation matrix, such that \[m3=z*m1+r*m2.\]}
  1953. \verb|nzdp(f,m)| \index{nzdp}
  1954. \pbx{tests whether the dpoly $f$ is a non zero divisor on $coker\
  1955. m$.}
  1956. \verb|pfaffian mat| \index{pfaffian}
  1957. \pbx{returns the pfaffian of a skewsymmetric matrix $mat$.}
  1958. \verb|preimage(m,map)| \index{preimage}
  1959. \pbx{computes the preimage of the ideal $m$ under the given
  1960. polynomial map and sets the current base ring to the preimage ring.}
  1961. \verb|primarydecomposition m|
  1962. \index{primarydecomposition}
  1963. \pbx{returns the primary decomposition of the dpmat $m$ as a list of
  1964. $\{component, associated\ prime\}$ pairs.}
  1965. \verb|proj_monomial_curve(l,vars)|\index{proj\_monomial\_curve}
  1966. \pbx{$l$ is a list of integers, $vars$ a list of variable names of the
  1967. same length as $l$. The procedure sets the current base ring and
  1968. returns the defining ideal of the projective monomial curve with
  1969. generic point \mbox{$(s^{d-i}\cdot t^i\ :\ i\in l)$} in $R$ where $d=max\{
  1970. x\, :\, x\in l\}$.}
  1971. \verb|proj_points m| \index{proj\_points}
  1972. \pbx{$m$ is a matrix of domain elements (in algebraic prefix form)
  1973. with as many columns as the current base ring has ring variables. This
  1974. procedure returns the defining ideal of the collection of points in
  1975. projective space with homogeneous coordinates given by the rows of
  1976. $m$. Note that $m$ may as for {\tt affine\_points} contain
  1977. parameters.}
  1978. \verb|radical m| \index{radical}
  1979. \pbx{returns the radical of the dpmat ideal $m$.}
  1980. \verb|random_linear_form(vars,bound)| \index{random\_linear\_form}
  1981. \pbx{returns a random linear form in the variables {\tt vars} with integer
  1982. coefficients less than the supplied {\tt bound}.}
  1983. \verb|ratpreimage(m,map)| \index{ratpreimage}
  1984. \pbx{computes the closure of the preimage of the ideal $m$ under the
  1985. given rational map and sets the current base ring to the preimage
  1986. ring.}
  1987. \verb|resolve(m[,d])| \index{resolve}
  1988. \pbx{returns the first $d$ members of the minimal resolution of the
  1989. bounded identifier $m$ as a list of matrices. If the resolution has
  1990. less than $d$ non zero members, only those are collected. (Default:
  1991. $d=100$)}
  1992. \verb|savemat(m,<file name>)| \index{savemat}
  1993. \pbx{save the dpmat $m$ together with the settings of it base ring,
  1994. term order and column degrees to a file.}
  1995. \verb|setgbasis m| \index{setgbasis}
  1996. \pbx{declares the rows of the bounded identifier $m$ to be already a
  1997. \gr resp. local standard basis thus avoiding a possibly time
  1998. consuming \gr or standard basis computation.}
  1999. \verb|sieve(m,<variable list>)| \index{sieve}
  2000. \pbx{sieves out all base elements with leading terms having a factor
  2001. contained in the specified variable list (a subset of the variables
  2002. of the current base ring). Useful for elimination problems solved
  2003. ``by hand''.}
  2004. \verb|singular_locus(M,c)| \index{singular\_locus}
  2005. \pbx{returns the defining ideal of the singular locus of $Spec\ S/M$
  2006. where $M$ is an ideal of codimension $c$, adding to $M$ the generators
  2007. of the ideal of the $c$-minors of the Jacobian of $M$.}
  2008. \verb|submodulep(m,gb)| \index{submodulep}
  2009. \pbx{tests, whether $m$ is a submodule of $gb$ (returns YES or NO).}
  2010. \verb|sym(M,vars)|\index{sym}
  2011. \pbx{Computes the symmetric algebra $Sym(M)$ where $M$ is an ideal
  2012. defined over the current base ring $S$. {\tt vars} is a list of new
  2013. variable names, one for each generator of $M$. They are used to create
  2014. a second ring $R$ to return an ideal $J$ such that $(S\oplus R)/J$ is
  2015. the desired symmetric algebra over the new current base ring $S\oplus
  2016. R$.}
  2017. \verb|symbolic_power(m,d)| \index{symbolic\_power}
  2018. \pbx{returns the $d$th symbolic power of the prime dpmat ideal $m$.}
  2019. \verb|syzygies m| \index{syzygies}
  2020. \pbx{returns the first syzygy module of the bounded identifier $m$.}
  2021. \verb|tangentcone gb| \index{tangentcone}
  2022. \pbx{returns the tangent cone part, i.e.\ the homogeneous part of
  2023. highest degree with respect to the first degree vector of the term
  2024. order from the \gr basis elements of the dpmat $gb$. The term order
  2025. must be a degree order.}
  2026. \verb|unmixedradical m| \index{unmixedradical}
  2027. \pbx{returns the unmixed radical of the dpmat ideal $m$.}
  2028. \verb|varopt m| \index{varopt}
  2029. \pbx{finds a heuristically optimal variable order, see \cite{BGK}.
  2030. \[\tt vars:=varopt\ m;\ setring(vars,\{\},lex);\ setideal(m,m);\]
  2031. changes to the lexicographic term order with heuristically best
  2032. performance for a lexicographic \gr basis computation.}
  2033. \verb|WeightedHilbertSeries(m,w)| \index{WeightedHilbertSeries}
  2034. \pbx{returns the weighted Hilbert series of the dpmat $m$. Note that
  2035. $m$ is not a bounded identifier and hence not checked to be a \gr
  2036. basis. $w$ is a list of integer weight vectors.}
  2037. \verb|zeroprimarydecomposition m| \index{zeroprimarydecomposition}
  2038. \pbx{returns the primary decomposition of the zerodimensional dpmat
  2039. $m$ as a list of $\{component, associated\ prime\}$ pairs.}
  2040. \verb|zeroprimes m| \index{zeroprimes}
  2041. \pbx{returns the list of primes of the zerodimensional dpmat $m$.}
  2042. \verb|zeroradical gb| \index{zeroradical}
  2043. \pbx{returns the radical of the zerodimensional ideal $gb$.}
  2044. \verb|zerosolve m|, \verb|zerosolve1 m| and \verb|zerosolve2 m|
  2045. \index{zerosolve}\index{zerosolve1}\index{zerosolve2}
  2046. \pbx{Returns for a zerodimensional ideal a list of triangular systems
  2047. that cover $Z(m)$. {\tt Zerosolve} needs a pure lex.\ term order for
  2048. the ``fast'' turn to lex.\ as described in \cite{Moeller}, {\tt
  2049. Zerosolve1} is the ``slow'' turn to lex.\ as described in \cite{efgb},
  2050. and {\tt Zerosolve2} incorporated the FGLM term order change into {\tt
  2051. Zerosolve1}.}
  2052. \end{quote}
  2053. \pagebreak
  2054. \section{The CALI Module Structure}
  2055. \vfill
  2056. \begin{tabular}{|p{1.5cm}||p{5.5cm}|p{2cm}|p{4cm}|}
  2057. \hline
  2058. \sloppy
  2059. name & subject & data type & representation \\
  2060. \hline
  2061. cali & Header module, contains \linebreak
  2062. global variables, switches etc. & --- & ---\\
  2063. bcsf & Base coefficient arithmetic & base coeff. & standard forms \\
  2064. ring & Base ring setting, definition of the term order & base ring &
  2065. special type RING\\
  2066. mo & monomial arithmetic & monomials & (exp. list . degree list)\\
  2067. dpoly & Polynomial and vector arith\-metic & dpolys & list of terms\\
  2068. bas & Operations on base lists & base list & list of base elements \\
  2069. dpmat & Operations on polynomial matrices, the central data type of
  2070. CALI & dpmat & special type DPMAT\\
  2071. red & Normal form algorithms & --- & ---\\
  2072. groeb & \gr basis algorithm and related ones & --- & ---\\
  2073. groebf & the \gr factorizer and its extensions & --- & ---\\
  2074. matop & Operations on (lists of) \linebreak dpmats that correspond to
  2075. ideal/module operations & --- & ---\\
  2076. quot & Different quotient algorithms & --- & --- \\
  2077. moid & Monomial ideal algorithms & monomial ideal & list of monomials \\
  2078. hf & weighted Hilbert series & -- & -- \\
  2079. res & Resolutions of dpmats & resolution & list of dpmats \\
  2080. intf & Interface to algebraic mode & --- & ---\\
  2081. odim & Algorithms for zerodimensional ideals and modules & --- & ---\\
  2082. prime & Primary decomposition and related questions & --- & ---\\
  2083. scripts & Advanced applications & --- & ---\\
  2084. calimat & Extension of the matrix package & --- & ---\\
  2085. lf & The dual bases approach & --- & ---\\
  2086. triang & (Zero dimensional) triangular systems & --- & ---\\
  2087. \hline
  2088. \end{tabular}
  2089. \vfill
  2090. \pagebreak
  2091. \begin{theindex}
  2092. \item affine\_monomial\_curve, 33, 36
  2093. \item affine\_points, 7, 35, 36
  2094. \item affine\_points1!*, 35
  2095. \item algebraic numbers, 13
  2096. \item analytic\_spread, 33, 36
  2097. \item annihilator, 28, 36
  2098. \item assgrad, 33, 36
  2099. \indexspace
  2100. \item bas\_detectunits, 23
  2101. \item bas\_factorunits, 23
  2102. \item bas\_getrelations, 20
  2103. \item bas\_removerelations, 20
  2104. \item bas\_setrelations, 20
  2105. \item base coefficients, 13
  2106. \item base elements, 19
  2107. \item base ring, 9, 17
  2108. \item basis, 13
  2109. \item bcsimp, 14
  2110. \item BettiNumbers, 30, 36
  2111. \item binomial, 7
  2112. \item blockorder, 10, 18
  2113. \item blowup, 7, 33, 36
  2114. \item border basis, 8
  2115. \item bounded identifier, 13, 36
  2116. \indexspace
  2117. \item cali, 16
  2118. \item cali!=basering, 9, 16, 18
  2119. \item cali!=degrees, 12, 16, 18
  2120. \item cali!=monset, 16, 25
  2121. \item change of term orders, 7
  2122. \item change\_termorder, 35, 37
  2123. \item change\_termorder1, 35, 37
  2124. \item clearcaliprintterms, 16
  2125. \item codim, 29, 37
  2126. \item column degree, 12
  2127. \indexspace
  2128. \item degree, 30, 37
  2129. \item degree vectors, 9
  2130. \item degreeorder, 10, 18
  2131. \item degsfromresolution, 37
  2132. \item deleteunits, 23, 37
  2133. \item detectunits, 14, 23
  2134. \item dim, 8, 29, 37
  2135. \item dimzerop, 31, 37
  2136. \item directsum, 37
  2137. \item dmode, 13
  2138. \item dp\_pseudodivmod, 14, 19, 28
  2139. \item dpgcd, 19, 37
  2140. \item dpmat, 8, 12, 13, 20
  2141. \item dpmat\_coldegs, 20
  2142. \item dpmat\_cols, 20
  2143. \item dpmat\_gbtag, 20
  2144. \item dpmat\_list, 20
  2145. \item dpmat\_rows, 20
  2146. \item dual bases, 6, 7, 34, 35
  2147. \indexspace
  2148. \item easydim, 26, 29, 37
  2149. \item easyindepset, 29, 37
  2150. \item easyprimarydecomposition, 32, 37
  2151. \item ecart, 3, 19
  2152. \item ecart vector, 8, 11, 40
  2153. \item efgb, 16
  2154. \item eliminate, 7, 27, 38
  2155. \item eliminationorder, 10, 18
  2156. \item eqhull, 32, 38
  2157. \item evlf, 17
  2158. \item extended \gr factorizer, 7, 15, 26
  2159. \item extendedgroebfactor, 26, 38
  2160. \item extendedgroebfactor1, 26, 38
  2161. \indexspace
  2162. \item factorunits, 15, 23
  2163. \item flatten, 8
  2164. \item free identifier, 13
  2165. \indexspace
  2166. \item gb-tag, 8, 20
  2167. \item gbasis, 24, 38
  2168. \item gbtestversion, 7, 8, 16, 24
  2169. \item getdegrees, 12
  2170. \item getecart, 11
  2171. \item getkbase, 31, 38
  2172. \item getleadterms, 38
  2173. \item getring, 11
  2174. \item getrules, 13
  2175. \item global procedures, 5
  2176. \item GradedBettiNumbers, 30
  2177. \item gradedbettinumbers, 38
  2178. \item groeb, 7
  2179. \item groeb!=rf, 16
  2180. \item groeb\_homstbasis, 24
  2181. \item groeb\_lazystbasis, 24
  2182. \item groeb\_mingb, 25
  2183. \item groeb\_minimize, 25
  2184. \item groeb\_stbasis, 24
  2185. \item groebf\_zeroprimes1, 27
  2186. \item groebfactor, 26, 38
  2187. \indexspace
  2188. \item hardzerotest, 15
  2189. \item hf!=hf, 16
  2190. \item hf\_whilb, 30
  2191. \item hf\_whilb3, 30
  2192. \item hf\_whs\_from\_resolution, 30
  2193. \item hftestversion, 8, 16, 30
  2194. \item HilbertSeries, 8, 11, 30, 38
  2195. \item homstbasis, 25, 38
  2196. \indexspace
  2197. \item ideal2mat, 12, 38
  2198. \item ideal\_of\_minors, 21, 38
  2199. \item ideal\_of\_pfaffians, 21, 39
  2200. \item idealpower, 39
  2201. \item idealprod, 39
  2202. \item idealquotient, 27, 28, 39
  2203. \item ideals, 12
  2204. \item idealsum, 39
  2205. \item indepvarsets, 29, 39
  2206. \item initmat, 39
  2207. \item internal procedures, 5
  2208. \item interreduce, 23, 39
  2209. \item isolatedprimes, 32, 39
  2210. \item isprime, 32, 39
  2211. \item iszeroradical, 39
  2212. \indexspace
  2213. \item lazy, 7
  2214. \item lazystbasis, 25, 39
  2215. \item lexefgb, 15, 27
  2216. \item lexicographic, 9
  2217. \item listgroebfactor, 26, 39
  2218. \item listminimize, 6
  2219. \item listtest, 6
  2220. \item local procedures, 5
  2221. \item localorder, 10, 18
  2222. \indexspace
  2223. \item map, 32
  2224. \item mat2list, 8, 12, 39
  2225. \item matappend, 40
  2226. \item mathomogenize, 40
  2227. \item mathprint, 17
  2228. \item matintersect, 7, 27, 40
  2229. \item matjac, 21, 40
  2230. \item matqquot, 28, 40
  2231. \item matquot, 28, 40
  2232. \item matstabquot, 28, 40
  2233. \item matsum, 40
  2234. \item minimal\_generators, 34, 40
  2235. \item minors, 21, 40
  2236. \item mod, 23, 40
  2237. \item modequalp, 8, 27, 40
  2238. \item module
  2239. \subitem bcsf, 17
  2240. \subitem cali, 5
  2241. \subitem calimat, 8, 21
  2242. \subitem dpmat, 20
  2243. \subitem groeb, 24
  2244. \subitem groebf, 7, 26
  2245. \subitem lf, 7, 17
  2246. \subitem moid, 28
  2247. \subitem mora, 7
  2248. \subitem odim, 7, 31
  2249. \subitem prime, 31
  2250. \subitem ring, 17
  2251. \subitem scripts, 7, 32
  2252. \subitem triang, 26, 27
  2253. \item module quotient, 27
  2254. \item module term order, 12
  2255. \item modulequotient, 28, 40
  2256. \item modules, 12
  2257. \item moid\_primes, 29
  2258. \indexspace
  2259. \item Noetherian, 3, 15
  2260. \item normalform, 23, 41
  2261. \item nzdp, 34, 41
  2262. \indexspace
  2263. \item odim\_borderbasis, 31
  2264. \item odim\_parameter, 31
  2265. \item odim\_up, 31
  2266. \item oldbasis, 17
  2267. \item oldborderbasis, 17
  2268. \item oldring, 17
  2269. \indexspace
  2270. \item pfaffian, 21, 41
  2271. \item preimage, 7, 32, 41
  2272. \item primarydecomposition, 7, 41
  2273. \item printterms, 16
  2274. \item proj\_monomial\_curve, 33, 41
  2275. \item proj\_points, 7, 35, 41
  2276. \item proj\_points1!*, 35
  2277. \indexspace
  2278. \item radical, 32, 41
  2279. \item random\_linear\_form, 21, 41
  2280. \item ratpreimage, 33, 41
  2281. \item red, 7
  2282. \item red\_better, 22
  2283. \item red\_extract, 23
  2284. \item red\_Interreduce, 23
  2285. \item red\_prepare, 23
  2286. \item red\_redpol, 23
  2287. \item red\_Straight, 22
  2288. \item red\_TailRed, 22
  2289. \item red\_TailRedDriver, 22
  2290. \item red\_TopInterreduce, 23
  2291. \item red\_TopRed, 22
  2292. \item red\_TopRedBE, 22
  2293. \item red\_total, 15
  2294. \item red\_TotalRed, 22
  2295. \item Resolve, 7, 30, 42
  2296. \item reverse lexicographic, 8, 9
  2297. \item ring, 13
  2298. \item ring\_2a, 17
  2299. \item ring\_define, 17
  2300. \item ring\_degrees, 17
  2301. \item ring\_ecart, 17
  2302. \item ring\_from\_a, 17
  2303. \item ring\_isnoetherian, 17
  2304. \item ring\_lp, 18
  2305. \item ring\_names, 17
  2306. \item ring\_rlp, 18
  2307. \item ring\_sum, 18
  2308. \item ring\_tag, 17
  2309. \item rules, 16
  2310. \indexspace
  2311. \item savemat, 42
  2312. \item setcaliprintterms, 16
  2313. \item setcalitrace, 8, 15
  2314. \item setdegrees, 12, 16
  2315. \item setgbasis, 8, 42
  2316. \item setideal, 13, 14
  2317. \item setkorder, 18
  2318. \item setmodule, 13, 14
  2319. \item setmonset, 16, 25
  2320. \item setring, 7, 9, 11, 14, 16, 18
  2321. \item setrules, 13, 14, 16, 17, 19
  2322. \item sieve, 42
  2323. \item singular\_locus, 21, 42
  2324. \item stable quotient, 27
  2325. \item sublist, 17
  2326. \item submodulep, 27, 42
  2327. \item switch
  2328. \subitem bcsimp, 17
  2329. \subitem hardzerotest, 13
  2330. \subitem lexefgb, 16, 27
  2331. \subitem Noetherian, 10, 18
  2332. \item sym, 7, 34, 42
  2333. \item symbolic\_power, 34, 42
  2334. \item syzygies, 24, 42
  2335. \item syzygies1, 24
  2336. \indexspace
  2337. \item tangentcone, 42
  2338. \item term, 19
  2339. \item trace, 16
  2340. \item tracing, 8
  2341. \item triang, 7
  2342. \item triangular systems, 7, 26
  2343. \indexspace
  2344. \item unmixedradical, 32, 42
  2345. \indexspace
  2346. \item varlessp, 17
  2347. \item varnames, 17
  2348. \item varopt, 34, 43
  2349. \indexspace
  2350. \item WeightedHilbertSeries, 8, 29, 30, 43
  2351. \indexspace
  2352. \item zeroprimarydecomposition, 31, 32, 43
  2353. \item zeroprimes, 31, 43
  2354. \item zeroradical, 31, 43
  2355. \item zerosolve, 15, 27, 43
  2356. \item zerosolve1, 15, 27, 43
  2357. \item zerosolve2, 27, 43
  2358. \end{theindex}
  2359. \pagebreak
  2360. \begin{thebibliography}{xxx}
  2361. \bibitem{BS} D. Bayer, M. Stillman: Computation of Hilbert
  2362. functions. {\it J. Symb. Comp. \bf 14} (1992), 31 - 50.
  2363. \bibitem{BKW} T. Becker, H. Kredel, V. Weispfenning: \gr bases. A
  2364. computational approach to commutative algebra. Grad. Texts in Math.
  2365. 141, Springer, New York 1993.
  2366. \bibitem{BCRT} A. M. Bigatti, P. Conti, L. Robbiano, C. Traverso: A
  2367. ``divide and conquer'' algorithm for Hilbert-Poincare series,
  2368. multiplicity and dimension of monomial ideals. In: Proc. AAECC-10,
  2369. LNCS 673 (1993), 76 - 88.
  2370. \bibitem{BGK} W. Boege, R. Gebauer, H. Kredel: Some examples for
  2371. solving systems of algebraic equations by calculating \gr bases. {\it
  2372. J. Symb. Comp. \bf 2} (1986), 83 - 98.
  2373. \bibitem{B1} B. Buchberger: \gr bases: An algorithmic method in
  2374. polynomial ideal theory. In: Recent trends in multidimensional
  2375. system theory (N.~K.~Bose ed), Reidel, Dortrecht 1985, 184 - 232.
  2376. \bibitem{B2} B. Buchberger: Applications of \gr bases in non-linear
  2377. computational geometry. LNCS 296 (1988), 52 - 80.
  2378. \bibitem{CLO} D. Cox, J. Little, D. O'Shea: Ideals, varieties, and
  2379. algorithms. Undergraduate Texts in Math., Springer, New York 1992.
  2380. \bibitem{E} D. Eisenbud: Commutative algebra with a view toward
  2381. algebraic geometry. Springer, 1995.
  2382. \bibitem{FGLM} Faugere, Gianni, Lazard, Mora: Efficient computations
  2383. of zerodimensional \gr bases by change of ordering. {\it
  2384. J. Symb. Comp. \bf 16} (1993), 329 - 344.
  2385. \bibitem{GTZ} P. Gianni, B. Trager, G. Zacharias: \gr bases and
  2386. primary decomposition of polynomial ideals. {\it J. Symb. Comp. \bf
  2387. 6} (1988), 149 - 167.
  2388. \bibitem{GMNRT} A. Giovini, T. Mora, G. Niesi, L. Robbiano, C.
  2389. Traverso: "One sugar cube, please" or Selection strategies in the
  2390. Buchberger algorithm. In: Proceedings of the ISSAC'91, ACM Press
  2391. 1991, 49 - 54.
  2392. \bibitem{rois} H.-G. Gr\"abe: Two remarks on independent sets.
  2393. {\it J. Alg. Comb. \bf 2} (1993), 137 - 145.
  2394. \bibitem{tcah} H.-G. Gr\"abe: The tangent cone algorithm and
  2395. homogenization. {\it J. Pure Applied Alg.\bf 97} (1994), 303 - 312.
  2396. \bibitem{ala} H.-G. Gr\"abe: Algorithms in local algebra. To appear
  2397. \bibitem{fgb} H.-G. Gr\"abe: On factorized \gr bases. Report Nr. 6
  2398. (1994), Inst. f. Informatik, Univ. Leipzig.
  2399. To appear in: Proc. ``Computer Algebra in Science and Engineering'',
  2400. Bielefeld 1994.
  2401. \bibitem{efgb} H.-G. Gr\"abe: Triangular systems and factorized \gr
  2402. bases. Report Nr. 7 (1995), Inst. f. Informatik, Univ. Leipzig.
  2403. \bibitem{primary} H.-G. Gr\"abe: Factorized \gr bases and primary
  2404. decomposition. To appear.
  2405. \bibitem{Kr} H. Kredel: Primary ideal decomposition. In: Proc.
  2406. EUROCAL'87, Lecture Notes in Comp. Sci. 378 (1986), 270 - 281.
  2407. \bibitem{KW} H. Kredel, V. Weispfenning: Computing dimension and
  2408. independent sets for polynomial ideals. {\it J. Symb. Comp. \bf 6}
  2409. (1988), 231 - 247.
  2410. \bibitem{MMM} M. Marinari, H.-M. M\"oller, T. Mora: \gr bases of
  2411. ideals given by dual bases. In: Proc. ISSAC'91, ACM Press 1991, 55 -
  2412. 63.
  2413. \bibitem{Mishra} B. Mishra: Algorithmic Algebra. Springer, New York
  2414. 1993.
  2415. \bibitem{MM} H.-M. M\"oller, F. Mora: New constructive methods in
  2416. classical ideal theory. {\it J. Alg. \bf 100} (1986), 138 -178.
  2417. \bibitem{Moeller} H.-M. M\"oller: On decomposing systems of polynomial
  2418. equations with finitely many solutions. {\em J. AAECC \bf 4} (1993),
  2419. 217 - 230.
  2420. \bibitem{MR88} T. Mora, L. Robbiano: The Gr\"obner fan of an ideal.
  2421. {\it J. Symb. Comp. \bf 6} (1988), 183 - 208.
  2422. \bibitem{Mo88} T. Mora: Seven variations on standard bases.
  2423. Preprint, Univ. Genova, 1988.
  2424. \bibitem{MPT} T. Mora, G. Pfister, C. Traverso: An introduction to
  2425. the tangent cone algorithm. In: {\em Issues in non-linear geometry and
  2426. robotics, C.M. Hoffman ed.}, JAI Press.
  2427. \bibitem{Ro} L. Robbiano: Computer algebra and commutative algebra.
  2428. LNCS 357 (1989), 31 - 44.
  2429. \bibitem{Ru} E. W. Rutman: \gr bases and primary decomposition of
  2430. modules. {\it J. Symb. Comp. \bf 14} (1992), 483 - 503.
  2431. \end{thebibliography}
  2432. \end{document}