r38_0350.html 46 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724
  1. <a name=r38_0350>
  2. <title>Matrix Operations</title></a>
  3. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  4. E"></p>
  5. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  6. <b>Matrix Operations</b><menu>
  7. <li><a href=r38_0300.html#r38_0341>COFACTOR operator</a><P>
  8. <li><a href=r38_0300.html#r38_0342>DET operator</a><P>
  9. <li><a href=r38_0300.html#r38_0343>MAT operator</a><P>
  10. <li><a href=r38_0300.html#r38_0344>MATEIGEN operator</a><P>
  11. <li><a href=r38_0300.html#r38_0345>MATRIX declaration</a><P>
  12. <li><a href=r38_0300.html#r38_0346>NULLSPACE operator</a><P>
  13. <li><a href=r38_0300.html#r38_0347>RANK operator</a><P>
  14. <li><a href=r38_0300.html#r38_0348>TP operator</a><P>
  15. <li><a href=r38_0300.html#r38_0349>TRACE operator</a><P>
  16. </menu>
  17. <a name=r38_0351>
  18. <title>Groebner_bases</title></a>
  19. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  20. E"></p>
  21. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  22. <b>GROEBNER BASES</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>introduction</b><P>
  23. <P>
  24. The GROEBNER package calculates <em>Groebner bases</em> using the
  25. <em>Buchberger algorithm</em> and provides related algorithms
  26. for arithmetic with ideal bases, such as ideal quotients,
  27. Hilbert polynomials ( <em>Hollmann algorithm</em>),
  28. basis conversion (
  29. <em>Faugere-Gianni-Lazard-Mora algorithm</em>), independent
  30. variable set ( <em>Kredel-Weispfenning algorithm</em>).
  31. <P>
  32. <P>
  33. Some routines of the Groebner package are used by
  34. <a href=r38_0150.html#r38_0179>solve</a> - in
  35. that context the package is loaded automatically. However, if you
  36. want to use the package by explicit calls you must load it by
  37. <p><pre><tt>
  38. load_package groebner;
  39. </tt></pre><p><P>
  40. <P>
  41. For the common parameter setting of most operators in this package
  42. see
  43. <a href=r38_0350.html#r38_0352>ideal parameters</a>.
  44. <P>
  45. <P>
  46. <a name=r38_0352>
  47. <title>Ideal_Parameters</title></a>
  48. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  49. E"></p>
  50. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  51. <b>IDEAL PARAMETERS</b><P>
  52. <P>
  53. <P>
  54. <P>
  55. Most operators of the <em>Groebner</em> package compute expressions in a
  56. polynomial ring which given as &lt;R&gt;[&lt;var&gt;,&lt;var&gt;,...] where
  57. &lt;R&gt; is the current REDUCE coefficient domain. All algebraically
  58. exact domains of REDUCE are supported. The package can operate over rings
  59. and fields. The operation mode is distinguished automatically. In
  60. general the ring mode is a bit faster than the field mode. The factoring
  61. variant can be applied only over domains which allow you factoring of
  62. multivariate polynomials.
  63. <P>
  64. <P>
  65. The variable sequence &lt;var&gt; is either declared explicitly as argument
  66. in form of a
  67. <a href=r38_0050.html#r38_0053>list</a> in
  68. <a href=r38_0350.html#r38_0354>torder</a>, or it is extracted
  69. automatically from the expressions. In the second case the current REDUCE
  70. system order is used (see
  71. <a href=r38_0150.html#r38_0198>korder</a>) for arranging the variables.
  72. If some kernels should play the role of formal parameters (the ground
  73. domain &lt;R&gt; then is the polynomial ring over these), the variable
  74. sequences must be given explicitly.
  75. <P>
  76. <P>
  77. All REDUCE
  78. <a href=r38_0001.html#r38_0002>kernel</a>s can be used as variables. But please
  79. note,
  80. that all variables are considered as independent. E.g. when using
  81. <em>sin(a)</em> and <em>cos(a)</em> as variables, the basic relation
  82. <em>sin(a)^2+cos(a)^2-1=0</em> must be explicitly added to an equation set
  83. because the Groebner operators don't include such knowledge automatically.
  84. <P>
  85. <P>
  86. The terms (monomials) in polynomials are arranged according to the current
  87. <a href=r38_0350.html#r38_0353>term order</a>. Note that the algebraic propertie
  88. s of the computed
  89. results only are valid as long as neither the ordering nor the variable
  90. sequence changes.
  91. <P>
  92. <P>
  93. The input expressions &lt;exp&gt; can be polynomials &lt;p&gt;, rational
  94. functions &lt;n&gt;/&lt;d&gt; or equations &lt;lh&gt;=&lt;rh&gt; built from
  95. polynomials or rational functions. Apart from the <em>tracing</em>
  96. algorithms
  97. <a href=r38_0350.html#r38_0398>groebnert</a> and
  98. <a href=r38_0350.html#r38_0399>preducet</a>, where the equations
  99. have a specific meaning, equations are converted to simple expressions by
  100. taking the difference of the left-hand and right-hand sides
  101. &lt;lh&gt;-&lt;rh&gt;=&gt;&lt;p&gt;. Rational functions are converted to
  102. polynomials by converting the expression to a common denominator form
  103. first, and then using the numerator only &lt;n&gt;=&gt;&lt;p&gt;. So eventual
  104. zeros of the denominators are ignored.
  105. <P>
  106. <P>
  107. A basis on input or output of an algorithm is coded as
  108. <a href=r38_0050.html#r38_0053>list</a> of
  109. expressions {&lt;exp&gt;,&lt;exp&gt;,...} .
  110. <P>
  111. <P>
  112. <a name=r38_0353>
  113. <title>Term_order</title></a>
  114. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  115. E"></p>
  116. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  117. <b>TERM ORDER</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>introduction</b><P>
  118. <P>
  119. <P>
  120. <P>
  121. For all <em>Groebner</em> operations the polynomials are
  122. represented in distributive form: a sum of terms (monomials).
  123. The terms are ordered corresponding to the actual <em>term order</em>
  124. which is set by the
  125. <a href=r38_0350.html#r38_0354>torder</a> operator, and to the
  126. actual variable sequence which is either given as explicit
  127. parameter or by the system
  128. <a href=r38_0001.html#r38_0002>kernel</a> order.
  129. <P>
  130. <P>
  131. <a name=r38_0354>
  132. <title>torder</title></a>
  133. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  134. E"></p>
  135. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  136. <b>TORDER</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  137. <P>
  138. The operator <em>torder</em> sets the actual variable sequence and term order.
  139. <P>
  140. <P>
  141. 1. simple term order:
  142. <P> <H3>
  143. syntax: </H3>
  144. <P>
  145. <P>
  146. <em>torder</em>(&lt;vl&gt;, &lt;m&gt;)
  147. <P>
  148. <P>
  149. <P>
  150. where &lt;vl&gt; is a
  151. <a href=r38_0050.html#r38_0053>list</a> of variables (
  152. <a href=r38_0001.html#r38_0002>kernel</a>s) and
  153. &lt;m&gt; is the name of a simple
  154. <a href=r38_0350.html#r38_0353>term order</a> mode
  155. <a href=r38_0350.html#r38_0356>lex term order</a>,
  156. <a href=r38_0350.html#r38_0357>gradlex term order</a>,
  157. <a href=r38_0350.html#r38_0358>revgradlex term order</a> or another implemented
  158. parameterless mode.
  159. <P>
  160. <P>
  161. 2. stepped term order:
  162. <P> <H3>
  163. syntax: </H3>
  164. <P>
  165. <P>
  166. <em>torder</em>(&lt;vl&gt;,&lt;m&gt;,&lt;n&gt;)
  167. <P>
  168. <P>
  169. <P>
  170. <P>
  171. where &lt;m&gt; is the name of a two step term order, one of
  172. <a href=r38_0350.html#r38_0359>gradlexgradlex term order</a>,
  173. <a href=r38_0350.html#r38_0360>gradlexrevgradlex term order</a>,
  174. <a href=r38_0350.html#r38_0361>lexgradlex term order</a> or
  175. <a href=r38_0350.html#r38_0362>lexrevgradlex term order</a>, and
  176. &lt;n&gt; is a positive integer.
  177. <P>
  178. <P>
  179. 3. weighted term order
  180. <P> <H3>
  181. syntax: </H3>
  182. <P>
  183. <P>
  184. <em>torder</em>(&lt;vl&gt;, <em>weighted</em>, &lt;n&gt;,&lt;n&gt;,...);
  185. <P>
  186. <P>
  187. <P>
  188. where the &lt;n&gt; are positive integers, see
  189. <a href=r38_0350.html#r38_0363>weighted term order</a>.
  190. <P>
  191. <P>
  192. 4. matrix term order
  193. <P> <H3>
  194. syntax: </H3>
  195. <P>
  196. <P>
  197. <em>torder</em>(&lt;vl&gt;, <em>matrix</em>, &lt;m&gt;);
  198. <P>
  199. <P>
  200. <P>
  201. where &lt;m&gt; is a matrix with integer elements, see
  202. <a href=r38_0350.html#r38_0355>torder_compile</a>.
  203. <P>
  204. <P>
  205. 5. compiled term order
  206. <P> <H3>
  207. syntax: </H3>
  208. <P>
  209. <P>
  210. <em>torder</em>(&lt;vl&gt;, <em>co</em>);
  211. <P>
  212. <P>
  213. <P>
  214. where &lt;co&gt; is the name of a routine generated by
  215. <a href=r38_0350.html#r38_0355>torder_compile</a>.
  216. <P>
  217. <P>
  218. <em>torder</em>sets the variable sequence and the term order mode. If the
  219. an empty list is used as variable sequence, the automatic variable extraction
  220. is activated. The defaults are the empty variable list an the
  221. <a href=r38_0350.html#r38_0356>lex term order</a>.
  222. The previous setting is returned as a list.
  223. <P>
  224. <P>
  225. Alternatively to the above syntax the arguments of <em>torder</em> may be
  226. collected in a
  227. <a href=r38_0050.html#r38_0053>list</a> and passed as one argument to
  228. <em>torder</em>.
  229. <P>
  230. <P>
  231. <a name=r38_0355>
  232. <title>torder_compile</title></a>
  233. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  234. E"></p>
  235. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  236. <b>TORDER_COMPILE</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  237. <P>
  238. <P>
  239. <P>
  240. A matrix can be converted into
  241. a compilable LISP program for faster execution by using
  242. <P> <H3>
  243. syntax: </H3>
  244. <P>
  245. <P>
  246. <em>torder_compile</em>(&lt;name&gt;,&lt;mat&gt;)
  247. <P>
  248. <P>
  249. <P>
  250. where &lt;name&gt; is an identifier for the new term order and &lt;mat&gt;
  251. is an integer matrix to be used as
  252. <a href=r38_0350.html#r38_0365>matrix term order</a>. Afterwards
  253. the term order can be activated by using &lt;name&gt; in a
  254. <a href=r38_0350.html#r38_0354>torder</a>
  255. expression. The resulting program is compiled if the switch
  256. <a href=r38_0250.html#r38_0273>comp</a>
  257. is on, or if the <em>torder_compile</em> expression is part of a compiled
  258. module.
  259. <P>
  260. <P>
  261. <a name=r38_0356>
  262. <title>lex_term_order</title></a>
  263. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  264. E"></p>
  265. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  266. <b>LEX TERM ORDER</b><P>
  267. <P>
  268. <P>
  269. <P>
  270. The terms are ordered lexicographically: two terms t1 t2
  271. are compared for their degrees
  272. along the fixed variable sequence: t1 is higher than t2
  273. if the first different degree is higher in t1.
  274. This order has the <em>elimination property</em>
  275. for <em>groebner basis</em> calculations.
  276. If the ideal has a univariate polynomial in the last
  277. variable the groebner basis will contain
  278. such polynomial. <em>Lex</em> is best
  279. suited for solving of polynomial equation systems.
  280. <P>
  281. <P>
  282. <a name=r38_0357>
  283. <title>gradlex_term_order</title></a>
  284. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  285. E"></p>
  286. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  287. <b>GRADLEX TERM ORDER</b><P>
  288. <P>
  289. <P>
  290. <P>
  291. The terms are ordered first with their total
  292. degree, and if the total degree is identical
  293. the comparison is
  294. <a href=r38_0350.html#r38_0356>lex term order</a>.
  295. With <em>groebner</em> basis calculations this term order
  296. produces polynomials of lowest degree.
  297. <P>
  298. <P>
  299. <a name=r38_0358>
  300. <title>revgradlex_term_order</title></a>
  301. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  302. E"></p>
  303. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  304. <b>REVGRADLEX TERM ORDER</b><P>
  305. <P>
  306. <P>
  307. <P>
  308. The terms are ordered first with their total
  309. degree (degree sum), and if the total degree is identical
  310. the comparison is the inverse of
  311. <a href=r38_0350.html#r38_0356>lex term order</a>.
  312. With
  313. <a href=r38_0350.html#r38_0368>groebner</a> and
  314. <a href=r38_0350.html#r38_0391>groebnerf</a>
  315. calculations this term order
  316. is similar to
  317. <a href=r38_0350.html#r38_0357>gradlex term order</a>; it is known
  318. as most efficient ordering with respect to computing time.
  319. <P>
  320. <P>
  321. <a name=r38_0359>
  322. <title>gradlexgradlex_term_order</title></a>
  323. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  324. E"></p>
  325. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  326. <b>GRADLEXGRADLEX TERM ORDER</b><P>
  327. <P>
  328. <P>
  329. <P>
  330. The terms are separated into two groups where the
  331. second parameter of the
  332. <a href=r38_0350.html#r38_0354>torder</a> call determines
  333. the length of the first group. For a comparison first
  334. the total degrees of both variable groups are compared.
  335. If both are equal
  336. <a href=r38_0350.html#r38_0357>gradlex term order</a> comparison is applied to t
  337. he first
  338. group, and if that does not decide
  339. <a href=r38_0350.html#r38_0357>gradlex term order</a>
  340. is applied for the second group. This order has the elimination
  341. property for the variable groups. It can be used e.g. for
  342. separating variables from parameters.
  343. <P>
  344. <P>
  345. <a name=r38_0360>
  346. <title>gradlexrevgradlex_term_order</title></a>
  347. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  348. E"></p>
  349. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  350. <b>GRADLEXREVGRADLEX TERM ORDER</b><P>
  351. <P>
  352. <P>
  353. <P>
  354. Similar to
  355. <a href=r38_0350.html#r38_0359>gradlexgradlex term order</a>, but using
  356. <a href=r38_0350.html#r38_0358>revgradlex term order</a> for the second group.
  357. <P>
  358. <P>
  359. <a name=r38_0361>
  360. <title>lexgradlex_term_order</title></a>
  361. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  362. E"></p>
  363. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  364. <b>LEXGRADLEX TERM ORDER</b><P>
  365. <P>
  366. <P>
  367. <P>
  368. Similar to
  369. <a href=r38_0350.html#r38_0359>gradlexgradlex term order</a>, but using
  370. <a href=r38_0350.html#r38_0356>lex term order</a> for the first group.
  371. <P>
  372. <P>
  373. <a name=r38_0362>
  374. <title>lexrevgradlex_term_order</title></a>
  375. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  376. E"></p>
  377. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  378. <b>LEXREVGRADLEX TERM ORDER</b><P>
  379. <P>
  380. <P>
  381. <P>
  382. Similar to
  383. <a href=r38_0350.html#r38_0359>gradlexgradlex term order</a>, but using
  384. <a href=r38_0350.html#r38_0356>lex term order</a> for the first group
  385. <a href=r38_0350.html#r38_0358>revgradlex term order</a> for the second group.
  386. <P>
  387. <P>
  388. <a name=r38_0363>
  389. <title>weighted_term_order</title></a>
  390. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  391. E"></p>
  392. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  393. <b>WEIGHTED TERM ORDER</b><P>
  394. <P>
  395. <P>
  396. <P>
  397. establishes a graduated ordering
  398. similar to
  399. <a href=r38_0350.html#r38_0357>gradlex term order</a>, where the exponents first
  400. are
  401. multiplied by the given weights. If there are less weight values than
  402. variables, the weight list is extended by ones. If the weighted degree
  403. comparison is not decidable, the
  404. <a href=r38_0350.html#r38_0356>lex term order</a> is used.
  405. <P>
  406. <P>
  407. <a name=r38_0364>
  408. <title>graded_term_order</title></a>
  409. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  410. E"></p>
  411. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  412. <b>GRADED TERM ORDER</b><P>
  413. <P>
  414. <P>
  415. <P>
  416. establishes a cascaded term ordering: first a graduated ordering
  417. similar to
  418. <a href=r38_0350.html#r38_0357>gradlex term order</a> is used, where the exponen
  419. ts first are
  420. multiplied by the given weights. If there are less weight values than
  421. variables, the weight list is extended by ones. If the weighted degree
  422. comparison is not decidable, the term ordering described in the following
  423. parameters of the
  424. <a href=r38_0350.html#r38_0354>torder</a> command is used.
  425. <P>
  426. <P>
  427. <a name=r38_0365>
  428. <title>matrix_term_order</title></a>
  429. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  430. E"></p>
  431. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  432. <b>MATRIX TERM ORDER</b><P>
  433. <P>
  434. <P>
  435. <P>
  436. Any arbitrary term order mode can be installed by a matrix with
  437. integer elements where the row length corresponds to the variable
  438. number. The matrix must have at least as many rows as columns.
  439. It must have full rank, and the top nonzero element of each column
  440. must be positive.
  441. <P>
  442. <P>
  443. The matrix <em>term order mode</em>
  444. defines a term order where the exponent vectors of the monomials are
  445. first multiplied by the matrix and the resulting vectors are compared
  446. lexicographically.
  447. <P>
  448. <P>
  449. If the switch
  450. <a href=r38_0250.html#r38_0273>comp</a> is on, the matrix is converted into
  451. a compiled LISP program for faster execution. A matrix can also be
  452. compiled explicitly, see
  453. <a href=r38_0350.html#r38_0355>torder_compile</a>.
  454. <P>
  455. <P>
  456. <a name=r38_0366>
  457. <title>Term order</title></a>
  458. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  459. E"></p>
  460. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  461. <b>Term order</b><menu>
  462. <li><a href=r38_0350.html#r38_0353>Term order introduction</a><P>
  463. <li><a href=r38_0350.html#r38_0354>torder operator</a><P>
  464. <li><a href=r38_0350.html#r38_0355>torder_compile operator</a><P>
  465. <li><a href=r38_0350.html#r38_0356>lex term order concept</a><P>
  466. <li><a href=r38_0350.html#r38_0357>gradlex term order concept</a><P>
  467. <li><a href=r38_0350.html#r38_0358>revgradlex term order concept</a><P>
  468. <li><a href=r38_0350.html#r38_0359>gradlexgradlex term order concept</a><P>
  469. <li><a href=r38_0350.html#r38_0360>gradlexrevgradlex term order concept</a><P>
  470. <li><a href=r38_0350.html#r38_0361>lexgradlex term order concept</a><P>
  471. <li><a href=r38_0350.html#r38_0362>lexrevgradlex term order concept</a><P>
  472. <li><a href=r38_0350.html#r38_0363>weighted term order concept</a><P>
  473. <li><a href=r38_0350.html#r38_0364>graded term order concept</a><P>
  474. <li><a href=r38_0350.html#r38_0365>matrix term order concept</a><P>
  475. </menu>
  476. <a name=r38_0367>
  477. <title>gvars</title></a>
  478. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  479. E"></p>
  480. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  481. <b>GVARS</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  482. <P>
  483. <P> <H3>
  484. syntax: </H3>
  485. <P>
  486. <P>
  487. <em>gvars</em>({&lt;exp&gt;,&lt;exp&gt;,... })
  488. <P>
  489. <P>
  490. <P>
  491. <P>
  492. where &lt;exp&gt; are expressions or
  493. <a href=r38_0001.html#r38_0045>equation</a>s.
  494. <P>
  495. <P>
  496. <em>gvars</em>extracts from the expressions the
  497. <a href=r38_0001.html#r38_0002>kernel</a><em>s</em>
  498. which can
  499. play the role of variables for a
  500. <a href=r38_0350.html#r38_0368>groebner</a> or
  501. <a href=r38_0350.html#r38_0391>groebnerf</a>
  502. calculation.
  503. <P>
  504. <P>
  505. <a name=r38_0368>
  506. <title>groebner</title></a>
  507. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  508. E"></p>
  509. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  510. <b>GROEBNER</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  511. <P>
  512. <P>
  513. <P>
  514. <P> <H3>
  515. syntax: </H3>
  516. <em>groebner</em>({<em>exp</em>, ...})
  517. <P>
  518. <P>
  519. <P>
  520. <P>
  521. where {<em>exp</em>, ... } is a list of
  522. expressions or equations.
  523. <P>
  524. <P>
  525. The operator <em>groebner</em> implements the Buchberger algorithm
  526. for computing Groebner bases for a given set of
  527. expressions with respect to the given set of variables in the order
  528. given. As a side effect, the sequence of variables is stored as a REDUCE list
  529. in the shared variable
  530. <a href=r38_0350.html#r38_0371>gvarslast</a> - this is important in cases
  531. where the algorithm rearranges the variable sequence because
  532. <a href=r38_0350.html#r38_0370>groebopt</a>
  533. is <em>on</em>.
  534. <P>
  535. <P>
  536. <P> <H3>
  537. examples: </H3>
  538. <p><pre><tt>
  539. groebner({x**2+y**2-1,x-y})
  540. {X - Y,2*Y**2 -1}
  541. </tt></pre><p> <P> <H3>
  542. related: </H3>
  543. <P>
  544. _ _ _
  545. <a href=r38_0350.html#r38_0391>groebnerf</a>operator
  546. <P>
  547. _ _ _
  548. <a href=r38_0350.html#r38_0371>gvarslast</a> variable
  549. <P>
  550. _ _ _
  551. <a href=r38_0350.html#r38_0370>groebopt</a> switch
  552. <P>
  553. _ _ _
  554. <a href=r38_0350.html#r38_0372>groebprereduce</a> switch
  555. <P>
  556. _ _ _
  557. <a href=r38_0350.html#r38_0373>groebfullreduction</a> switch
  558. <P>
  559. _ _ _
  560. <a href=r38_0350.html#r38_0374>gltbasis</a> switch
  561. <P>
  562. _ _ _
  563. <a href=r38_0350.html#r38_0375>gltb</a> variable
  564. <P>
  565. _ _ _
  566. <a href=r38_0350.html#r38_0376>glterms</a> variable
  567. <P>
  568. _ _ _
  569. <a href=r38_0350.html#r38_0377>groebstat</a> switch
  570. <P>
  571. _ _ _
  572. <a href=r38_0350.html#r38_0378>trgroeb</a> switch
  573. <P>
  574. _ _ _
  575. <a href=r38_0350.html#r38_0379>trgroebs</a> switch
  576. <P>
  577. _ _ _
  578. <a href=r38_0350.html#r38_0396>groebprot</a> switch
  579. <P>
  580. _ _ _
  581. <a href=r38_0350.html#r38_0397>groebprotfile</a> variable
  582. <P>
  583. _ _ _
  584. <a href=r38_0350.html#r38_0398>groebnert</a> operator
  585. <P>
  586. <P>
  587. <P>
  588. <a name=r38_0369>
  589. <title>groebner_walk</title></a>
  590. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  591. E"></p>
  592. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  593. <b>GROEBNER\_WALK</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  594. <P>
  595. The operator <em>groebner_walk</em> computes a <em>lex</em> basis
  596. from a given <em>graded</em> (or <em>weighted</em>) one.
  597. <P> <H3>
  598. syntax: </H3>
  599. <P>
  600. <P>
  601. <em>groebner_walk</em>(&lt;g&gt;)
  602. <P>
  603. <P>
  604. <P>
  605. where &lt;g&gt; is a <em>graded</em> basis (or <em>weighted</em> basis
  606. with a weight vector with one repeated element) of the polynomial ideal.
  607. <em>Groebner_walk</em> computes a sequence of monomial bases, each
  608. time lifting the full system to a complete basis. <em>Groebner_walk</em>
  609. should be called only in cases, where a normal <em>kex</em> computation
  610. would take too much computer time.
  611. <P>
  612. <P>
  613. The operator
  614. <a href=r38_0350.html#r38_0354>torder</a> has to be called before in order to
  615. define the variable sequence and the term order mode of &lt;g&gt;.
  616. <P>
  617. <P>
  618. The variable
  619. <a href=r38_0350.html#r38_0371>gvarslast</a> is not set.
  620. <P>
  621. <P>
  622. Do not call <em>groebner_walk</em> with <em>on</em>
  623. <a href=r38_0350.html#r38_0370>groebopt</a>.
  624. <P>
  625. <P>
  626. <em>Groebner_walk</em>includes some overhead (such as e. g.
  627. computation with division). On the other hand, sometimes
  628. <em>groebner_walk</em> is faster than a direct <em>lex</em> computation.
  629. <P>
  630. <P>
  631. <a name=r38_0370>
  632. <title>groebopt</title></a>
  633. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  634. E"></p>
  635. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  636. <b>GROEBOPT</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>switch</b><P>
  637. <P>
  638. If <em>groebopt</em> is set ON, the sequence of variables is optimized
  639. with respect to execution speed of <em>groebner</em> calculations;
  640. note that the final list of variables is available in
  641. <a href=r38_0350.html#r38_0371>gvarslast</a>.
  642. By default <em>groebopt</em> is off, conserving the original variable
  643. sequence.
  644. <P>
  645. <P>
  646. An explicitly declared dependency using the
  647. <a href=r38_0150.html#r38_0192>depend</a>
  648. declaration supersedes the variable optimization.
  649. <P> <H3>
  650. examples: </H3>
  651. <p><pre><tt></tt></pre><p><P>
  652. <P>
  653. guarantees that a will be placed in front of x and y.
  654. <P>
  655. <P>
  656. <a name=r38_0371>
  657. <title>gvarslast</title></a>
  658. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  659. E"></p>
  660. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  661. <b>GVARSLAST</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>variable</b><P>
  662. <P>
  663. After a
  664. <a href=r38_0350.html#r38_0368>groebner</a> or
  665. <a href=r38_0350.html#r38_0391>groebnerf</a> calculation
  666. the actual variable sequence is stored in the variable
  667. <em>gvarslast</em>. If
  668. <a href=r38_0350.html#r38_0370>groebopt</a> is <em>on</em>
  669. <em>gvarslast</em> shows the variable sequence after reordering.
  670. <P>
  671. <P>
  672. <a name=r38_0372>
  673. <title>groebprereduce</title></a>
  674. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  675. E"></p>
  676. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  677. <b>GROEBPREREDUCE</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>switch</b><P>
  678. <P>
  679. If <em>groebprereduce</em> set ON,
  680. <a href=r38_0350.html#r38_0368>groebner</a>
  681. and
  682. <a href=r38_0350.html#r38_0391>groebnerf</a> try to simplify the
  683. input expressions: if the head term of an input expression is a
  684. multiple of the head term of another expression, it can be reduced;
  685. these reductions are done cyclicly as long as possible in order to
  686. shorten the main part of the algorithm.
  687. <P>
  688. <P>
  689. By default <em>groebprereduce</em> is off.
  690. <P>
  691. <P>
  692. <a name=r38_0373>
  693. <title>groebfullreduction</title></a>
  694. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  695. E"></p>
  696. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  697. <b>GROEBFULLREDUCTION</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>switch</b><P>
  698. <P>
  699. If <em>groebfullreduction</em> set off, the polynomial reduction steps during
  700. <a href=r38_0350.html#r38_0368>groebner</a> and
  701. <a href=r38_0350.html#r38_0391>groebnerf</a> are limited to the pure head
  702. term reduction; subsequent terms are reduced otherwise.
  703. <P>
  704. <P>
  705. By default <em>groebfullreduction</em> is on.
  706. <P>
  707. <P>
  708. <a name=r38_0374>
  709. <title>gltbasis</title></a>
  710. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  711. E"></p>
  712. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  713. <b>GLTBASIS</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>switch</b><P>
  714. <P>
  715. If <em>gltbasis</em> set on, the leading terms of the result basis
  716. of a
  717. <a href=r38_0350.html#r38_0368>groebner</a> or
  718. <a href=r38_0350.html#r38_0391>groebnerf</a> calculation are
  719. extracted. They are collected as a basis of monomials, which is
  720. available as value of the global variable
  721. <a href=r38_0350.html#r38_0375>gltb</a>.
  722. <P>
  723. <P>
  724. <a name=r38_0375>
  725. <title>gltb</title></a>
  726. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  727. E"></p>
  728. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  729. <b>GLTB</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>variable</b><P>
  730. <P>
  731. See
  732. <a href=r38_0350.html#r38_0374>gltbasis</a>
  733. <P>
  734. <P>
  735. <a name=r38_0376>
  736. <title>glterms</title></a>
  737. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  738. E"></p>
  739. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  740. <b>GLTERMS</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>variable</b><P>
  741. <P>
  742. If the expressions in a
  743. <a href=r38_0350.html#r38_0368>groebner</a> or
  744. <a href=r38_0350.html#r38_0391>groebnerf</a>
  745. call contain parameters (symbols
  746. which are not member of the variable list), the share variable
  747. <em>glterms</em> is set to a list of expression which during the
  748. calculation were assumed to be nonzero. The calculated bases
  749. are valid only under the assumption that all these expressions do
  750. not vanish.
  751. <P>
  752. <P>
  753. <a name=r38_0377>
  754. <title>groebstat</title></a>
  755. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  756. E"></p>
  757. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  758. <b>GROEBSTAT</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>switch</b><P>
  759. <P>
  760. if <em>groebstat</em> is on, a summary of the
  761. <a href=r38_0350.html#r38_0368>groebner</a> or
  762. <a href=r38_0350.html#r38_0391>groebnerf</a> computation is printed
  763. at the end
  764. including the computing time, the number of intermediate
  765. H polynomials and the counters for the criteria hits.
  766. <P>
  767. <P>
  768. <a name=r38_0378>
  769. <title>trgroeb</title></a>
  770. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  771. E"></p>
  772. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  773. <b>TRGROEB</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>switch</b><P>
  774. <P>
  775. if <em>trgroeb</em> is on, intermediate H polynomials are
  776. printed during a
  777. <a href=r38_0350.html#r38_0368>groebner</a>
  778. or
  779. <a href=r38_0350.html#r38_0391>groebnerf</a> calculation.
  780. <P>
  781. <P>
  782. <a name=r38_0379>
  783. <title>trgroebs</title></a>
  784. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  785. E"></p>
  786. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  787. <b>TRGROEBS</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>switch</b><P>
  788. <P>
  789. if <em>trgroebs</em> is on, intermediate H and S polynomials are
  790. printed during a
  791. <a href=r38_0350.html#r38_0368>groebner</a> or
  792. <a href=r38_0350.html#r38_0391>groebnerf</a> calculation.
  793. <P>
  794. <P>
  795. <a name=r38_0380>
  796. <title>gzerodim_</title></a>
  797. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  798. E"></p>
  799. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  800. <b>GZERODIM?</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  801. <P>
  802. <P> <H3>
  803. syntax: </H3>
  804. <P>
  805. <P>
  806. <em>gzerodim!?</em>(&lt;basis&gt;)
  807. <P>
  808. <P>
  809. <P>
  810. <P>
  811. where &lt;bas&gt; is a Groebner basis in the current
  812. <a href=r38_0350.html#r38_0353>term order</a> with the actual setting
  813. (see
  814. <a href=r38_0350.html#r38_0352>ideal parameters</a>).
  815. <P>
  816. <P>
  817. <em>gzerodim!?</em>tests whether the ideal spanned by the given basis
  818. has dimension zero. If yes, the number of zeros is returned,
  819. <a href=r38_0001.html#r38_0014>nil</a> otherwise.
  820. <P>
  821. <P>
  822. <a name=r38_0381>
  823. <title>gdimension</title></a>
  824. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  825. E"></p>
  826. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  827. <b>GDIMENSION</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  828. <P>
  829. <P>
  830. <P>
  831. <P> <H3>
  832. syntax: </H3>
  833. <em>gdimension</em>(&lt;bas&gt;)
  834. <P>
  835. <P>
  836. <P>
  837. <P>
  838. where &lt;bas&gt; is a
  839. <a href=r38_0350.html#r38_0381>groebner</a> basis in the current
  840. term order (see
  841. <a href=r38_0350.html#r38_0352>ideal parameters</a>).
  842. <em>gdimension</em> computes the dimension of the ideal
  843. spanned by the given basis and returns the dimension as an integer
  844. number. The Kredel-Weispfenning algorithm is used: the dimension
  845. is the length of the longest independent variable set,
  846. see
  847. <a href=r38_0350.html#r38_0382>gindependent_sets</a>
  848. <P>
  849. <P>
  850. <a name=r38_0382>
  851. <title>gindependent_sets</title></a>
  852. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  853. E"></p>
  854. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  855. <b>GINDEPENDENT\_SETS</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  856. <P>
  857. <P>
  858. <P>
  859. <P> <H3>
  860. syntax: </H3>
  861. <em>gindependent_sets</em>(&lt;bas&gt;)
  862. <P>
  863. <P>
  864. <P>
  865. <P>
  866. where &lt;bas&gt; is a
  867. <a href=r38_0350.html#r38_0382>groebner</a> basis in any <em>term order</em>
  868. (which must be the current <em>term order</em>) with the specified
  869. variables (see
  870. <a href=r38_0350.html#r38_0352>ideal parameters</a>).
  871. <P>
  872. <P>
  873. <em>Gindependent_sets</em>computes the maximal
  874. left independent variable sets of the ideal, that are
  875. the variable sets which play the role of free parameters in the
  876. current ideal basis. Each set is a list which is a subset of the
  877. variable list. The result is a list of these sets. For an
  878. ideal with dimension zero the list is empty.
  879. The Kredel-Weispfenning algorithm is used.
  880. <P>
  881. <P>
  882. <a name=r38_0383>
  883. <title>dd_groebner</title></a>
  884. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  885. E"></p>
  886. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  887. <b>DD_GROEBNER</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  888. <P>
  889. For a homogeneous system of polynomials under
  890. <a href=r38_0350.html#r38_0364>graded term order</a>,
  891. <a href=r38_0350.html#r38_0357>gradlex term order</a>,
  892. <a href=r38_0350.html#r38_0358>revgradlex term order</a> <P>
  893. <P>
  894. or
  895. <a href=r38_0350.html#r38_0363>weighted term order</a>
  896. a Groebner Base can be computed with limiting the grade
  897. of the intermediate S polynomials:
  898. <P> <H3>
  899. syntax: </H3>
  900. <P>
  901. <P>
  902. <em>dd_groebner</em>(&lt;d1&gt;,&lt;d2&gt;,&lt;plist&gt;)
  903. <P>
  904. <P>
  905. <P>
  906. where &lt;d1&gt; is a non negative integer and &lt;d2&gt; is an integer
  907. or ``infinity&quot;. A pair of polynomials is considered
  908. only if the grade of the lcm of their head terms is between
  909. &lt;d1&gt; and &lt;d2&gt;.
  910. For the term orders <em>graded</em> or <em>weighted</em> the (first) weight
  911. vector is used for the grade computation. Otherwise the total
  912. degree of a term is used.
  913. <P>
  914. <P>
  915. <a name=r38_0384>
  916. <title>glexconvert</title></a>
  917. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  918. E"></p>
  919. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  920. <b>GLEXCONVERT</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  921. <P>
  922. <P>
  923. <P>
  924. <P> <H3>
  925. syntax: </H3>
  926. <em>glexconvert</em>(&lt;bas&gt;[,&lt;vars&gt;][,MAXDEG=&lt;mx&gt;]
  927. [,NEWVARS=&lt;nv&gt;])
  928. <P>
  929. <P>
  930. <P>
  931. <P>
  932. where &lt;bas&gt; is a
  933. <a href=r38_0350.html#r38_0382>groebner</a> basis
  934. in the current term order, &lt;mx&gt; (optional) is a positive
  935. integer and &lt;nvl&gt; (optional) is a list of variables
  936. (see
  937. <a href=r38_0350.html#r38_0352>ideal parameters</a>).
  938. <P>
  939. <P>
  940. The operator <em>glexconvert</em> converts the basis
  941. of a zero-dimensional ideal (finite number
  942. of isolated solutions) from arbitrary ordering into a basis under
  943. <a href=r38_0350.html#r38_0356>lex term order</a>.
  944. <P>
  945. <P>
  946. The parameter &lt;newvars&gt; defines the new variable sequence.
  947. If omitted, the
  948. original variable sequence is used. If only a subset of variables is
  949. specified here, the partial ideal basis is evaluated.
  950. <P>
  951. <P>
  952. If &lt;newvars&gt; is a list with one element, the minimal
  953. <em>univariate polynomial</em> is computed.
  954. <P>
  955. <P>
  956. &lt;maxdeg&gt; is an upper limit for the degrees. The algorithm stops with
  957. an error message, if this limit is reached.
  958. <P>
  959. <P>
  960. A warning occurs, if the ideal is not zero dimensional.
  961. <P>
  962. <P>
  963. During the call the <em>term order</em> of the input basis must
  964. be active.
  965. <P>
  966. <P>
  967. <P>
  968. <a name=r38_0385>
  969. <title>greduce</title></a>
  970. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  971. E"></p>
  972. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  973. <b>GREDUCE</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  974. <P>
  975. <P> <H3>
  976. syntax: </H3>
  977. <P>
  978. <P>
  979. <em>greduce</em>(exp, {exp1, exp2, ... , expm})
  980. <P>
  981. <P>
  982. <P>
  983. <P>
  984. where exp is an expression, and {exp1, exp2, ... , expm} is
  985. a list of expressions or equations.
  986. <P>
  987. <P>
  988. <em>greduce</em>is functionally equivalent with a call to
  989. <a href=r38_0350.html#r38_0382>groebner</a> and then a call to
  990. <a href=r38_0350.html#r38_0386>preduce</a>.
  991. <P>
  992. <P>
  993. <a name=r38_0386>
  994. <title>preduce</title></a>
  995. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  996. E"></p>
  997. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  998. <b>PREDUCE</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  999. <P>
  1000. <P> <H3>
  1001. syntax: </H3>
  1002. <P>
  1003. <P>
  1004. <em>preduce</em>(&lt;p&gt;, {&lt;exp&gt;, ... })
  1005. <P>
  1006. <P>
  1007. <P>
  1008. <P>
  1009. where &lt;p&gt; is an expression, and {&lt;exp&gt;, ... } is
  1010. a list of expressions or equations.
  1011. <P>
  1012. <P>
  1013. <em>Preduce</em>computes the remainder of <em>exp</em>
  1014. modulo the given set of polynomials resp. equations.
  1015. This result is unique (canonical) only if the given set
  1016. is a <em>groebner</em> basis under the current
  1017. <a href=r38_0350.html#r38_0353>term order</a>
  1018. <P>
  1019. <P>
  1020. see also:
  1021. <a href=r38_0350.html#r38_0399>preducet</a> operator.
  1022. <P>
  1023. <P>
  1024. <a name=r38_0387>
  1025. <title>idealquotient</title></a>
  1026. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1027. E"></p>
  1028. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1029. <b>IDEALQUOTIENT</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  1030. <P>
  1031. <P> <H3>
  1032. syntax: </H3>
  1033. <P>
  1034. <P>
  1035. <em>idealquotient</em>({&lt;exp&gt;, ...}, &lt;d&gt;)
  1036. <P>
  1037. <P>
  1038. <P>
  1039. <P>
  1040. where {&lt;exp&gt;,...} is a list of
  1041. expressions or equations, &lt;d&gt; is a single expression or equation.
  1042. <P>
  1043. <P>
  1044. <em>Idealquotient</em>computes the ideal quotient:
  1045. ideal spanned by the expressions {&lt;exp&gt;,...}
  1046. divided by the single polynomial/expression &lt;f&gt;. The result
  1047. is the
  1048. <a href=r38_0350.html#r38_0382>groebner</a> basis of the quotient ideal.
  1049. <P>
  1050. <P>
  1051. <a name=r38_0388>
  1052. <title>hilbertpolynomial</title></a>
  1053. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1054. E"></p>
  1055. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1056. <b>HILBERTPOLYNOMIAL</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  1057. <P>
  1058. <P>
  1059. <P>
  1060. <P> <H3>
  1061. syntax: </H3>
  1062. hilbertpolynomial(&lt;bas&gt;)
  1063. <P>
  1064. <P>
  1065. <P>
  1066. <P>
  1067. where &lt;bas&gt; is a
  1068. <a href=r38_0350.html#r38_0382>groebner</a> basis in the
  1069. current
  1070. <a href=r38_0350.html#r38_0353>term order</a>.
  1071. <P>
  1072. <P>
  1073. The degree of the <em>Hilbert polynomial</em> is the
  1074. dimension of the ideal spanned by the basis. For an
  1075. ideal of dimension zero the Hilbert polynomial is a
  1076. constant which is the number of common zeros of the
  1077. ideal (including eventual multiplicities).
  1078. The <em>Hollmann algorithm</em> is used.
  1079. <P>
  1080. <P>
  1081. <a name=r38_0389>
  1082. <title>saturation</title></a>
  1083. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1084. E"></p>
  1085. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1086. <b>SATURATION</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  1087. <P>
  1088. <P> <H3>
  1089. syntax: </H3>
  1090. <P>
  1091. <P>
  1092. <em>saturation</em>({&lt;exp&gt;, ...}, &lt;p&gt;)
  1093. <P>
  1094. <P>
  1095. <P>
  1096. <P>
  1097. where {&lt;exp&gt;,...} is a list of
  1098. expressions or equations, &lt;p&gt; is a single polynomial.
  1099. <P>
  1100. <P>
  1101. <em>Saturation</em>computes the quotient of the polynomial &lt;p&gt;
  1102. and a power (with unknown but finite exponent) of the ideal built from
  1103. {&lt;exp&gt;, ...}. The result is the computed quotient. <em>Saturation</em>
  1104. calls
  1105. <a href=r38_0350.html#r38_0387>idealquotient</a> several times until the result
  1106. does not change
  1107. any more.
  1108. <P>
  1109. <P>
  1110. <a name=r38_0390>
  1111. <title>Basic Groebner operators</title></a>
  1112. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1113. E"></p>
  1114. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1115. <b>Basic Groebner operators</b><menu>
  1116. <li><a href=r38_0350.html#r38_0367>gvars operator</a><P>
  1117. <li><a href=r38_0350.html#r38_0382>groebner operator</a><P>
  1118. <li><a href=r38_0350.html#r38_0369>groebner\_walk operator</a><P>
  1119. <li><a href=r38_0350.html#r38_0370>groebopt switch</a><P>
  1120. <li><a href=r38_0350.html#r38_0371>gvarslast variable</a><P>
  1121. <li><a href=r38_0350.html#r38_0372>groebprereduce switch</a><P>
  1122. <li><a href=r38_0350.html#r38_0373>groebfullreduction switch</a><P>
  1123. <li><a href=r38_0350.html#r38_0374>gltbasis switch</a><P>
  1124. <li><a href=r38_0350.html#r38_0375>gltb variable</a><P>
  1125. <li><a href=r38_0350.html#r38_0376>glterms variable</a><P>
  1126. <li><a href=r38_0350.html#r38_0377>groebstat switch</a><P>
  1127. <li><a href=r38_0350.html#r38_0378>trgroeb switch</a><P>
  1128. <li><a href=r38_0350.html#r38_0379>trgroebs switch</a><P>
  1129. <li><a href=r38_0350.html#r38_0380>gzerodim? operator</a><P>
  1130. <li><a href=r38_0350.html#r38_0381>gdimension operator</a><P>
  1131. <li><a href=r38_0350.html#r38_0382>gindependent\_sets operator</a><P>
  1132. <li><a href=r38_0350.html#r38_0383>dd_groebner operator</a><P>
  1133. <li><a href=r38_0350.html#r38_0384>glexconvert operator</a><P>
  1134. <li><a href=r38_0350.html#r38_0385>greduce operator</a><P>
  1135. <li><a href=r38_0350.html#r38_0386>preduce operator</a><P>
  1136. <li><a href=r38_0350.html#r38_0387>idealquotient operator</a><P>
  1137. <li><a href=r38_0350.html#r38_0388>hilbertpolynomial operator</a><P>
  1138. <li><a href=r38_0350.html#r38_0389>saturation operator</a><P>
  1139. </menu>
  1140. <a name=r38_0391>
  1141. <title>groebnerf</title></a>
  1142. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1143. E"></p>
  1144. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1145. <b>GROEBNERF</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  1146. <P>
  1147. <P> <H3>
  1148. syntax: </H3>
  1149. <P>
  1150. <P>
  1151. <em>groebnerf</em>({&lt;exp&gt;, ...}[,{},{&lt;nz&gt;, ... }]);
  1152. <P>
  1153. <P>
  1154. <P>
  1155. <P>
  1156. where {&lt;exp&gt;, ... } is a list of expressions or
  1157. equations, and {&lt;nz&gt;,... } is
  1158. an optional list of polynomials to be considered as non zero
  1159. for this calculation. An empty list must be passed as second argument
  1160. if the non-zero list is specified.
  1161. <P>
  1162. <P>
  1163. <em>groebnerf</em>tries to separate polynomials into individual factors and
  1164. to branch the computation in a recursive manner (factorization tree).
  1165. The result is a list of partial Groebner bases.
  1166. Multiplicities (one factor with a higher power, the same partial basis
  1167. twice) are deleted as early as possible in order to speed up the
  1168. calculation.
  1169. <P>
  1170. <P>
  1171. The third parameter of <em>groebnerf</em> declares some polynomials
  1172. nonzero. If any of these is found in a branch of the calculation
  1173. the branch is canceled.
  1174. <P>
  1175. <P>
  1176. <P> <H3>
  1177. example: </H3>
  1178. <p><pre><tt>
  1179. groebnerf({ 3*x**2*y+2*x*y+y+9*x**2+5*x = 3,
  1180. 2*x**3*y-x*y-y+6*x**3-2*x**2-3*x = -3,
  1181. x**3*y+x**2*y+3*x**3+2*x**2 }, {y,x});
  1182. {{Y - 3,X},
  1183. 2
  1184. {2*Y + 2*X - 1,2*X - 5*X - 5}}
  1185. </tt></pre><p> <P> <H3>
  1186. related: </H3>
  1187. <P>
  1188. _ _ _
  1189. <a href=r38_0350.html#r38_0393>groebresmax</a>variable
  1190. <P>
  1191. _ _ _
  1192. <a href=r38_0350.html#r38_0392>groebmonfac</a> variable
  1193. <P>
  1194. _ _ _
  1195. <a href=r38_0350.html#r38_0394>groebrestriction</a> variable
  1196. <P>
  1197. _ _ _
  1198. <a href=r38_0350.html#r38_0382>groebner</a> operator
  1199. <P>
  1200. _ _ _
  1201. <a href=r38_0350.html#r38_0371>gvarslast</a> variable
  1202. <P>
  1203. _ _ _
  1204. <a href=r38_0350.html#r38_0370>groebopt</a> switch
  1205. <P>
  1206. _ _ _
  1207. <a href=r38_0350.html#r38_0372>groebprereduce</a> switch
  1208. <P>
  1209. _ _ _
  1210. <a href=r38_0350.html#r38_0373>groebfullreduction</a> switch
  1211. <P>
  1212. _ _ _
  1213. <a href=r38_0350.html#r38_0374>gltbasis</a> switch
  1214. <P>
  1215. _ _ _
  1216. <a href=r38_0350.html#r38_0375>gltb</a> variable
  1217. <P>
  1218. _ _ _
  1219. <a href=r38_0350.html#r38_0376>glterms</a> variable
  1220. <P>
  1221. _ _ _
  1222. <a href=r38_0350.html#r38_0377>groebstat</a> switch
  1223. <P>
  1224. _ _ _
  1225. <a href=r38_0350.html#r38_0378>trgroeb</a> switch
  1226. <P>
  1227. _ _ _
  1228. <a href=r38_0350.html#r38_0379>trgroebs</a> switch
  1229. <P>
  1230. _ _ _
  1231. <a href=r38_0350.html#r38_0398>groebnert</a> operator
  1232. <P>
  1233. <P>
  1234. <P>
  1235. <a name=r38_0392>
  1236. <title>groebmonfac</title></a>
  1237. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1238. E"></p>
  1239. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1240. <b>GROEBMONFAC</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>variable</b><P>
  1241. <P>
  1242. The variable <em>groebmonfac</em> is connected to
  1243. the handling of monomial factors. A monomial factor is a product
  1244. of variable powers as a factor, e.g. x**2*y in x**3*y -
  1245. 2*x**2*y**2. A monomial factor represents a solution of the type
  1246. x = 0 or y = 0 with a certain multiplicity. With
  1247. <a href=r38_0350.html#r38_0391>groebnerf</a> the multiplicity of monomial factor
  1248. s is lowered
  1249. to the value of the shared variable <em>groebmonfac</em>
  1250. which by default is 1 (= monomial factors remain present, but their
  1251. multiplicity is brought down). With
  1252. <em>groebmonfac</em>:= 0
  1253. the monomial factors are suppressed completely.
  1254. <P>
  1255. <P>
  1256. <a name=r38_0393>
  1257. <title>groebresmax</title></a>
  1258. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1259. E"></p>
  1260. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1261. <b>GROEBRESMAX</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>variable</b><P>
  1262. <P>
  1263. The variable <em>groebresmax</em>
  1264. controls during
  1265. <a href=r38_0350.html#r38_0391>groebnerf</a> calculations
  1266. the number of partial results. Its default value is 300. If
  1267. more partial results are calculated, the calculation is
  1268. terminated.
  1269. <P>
  1270. <P>
  1271. <a name=r38_0394>
  1272. <title>groebrestriction</title></a>
  1273. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1274. E"></p>
  1275. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1276. <b>GROEBRESTRICTION</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>variable</b><P>
  1277. <P>
  1278. During
  1279. <a href=r38_0350.html#r38_0391>groebnerf</a> calculations
  1280. irrelevant branches can be excluded
  1281. by setting the variable <em>groebrestriction</em>. The
  1282. following restrictions are implemented:
  1283. <P> <H3>
  1284. syntax: </H3>
  1285. <P>
  1286. <P>
  1287. <em>groebrestriction</em>:= <em>nonnegative</em>
  1288. <P>
  1289. <P>
  1290. <em>groebrestriction</em>:= <em>positive</em>
  1291. <P>
  1292. <P>
  1293. <em>groebrestriction</em>:= <em>zeropoint</em>
  1294. <P>
  1295. <P>
  1296. <P>
  1297. With <em>nonnegative</em> branches are excluded where one
  1298. polynomial has no nonnegative real zeros; with <em>positive</em>
  1299. the restriction is sharpened to positive zeros only.
  1300. The restriction <em>zeropoint</em> excludes all branches
  1301. which do not have the origin (0,0,...0) in their solution
  1302. set.
  1303. <P>
  1304. <P>
  1305. <a name=r38_0395>
  1306. <title>Factorizing Groebner bases</title></a>
  1307. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1308. E"></p>
  1309. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1310. <b>Factorizing Groebner bases</b><menu>
  1311. <li><a href=r38_0350.html#r38_0391>groebnerf operator</a><P>
  1312. <li><a href=r38_0350.html#r38_0392>groebmonfac variable</a><P>
  1313. <li><a href=r38_0350.html#r38_0393>groebresmax variable</a><P>
  1314. <li><a href=r38_0350.html#r38_0394>groebrestriction variable</a><P>
  1315. </menu>
  1316. <a name=r38_0396>
  1317. <title>groebprot</title></a>
  1318. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1319. E"></p>
  1320. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1321. <b>GROEBPROT</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>switch</b><P>
  1322. <P>
  1323. If <em>groebprot</em> is <em>ON</em> the computation steps during
  1324. <a href=r38_0350.html#r38_0386>preduce</a>,
  1325. <a href=r38_0350.html#r38_0385>greduce</a> and
  1326. <a href=r38_0350.html#r38_0382>groebner</a>
  1327. are collected in a list which is assigned to the variable
  1328. <a href=r38_0350.html#r38_0397>groebprotfile</a>.
  1329. <P>
  1330. <P>
  1331. <a name=r38_0397>
  1332. <title>groebprotfile</title></a>
  1333. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1334. E"></p>
  1335. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1336. <b>GROEBPROTFILE</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>variable</b><P>
  1337. <P>
  1338. See
  1339. <a href=r38_0350.html#r38_0396>groebprot</a> switch.
  1340. <P>
  1341. <P>
  1342. <a name=r38_0398>
  1343. <title>groebnert</title></a>
  1344. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1345. E"></p>
  1346. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1347. <b>GROEBNERT</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  1348. <P>
  1349. <P> <H3>
  1350. syntax: </H3>
  1351. <P>
  1352. <P>
  1353. <em>groebnert</em>({&lt;v&gt;=&lt;exp&gt;,...})
  1354. <P>
  1355. <P>
  1356. <P>
  1357. <P>
  1358. where &lt;v&gt; are
  1359. <a href=r38_0001.html#r38_0002>kernel</a><em>s</em> (simple or indexed variables
  1360. ),
  1361. &lt;exp&gt; are polynomials.
  1362. <P>
  1363. <P>
  1364. <em>groebnert</em>is functionally equivalent to a
  1365. <a href=r38_0350.html#r38_0382>groebner</a>
  1366. call for {&lt;exp&gt;,...}, but the result is a set of
  1367. equations where the left-hand sides are the basis elements while
  1368. the right-hand sides are the same values expressed as combinations
  1369. of the input formulas, expressed in terms of the names &lt;v&gt;
  1370. <P> <H3>
  1371. example: </H3>
  1372. <p><pre><tt>
  1373. groebnert({p1=2*x**2+4*y**2-100,p2=2*x-y+1});
  1374. GB1 := {2*X - Y + 1=P2,
  1375. 2
  1376. 9*Y - 2*Y - 199= - 2*X*P2 - Y*P2 + 2*P1 + P2}
  1377. </tt></pre><p><P>
  1378. <P>
  1379. <a name=r38_0399>
  1380. <title>preducet</title></a>
  1381. <p align="centre"><img src="redlogo.gif" width=621 height=60 border=0 alt="REDUC
  1382. E"></p>
  1383. <b><a href=r38_idx.html>INDEX</a></b><p><p>
  1384. <b>PREDUCET</b> _ _ _ _ _ _ _ _ _ _ _ _ <b>operator</b><P>
  1385. <P>
  1386. <P> <H3>
  1387. syntax: </H3>
  1388. <P>
  1389. <P>
  1390. <em>preduce</em>(&lt;p&gt;,{&lt;v&gt;=&lt;exp&gt;...})
  1391. <P>
  1392. <P>
  1393. <P>
  1394. where &lt;p&gt; is an expression, &lt;v&gt; are kernels
  1395. (simple or indexed variables),
  1396. <em>exp</em> are polynomials.
  1397. <P>
  1398. <P>
  1399. <em>preducet</em>computes the remainder of &lt;p&gt; modulo {&lt;exp&gt;,...}
  1400. similar to
  1401. <a href=r38_0350.html#r38_0386>preduce</a>, but the result is an equation
  1402. which expresses the remainder as combination of the polynomials.
  1403. <P> <H3>
  1404. example: </H3>
  1405. <p><pre><tt>
  1406. GB2 := {G1=2*X - Y + 1,G2=9*Y**2 - 2*Y - 199}
  1407. preducet(q=x**2,gb2);
  1408. - 16*Y + 208= - 18*X*G1 - 9*Y*G1 + 36*Q + 9*G1 - G2
  1409. </tt></pre><p><P>
  1410. <P>