Annotation of OpenXM/src/asir-doc/papers/risa-asir.tex, Revision 1.1
1.1 ! noro 1: \documentclass[12pt]{article}
! 2: \textheight 9.5in
! 3: \textwidth 6.5in
! 4: \topmargin -0.5in
! 5: \oddsidemargin -0.2in
! 6: \evensidemargin -0.2in
! 7: \usepackage{makeidx} % allows index generation
! 8: \usepackage{graphicx} % standard LaTeX graphics tool
! 9: % for including eps-figure files
! 10: \usepackage{subeqnar} % subnumbers individual equations
! 11: % within an array
! 12: \usepackage{multicol} % used for the two-column index
! 13: \usepackage{cropmark} % cropmarks for pages without
! 14: % pagenumbers
! 15: \usepackage{math} % placeholder for figures
! 16: \makeindex % used for the subject index
! 17: % please use the style sprmidx.sty with
! 18: % your makeindex program
! 19:
! 20: %upright Greek letters (example below: upright "mu")
! 21: \newcommand{\euler}[1]{{\usefont{U}{eur}{m}{n}#1}}
! 22: \newcommand{\eulerbold}[1]{{\usefont{U}{eur}{b}{n}#1}}
! 23: \newcommand{\umu}{\mbox{\euler{\char22}}}
! 24: \newcommand{\umub}{\mbox{\eulerbold{\char22}}}
! 25:
! 26: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
! 27:
! 28: %\twocolumn
! 29: %OPTIONAL%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
! 30: %
! 31: %\usepackage{amstex} % useful for coding complex math
! 32: %\mathindent\parindent % needed in case "Amstex" is used
! 33: %
! 34: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
! 35:
! 36: %AUTHOR_STYLES_AND_DEFINITIONS%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
! 37: %
! 38: %Please reduce your own definitions and macros to an absolute
! 39: %minimum since otherwise the editor will find it rather
! 40: %strenuous to compile all individual contributions to a
! 41: %single book file
! 42: \usepackage{epsfig}
! 43: \def\cont{{\rm cont}}
! 44: \def\GCD{{\rm GCD}}
! 45: \def\Q{{\bf Q}}
! 46: %
! 47: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
! 48:
! 49: \begin{document}
! 50: %
! 51: %\title*{A Computer Algebra System : Risa/Asir}
! 52: %
! 53: %
! 54: \title{A Computer Algebra System : Risa/Asir \footnote{This article is
! 55: a summary of two papers\cite{NORO}\cite{MAEKAWA}.}}
! 56: % allows explicit linebreak for the table of content
! 57: %
! 58: %
! 59: %\titlerunning{Risa/Asir}
! 60: % allows abbreviation of title, if the full title is too long
! 61: % to fit in the running head
! 62: %
! 63: \author{Masayuki Noro}
! 64: \date{}
! 65: %Kobe University, Rokko, Kobe 657-8501, Japan\\
! 66: %E-mail:noro@math.kobe-u.ac.jp}
! 67: %
! 68: %\authorrunning{Masayuki Noro}
! 69: % if there are more than two authors,
! 70: % please abbreviate author list for running head
! 71: %
! 72: %
! 73: %\institute{Kobe University, Rokko, Kobe 657-8501, Japan\\
! 74: %E-mail:noro@math.kobe-u.ac.jp}
! 75:
! 76: \maketitle % typesets the title of the contribution
! 77:
! 78:
! 79: \section{An overview of Risa/Asir}
! 80:
! 81: Risa/Asir is a tool for performing various computations in
! 82: mathematics and engineering applications.
! 83: The development of Risa/Asir started in 1989 at FUJITSU
! 84: and now the source code is also available at no cost.
! 85: Currently, Kobe distribution
! 86: is the most active branch in the development of Risa/Asir.
! 87: Risa/Asir is characterized as follows:
! 88:
! 89: \begin{enumerate}
! 90: \item An environment for large scale and efficient polynomial computation.
! 91:
! 92: Risa/Asir consists of the Risa engine for performing operations on
! 93: mathematical objects and an interpreter for programs written in
! 94: the Asir user language. In Risa/Asir, polynomials are
! 95: represented in two different internal forms:
! 96: the recursive representation and the distributed representation.
! 97: Polynomial factorization and GCD are based on the former representation,
! 98: and computations related to the Gr\"obner basis are based on the latter
! 99: representation.
! 100: %Ground fields of polynomial rings can be composed of the field of rationals,
! 101: %algebraic number fields and finite fields.
! 102: Ground fields of polynomial rings can be composed of
! 103: The field of rationals, algebraic number fields and finite fields
! 104: are available as ground fields of polynomial rings.
! 105:
! 106: \item A platform for parallel and distributed computation.
! 107:
! 108: In order to combine mathematical software systems,
! 109: we previously proposed the OpenXM
! 110: (Open Message eXchange for Mathematics)
! 111: protocol.
! 112: Risa/Asir acts as both an OpenXM client and an OpenXM server.
! 113: The Risa/Asir OpenXM client API provides a way to call
! 114: functions in external OpenXM servers.
! 115: Using multiple Risa/Asir OpenXM servers,
! 116: one can perform parallel and distributed computation
! 117: in an attempt to achieve linear speedup.
! 118: Conversely, other OpenXM clients can call functions in the Risa/Asir
! 119: server.
! 120:
! 121: \item Open source software.
! 122:
! 123: The source code of Risa/Asir is completely open, and algorithms and
! 124: implementations can be verified if necessary. The addition of new
! 125: codes is simple.
! 126: \end{enumerate}
! 127:
! 128: Risa/Asir runs on various platforms such as Linux, FreeBSD, Sun and
! 129: Windows. The whole source code is available from
! 130: {\tt http://www.math.kobe-u.ac.jp/OpenXM}.
! 131: The on-line help is available from the Risa/Asir command line or
! 132: from the menu bar on Windows. Manuals are located at
! 133: {\tt http://www.math.kobe-u.ac.jp/OpenXM/Current/doc/index-doc.html}.
! 134:
! 135: \section{Functionality of Risa/Asir}
! 136:
! 137: Among various functions on algebraic computation,
! 138: we explain the implementations of two main functions: polynomial
! 139: factorization and Gr\"obner basis computation over various ground
! 140: fields.
! 141:
! 142: \subsection{Operations over fields of characteristic 0}
! 143:
! 144: Polynomial arithmetics, polynomial GCD and factorization are
! 145: implemented over our own implementation of integer and rational number
! 146: arithmetics. In multivariate factorization, we implemented a
! 147: simplified version of Wang method to estimate the leading coefficient
! 148: of a factor to avoid the leading coefficient problem.
! 149:
! 150: Risa/Asir provides a univariate factorization over algebraic number
! 151: fields represented by a successive extension. As an application, the
! 152: splitting field computation of a univariate polynomial is implemented.
! 153: The impelented algorithm is an improvement of the algorithm proposed
! 154: by Trager. In the present algorithm, we utilize non square-free norms
! 155: to obtain partial (not necessarily irreducible) factorization. The
! 156: algorithm finally requires univariate factorization of a polynomial
! 157: over the rationals, however this factorization is often difficult
! 158: because the polynomial contains many spurious factors. At present,
! 159: Risa/Asir is not optimized to factor polynomials of this type. In
! 160: this case, a factorization in the PARI library implementing the
! 161: knapsack factorization algorithm can be used, and the splitting field
! 162: can be computed efficiently even in such cases
! 163: \footnote{A special configure option is required for linking the new version
! 164: of PARI library.}.
! 165:
! 166: \subsection{Computation over finite fields}
! 167:
! 168: In Risa/Asir finite fields are represented in several ways.
! 169: \begin{enumerate}
! 170: \item $GF(p)$ ($p$: a prime $p < 2^{29})$
! 171: \item $GF(p)$ ($p$: an arbitrary prime)
! 172: \item $GF(2^n)$ ($n$: small)
! 173: \item $GF(p^n)$ ($p$: an arbitrary prime, $n$: small integer)
! 174: \item $GF(p^s)$ ($p$: a small prime, $p^s < 2^{16})$
! 175: \end{enumerate}
! 176: The type 1 is used internally in various modular algorithms. The type
! 177: 2, 3 and 4 are general purpose representations. Multiplication in
! 178: $GF(2^n)$ is implemented using Karatsuba algorithm extensively. The
! 179: type 5 has been introduced for efficient implementation of
! 180: multivariate factorization over finite fields of small characteristic.
! 181: When we attempt to factor a polynomial over such a field, we often
! 182: have insufficient evaluation points. In this case we have to extend
! 183: the ground field. If the ground field and its extension are both
! 184: represented by a type 5 representation, we can expect that field
! 185: arithmetics are performed efficiently in both fields. We presented a
! 186: new polynomial time algorithm to factor bivariate polynomials over a
! 187: finite field is presented. A combination of the Berlekamp-Hensel
! 188: method and the new algorithm under a type 5 representation enables us
! 189: to efficiently factor a certain class of polynomials, including
! 190: hard-to-factor polynomials.
! 191:
! 192: \subsection{Gr\"obner basis computation}
! 193:
! 194: We have incorporated various algorithms and improvements for Gr\"obner
! 195: basis computation. For the Buchberger algorithm, we have implemented
! 196: well-known criteria to detect unnecessary pairs, the sugar strategy,
! 197: trace algorithms by modular computation, stabilization of strategy by
! 198: combining homogenization and the trace algorithm, and efficient
! 199: content reduction during normal form computation. We also have an
! 200: experimental implementation of $F_4$ algorithm. Furthermore, we
! 201: implemented several types of change of ordering algorithms. Among
! 202: these, {\tt tolex()} implements a modular FGLM algorithm, which avoids
! 203: intermediate coefficient swells during the ordinary FGLM algorithm and
! 204: realizes efficient computation of lexicographic Gr\"obner bases for
! 205: zero-dimensional ideals.
! 206:
! 207: By supplying an option {\tt Demand} with a directory name, generated
! 208: basis elements are placed in the directory. Although this requires
! 209: additional cost in order to read the basis elements required for
! 210: normal form computations, the total amount of memory is smaller than
! 211: the case in which all basis elements are placed in memory, which may
! 212: enable a very large computation, generating numerous intermediate
! 213: basis elements.
! 214:
! 215: As an application of Gr\"obner basis computation and polynomial
! 216: factorization, we implemented primary ideal decomposition and prime
! 217: decomposition of the radical of an ideal. These functions can be used
! 218: to decompose solutions of systems of algebraic equations into
! 219: irreducible components.
! 220:
! 221: We implemented fundamental arithmetics, the Buchberger algorithm and
! 222: the minimal polynomial computation over Weyl algebra, the ring of
! 223: differential operators having polynomial coefficients. Using these
! 224: arithmetics we implemented an efficient algorithm for computing the
! 225: $b$-function of a polynomial.
! 226:
! 227: \subsection{Parallel and distributed computation via OpenXM}
! 228:
! 229: Risa/Asir provides OpenXM API for executing funtions on other
! 230: mathematical software. In OpenXM, mathematical software systems are
! 231: wrapped as server stack machines. As an OpenXM client, Risa/Asir
! 232: dispatches a request to a server and receives the result. Inputs and
! 233: outputs are represented as CMO (Common Mathematical Object format)
! 234: objects. The set of stack machine commands also contains various
! 235: control operations, such as server invocation, termination,
! 236: interruption and restarting. Usually, each mathematical software
! 237: system has its own user language. OpenXM provides stack machine
! 238: commands for executing a command string and receiving a result as a
! 239: human readable character string, thus wrapping a mathematical software
! 240: system as an OpenXM server is relatively easy. OpenXM protocol is
! 241: completely open, and any program can implement the protocol. OpenXM
! 242: specifies a procedure for robust interruption and restarting of
! 243: execution, which enables clients to be reset safely from any state.
! 244:
! 245: Communication between an OpenXM server and a client can be realized by various
! 246: methods: files, TCP/IP, MPI, PVM, RPC and linking a subroutine library.
! 247: The Risa/Asir subroutine library {\tt libasir.a} contains functions
! 248: simulating the stack machine commands supported in {\tt ox\_asir},
! 249: the OpenXM asir server.
! 250:
! 251: \subsection{Integration of Risa/Asir and other OpenXM servers}
! 252:
! 253: Asir OpenXM contrib (asir-contrib) is a collection of wrappers of
! 254: functions in external OpenXM servers. Using asir-contrib,
! 255: an external function can be called
! 256: from Asir without knowing that the function is located in
! 257: an external server. Currently, the following functions (including
! 258: Asir built-in functions) are provided
! 259: in OpenXM:
! 260:
! 261: \begin{itemize}
! 262: \item Operations on Integers
! 263:
! 264: {\tt idiv},{\tt irem} (division with remainder),
! 265: {\tt ishift} (bit shifting),
! 266: {\tt iand},{\tt ior},{\tt ixor} (logical operations),
! 267: {\tt igcd},(GCD by various methods such as Euclid's algorithm and
! 268: the accelerated GCD algorithm),
! 269: {\tt fac} (factorial),
! 270: {\tt inv} (inverse modulo an integer),
! 271: {\tt random} (random number generator by the Mersenne twister algorithm).
! 272:
! 273: \item Ground Fields
! 274:
! 275: Arithmetics on various fields: the rationals,
! 276: ${\bf Q}(\alpha_1,\alpha_2,\ldots,\alpha_n)$
! 277: ($\alpha_i$ is algebraic over ${\bf Q}(\alpha_1,\ldots,\alpha_{\tt i-1})$),
! 278: $GF(p)$ ($p$ is a prime of arbitrary size), $GF(2^n)$.
! 279:
! 280: \item Operations on Polynomials
! 281:
! 282: {\tt sdiv }, {\tt srem } (division with remainder),
! 283: {\tt ptozp } (removal of the integer content),
! 284: {\tt diff } (differentiation),
! 285: {\tt gcd } (GCD over the rationals),
! 286: {\tt res } (resultant),
! 287: {\tt subst } (substitution),
! 288: {\tt umul} (fast multiplication of dense univariate polynomials
! 289: by a hybrid method with Karatsuba and FFT+Chinese remainder),
! 290: {\tt urembymul\_precomp} (fast dense univariate polynomial
! 291: division with remainder by the fast multiplication and
! 292: the precomputed inverse of a divisor),
! 293:
! 294: \item Polynomial Factorization
! 295: {\tt fctr } (factorization over the rationals),
! 296: {\tt fctr\_ff } (univariate factorization over finite fields),
! 297: {\tt af } (univariate factorization over algebraic number fields),
! 298: {\tt sp} (splitting field computation).
! 299:
! 300: \item Groebner basis
! 301:
! 302: {\tt dp\_gr\_main }, {\tt nd\_gr\_trace} (Groebner basis computation of a polynomial ideal
! 303: over the rationals by the trace lifting),
! 304: {\tt dp\_gr\_mod\_main }, {\tt nd\_gr} (Groebner basis over small finite fields),
! 305: {\tt tolex } (Modular change of ordering for a zero-dimensional ideal),
! 306: {\tt tolex\_gsl } (Modular rational univariate representation
! 307: for a zero-dimensional ideal),
! 308: {\tt dp\_f4\_main}, {\tt dp\_f4\_mod\_main}, {\tt nd\_f4}
! 309: ($F_4$ over the rationals and small finite fields).
! 310:
! 311: \item Ideal Decomposition
! 312:
! 313: {\tt primedec}, {\tt primedec\_mod} (Prime decomposition of the radical),
! 314: {\tt primadec} (Primary decomposition of ideals by Shimoyama/Yokoyama algorithm).
! 315:
! 316: \item Quantifier Elimination
! 317:
! 318: {\tt qe} (real quantifier elimination in a linear and
! 319: quadratic first-order formula),
! 320: {\tt simpl} (heuristic simplification of a first-order formula).
! 321:
! 322: \item Visualization of curves
! 323:
! 324: {\tt plot} (plotting of a univariate function),
! 325: {\tt ifplot} (plotting zeros of a bivariate polynomial),
! 326: {\tt conplot} (contour plotting of a bivariate polynomial function).
! 327:
! 328: \item Miscellaneous functions
! 329:
! 330: {\tt det} (determinant),
! 331: {\tt qsort} (sorting of an array by the quick sort algorithm),
! 332: {\tt eval} (evaluation of a formula containing transcendental functions
! 333: such as
! 334: {\tt sin}, {\tt cos}, {\tt tan}, {\tt exp},
! 335: {\tt log})
! 336: {\tt roots} (finding all roots of a univariate polynomial),
! 337: {\tt lll} (computation of an LLL-reduced basis of a lattice).
! 338:
! 339: \item $D$-modules ($D$ is the Weyl algebra)
! 340:
! 341: {\tt gb } (Gr\"obner basis),
! 342: {\tt syz} (syzygy),
! 343: {\tt annfs} (Annhilating ideal of $f^s$),
! 344: {\tt bfunction},\\
! 345: {\tt schreyer} (free resolution by the Schreyer method),
! 346: {\tt vMinRes} (V-minimal free resolution),\\
! 347: {\tt characteristic} (Characteristic variety),
! 348: {\tt restriction} in the derived category of $D$-modules,
! 349: {\tt integration} in the derived category,
! 350: {\tt tensor} in the derived category,
! 351: {\tt dual} (Dual as a D-module),
! 352: {\tt slope}.
! 353:
! 354: \item Cohomology groups
! 355:
! 356: {\tt deRham} (The de Rham cohomology groups of
! 357: ${\bf C}^n \setminus V(f)$,
! 358: {\tt ext} (Ext modules for a holonomic $D$-module $M$
! 359: and the ring of formal power series).
! 360:
! 361: \item Differential equations
! 362:
! 363: Helping to derive and prove {\tt combinatorial} and
! 364: {special function identities},
! 365: {\tt gkz} (GKZ hypergeometric differential equations),
! 366: {\tt appell} (Appell's hypergeometric differential equations),
! 367: {\tt indicial} (indicial equations),
! 368: {\tt rank} (Holonomic rank),
! 369: {\tt rrank} (Holonomic rank of regular holonomic systems),
! 370: {\tt dsolv} (series solutions of holonomic systems).
! 371:
! 372: \item OpenMATH support
! 373:
! 374: {\tt om\_xml} (CMO to OpenMATH XML),
! 375: {\tt om\_xml\_to\_cmo} (OpenMATH XML to CMO).
! 376:
! 377: \item Homotopy Method
! 378:
! 379: {\tt phc} (Solving systems of algebraic equations by
! 380: numerical and polyhedral homotopy methods).
! 381:
! 382: \item Toric ideal
! 383:
! 384: {\tt tigers} (Enumerate all Gr\"obner basis of a toric ideal.
! 385: Finding test sets for integer program),
! 386: {\tt arithDeg} (Arithmetic degree of a monomial ideal),
! 387: {\tt stdPair} (Standard pair decomposition of a monomial ideal).
! 388:
! 389: \item Communications
! 390:
! 391: {\tt ox\_launch} (starting a server),
! 392: {\tt ox\_launch\_nox},
! 393: {\tt ox\_shutdown},
! 394: {\tt ox\_launch\_generic},\\
! 395: {\tt generate\_port},
! 396: {\tt try\_bind\_listen},
! 397: {\tt try\_connect},
! 398: {\tt try\_accept},
! 399: {\tt register\_server},\\
! 400: {\tt ox\_rpc},
! 401: {\tt ox\_cmo\_rpc},
! 402: {\tt ox\_execute\_string},
! 403: {\tt ox\_reset} (reset the server),
! 404: {\tt ox\_intr},\\
! 405: {\tt register\_handler},
! 406: {\tt ox\_push\_cmo},
! 407: {\tt ox\_push\_local},
! 408: {\tt ox\_pop\_cmo},
! 409: {\tt ox\_pop\_local},\\
! 410: {\tt ox\_push\_cmd},
! 411: {\tt ox\_sync},
! 412: {\tt ox\_get},
! 413: {\tt ox\_pops},
! 414: {\tt ox\_select},
! 415: {\tt ox\_flush},
! 416: {\tt ox\_get\_serverinfo}
! 417:
! 418: \end{itemize}
! 419:
! 420: \begin{thebibliography}{99}
! 421: \bibitem{NORO}
! 422: M. Noro, A Computer Algebra System Risa/Asir. Algebra, Geometry and Software, M. Joswig and N. Takayama (eds.), Springer, 147-162 (2002).
! 423: \bibitem{MAEKAWA}
! 424: M. Maekawa, M. Noro, N. Takayama and Y. Tamura
! 425: The Design and Implementation of OpenXM-RFC 100 and 101.
! 426: Computer Mathematics (Proc. ASCM2001), World Scientific, 102-111 (2001).
! 427: \end{thebibliography}
! 428:
! 429: \end{document}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>