Annotation of OpenXM/doc/Papers/dagb-noro.tex, Revision 1.7
1.7 ! noro 1: % $OpenXM: OpenXM/doc/Papers/dagb-noro.tex,v 1.6 2001/10/09 11:44:43 noro Exp $
1.1 noro 2: \setlength{\parskip}{10pt}
3:
4: \begin{slide}{}
1.2 noro 5: \begin{center}
1.5 noro 6: \fbox{\large Part I : OpenXM and Risa/Asir --- overview and history}
1.2 noro 7: \end{center}
8: \end{slide}
9:
10: \begin{slide}{}
1.7 ! noro 11: \fbox{Integration of mathematical software systems}
! 12:
! 13: \begin{itemize}
! 14: \item Data integration
! 15:
! 16: \begin{itemize}
! 17: \item OpenMath ({\tt http://www.openmath.org}) , MP [GRAY98]
! 18: \end{itemize}
! 19:
! 20: Standards for representing mathematical objects
! 21:
! 22: \item Control integration
! 23:
! 24: \begin{itemize}
! 25: \item MCP [WANG99], OMEI [LIAO01]
! 26: \end{itemize}
! 27:
! 28: Protocols for remote subroutine calls or session management
! 29:
! 30: \item Combination of two integrations
! 31:
! 32: \begin{itemize}
! 33: \item MathLink, OpenMath+MCP, MP+MCP
! 34:
! 35: and OpenXM ({\tt http://www.openxm.org})
! 36: \end{itemize}
! 37:
! 38: Both are necessary for practical implementation
! 39:
! 40: \end{itemize}
! 41: \end{slide}
! 42: \begin{slide}{}
1.5 noro 43: \fbox{OpenXM (Open message eXchange protocol for Mathematics) }
1.1 noro 44:
45: \begin{itemize}
1.5 noro 46: \item An environment for parallel distributed computation
47:
48: Both for interactive, non-interactive environment
49:
50: \item Client-server architecture
51:
52: Client $\Leftarrow$ OX (OpenXM) message $\Rightarrow$ Server
1.1 noro 53:
1.5 noro 54: OX (OpenXM) message : command and data
1.1 noro 55:
1.5 noro 56: \item Data
1.1 noro 57:
1.5 noro 58: Encoding : CMO (Common Mathematical Object format)
1.1 noro 59:
1.5 noro 60: Serialized representation of mathematical object
1.1 noro 61:
1.7 ! noro 62: --- Main idea was borrowed from OpenMath
1.5 noro 63: \item Command
1.1 noro 64:
1.5 noro 65: stack machine command --- server is a stackmachine
1.1 noro 66:
1.5 noro 67: + server's own command sequences --- hybrid server
1.1 noro 68: \end{itemize}
69: \end{slide}
70:
71: \begin{slide}{}
1.7 ! noro 72: \fbox{A computer algebra system Risa/Asir}
1.1 noro 73:
1.7 ! noro 74: ({\tt http://www.math.kobe-u.ac.jp/Asir/asir.html})
1.1 noro 75:
76: \begin{itemize}
1.7 ! noro 77: \item Traditional style software for polynomial computation
1.1 noro 78:
1.5 noro 79: No domain specification, automatic expansion
1.1 noro 80:
1.5 noro 81: \item User language with C-like syntax
1.1 noro 82:
1.5 noro 83: C language without type declaration, with list processing
1.1 noro 84:
1.5 noro 85: \item Builtin {\tt gdb}-like debugger for user programs
1.1 noro 86:
1.5 noro 87: \item Open source
1.1 noro 88:
1.5 noro 89: Whole source tree is available via CVS
1.2 noro 90:
1.5 noro 91: \item OpenXM interface
1.1 noro 92:
1.5 noro 93: \begin{itemize}
94: \item Risa/Asir is a main client in OpenXM package.
95: \item An OpenXM server {\tt ox\_asir}
1.7 ! noro 96: \item A library with OpenXM library interface {\tt libasir.a}
1.1 noro 97: \end{itemize}
98: \end{itemize}
99: \end{slide}
100:
101: \begin{slide}{}
1.7 ! noro 102: \fbox{Goal of developing Risa/Asir}
1.1 noro 103:
104: \begin{itemize}
1.5 noro 105: \item Efficient implementation in specific area
1.1 noro 106:
1.7 ! noro 107: \begin{itemize}
! 108: \item Polynomial factorization
1.1 noro 109:
1.7 ! noro 110: \item Groebner basis related computation
1.1 noro 111:
1.7 ! noro 112: Main target : coefficient swells in characteristic 0 cases
1.1 noro 113:
1.7 ! noro 114: Main tool : modular method
! 115: \end{itemize}
1.1 noro 116:
1.7 ! noro 117: \item Front-end or server of a general purpose math software
! 118:
! 119: We do not persist in self-containedness
! 120:
! 121: \begin{itemize}
! 122:
! 123: \item contains PARI library ({\tt http://www.parigp-home.de}) from the very beginning
! 124:
! 125: \item also acts as a main client of OpenXM package
! 126:
! 127: One can use various OpenXM servers
! 128:
! 129: \end{itemize}
1.1 noro 130:
131: \end{itemize}
132: \end{slide}
133:
134: \begin{slide}{}
1.5 noro 135: \fbox{Capability for polynomial computation}
1.1 noro 136:
137: \begin{itemize}
1.5 noro 138: \item Fundamental polynomial arithmetics
1.1 noro 139:
1.7 ! noro 140: recursive representation and distributed representation
1.1 noro 141:
1.5 noro 142: \item Polynomial factorization
1.1 noro 143:
144: \begin{itemize}
1.5 noro 145: \item Univariate : over {\bf Q}, algebraic number fields and finite fields
1.1 noro 146:
1.5 noro 147: \item Multivariate : over {\bf Q}
1.1 noro 148: \end{itemize}
149:
1.5 noro 150: \item Groebner basis computation
1.1 noro 151:
1.5 noro 152: \begin{itemize}
1.7 ! noro 153: \item Buchberger and $F_4$ [FAUG99] algorithm
1.1 noro 154:
1.7 ! noro 155: \item Change of ordering/RUR [ROUI96] of 0-dimensional ideals
1.1 noro 156:
1.5 noro 157: \item Primary ideal decomposition
1.1 noro 158:
1.5 noro 159: \item Computation of $b$-function (in Weyl Algebra)
1.1 noro 160: \end{itemize}
161: \end{itemize}
162: \end{slide}
163:
164: \begin{slide}{}
1.5 noro 165: \fbox{History of development : Polynomial factorization}
166:
1.1 noro 167: \begin{itemize}
1.5 noro 168: \item 1989
1.1 noro 169:
1.7 ! noro 170: Start of Risa/Asir with Boehm's conservative GC
! 171:
! 172: ({\tt http://www.hpl.hp.com/personal/Hans\_Boehm/gc})
1.1 noro 173:
1.5 noro 174: \item 1989-1992
1.2 noro 175:
1.5 noro 176: Univariate and multivariate factorizers over {\bf Q}
1.1 noro 177:
1.5 noro 178: \item 1992-1994
1.1 noro 179:
1.5 noro 180: Univariate factorization over algebraic number fields
1.1 noro 181:
1.5 noro 182: Intensive use of successive extension, non-squarefree norms
1.1 noro 183:
1.5 noro 184: \item 1996-1998
1.1 noro 185:
1.5 noro 186: Univariate factorization over large finite fields
1.2 noro 187:
1.5 noro 188: \item 2000-current
1.1 noro 189:
1.5 noro 190: Multivariate factorization over small finite fields (in progress)
1.1 noro 191: \end{itemize}
192: \end{slide}
193:
194: \begin{slide}{}
1.5 noro 195: \fbox{History of development : Groebner basis}
196:
1.1 noro 197: \begin{itemize}
1.5 noro 198: \item 1992-1994
199:
1.7 ! noro 200: User language $\Rightarrow$ C version; trace lifting [TRAV88]
1.1 noro 201:
1.5 noro 202: \item 1994-1996
203:
204: Trace lifting with homogenization
205:
1.7 ! noro 206: Omitting GB check by compatible prime [NOYO99]
1.5 noro 207:
1.7 ! noro 208: Modular change of ordering/RUR [NOYO99]
1.1 noro 209:
1.7 ! noro 210: Primary ideal decomposition [SHYO96]
1.1 noro 211:
1.5 noro 212: \item 1996-1998
1.1 noro 213:
1.7 ! noro 214: Efficient content reduction during NF computation [NORO97]
! 215: Solved {\it McKay} system for the first time
1.1 noro 216:
1.5 noro 217: \item 1998-2000
1.1 noro 218:
1.5 noro 219: Test implementation of $F_4$
1.1 noro 220:
1.5 noro 221: \item 2000-current
1.1 noro 222:
1.7 ! noro 223: Buchberger algorithm in Weyl algebra [TAKA90]
1.1 noro 224:
1.5 noro 225: Efficient $b$-function computation by a modular method
1.1 noro 226: \end{itemize}
227: \end{slide}
228:
229: \begin{slide}{}
1.5 noro 230: \fbox{Performance --- Factorizer}
1.1 noro 231:
232: \begin{itemize}
1.5 noro 233: \item 4 years ago
1.1 noro 234:
1.5 noro 235: Over {\bf Q} : fine compared with existing software
236: like REDUCE, Mathematica, maple
1.1 noro 237:
1.7 ! noro 238: Univariate, over algebraic number fields :
1.5 noro 239: fine because of some tricks for polynomials
1.1 noro 240: derived from norms.
241:
242: \item Current
243:
1.6 noro 244: Multivariate : moderate
1.1 noro 245:
1.7 ! noro 246: Univariate : completely obsoleted by M. van Hoeij's new algorithm
! 247: [HOEI00]
1.1 noro 248: \end{itemize}
249:
250: \end{slide}
251:
252: \begin{slide}{}
1.7 ! noro 253: \fbox{Timing data --- Factorization}
! 254:
! 255: \underline{Univariate; over {\bf Q}}
! 256:
! 257: $N_i$ : a norm of a poly, $\deg(N_i) = i$
! 258: \begin{center}
! 259: \begin{tabular}{|c||c|c|c|c|} \hline
! 260: & $N_{105}$ & $N_{120}$ & $N_{168}$ & $N_{210}$ \\ \hline
! 261: Asir & 0.86 & 59 & 840 & hard \\ \hline
! 262: Asir NormFactor & 1.6 & 2.2& 6.1& hard \\ \hline
! 263: Singular& hard? & hard?& hard? & hard? \\ \hline
! 264: CoCoA 4 & 0.2 & 7.1 & 16 & 0.5 \\ \hline\hline
! 265: NTL-5.2 & 0.16 & 0.9 & 1.4 & 0.4 \\ \hline
! 266: \end{tabular}
! 267: \end{center}
! 268:
! 269: \underline{Multivariate; over {\bf Q}}
! 270:
! 271: $W_{i,j,k} = Wang[i]\cdot Wang[j]\cdot Wang[k]$ in {\tt asir2000/lib/fctrdata}
! 272: \begin{center}
! 273: \begin{tabular}{|c||c|c|c|c|c|} \hline
! 274: & $W_{1,2,3}$ & $W_{4,5,6}$ & $W_{7,8,9}$ & $W_{10,11,12}$ & $W_{13,14,15}$ \\ \hline
! 275: Asir & 0.2 & 4.7 & 14 & 17 & 0.4 \\ \hline
! 276: Singular& $>$15min & --- & ---& ---& ---\\ \hline
! 277: CoCoA 4 & 5.2 & $>$15min & $>$15min & $>$15min & 117 \\ \hline\hline
! 278: Mathematica& 0.2 & 16 & 23 & 36 & 1.1 \\ \hline
! 279: \end{tabular}
! 280: \end{center}
! 281:
! 282: --- : not tested
! 283: \end{slide}
! 284: \begin{slide}{}
1.5 noro 285: \fbox{Performance --- Groebner basis related computation}
1.1 noro 286:
287: \begin{itemize}
288: \item 7 years ago
289:
1.5 noro 290: Trace lifting : rather fine but coefficient swells often occur
1.1 noro 291:
1.5 noro 292: Homogenization+trace lifting : robust and fast in the above cases
1.1 noro 293:
294: \item 4 years ago
295:
296: Modular RUR was comparable with Rouillier's implementation.
297:
1.5 noro 298: DRL basis of {\it McKay}:
299:
1.7 ! noro 300: 5 days on Risa/Asir, 53 seconds on Faug\`ere FGb
1.1 noro 301: \item Current
302:
1.5 noro 303: $F_4$ in FGb : much more efficient than $F_4$ in Risa/Asir
1.2 noro 304:
1.7 ! noro 305: Buchberger in Singular ({\tt http://www.singular.uni-kl.de})
! 306: : faster than Risa/Asir
! 307:
1.2 noro 308:
1.7 ! noro 309: $\Leftarrow$ efficient monomial and polynomial computation
1.2 noro 310:
311: \end{itemize}
312: \end{slide}
313:
314: \begin{slide}{}
1.7 ! noro 315: \fbox{Timing data --- DRL Groebner basis computation}
1.6 noro 316:
317: \underline{Over $GF(32003)$}
318: \begin{center}
319: \begin{tabular}{|c||c|c|c|c|c|c|c|} \hline
320: & $C_7$ & $C_8$ & $K_7$ & $K_8$ & $K_9$ & $K_{10}$ & $K_{11}$ \\ \hline
321: Asir $Buchberger$ & 31 & 1687 & 2.6 & 27 & 294 & 4309 & --- \\ \hline
322: Singular & 8.7 & 278 & 0.6 & 5.6 & 54 & 508 & 5510 \\ \hline
1.7 ! noro 323: CoCoA 4 & 241 & & 3.8 & 35 & 402 & & --- \\ \hline\hline
1.6 noro 324: Asir $F_4$ & 5.3 & 129 & 0.5 & 4.5 & 31 & 273 & 2641 \\ \hline
325: FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \\ \hline
326: \end{tabular}
327: \end{center}
328:
329: \underline{Over {\bf Q}}
330:
331: \begin{center}
332: \begin{tabular}{|c||c|c|c|c|c|} \hline
333: & $C_7$ & $Homog. C_7$ & $K_7$ & $K_8$ & $McKay$ \\ \hline
334: Asir $Buchberger$ & 389 & 594 & 29 & 299 & 34950 \\ \hline
1.7 ! noro 335: Singular & --- & 15247 & 7.6 & 79 & $>$ 20h \\ \hline
! 336: CoCoA 4 & --- & 13227 & 57 & 709 & --- \\ \hline\hline
1.6 noro 337: Asir $F_4$ & 989 & 456 & 90 & 991 & 4939 \\ \hline
338: FGb(estimated) & 8 &11 & 0.6 & 5 & 10 \\ \hline
339: \end{tabular}
340: \end{center}
1.7 ! noro 341: --- : not tested
1.6 noro 342: \end{slide}
343: \begin{slide}{}
1.5 noro 344: \fbox{How do we proceed?}
1.2 noro 345:
1.7 ! noro 346: \underline{Total performance : not excellent, but not so bad}
! 347:
1.2 noro 348: \begin{itemize}
1.7 ! noro 349: \item Trying to improve our implementation
! 350:
! 351: This is very important as a motivation of further development
! 352:
! 353: \begin{itemize}
! 354:
! 355: \item Computation of $b$-function
! 356:
! 357: fast but not satisfactory
! 358:
! 359: $\Rightarrow$ Groebner basis computation in Weyl
! 360: algebra should be improved
! 361: \end{itemize}
! 362:
1.5 noro 363: \item Developing new OpenXM servers
1.2 noro 364:
1.5 noro 365: {ox\_NTL} for univariate factorization,
1.2 noro 366:
1.6 noro 367: {ox\_???} for Groebner basis computation, etc.
1.2 noro 368:
1.5 noro 369: $\Rightarrow$ Risa/Asir can be a front-end of efficient servers
1.2 noro 370:
371: \end{itemize}
372:
1.5 noro 373: \begin{center}
374: \underline{In both cases, OpenXM interface is important}
375: \end{center}
1.2 noro 376: \end{slide}
377:
378:
379: %\begin{slide}{}
380: %\fbox{CMO = Serialized representation of mathematical object}
381: %
382: %\begin{itemize}
383: %\item primitive data
384: %\begin{eqnarray*}
385: %\mbox{Integer32} &:& ({\tt CMO\_INT32}, {\sl int32}\ \mbox{n}) \\
386: %\mbox{Cstring}&:& ({\tt CMO\_STRING},{\sl int32}\, \mbox{ n}, {\sl string}\, \mbox{s}) \\
387: %\mbox{List} &:& ({\tt CMO\_LIST}, {\sl int32}\, len, ob[0], \ldots,ob[m-1])
388: %\end{eqnarray*}
389: %
390: %\item numbers and polynomials
391: %\begin{eqnarray*}
392: %\mbox{ZZ} &:& ({\tt CMO\_ZZ},{\sl int32}\, {\rm f}, {\sl byte}\, \mbox{a[1]}, \ldots
393: %{\sl byte}\, \mbox{a[$|$f$|$]} ) \\
394: %\mbox{Monomial32}&:& ({\tt CMO\_MONOMIAL32}, n, \mbox{e[1]}, \ldots, \mbox{e[n]}, \mbox{Coef}) \\
395: %\mbox{Coef}&:& \mbox{ZZ} | \mbox{Integer32} \\
396: %\mbox{Dpolynomial}&:& ({\tt CMO\_DISTRIBUTED\_POLYNOMIAL},\\
397: % & & m, \mbox{DringDefinition}, \mbox{Monomial32}, \ldots)\\
398: %\mbox{DringDefinition}
399: % &:& \mbox{DMS of N variables} \\
400: % & & ({\tt CMO\_RING\_BY\_NAME}, name) \\
401: % & & ({\tt CMO\_DMS\_GENERIC}) \\
402: %\end{eqnarray*}
403: %\end{itemize}
404: %\end{slide}
405: %
406: %\begin{slide}{}
407: %\fbox{Stack based communication}
408: %
409: %\begin{itemize}
410: %\item Data arrived a client
411: %
412: %Pushed to the stack
413: %
414: %\item Result
415: %
416: %Pushd to the stack
417: %
418: %Written to the stream when requested by a command
419: %
420: %\item The reason why we use the stack
421: %
422: %\begin{itemize}
423: %\item Stack = I/O buffer for (possibly large) objects
424: %
1.7 ! noro 425: %Multiple requests can be sent before their execution
1.2 noro 426: %
427: %A server does not get stuck in sending results
428: %\end{itemize}
429: %\end{itemize}
430: %\end{slide}
431:
432: \begin{slide}{}
433: \fbox{Example of distributed computation --- $F_4$ vs. $Buchberger$ }
434:
435: \begin{verbatim}
436: /* competitive Gbase computation over GF(M) */
437: /* Cf. A.28 in SINGULAR Manual */
438: /* Process list is specified as an option : grvsf4(...|proc=P) */
439: def grvsf4(G,V,M,O)
440: {
441: P = getopt(proc);
442: if ( type(P) == -1 ) return dp_f4_mod_main(G,V,M,O);
443: P0 = P[0]; P1 = P[1]; P = [P0,P1];
444: map(ox_reset,P);
445: ox_cmo_rpc(P0,"dp_f4_mod_main",G,V,M,O);
446: ox_cmo_rpc(P1,"dp_gr_mod_main",G,V,0,M,O);
447: map(ox_push_cmd,P,262); /* 262 = OX_popCMO */
448: F = ox_select(P); R = ox_get(F[0]);
449: if ( F[0] == P0 ) { Win = "F4"; Lose = P1;}
450: else { Win = "Buchberger"; Lose = P0; }
451: ox_reset(Lose); /* simply resets the loser */
452: return [Win,R];
453: }
454: \end{verbatim}
455: \end{slide}
456:
457: \begin{slide}{}
458: \fbox{References}
459:
1.7 ! noro 460: [BERN97] L. Bernardin, On square-free factorization of
1.2 noro 461: multivariate polynomials over a finite field, Theoretical
462: Computer Science 187 (1997), 105-116.
463:
1.7 ! noro 464: [FAUG99] J.C. Faug\`ere,
1.2 noro 465: A new efficient algorithm for computing Groebner bases ($F_4$),
466: Journal of Pure and Applied Algebra (139) 1-3 (1999), 61-88.
467:
1.7 ! noro 468: [GRAY98] S. Gray et al,
! 469: Design and Implementation of MP, A Protocol for Efficient Exchange of
! 470: Mathematical Expression,
! 471: J. Symb. Comp. {\bf 25} (1998), 213-238.
! 472:
! 473: [HOEI00] M. van Heoij, Factoring polynomials and the knapsack problem,
1.2 noro 474: to appear in Journal of Number Theory (2000).
475:
1.7 ! noro 476: [LIAO01] W. Liao et al,
! 477: OMEI: An Open Mathematical Engine Interface,
! 478: Proc. ASCM2001 (2001), 82-91.
! 479: [NORO97] M. Noro, J. McKay,
1.4 noro 480: Computation of replicable functions on Risa/Asir.
1.7 ! noro 481: Proc. PASCO'97, ACM Press (1997), 130-138.
! 482: \end{slide}
1.4 noro 483:
1.7 ! noro 484: \begin{slide}{}
! 485:
! 486: [NOYO99] M. Noro, K. Yokoyama,
1.2 noro 487: A Modular Method to Compute the Rational Univariate
488: Representation of Zero-Dimensional Ideals.
489: J. Symb. Comp. {\bf 28}/1 (1999), 243-263.
1.4 noro 490:
1.7 ! noro 491: [OAKU97] T. Oaku, Algorithms for $b$-functions, restrictions and algebraic
1.3 noro 492: local cohomology groups of $D$-modules.
1.7 ! noro 493: Advances in Applied Mathematics, 19 (1997), 61-105.
1.2 noro 494:
1.7 ! noro 495: [ROUI96] F. Rouillier,
1.2 noro 496: R\'esolution des syst\`emes z\'ero-dimensionnels.
497: Doctoral Thesis(1996), University of Rennes I, France.
498:
1.7 ! noro 499: [SHYO96] T. Shimoyama, K. Yokoyama, Localization and Primary Decomposition of Polynomial Ideals. J. Symb. Comp. {\bf 22} (1996), 247-277.
1.3 noro 500:
1.7 ! noro 501: [TRAV88] C. Traverso, \gr trace algorithms. Proc. ISSAC '88 (LNCS 358), 125-138.
1.2 noro 502:
1.7 ! noro 503: [WANG99] P. S. Wang,
! 504: Design and Protocol for Internet Accessible Mathematical Computation,
! 505: Proc. ISSAC '99 (1999), 291-298.
1.2 noro 506: \end{slide}
507:
508: \begin{slide}{}
509: \begin{center}
510: \fbox{\large Part II : Algorithms and implementations in Risa/Asir}
511: \end{center}
512: \end{slide}
513:
514: \begin{slide}{}
1.1 noro 515: \fbox{Ground fields}
516:
517: \begin{itemize}
518: \item The rational number field
519: \item Algebraic number fields
520:
521: represented by successive extensions
522: \item Finite fields
523: \begin{itemize}
524: \item $GF(p)$ ($p<2^{30}$); represented by a single word
525: \item $GF(p^n)$ ($p^n < 2^{20}$); represented by a primitive root
526: \item $GF(2^n)$; represented by a bit string
527: \item $GF(p)$ ($p$ : arbitrary prime)
528: \item $GF(p^n)$ ($p$ : arbitrary odd prime)
529: \end{itemize}
530:
531: \item Real and complex number fields
532:
533: \begin{itemize}
534: \item Double float
535: \item PARI bigfloat
536: \end{itemize}
537:
538: \end{itemize}
539: \end{slide}
540:
541: \begin{slide}{}
542: \fbox{Polynomial factorization}
543: \begin{itemize}
544: \item Univariate factorization
545:
546: \begin{itemize}
547: \item Over the rationals
548:
549: Berlekamp-Zassenhaus
550:
551: (classical; knapsack has not yet implemented)
552:
553: \item Over algebraic number fields
554:
555: Trager's algorithm + some improvement
556:
1.7 ! noro 557: \item Over finite fields
1.1 noro 558:
559: DDF + Cantor-Zassenhaus; FFT for large finite fields
560: \end{itemize}
561:
562: \item Multivariate factorization
563:
564: \begin{itemize}
565: \item Over the rationals
566:
567: Classical EZ algorithm
568:
1.7 ! noro 569: \item Over small finite fields
1.2 noro 570:
1.7 ! noro 571: Modified Bernardin's square free algorithm [BERN97],
1.1 noro 572:
1.2 noro 573: possibly Hensel lifting over extension fields
1.1 noro 574: \end{itemize}
575:
576: \end{itemize}
577: \end{slide}
578:
579: \begin{slide}{}
580: \fbox{Groebner basis computation --- Buchberger algorithm}
581: \begin{itemize}
582: \item Polynomial rings
583: \begin{itemize}
584: \item Over finite fields
585:
586: Any finite field is available as a ground field
587:
588: \item Over the rationals
589:
590: Guess of a groebner basis by detecting zero reduction by modular computation
591: + check (trace lifting)
592:
593: Homogenization+guess+dehomogenization+check
594: \end{itemize}
595:
1.3 noro 596: \item Weyl Algebra
1.1 noro 597:
598: \begin{itemize}
599: \item Groebner basis of a left ideal
600:
1.2 noro 601: Key : an efficient implementation of Leibniz rule
1.1 noro 602: \end{itemize}
603:
604: \end{itemize}
605: \end{slide}
606:
607: \begin{slide}{}
608: \fbox{$F_4$ algorithm}
609: \begin{itemize}
610: \item Over small finite fields ($GF(p)$, $p < 2^{30}$)
611: \begin{itemize}
1.2 noro 612: \item More efficient than our Buchberger algorithm implementation
1.1 noro 613:
1.7 ! noro 614: but less efficient than FGb by Faug\`ere
1.1 noro 615: \end{itemize}
616:
617: \item Over the rationals
618:
619: \begin{itemize}
620: \item Very naive implementation
621:
1.2 noro 622: Modular computation + CRT + Checking the result at each degree
623:
1.1 noro 624: \item Less efficient than Buchberger algorithm
625:
1.2 noro 626: except for one example (={\it McKay})
1.1 noro 627: \end{itemize}
628:
629: \end{itemize}
630: \end{slide}
631:
632: \begin{slide}{}
1.2 noro 633: \fbox{Change of ordering for zero-dimensional ideals}
1.1 noro 634:
635: \begin{itemize}
636: \item Any ordering to lex ordering
637:
638: \begin{itemize}
639: \item Modular change of ordering
640:
641: Guess of the support by modular FGLM
642:
643: + solving linear systems by Hensel lifting
644:
645: \end{itemize}
646:
647: \item RUR (generalized shape lemma)
648:
649: \begin{itemize}
650: \item Modular RUR (only implemented on the shape base case)
651:
652: Almost the same as modular change of ordering
653: \end{itemize}
654:
655: \end{itemize}
656: \end{slide}
657:
658: \begin{slide}{}
659: \fbox{Primary decomposition --- Shimoyama-Yokoyama algorithm}
660:
661: \begin{itemize}
662: \item Only implemented over the rationals
663:
664: Finite field version will soon be available
665:
666: \item Pseudo primary ideal
667:
668: An ideal whose radical is prime
669:
670: \item Prime decomp. of the radical $\Rightarrow$ pseudo primary decomp.
671:
672: \item Extraction of embedded components
673:
674: \end{itemize}
675:
676: \end{slide}
677:
678: \begin{slide}{}
679: \fbox{Computation of $b$-function}
680:
1.3 noro 681: $D=K\langle x,\partial \rangle$ : Weyl algebra
1.1 noro 682:
683: $b(s)$ : a polynomial of the smallest degree s.t.
684: there exists $P(s) \in D[s]$, $P(s)f^{s+1}=b(s)f^s$
685:
686: $b(s)$ : $b$-function of a polynomial $f$
687:
688: $\Rightarrow$ $b(s)$ can be computed by Oaku's algorithm
689:
690: On Risa/Asir : $b(s)$ is computed by
691:
692: A groebner basis $\Rightarrow$ guess of $\deg(b(s))$ by modular
693: computation $\Rightarrow$ solving a linear system
694: \end{slide}
695:
696: \begin{slide}{}
697: \fbox{Interface to PARI library}
698:
699: \begin{itemize}
700: \item Data conversion
701:
702: \begin{itemize}
703:
704: \item Only primitive data can be passed to PARI
705:
706: Rational number, bignum, bigfloat, polynomial,
707: vector, matrix
708:
709: \item Results are converted to Risa objects
710:
711: \end{itemize}
712:
713: \item Evaluation of transcendental functions
714:
715: \begin{itemize}
716: \item Most of univariate functions in PARI can be
717: evaluated by {\tt eval()}
718: \end{itemize}
719:
720: \item Calling PARI functions
721:
722: \begin{itemize}
723: \item One can call PARI functions by {\tt pari({\it parifunction},{\it args})}
724:
725: The knapsack factorization is available via {\tt pari(factor,{\it poly})}
726: \end{itemize}
1.6 noro 727: \end{itemize}
728: \end{slide}
729:
730: \begin{slide}{}
731: \fbox{OpenXM server interface in Risa/Asir}
732:
733: \begin{itemize}
734: \item TCP/IP stream
735:
736: \begin{itemize}
737: \item Launcher
738:
739: A client executes a launcher on a host.
740:
741: The launcher launches a server on the same host.
742:
743: \item Server
744:
745: Reads from the descriptor 3
746:
747: Writes to the descriptor 4
748:
749: \end{itemize}
750:
751: \item Subroutine call
752:
753: In Risa/Asir subroutine library {\tt libasir.a}:
754:
1.7 ! noro 755: OpenXM functionalities are implemented as function calls
1.6 noro 756:
757: pushing and popping data, executing stack commands etc.
758: \end{itemize}
759: \end{slide}
760:
761: \begin{slide}{}
762: \fbox{OpenXM client interface in Risa/Asir}
763:
764: \begin{itemize}
765: \item Primitive interface functions
766:
767: Pushing and popping data, sending commands etc.
768:
769: \item Convenient functions
770:
771: Launching servers,
772:
773: Calling remote functions,
774:
775: Resetting remote executions etc.
776:
777: \item Parallel distributed computation
778:
779: Simple parallelization is practically important
780:
781: Competitive computation is easily realized ($\Rightarrow$ demo)
1.1 noro 782: \end{itemize}
783: \end{slide}
784:
1.5 noro 785: \begin{slide}{}
786: \fbox{Executing functions on a server (I) --- {\tt SM\_executeFunction}}
787:
788: \begin{enumerate}
789: \item (C $\rightarrow$ S) Arguments are sent in binary encoded form.
1.7 ! noro 790: \item (C $\rightarrow$ S) The number of arguments is sent as {\sl Integer32}.
1.5 noro 791: \item (C $\rightarrow$ S) A function name is sent as {\sl Cstring}.
792: \item (C $\rightarrow$ S) A command {\tt SM\_executeFunction} is sent.
793: \item The result is pushed to the stack.
794: \item (C $\rightarrow$ S) A command {\tt SM\_popCMO} is sent.
795: \item (S $\rightarrow$ C) The result is sent in binary encoded form.
796: \end{enumerate}
797:
798: $\Rightarrow$ Communication is fast, but functions for binary data
799: conversion are necessary.
800: \end{slide}
801:
802: \begin{slide}{}
803: \fbox{Executing functions on a server (II) --- {\tt SM\_executeString}}
804:
805: \begin{enumerate}
1.7 ! noro 806: \item (C $\rightarrow$ S) A character string representing a request in a server's
1.5 noro 807: user language is sent as {\sl Cstring}.
808: \item (C $\rightarrow$ S) A command {\tt SM\_executeString} is sent.
809: \item The result is pushed to the stack.
810: \item (C $\rightarrow$ S) A command {\tt SM\_popString} is sent.
811: \item (S $\rightarrow$ C) The result is sent in readable form.
812: \end{enumerate}
813:
814: $\Rightarrow$ Communication may be slow, but the client parser may be
815: enough to read the result.
816: \end{slide}
817:
818: %\begin{slide}{}
819: %\fbox{History of development : ---1994}
820: %
821: %\begin{itemize}
822: %\item --1989
823: %
824: %Several subroutines were developed for a Prolog program.
825: %
826: %\item 1989--1992
827: %
828: %\begin{itemize}
1.7 ! noro 829: %\item Reconfigured as Risa/Asir with a parser and Boehm's conservative GC
1.5 noro 830: %
831: %\item Developed univariate and multivariate factorizers over the rationals.
832: %\end{itemize}
833: %
834: %\item 1992--1994
835: %
836: %\begin{itemize}
837: %\item Started implementation of Buchberger algorithm
838: %
839: %Written in user language $\Rightarrow$ rewritten in C (by Murao)
840: %
1.7 ! noro 841: %$\Rightarrow$ trace lifting [TRAV88]
1.5 noro 842: %
843: %\item Univariate factorization over algebraic number fields
844: %
845: %Intensive use of successive extension, non-squarefree norms
846: %\end{itemize}
847: %\end{itemize}
848: %
849: %\end{slide}
850: %
851: %\begin{slide}{}
852: %\fbox{History of development : 1994-1996}
853: %
854: %\begin{itemize}
855: %\item Free distribution of binary versions from Fujitsu
856: %
857: %\item Primary ideal decomposition
858: %
859: %\begin{itemize}
1.7 ! noro 860: %\item Shimoyama-Yokoyama algorithm [SHYO96]
1.5 noro 861: %\end{itemize}
862: %
863: %\item Improvement of Buchberger algorithm
864: %
865: %\begin{itemize}
866: %\item Trace lifting+homogenization
867: %
868: %\item Omitting check by compatible prime
869: %
870: %\item Modular change of ordering, Modular RUR
871: %
1.7 ! noro 872: %These are joint works with Yokoyama [NOYO99]
1.5 noro 873: %\end{itemize}
874: %\end{itemize}
875: %
876: %\end{slide}
877: %
878: %\begin{slide}{}
879: %\fbox{History of development : 1996-1998}
880: %
881: %\begin{itemize}
1.7 ! noro 882: %\item Distributed computation
1.5 noro 883: %
884: %\begin{itemize}
885: %\item A prototype of OpenXM
886: %\end{itemize}
887: %
888: %\item Improvement of Buchberger algorithm
889: %
890: %\begin{itemize}
1.7 ! noro 891: %\item Content reduction during normal form computation
1.5 noro 892: %
893: %\item Its parallelization by the above facility
894: %
1.7 ! noro 895: %\item Computation of odd order replicable functions [NORO97]
1.5 noro 896: %
897: %Risa/Asir : it took 5days to compute a DRL basis ({\it McKay})
898: %
899: %Faug\`ere FGb : computation of the DRL basis 53sec
900: %\end{itemize}
901: %
902: %
903: %\item Univariate factorization over large finite fields
904: %
905: %\begin{itemize}
906: %\item To implement Schoof-Elkies-Atkin algorithm
907: %
908: %Counting rational points on elliptic curves
909: %
910: %--- not free But related functions are freely available
911: %\end{itemize}
912: %\end{itemize}
913: %
914: %\end{slide}
915: %
916: %\begin{slide}{}
917: %\fbox{History of development : 1998-2000}
918: %\begin{itemize}
919: %\item OpenXM
920: %
921: %\begin{itemize}
922: %\item OpenXM specification was written by Noro and Takayama
923: %
1.7 ! noro 924: %Borrowed idea on encoding, phrase book from OpenMath
1.5 noro 925: %
926: %\item Functions for distributed computation were rewritten
927: %\end{itemize}
928: %
929: %\item Risa/Asir on Windows
930: %
931: %\begin{itemize}
932: %\item Requirement from a company for which Noro worked
933: %
934: %Written in Visual C++
935: %\end{itemize}
936: %
937: %\item Test implementation of $F_4$
938: %
939: %\begin{itemize}
1.7 ! noro 940: %\item Implemented according to [FAUG99]
1.5 noro 941: %
942: %\item Over $GF(p)$ : pretty good
943: %
944: %\item Over the rationals : not so good except for {\it McKay}
945: %\end{itemize}
946: %\end{itemize}
947: %\end{slide}
948: %
949: %\begin{slide}{}
950: %\fbox{History of development : 2000-current}
951: %\begin{itemize}
952: %\item The source code is freely available
953: %
954: %\begin{itemize}
955: %\item Noro moved from Fujitsu to Kobe university
956: %
1.7 ! noro 957: %Started Kobe branch
1.5 noro 958: %\end{itemize}
959: %
1.7 ! noro 960: %\item OpenXM
1.5 noro 961: %
962: %\begin{itemize}
963: %\item Revising the specification : OX-RFC100, 101, (102)
964: %
965: %\item OX-RFC102 : communications between servers via MPI
966: %\end{itemize}
967: %
968: %\item Weyl algebra
969: %
970: %\begin{itemize}
1.7 ! noro 971: %\item Buchberger algorithm [TAKA90]
1.5 noro 972: %
1.7 ! noro 973: %\item $b$-function computation [OAKU97]
1.5 noro 974: %
975: %Minimal polynomial computation by modular method
976: %\end{itemize}
977: %\end{itemize}
978: %
979: %\end{slide}
1.1 noro 980: \begin{slide}{}
981: \end{slide}
982:
983: \begin{slide}{}
984: \end{slide}
985:
986: \begin{slide}{}
987: \end{slide}
988:
989: \begin{slide}{}
990: \end{slide}
991:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>