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