[BACK]Return to risa-asir.tex CVS log [TXT][DIR] Up to [local] / OpenXM / src / asir-doc / papers

Annotation of OpenXM/src/asir-doc/papers/risa-asir.tex, Revision 1.3

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),
1.2       noro      296: {\tt modfctr}, {\tt fctr\_ff } (univariate factorization over finite fields),
1.1       noro      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),
1.2       noro      332: {\tt eval}, {\tt deval} (evaluation of a formula containing transcendental functions
1.1       noro      333: such as
                    334: {\tt sin}, {\tt cos}, {\tt tan}, {\tt exp},
                    335: {\tt log})
1.2       noro      336: {\tt pari(roots)} (finding all roots of a univariate polynomial),
                    337: {\tt pari(lll)} (computation of an LLL-reduced basis of a lattice).
1.1       noro      338:
                    339: \item $D$-modules ($D$ is the Weyl algebra)
                    340:
1.2       noro      341: {\tt sm1.gb } (Gr\"obner basis),
                    342: {\tt sm1.syz} (syzygy),
1.3     ! noro      343: {\tt sm1.bfunction},{\tt bfunction} (the global $b$-function of a polynomial)
1.2       noro      344: {\tt sm1.restriction} in the derived category of $D$-modules,
1.3     ! noro      345: {\tt sm1.slope},
        !           346: {\tt sm1.sm1(annfs)} (Annhilating ideal of $f^s$),
        !           347: {\tt sm1.sm1(schreyer)} (free resolution by the Schreyer method),
        !           348: %{\tt sm1.sm1(vMinRes)} (V-minimal free resolution),\\
        !           349: {\tt sm1.sm1(characteristic)} (Characteristic variety),
        !           350: {\tt sm1.sm1(integration)} in the derived category,
        !           351: %{\tt sm1.sm1(tensor)}  in the derived category,
        !           352: {\tt sm1.sm1(res-dual)} (Dual as a D-module).
1.1       noro      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},
1.2       noro      365: {\tt sm1.gkz} (GKZ hypergeometric differential equations),
                    366: {\tt sm1.appell1}, {\tt sm1.appell4} (Appell's hypergeometric differential equations),
                    367: %{\tt indicial} (indicial equations),
                    368: {\tt sm1.generalized\_bfunction} (indicial equations),
                    369: {\tt sm1.rank} (Holonomic rank),
                    370: {\tt sm1.rrank} (Holonomic rank of regular holonomic systems),
                    371: %{\tt dsolv} (series solutions of holonomic systems).
                    372: {\tt dsolv\_dual}, {\tt dsolv\_starting\_terms} (series solutions of holonomic systems).
1.1       noro      373:
                    374: \item OpenMATH support
                    375:
                    376: {\tt om\_xml} (CMO to OpenMATH XML),
                    377: {\tt om\_xml\_to\_cmo} (OpenMATH XML to CMO).
                    378:
                    379: \item Homotopy Method
                    380:
1.2       noro      381: {\tt phc.phc} (Solving systems of algebraic equations by
1.1       noro      382: numerical and polyhedral homotopy methods).
                    383:
                    384: \item Toric ideal
                    385:
1.2       noro      386: {\tt tigers.tigers} (Enumerate all Gr\"obner basis of a toric ideal.
1.1       noro      387: Finding test sets for integer program),
1.2       noro      388: %{\tt arithDeg} (Arithmetic degree of a monomial ideal),
                    389: %{\tt stdPair} (Standard pair decomposition of a monomial ideal).
1.1       noro      390:
                    391: \item Communications
                    392:
                    393: {\tt ox\_launch} (starting a server),
                    394: {\tt ox\_launch\_nox},
                    395: {\tt ox\_shutdown},
                    396: {\tt ox\_launch\_generic},\\
                    397: {\tt generate\_port},
                    398: {\tt try\_bind\_listen},
                    399: {\tt try\_connect},
                    400: {\tt try\_accept},
                    401: {\tt register\_server},\\
                    402: {\tt ox\_rpc},
                    403: {\tt ox\_cmo\_rpc},
                    404: {\tt ox\_execute\_string},
                    405: {\tt ox\_reset} (reset the server),
                    406: {\tt ox\_intr},\\
                    407: {\tt register\_handler},
                    408: {\tt ox\_push\_cmo},
                    409: {\tt ox\_push\_local},
                    410: {\tt ox\_pop\_cmo},
                    411: {\tt ox\_pop\_local},\\
                    412: {\tt ox\_push\_cmd},
                    413: {\tt ox\_sync},
                    414: {\tt ox\_get},
                    415: {\tt ox\_pops},
                    416: {\tt ox\_select},
                    417: {\tt ox\_flush},
                    418: {\tt ox\_get\_serverinfo}
                    419:
                    420: \end{itemize}
                    421:
                    422: \begin{thebibliography}{99}
                    423: \bibitem{NORO}
                    424: M. Noro,  A Computer Algebra System Risa/Asir.  Algebra, Geometry and Software, M. Joswig and N. Takayama (eds.), Springer, 147-162 (2002).
                    425: \bibitem{MAEKAWA}
                    426: M. Maekawa, M. Noro, N. Takayama and Y. Tamura
                    427: The Design and Implementation of OpenXM-RFC 100 and 101.
                    428: Computer Mathematics (Proc. ASCM2001), World Scientific, 102-111 (2001).
                    429: \end{thebibliography}
                    430:
                    431: \end{document}

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>