version 1.1, 2001/11/19 01:02:30 |
version 1.13, 2002/03/11 03:17:00 |
|
|
% $OpenXM$ |
% $OpenXM: OpenXM/doc/Papers/dag-noro-proc.tex,v 1.12 2002/02/25 07:56:16 noro Exp $ |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
% This is a sample input file for your contribution to a multi- |
% This is a sample input file for your contribution to a multi- |
% author book to be published by Springer Verlag. |
% author book to be published by Springer Verlag. |
|
|
\usepackage{epsfig} |
\usepackage{epsfig} |
\def\cont{{\rm cont}} |
\def\cont{{\rm cont}} |
\def\GCD{{\rm GCD}} |
\def\GCD{{\rm GCD}} |
|
\def\Q{{\bf Q}} |
% |
% |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% |
|
|
|
|
% allows abbreviation of title, if the full title is too long |
% allows abbreviation of title, if the full title is too long |
% to fit in the running head |
% to fit in the running head |
% |
% |
\author{Masayuki Noro\inst{1}} |
\author{Masayuki Noro} |
% |
% |
%\authorrunning{Masayuki Noro} |
%\authorrunning{Masayuki Noro} |
% if there are more than two authors, |
% if there are more than two authors, |
|
|
|
|
\maketitle % typesets the title of the contribution |
\maketitle % typesets the title of the contribution |
|
|
\begin{abstract} |
%\begin{abstract} |
OpenXM \cite{OPENXM} is an infrastructure for exchanging mathematical |
%Risa/Asir is software for polynomial computation. It has been |
data. It defines a client-server architecture for parallel and |
%developed for testing experimental polynomial algorithms, and now it |
distributed computation. Risa/Asir is software for polynomial |
%acts also as a main component in the OpenXM package \cite{noro:OPENXM}. |
computation. It has been developed for testing new algorithms, and now |
%OpenXM is an infrastructure for exchanging mathematical |
it acts as both a client and a server in the OpenXM package. In this |
%data. It defines a client-server architecture for parallel and |
article we present an overview of Risa/Asir and its performances on |
%distributed computation. In this article we present an overview of |
several functions. We also show Risa/Asir's OpenXM interfaces and |
%Risa/Asir and review several techniques for improving performances of |
examples of usages of them. |
%Groebner basis computation over {\bf Q}. We also show Risa/Asir's |
\end{abstract} |
%OpenXM interfaces and their usages. |
|
%\end{abstract} |
|
|
\section{A computer algebra system Risa/Asir} |
\section{Introduction} |
|
|
\subsection{What is Risa/Asir?} |
%Risa/Asir $B$O(B, $B?t(B, $BB?9`<0$J$I$KBP$9$k1i;;$r<BAu$9$k(B engine, |
|
%$B%f!<%68@8l$r<BAu$9$k(B parser and interpreter $B$*$h$S(B, |
|
%$BB>$N(B application $B$H$N(B interaction $B$N$?$a$N(B OpenXM interface $B$+$i$J$k(B |
|
%computer algebra system $B$G$"$k(B. |
|
Risa/Asir is a computer algebra system which consists of an engine for |
|
operations on numbers and polynomials, a parser and an interpreter for |
|
the user language, and OpenXM API, a communication interface for |
|
interaction with other applications. |
|
%engine $B$G$O(B, $B?t(B, $BB?9`<0$J$I$N(B arithmetics $B$*$h$S(B, $BB?9`<0(B |
|
%GCD, $B0x?tJ,2r(B, $B%0%l%V%J4pDl7W;;$,<BAu$5$l$F$$$k(B. $B$3$l$i$OAH$_9~$_4X?t(B |
|
%$B$H$7$F%f!<%68@8l$+$i8F$S=P$5$l$k(B. |
|
The engine implements fundamental arithmetics on numbers and polynomials, |
|
polynomial GCD, polynomial factorizations and Groebner basis computations, |
|
etc. |
|
%Risa/Asir $B$N%f!<%68@8l$O(B C $B8@8l(B like $B$JJ8K!$r$b$A(B, $BJQ?t$N7?@k8@$,(B |
|
%$B$J$$(B, $B%j%9%H=hM}$*$h$S<+F0(B garbage collection $B$D$-$N%$%s%?%W%j%?(B |
|
%$B8@8l$G$"$k(B. $B%f!<%68@8l%W%m%0%i%`$O(B parser $B$K$h$jCf4V8@8l$K(B |
|
%$BJQ49$5$l(B, interpreter $B$K$h$j2r<a<B9T$5$l$k(B. interpreter $B$K$O(B |
|
%gdb $BIw$N(B debugger $B$,AH$_9~$^$l$F$$$k(B. |
|
The user language has C-like syntax, without type declarations |
|
of variables, with list processing and with automatic garbage collection. |
|
The interpreter is equipped with a {\tt gdb}-like debugger. |
|
%$B$3$l$i$N5!G=$O(B OpenXM interface $B$rDL$7$FB>$N(B application $B$+$i$b;HMQ2D(B |
|
%$BG=$G$"$k(B. OpenXM \cite{noro:RFC100} $B$O?t3X%=%U%H%&%'%"$N(B client-server |
|
%$B7?$NAj8_8F$S=P$7$N$?$a$N(B $B%W%m%H%3%k$G$"$k(B. |
|
All these functions can be called from other applications via OpenXM API. |
|
OpenXM \cite{noro:RFC100} is a protocol for client-server |
|
communications for mathematical software systems. We are distributing |
|
OpenXM package \cite{noro:OPENXM}, which is a collection of various |
|
clients and servers compliant to the OpenXM protocol specification. |
|
|
Risa/Asir \cite{RISA} is software mainly for polynomial |
%Risa/Asir $B$OB?9`<00x?tJ,2r(B, $B%,%m%"727W;;(B \cite{noro:ANY}, $B%0%l%V%J4pDl(B |
computation. Its major functions are polynomial factorization and |
%$B7W;;(B \cite{noro:NM,noro:NY}, $B=`AG%$%G%"%kJ,2r(B \cite{noro:SY}, $B0E9f(B |
Groebner basis computation, whose core parts are implemented as |
%\cite{noro:IKNY} $B$K$*$1$k<B83E*%"%k%4%j%:%`(B $B$r%F%9%H$9$k$?$a$N%W%i%C%H(B |
builtin functions. Some higher algorithms such as primary ideal |
%$B%U%)!<%`$H$7$F3+H/$5$l$F$-$?(B. $B$^$?(B, OpenXM API $B$rMQ$$$F(B parallel |
decomposition or Galois group computation are built on them by the |
%distributed computation $B$N<B83$K$bMQ$$$i$l$F$$$k(B. $B:,44$r$J$9$N$OB?9`(B |
user language. The user language is called Asir language. Asir |
%$B<00x?tJ,2r$*$h$S%0%l%V%J4pDl7W;;$G$"$k(B. $BK\9F$G$O(B, $BFC$K(B, $B%0%l%V%J4pDl(B |
language can be regarded as C language without type declaration of |
%$B7W;;$K4X$7$F(B, $B$=$N4pK\$*$h$S(B {\bf Q} $B>e$G$N7W;;$N:$Fq$r9nI~$9$k$?$a$N(B |
variables, with list processing, and with automatic garbage |
%$B$5$^$6$^$J9)IW$*$h$S$=$N8z2L$K$D$$$F=R$Y$k(B. $B$^$?(B, Risa/Asir $B$O(B OpenXM |
collection. A builtin {\tt gdb}-like user language debugger is |
%package $B$K$*$1$k<gMW$J(B component $B$N0l$D$G$"$k(B. Risa/Asir $B$r(B client $B$"(B |
available. It is open source and the source code and binaries are |
%$B$k$$$O(B server $B$H$7$FMQ$$$kJ,;6JBNs7W;;$K$D$$$F(B, $B<BNc$r$b$H$K2r@b$9$k(B. |
available via ftp or CVS. |
Risa/Asir has been used for implementing and testing experimental |
Risa/Asir is not only an standalone computer algebra system but also a |
algorithms such as polynomial factorizations, splitting field and |
main component in OpenXM package \cite{OPENXM}, which is a collection |
Galois group computations \cite{noro:ANY}, Groebner basis computations |
of software comliant to OpenXM protocol specification. OpenXM is an |
\cite{noro:REPL,noro:NOYO}, primary ideal decomposition \cite{noro:SY} |
infrastructure for exchanging mathematical data and Risa/Asir has |
and cryptgraphy \cite{noro:IKNY}. In these applications two major |
three kind of OpenXM intefaces : an inteface as a server, as a cllient |
functions of Risa/Asir, polynomial factorization and Groebner basis |
and as a subroutine library. We will explain them in the later |
computation play important roles. We focus on Groebner basis |
section. |
computation and we review its fundamentals and vaious efforts for |
|
improving efficiency especially over $\Q$. Risa/Asir is also a main |
|
component of OpenXM package and it has been used for parallel |
|
distributed computation with OpenXM API. We will explain how one can |
|
execute parallel distributed computation by using Risa/Asir as a |
|
client or a server. |
|
|
Our goals of developing Risa/Asir are as follows: |
\section{Efficient Groebner basis computation over {\bf Q}} |
|
\label{tab:gbtech} |
|
|
\begin{enumerate} |
In this section we review several practical techniques to improve |
\item Providing a test bed of new algorithms |
Groebner basis computation over {\bf Q}, which are easily |
|
implemented but may not be well known. |
|
We use the following notations. |
|
\begin{description} |
|
\item $<$ : a term order in the set of monomials. It is a total order such that |
|
|
Risa/Asir has been a platform for testing experimental algorithms in |
$\forall t, 1 \le t$ and $\forall s, t, u, s<t \Rightarrow us<ut$. |
polynomial factorization, computation related to Groebner basis, |
\item $Id(F)$ : a polynomial ideal generated by a polynomial set $F$. |
cryptography and quantifier elimination. As to Groebner basis, we have |
\item $HT(f)$ : the head term of a polynomial with respect to a term order. |
been mainly interested in problems over {\bf Q} and we tried applying |
\item $HC(f)$ : the head coefficient of a polynomial with respect to a term order. |
various modular techniques to overcome difficulties caused by huge |
\item $T(f)$ : terms with non zero coefficients in $f$. |
intermediate coefficients. We have had several results and they have |
\item $Spoly(f,g)$ : the S-polynomial of $\{f,g\}$ |
been implemented in Risa/Asir. |
|
|
|
\item Gereral purpose open system |
$Spoly(f,g) = T_{f,g}/HT(f)\cdot f/HC(f) -T_{f,g}/HT(g)\cdot g/HC(g)$, where |
|
$T_{f,g} = LCM(HT(f),HT(g))$. |
|
\item $\phi_p$ : the canonical projection from ${\bf Z}$ onto $GF(p)$. |
|
\end{description} |
|
|
We need a lot of functions to make Risa/Asir a general purpose |
\subsection{Groebner basis computation and its improvements} |
computer algebra system. In recent years we can obtain various high |
|
performance applications or libraries as free software. We wrapped |
|
such software as OpenXM servers and we started to release a collection |
|
of such servers and cleints as OpenXM package in 1997. Risa/Asir is |
|
now a main client in the package. |
|
|
|
\item Environment for parallel and distributed computation |
A Groebner basis of an ideal $Id(F)$ can be computed by the Buchberger |
|
algorithm. The key oeration in the algorithm is the following |
|
division by a polynomial set. |
|
\begin{tabbing} |
|
while \= $\exists g \in G$, $\exists t \in T(f)$ such that $HT(g)|t$ do\\ |
|
\> $f \leftarrow f - t/HT(g) \cdot c/HC(g) \cdot g$, \quad |
|
where $c$ is the coeffcient of $t$ in $f$ |
|
\end{tabbing} |
|
This division terminates for any term order. |
|
With this division, we can show the most primitive version of the |
|
Buchberger algorithm. |
|
\begin{tabbing} |
|
Input : a finite polynomial set $F$\\ |
|
Output : a Groebner basis $G$ of $Id(F)$ with respect to a term order $<$\\ |
|
$G \leftarrow F$; \quad $D \leftarrow \{\{f,g\}| f, g \in G, f \neq g \}$\\ |
|
while \= $D \neq \emptyset$ do \\ |
|
\> $\{f,g\} \leftarrow$ an element of $D$; \quad |
|
$D \leftarrow D \setminus \{P\}$\\ |
|
\> $R \leftarrow$ a remainder of $Spoly(f,g)$ on division by $G$\\ |
|
\> if $R \neq 0$ then $D \leftarrow D \cup \{\{f,R\}| f \in G\}$; \quad |
|
$G \leftarrow G \cup \{R\}$\\ |
|
end do\\ |
|
return G |
|
\end{tabbing} |
|
From the practical point of view, the above algorithm is too naive to |
|
compute real problems and lots of improvements have been proposed. |
|
The following are major ones: |
|
\begin{itemize} |
|
\item Useless pair detection |
|
|
The origin of OpenXM is a protocol for doing parallel distributed |
We don't have to process all the pairs in $D$ and several useful |
compuatations by connecting multiple Risa/Asir. OpenXM is also |
criteria for detecting useless pairs were proposed (cf. \cite{noro:BW}). |
designed to provide an enviroment efficient parallel distributed |
|
computation. Currently only client-server communication is possible, |
|
but we are preparing a specification OpenXM-RFC 102 allowing |
|
client-client communication, which will enable us to execute |
|
wider range of parallel algorithms efficiently. |
|
\end{enumerate} |
|
|
|
\subsection{Groebner basis and the related computation} |
\item Selection strategy |
|
|
Currently Risa/Asir can only deal with polynomial ring. Operations on |
The selection of $\{f,g\}$ greatly affects the subsequent computation. |
modules over polynomial rings have not yet supported. However, both |
The typical strategies are the normal startegy |
commutative polynomial rings and Weyl algebra are supported and one |
and the sugar strategy \cite{noro:SUGAR}. |
can compute Groebner basis in both rings over the rationals, fields of |
The latter was proposed for efficient computation under a non |
rational functions and finite fields. In the early stage of our |
degree-compatible order. |
development, our effort was mainly devoted to improve the efficiency |
|
of computation over the rationals. Our main tool is modular |
|
computation. For Buchberger algorithm we adopted the trace lifting |
|
algorithm by Traverso \cite{TRAV} and elaborated it by applying our |
|
theory on a correspondence between Groebner basis and its modular |
|
image \cite{NOYO}. We also combine the trace lifting with |
|
homogenization to stabilize selection strategies, which enables us to |
|
compute several examples efficiently which is hard to compute without |
|
such a combination. Our modular method can be applied to the change |
|
of ordering algorithm and rational univariate representation. We also |
|
made a test implementation of $F_4$ algorithm \cite{F4}. Later we will |
|
show timing data on Groebner basis computation. |
|
|
|
\subsection{Polynomial factorization} |
\item Modular methods |
|
|
Here we briefly review functions on polynomial factorization. For |
Even if we apply several criteria, it is difficult to detect all pairs |
univariate factorization over {\bf Q}, the classical |
whose S-polynomials are reduced to zero, and the cost to process them |
Berlekamp-Zassenhaus algorithm is implemented. Efficient algorithms |
often occupies a major part in the whole computation. The trace |
recently proposed have not yet implemented. For Univariate factorizer |
algorithms \cite{noro:TRAV} were proposed to reduce such cost. This |
over algebraic number fields, Trager's algorithm \cite{TRAGER} is |
will be explained in more detail in Section \ref{sec:gbhomo}. |
implemented with some modifications. Its major applications are |
|
splitting field and Galois group computation of polynomials over the |
|
rationals. For such purpose a tower of simple extensions are suitable |
|
because factors represented over a simple extension often have huge |
|
coefficients \cite{ANY}. For univariate factorization over finite |
|
fields, equal degree factorization + Cantor-Zassenhaus algorithm is |
|
implemented. We can use various representation of finite fields: |
|
$GF(p)$ with a machine integer prime $p$, $GF(p)$, $GF(p^n)$ with any |
|
odd prime $p$, $GF(2^n)$ with a bit representation of polynomials over |
|
$GF(2)$ and $GF(p^n)$ with small $p^n$ represented by a primitive |
|
root. For multivariate factorization over the rationals, the |
|
classical EZ(Extented Zassenhaus) type algorithm is implemented. |
|
|
|
\subsection{Other functions} |
\item Change of ordering |
By applying Groebner basis computation and polynomial factorization, |
|
we have implemented several higher level algorithms. A typical |
|
application is primary ideal decomposition of polynomial ideals over |
|
{\bf Q}, which needs both functions. Shimoyama-Yokoyama algorithm |
|
\cite{SY} for primary decompsition is written in the user language. |
|
Splitting field and Galois group computation are closely related and |
|
are also important applications of polynomial factorization. Our |
|
implementation of Galois group computation algorithm \cite{ANY} |
|
requires splitting field computation, which is written in the |
|
user language. |
|
|
|
\section{Techniques for efficient Groebner basis computation over {\bf Q}} |
For elimination, we need a Groebner basis with respect to a non |
\label{gbtech} |
degree-compatible order, but it is often hard to compute it by a |
|
direct application of the Buchberger algorithm. If the ideal is zero |
|
dimensional, we can apply a change of ordering algorithm called FGLM |
|
\cite{noro:FGLM}. First of all we compute a Groebner basis with |
|
respect to some order. Then we can obtain a Groebner basis with respect |
|
to a desired order by a linear algebraic method. |
|
|
In this section we review several practical techniques to improve |
\end{itemize} |
Groebner basis computation over {\bf Q}, which are easily |
By implementing these techniques, one can obtain Groebner bases for |
implemented but may not be well known. |
wider range of inputs. Nevertheless there are still intractable |
We use the following notations. |
problems with these classical tools. In the subsequent sections |
\begin{description} |
we show several methods for further improvements. |
\item $\phi_p$ : the canonical projection from ${\bf Z}$ onto $GF(p)$ |
|
\item $HT(f)$ : the head term of a polynomail with respect to a term order |
|
\item $HC(f)$ : the head coefficient of a polynomail with respect to a term order |
|
\end{description} |
|
|
|
\subsection{Combination of homogenization and trace lifting} |
\subsection{Combination of homogenization and trace lifting} |
|
\label{sec:gbhomo} |
|
|
Traverso's trace lifting algorithm can be |
The trace lifting algorithm can be |
formulated in an abstract form as follows \cite{FPARA}. |
formulated in an abstract form as follows (c.f. \cite{noro:FPARA}). |
\begin{tabbing} |
\begin{tabbing} |
Input : a finite subset $F \subset {\bf Z}[X]$\\ |
Input : a finite subset $F \subset {\bf Z}[X]$\\ |
Output : a Groebner basis $G$ of $Id(F)$ with respect to a term order $<$\\ |
Output : a Groebner basis $G$ of $Id(F)$ with respect to a term order $<$\\ |
Line 235 such that $\phi_p(G)$ \\ |
|
Line 263 such that $\phi_p(G)$ \\ |
|
\>If $G$ passes the check return $G$\\ |
\>If $G$ passes the check return $G$\\ |
end do |
end do |
\end{tabbing} |
\end{tabbing} |
We can apply various methods for {\tt guess} part of the above |
We can apply various methods for {\it guess} part of the above |
algorithm. Originally we guess the candidate by replacing zero normal |
algorithm. In the original algorithm we guess the candidate by |
form checks over {\bf Q} with those over $GF(p)$ in the Buchberger |
replacing zero normal form checks over {\bf Q} with those over $GF(p)$ |
algorithm, which we call {\it tl\_guess}. In Asir one can specify |
in the Buchberger algorithm, which we call {\it tl\_guess}. In Asir |
another method {\it tl\_h\_guess\_dh}, which is a combination of |
one can specify another method {\it tl\_h\_guess\_dh}, which is a |
{\it tl\_guess} and homogenization. |
combination of {\it tl\_guess} and homogenization. |
\begin{tabbing} |
\begin{tabbing} |
$tl\_h\_guess\_dh(F,p)$\\ |
$tl\_h\_guess\_dh(F,p)$\\ |
Input : $F\subset {\bf Z}[X]$, a prime $p$\\ |
Input : $F\subset {\bf Z}[X]$, a prime $p$\\ |
Line 252 $G \leftarrow G \setminus \{g \in G| \exists h \in G \ |
|
Line 280 $G \leftarrow G \setminus \{g \in G| \exists h \in G \ |
|
such that $HT(h)|HT(g)$ \} |
such that $HT(h)|HT(g)$ \} |
\end{tabbing} |
\end{tabbing} |
The input is homogenized to suppress intermediate coefficient swells |
The input is homogenized to suppress intermediate coefficient swells |
of intermediate basis elements. The number of zero normal forms may |
of intermediate basis elements. The homogenization may increase the |
increase by the homogenization, but they are detected over |
number of normal forms reduced to zero, but they can be |
GF(p). Finally, by dehomogenizing the candidate we can expect that |
detected by the computations over $GF(p)$. Finally, by |
lots of redundant elements can be removed. We will show later that this is |
dehomogenizing the candidate we can expect that lots of redundant |
surely efficient for some input polynomial sets. |
elements are removed and the subsequent check are made easy. |
|
|
\subsection{Minimal polynomial computation by modular method} |
\subsection{Minimal polynomial computation by a modular method} |
|
|
Let $I$ be a zero-dimensional ideal in $R={\bf Q}[x_1,\ldots,x_n]$. |
Let $I$ be a zero-dimensional ideal in $R={\bf Q}[x_1,\ldots,x_n]$. |
Then the minimal polynomial $m(x_i)$ of a variable $x_i$ in $R/I$ can |
Then the minimal polynomial $m(x_i)$ of a variable $x_i$ in $R/I$ can |
be computed by a partial FGLM \cite{FGLM}, but it often takes long |
be computed by applying FGLM partially, but it often takes long |
time if one searches $m(x_i)$ incrementally over {\bf Q}. In this |
time if one searches $m(x_i)$ incrementally over {\bf Q}. In this |
case we can apply a simple modular method to compute the minimal |
case we can apply a simple modular method to compute the minimal |
polynomial. |
polynomial. |
\begin{tabbing} |
\begin{tabbing} |
Input : a Groebner basis $G$ of $I$, a variable $x_i$\\ |
Input : a Groebner basis $G$ of $I$, a variable $x_i$\\ |
Output : the minimal polynomial of $x$ in $R/I$\\ |
Output : the minimal polynomial of $x_i$ in $R/I$\\ |
do \= \\ |
do \= \\ |
\> $p \leftarrow$ a new prime such that $p \not{|} HC(g)$ for all $g \in G$\\ |
\> $p \leftarrow$ a new prime such that $p \not{|} HC(g)$ for all $g \in G$\\ |
\> $m_p \leftarrow$ the minimal polynomial of $x_i$ in $GF(p)[x_1,\ldots,x_n]/Id(\phi_p(G))$\\ |
\> $m_p \leftarrow$ the minimal polynomial of $x_i$ in $GF(p)[x_1,\ldots,x_n]/Id(\phi_p(G))$\\ |
Line 279 In this algorithm, $m_p$ can be obtained by a partial |
|
Line 308 In this algorithm, $m_p$ can be obtained by a partial |
|
$GF(p)$ because $\phi_p(G)$ is a Groebner basis. Once we know the |
$GF(p)$ because $\phi_p(G)$ is a Groebner basis. Once we know the |
candidate of $\deg(m(x_i))$, $m(x_i)$ can be determined by solving a |
candidate of $\deg(m(x_i))$, $m(x_i)$ can be determined by solving a |
system of linear equations via the method of indeterminate |
system of linear equations via the method of indeterminate |
coefficient. Arguments on \cite{NOYO} ensures that $m(x_i)$ is what we |
coefficient, and it can be solved efficiently by $p$-adic method. |
want if it exists. Note that the full FGLM can also be computed by the |
Arguments on \cite{noro:NOYO} ensures that $m(x_i)$ is what we want if it |
same method. |
exists. Note that the full FGLM can also be computed by the same |
|
method. |
|
|
\subsection{Integer contents reduction} |
\subsection{Integer contents reduction} |
|
\label{sec:gbcont} |
|
|
In some cases the cost to remove integer contents during nomal form |
In some cases the cost to remove integer contents during normal form |
computations is dominant. We can remove the content of an integral |
computations is dominant. We can remove the content of an integral |
polynomial $f$ efficiently by the following method \cite{REPL}. |
polynomial $f$ efficiently by the following method \cite{noro:REPL}. |
\begin{tabbing} |
\begin{tabbing} |
Input : an integral polynomial $f$\\ |
Input : an integral polynomial $f$\\ |
Output : a pair $(\cont(f),f/\cont(f))$\\ |
Output : a pair $(\cont(f),f/\cont(f))$\\ |
$g_0 \leftarrow$ an estimate of $\cont(f)$ such that $\cont(f)|g_0$\\ |
$g_0 \leftarrow$ an estimate of $\cont(f)$ such that $\cont(f)|g_0$\\ |
Write $f$ as $f = g_0q+r$ by division with remainder for each coefficient\\ |
Write $f$ as $f = g_0q+r$ by division with remainder by $g_0$ for each coefficient\\ |
If $r = 0$ then return $(g_0,q)$\\ |
If $r = 0$ then return $(g_0,q)$\\ |
else return $(g,g_0/g \cdot q + r/g)$, where $g = \GCD(g_0,\cont(r))$ |
else return $(g,g_0/g \cdot q + r/g)$, where $g = \GCD(g_0,\cont(r))$ |
\end{tabbing} |
\end{tabbing} |
By serataing the set of coefficients of $f$ into two subsets and by |
By separating the set of coefficients of $f$ into two subsets and by |
computing GCD of sums in the elements in the subsets we can estimate |
computing GCD of sums of the elements in each subset we can estimate |
$g_0$ with high accuracy. Then other components are easily computed. |
$g_0$ with high accuracy. Then other components are easily computed. |
|
|
%\subsection{Demand loading of reducers} |
%\subsection{Demand loading of reducers} |
%An execution of the Buchberer algorithm may produce vary large number |
%An execution of the Buchberger algorithm may produce vary large number |
%of intermediate basis elements. In Asir, we can specify that such |
%of intermediate basis elements. In Asir, we can specify that such |
%basis elements should be put on disk to enlarge free memory space. |
%basis elements should be put on disk to enlarge free memory space. |
%This does not reduce the efficiency so much because all basis elements |
%This does not reduce the efficiency so much because all basis elements |
Line 309 $g_0$ with high accuracy. Then other components are ea |
|
Line 340 $g_0$ with high accuracy. Then other components are ea |
|
%cost for reading basis elements from disk is often negligible because |
%cost for reading basis elements from disk is often negligible because |
%of the cost for coefficient computations. |
%of the cost for coefficient computations. |
|
|
\section{Risa/Asir performance} |
\subsection{Performances of Groebner basis computation} |
|
|
We show timing data on Risa/Asir for polynomial factorization |
We show timing data on Risa/Asir for Groebner basis computation. |
and Groebner basis computation. The measurements were made on |
All the improvements in this section have been implemented in |
a PC with PentiumIII 1GHz and 1Gbyte of main memory. Timings |
Risa/Asir. Besides we have a test implemention of $F_4$ algorithm |
are given in seconds. In the tables `---' means it was not |
\cite{noro:F4}, which is a new algorithm for computing Groebner basis. |
measured. |
The measurements were made on a PC with PentiumIII |
|
1GHz and 1Gbyte of main memory. Timings are given in seconds. In the |
|
tables `exhaust' means memory exhastion. $C_n$ is the cyclic $n$ |
|
system and $K_n$ is the Katsura $n$ system, both are famous bench mark |
|
problems \cite{noro:BENCH}. $McKay$ \cite{noro:REPL} is a system |
|
whose Groebner basis is hard to compute over {\bf Q}. The term order |
|
is graded reverse lexicographic order. Table \ref{tab:gbmod} shows |
|
timing data for Groebner basis computation over $GF(32003)$. $F_4$ |
|
implementation in Risa/Asir outperforms Buchberger algorithm |
|
implementation, but it is still several times slower than $F_4$ |
|
implementation in FGb \cite{noro:FGB}. Table \ref{tab:gbq} shows |
|
timing data for Groebner basis computation over $\Q$, where we compare |
|
the timing data under various configuration of algorithms. {\bf TR}, |
|
{\bf Homo}, {\bf Cont} means trace lifting, homogenization and |
|
contents reduction respectively. Table \ref{tab:gbq} also shows |
|
timings of minimal polynomial computation for |
|
$C_7$, $K_7$ and $K_8$, which are zero-dimensional ideals. |
|
Table \ref{tab:gbq} shows that it is difficult or practically |
|
impossible to compute Groebner bases of $C_7$, $C_8$ and $McKay$ |
|
without the methods described in Section \ref{sec:gbhomo} and |
|
\ref{sec:gbcont}. |
|
|
\subsection{Groebner basis computation} |
Here we mension a result of $F_4$ over $\Q$. Though $F_4$ |
|
implementation in Risa/Asir over {\bf Q} is still experimental and its |
|
performance is poor in general, it can compute $McKay$ in 4939 seconds. |
|
Fig. \ref{tab:f4vsbuch} explains why $F_4$ is efficient in this case. |
|
The figure shows that the Buchberger algorithm produces normal forms |
|
with huge coefficients for S-polynomials after the 250-th one, which |
|
make subsequent computation hard. Whereas $F_4$ algorithm |
|
automatically produces the reduced basis elements, and the reduced |
|
basis elements have much smaller coefficients after removing contents. |
|
Therefore the corresponding computation is quite easy in $F_4$. |
|
|
Table \ref{gbmod} and Table \ref{gbq} shows timing data for Groebner |
|
basis compuation over $GF(32003)$ and over {\bf Q} respectively. |
|
$C_n$ is the cyclic $n$ system and $K_n$ is the Katsura $n$ system, |
|
both are famous bench mark problems. We also measured the timing for |
|
$McKay$ system over {\bf Q} \cite{REPL}. the term order is graded |
|
reverse lexicographic order. In the both tables, the first three rows |
|
are timings for the Buchberger algorithm, and the last two rows are |
|
timings for $F_4$ algorithm. As to the Buchberger algorithm over |
|
$GF(32003)$, Singular\cite{SINGULAR} shows the best performance among |
|
the three systems. $F_4$ implementation in Risa/Asir is faster than |
|
the Buchberger algorithm implementation in Singluar, but it is still |
|
several times slower than $F_4$ implemenataion in FGb \cite{FGB}. In |
|
Table \ref{gbq}, $C_7$ and $McKay$ can be computed by the Buchberger |
|
algorithm with the methods described in Section \ref{gbtech}. It is |
|
obvious that $F_4$ implementation in Risa/Asir over {\bf Q} is too |
|
immature. Nevertheless the timing of $McKay$ is greatly reduced. |
|
Why is $F_4$ efficient in this case? The answer is in the right |
|
half of Fig. \ref{f4vsbuch}. During processing S-polynomials of degree |
|
16, the Buchberger algorithm produces intermediate polynomials with |
|
huge coefficients, but if we compute normal forms of these polynomials |
|
by using all subsequently generated basis elements, then their |
|
coefficients will be reduced after removing contents. As $F_4$ |
|
algorithm automatically produces the reduced basis elements, the |
|
degree 16 computation is quite easy in $F_4$. |
|
|
|
|
|
\begin{table}[hbtp] |
\begin{table}[hbtp] |
\begin{center} |
\begin{center} |
\begin{tabular}{|c||c|c|c|c|c|c|c|} \hline |
\begin{tabular}{|c||c|c|c|c|c|c|c|} \hline |
& $C_7$ & $C_8$ & $K_7$ & $K_8$ & $K_9$ & $K_{10}$ & $K_{11}$ \\ \hline |
& $C_7$ & $C_8$ & $K_7$ & $K_8$ & $K_9$ & $K_{10}$ & $K_{11}$ \\ \hline |
Asir $Buchberger$ & 31 & 1687 & 2.6 & 27 & 294 & 4309 & --- \\ \hline |
Asir $Buchberger$ & 31 & 1687 & 2.6 & 27 & 294 & 4309 & $>$ 3h \\ \hline |
Singular & 8.7 & 278 & 0.6 & 5.6 & 54 & 508 & 5510 \\ \hline |
%Singular & 8.7 & 278 & 0.6 & 5.6 & 54 & 508 & 5510 \\ \hline |
CoCoA 4 & 241 & $>$ 5h & 3.8 & 35 & 402 &7021 & --- \\ \hline\hline |
%CoCoA 4 & 241 & $>$ 5h & 3.8 & 35 & 402 &7021 & --- \\ \hline\hline |
Asir $F_4$ & 5.3 & 129 & 0.5 & 4.5 & 31 & 273 & 2641 \\ \hline |
Asir $F_4$ & 5.3 & 129 & 0.5 & 4.5 & 31 & 273 & 2641 \\ \hline |
FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \\ \hline |
FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \\ \hline |
\end{tabular} |
\end{tabular} |
\end{center} |
\end{center} |
\caption{Groebner basis computation over $GF(32003)$} |
\caption{Groebner basis computation over $GF(32003)$} |
\label{gbmod} |
\label{tab:gbmod} |
\end{table} |
\end{table} |
|
|
\begin{table}[hbtp] |
\begin{table}[hbtp] |
\begin{center} |
\begin{center} |
\begin{tabular}{|c||c|c|c|c|c|} \hline |
\begin{tabular}{|c||c|c|c|c|c|} \hline |
& $C_7$ & $Homog. C_7$ & $K_7$ & $K_8$ & $McKay$ \\ \hline |
& $C_7$ & $C_8$ & $K_7$ & $K_8$ & $McKay$ \\ \hline |
Asir $Buchberger$ & 389 & 594 & 29 & 299 & 34950 \\ \hline |
{\bf TR}+{\bf Homo}+{\bf Cont} & 389 & 54000 & 35 & 351 & 34950 \\ \hline |
Singular & --- & 15247 & 7.6 & 79 & $>$ 20h \\ \hline |
{\bf TR}+{\bf Homo} & 1346 & exhaust & 35 & 352 & exhaust \\ \hline |
CoCoA 4 & --- & 13227 & 57 & 709 & --- \\ \hline\hline |
{\bf TR} & $> 3h $ & $>$ 1day & 36 & 372 & $>$ 1day \\ \hline |
Asir $F_4$ & 989 & 456 & 90 & 991 & 4939 \\ \hline |
%Asir $F_4$ & 989 & 456 & --- & 90 & 991 & 4939 \\ \hline \hline |
FGb(estimated) & 8 &11 & 0.6 & 5 & 10 \\ \hline |
{\bf Minipoly} & 14 & positive dim & 14 & 286 & positive dim \\ \hline |
|
%Singular & --- & 15247 & --- & 7.6 & 79 & $>$ 20h \\ \hline |
|
%CoCoA 4 & --- & 13227 & --- & 57 & 709 & --- \\ \hline\hline |
|
%FGb(estimated) & 8 &11 & 288 & 0.6 & 5 & 10 \\ \hline |
\end{tabular} |
\end{tabular} |
\end{center} |
\end{center} |
\caption{Groebner basis computation over {\bf Q}} |
\caption{Groebner basis and minimal polynomial computation over {\bf Q}} |
\label{gbq} |
\label{tab:gbq} |
\end{table} |
\end{table} |
|
|
\begin{figure}[hbtp] |
\begin{figure}[hbtp] |
\begin{center} |
\begin{center} |
\epsfxsize=12cm |
\epsfxsize=12cm |
\epsffile{blenall.ps} |
%\epsffile{../compalg/ps/blenall.ps} |
|
\epsffile{blen.ps} |
\end{center} |
\end{center} |
\caption{Maximal coefficient bit length of intermediate bases} |
\caption{Maximal coefficient bit length of intermediate bases} |
\label{f4vsbuch} |
\label{tab:f4vsbuch} |
\end{figure} |
\end{figure} |
|
|
\subsection{Polynomial factorization} |
%Table \ref{minipoly} shows timing data for the minimal polynomial |
|
%computations of all variables over {\bf Q} by the modular method. |
|
%\begin{table}[hbtp] |
|
%\begin{center} |
|
%\begin{tabular}{|c||c|c|c|c|c|} \hline |
|
% & $C_6$ & $C_7$ & $K_6$ & $K_7$ & $K_8$ \\ \hline |
|
%Singular & 0.9 & 846 & 307 & 60880 & --- \\ \hline |
|
%Asir & 1.5 & 182 & 12 & 164 & 3420 \\ \hline |
|
%\end{tabular} |
|
%\end{center} |
|
%\caption{Minimal polynomial computation} |
|
%\label{minipoly} |
|
%\end{table} |
|
|
Table \ref{unifac} shows timing data for univariate factorization over |
%\subsection{Polynomial factorization} |
{\bf Q}. $N_{i,j}$ is an irreducible polynomial which are hard to |
% |
factor by the classical algorithm. $N_{i,j}$ is a norm of a polynomial |
%Table \ref{unifac} shows timing data for univariate factorization over |
and $\deg(N_i) = i$ with $j$ modular factors. Risa/Asir is |
%{\bf Q}. $N_{i,j}$ is an irreducible polynomial which are hard to |
disadvantageous in factoring polynomials of this type because the |
%factor by the classical algorithm. $N_{i,j}$ is a norm of a polynomial |
algorithm used in Risa/Asir has exponential complexity. In contrast, |
%and $\deg(N_i) = i$ with $j$ modular factors. Risa/Asir is |
CoCoA 4\cite{COCOA} and NTL-5.2\cite{NTL} show nice performances |
%disadvantageous in factoring polynomials of this type because the |
because they implement recently developed algorithms. |
%algorithm used in Risa/Asir has exponential complexity. In contrast, |
|
%CoCoA 4\cite{noro:COCOA} and NTL-5.2\cite{noro:NTL} show nice performances |
\begin{table}[hbtp] |
%because they implement recently developed algorithms. |
\begin{center} |
% |
\begin{tabular}{|c||c|c|c|c|} \hline |
%\begin{table}[hbtp] |
& $N_{105,23}$ & $N_{120,20}$ & $N_{168,24}$ & $N_{210,54}$ \\ \hline |
%\begin{center} |
Asir & 0.86 & 59 & 840 & hard \\ \hline |
%\begin{tabular}{|c||c|c|c|c|} \hline |
Asir NormFactor & 1.6 & 2.2& 6.1& hard \\ \hline |
% & $N_{105,23}$ & $N_{120,20}$ & $N_{168,24}$ & $N_{210,54}$ \\ \hline |
%Singular& hard? & hard?& hard? & hard? \\ \hline |
%Asir & 0.86 & 59 & 840 & hard \\ \hline |
CoCoA 4 & 0.2 & 7.1 & 16 & 0.5 \\ \hline\hline |
%Asir NormFactor & 1.6 & 2.2& 6.1& hard \\ \hline |
NTL-5.2 & 0.16 & 0.9 & 1.4 & 0.4 \\ \hline |
%%Singular& hard? & hard?& hard? & hard? \\ \hline |
\end{tabular} |
%CoCoA 4 & 0.2 & 7.1 & 16 & 0.5 \\ \hline\hline |
\end{center} |
%NTL-5.2 & 0.16 & 0.9 & 1.4 & 0.4 \\ \hline |
\caption{Univariate factorization over {\bf Q}} |
%\end{tabular} |
\label{unifac} |
%\end{center} |
\end{table} |
%\caption{Univariate factorization over {\bf Q}} |
|
%\label{unifac} |
Table \ref{multifac} shows timing data for multivariate |
%\end{table} |
factorization over {\bf Q}. |
% |
$W_{i,j,k}$ is a product of three multivariate polynomials |
%Table \ref{multifac} shows timing data for multivariate factorization |
$Wang[i]$, $Wang[j]$, $Wang[k]$ given in a data file |
%over {\bf Q}. $W_{i,j,k}$ is a product of three multivariate |
{\tt fctrdata} in Asir library directory. It is also included |
%polynomials $Wang[i]$, $Wang[j]$, $Wang[k]$ given in a data file {\tt |
in Risa/Asir source tree and located in {\tt asir2000/lib}. |
%fctrdata} in Asir library directory. It is also included in Risa/Asir |
For these examples Risa/Asir shows reasonable performance |
%source tree and located in {\tt asir2000/lib}. These examples have |
compared with other famous systems. |
%leading coefficients of large degree which vanish at 0 which tend to |
|
%cause so-called the leading coefficient problem the bad zero |
\begin{table}[hbtp] |
%problem. Risa/Asir's implementation carefully treats such cases and it |
\begin{center} |
%shows reasonable performance compared with other famous systems. |
\begin{tabular}{|c||c|c|c|c|c|} \hline |
%\begin{table}[hbtp] |
& $W_{1,2,3}$ & $W_{4,5,6}$ & $W_{7,8,9}$ & $W_{10,11,12}$ & $W_{13,14,15}$ \\ \hline |
%\begin{center} |
variables & 3 & 5 & 5 & 5 & 4 \\ \hline |
%\begin{tabular}{|c||c|c|c|c|c|} \hline |
monomials & 905 & 41369 & 51940 & 30988 & 3344 \\ \hline\hline |
% & $W_{1,2,3}$ & $W_{4,5,6}$ & $W_{7,8,9}$ & $W_{10,11,12}$ & $W_{13,14,15}$ \\ \hline |
Asir & 0.2 & 4.7 & 14 & 17 & 0.4 \\ \hline |
%variables & 3 & 5 & 5 & 5 & 4 \\ \hline |
|
%monomials & 905 & 41369 & 51940 & 30988 & 3344 \\ \hline\hline |
|
%Asir & 0.2 & 4.7 & 14 & 17 & 0.4 \\ \hline |
%Singular& $>$15min & --- & ---& ---& ---\\ \hline |
%Singular& $>$15min & --- & ---& ---& ---\\ \hline |
CoCoA 4 & 5.2 & $>$15min & $>$15min & $>$15min & 117 \\ \hline\hline |
%CoCoA 4 & 5.2 & $>$15min & $>$15min & $>$15min & 117 \\ \hline\hline |
Mathematica 4& 0.2 & 16 & 23 & 36 & 1.1 \\ \hline |
%Mathematica 4& 0.2 & 16 & 23 & 36 & 1.1 \\ \hline |
Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline |
%Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline |
\end{tabular} |
%\end{tabular} |
\end{center} |
%\end{center} |
\caption{Multivariate factorization over {\bf Q}} |
%\caption{Multivariate factorization over {\bf Q}} |
\label{multifac} |
%\label{multifac} |
\end{table} |
%\end{table} |
|
%As to univariate factorization over {\bf Q}, the univariate factorizer |
|
%implements old algorithms and its behavior is what one expects, |
|
%that is, it shows average performance in cases where there are little |
|
%extraneous factors, but shows poor performance for hard to factor |
|
%polynomials with many extraneous factors. |
|
|
\section{OpenXM and Risa/Asir OpenXM interfaces} |
\section{OpenXM and Risa/Asir OpenXM interfaces} |
|
|
\subsection{OpenXM overview} |
\subsection{OpenXM overview} |
|
|
OpenXM stands for Open message eXchange protocol for Mathematics. |
OpenXM stands for Open message eXchange protocol for Mathematics. |
Form the viewpoint of protocol design, it is a child of OpenMath |
From the viewpoint of protocol design, it can be regarded as a child |
\cite{OPENMATH}. However our approch is somewhat different. Our main |
of OpenMath \cite{noro:OPENMATH}. However our approach is somewhat |
purpose is to provide an environment for integrating {\it existing} |
different. Our main purpose is to provide an environment for |
mathematical software systems. OpenXM RFC-100 \cite{RFC100} defines a |
integrating {\it existing} mathematical software systems. OpenXM |
client-server architecture. Under this specification, a client |
RFC-100 \cite{noro:RFC100} defines a client-server architecture. Under |
invokes an OpenXM (OX) server. The client can send OpenXM (OX) |
this specification, a client invokes an OpenXM ({\it OX}) server. The |
messages to the server. OX messages consist of {\it data} and {\it |
client can send OpenXM ({\it OX}) messages to the server. OX messages |
command}. Data is encoded according to the common mathematical object |
consist of {\it data} and {\it command}. Data is encoded according to |
(CMO) format which defines serialized representation of mathematical |
the common mathematical object ({\it CMO}) format which defines |
objects. An OX server is a stackmachine. If data is sent as an OX |
serialized representation of mathematical objects. An OX server is a |
message, the server pushes the data onto its stack. There is a common |
stackmachine. If data is sent as an OX message, the server pushes the |
set of stackmachine commands and all OX server understands its subset. |
data onto its stack. There is a common set of stackmachine commands |
The command set includes commands for manipulating the stack and |
and each OX server understands its subset. The command set includes |
requests for execution of a procedure. In addition, a server may |
stack manipulating commands and requests for execution of a procedure. |
accept its own command sequences if the server wraps some interactive |
In addition, a server may accept its own command sequences if the |
software. That is the server may be a hybrid server. |
server wraps some interactive software. That is the server may be a |
|
hybrid server. |
|
|
OpenXM RFC-100 also defines methods for session management. In particular |
OpenXM RFC-100 also defines methods for session management. In particular |
the method to reset a server is carefully designed and it provides |
the method to reset a server is carefully designed and it provides |
a robust way of using servers both for interactive and non-interactive |
a robust way of using servers both for interactive and non-interactive |
purposes. |
purposes. |
|
|
\subsection{OpenXM client interface of {\tt asir}} |
\subsection{OpenXM API in Risa/Asir user language} |
|
|
Risa/Asir is a main client in OpenXM package. The application {\tt |
Risa/Asir is a main client in OpenXM package. The application {\tt |
asir} can access to OpenXM servers via several builtin interface |
asir} can access to OpenXM servers via several built-in interface |
functions. and various inferfaces to existing OpenXM servers are |
functions. and various interfaces to existing OpenXM servers are |
prepared as user defined functions written in Asir language. We show |
prepared as user defined functions written in Asir language. |
a typical OpenXM session. |
We show a typical OpenXM session. |
|
|
\begin{verbatim} |
\begin{verbatim} |
[1] P = ox_launch(); /* invoke an OpenXM asir server */ |
[1] P = ox_launch(); /* invoke an OpenXM asir server */ |
Line 483 a typical OpenXM session. |
|
Line 540 a typical OpenXM session. |
|
[[1,1],[x^4+y*x^3+y^2*x^2+y^3*x+y^4,1], |
[[1,1],[x^4+y*x^3+y^2*x^2+y^3*x+y^4,1], |
[x^4-y*x^3+y^2*x^2-y^3*x+y^4,1],[x-y,1],[x+y,1]] |
[x^4-y*x^3+y^2*x^2-y^3*x+y^4,1],[x-y,1],[x+y,1]] |
[5] ox_cmo_rpc(P,"fctr,",x^10000-2^10000*y^10000); |
[5] ox_cmo_rpc(P,"fctr,",x^10000-2^10000*y^10000); |
/* call factorizer; an utility function */ |
/* call factorizer; a utility function */ |
0 |
0 |
[6] ox_reset(P); /* reset the computation in the server */ |
[6] ox_reset(P); /* reset the computation in the server */ |
1 |
1 |
Line 495 a typical OpenXM session. |
|
Line 552 a typical OpenXM session. |
|
|
|
An application {\tt ox\_asir} is a wrapper of {\tt asir} and provides |
An application {\tt ox\_asir} is a wrapper of {\tt asir} and provides |
all the functions of {\tt asir} to OpenXM clients. It completely |
all the functions of {\tt asir} to OpenXM clients. It completely |
implements the OpenXM reset protocol and also provides remote |
implements the OpenXM reset protocol and also allows remote |
debugging of user programs running on the server. We show a program |
debugging of user programs running on the server. As an example we |
for checking whether a polynomial set is a Groebner basis or not. A |
show a program for checking whether a polynomial set is a Groebner |
client executes {\tt gbcheck()} and servers execute {\tt |
basis or not. A client executes {\tt gbcheck()} and servers execute |
sp\_nf\_for\_gbcheck()} which is a simple normal form computation of a |
{\tt sp\_nf\_for\_gbcheck()} which is a simple normal form computation |
S-polynomial. First of all the client collects all critical pairs |
of an S-polynomial. First of all the client collects all critical pairs |
necessary for the check. Then the client requests normal form |
necessary for the check. Then the client requests normal form |
computations to idling servers. If there are no idling servers the |
computations to idling servers. If there are no idling servers the |
clients waits for some servers to return results by {\tt |
clients waits for some servers to return results by {\tt |
ox\_select()}, which is a wrapper of UNIX {\tt select()}. If we have |
ox\_select()}, which is a wrapper of UNIX {\tt select()}. If we have |
large number of critcal pairs to be processed, we can expect |
large number of critical pairs to be processed, we can expect good |
good load balancing by {\tt ox\_select()}. |
load balancing by {\tt ox\_select()}. |
|
|
\begin{verbatim} |
\begin{verbatim} |
def gbcheck(B,V,O,Procs) { |
def gbcheck(B,V,O,Procs) { |
Line 542 def gbcheck(B,V,O,Procs) { |
|
Line 599 def gbcheck(B,V,O,Procs) { |
|
} |
} |
\end{verbatim} |
\end{verbatim} |
|
|
\subsection{Asir OpenXM library {\tt libasir.a}} |
\subsection{OpenXM C language API in {\tt libasir.a}} |
|
|
Asir OpenXM library {\tt libasir.a} includes functions simulating the |
Risa/Asir subroutine library {\tt libasir.a} contains functions |
stack machine commands supported in {\tt ox\_asir}. By linking {\tt |
simulating the stack machine commands supported in {\tt ox\_asir}. By |
libasir.a} an application can use the same functions as in {\tt |
linking {\tt libasir.a} an application can use the same functions as |
ox\_asir} without accessing to {\tt ox\_asir} via TCP/IP. |
in {\tt ox\_asir} without accessing to {\tt ox\_asir} via |
|
TCP/IP. There is also a stack, which can be manipulated by the library |
|
functions. In order to make full use of this interface, one has to |
|
prepare conversion functions between CMO and the data structures |
|
proper to the application itself. However, if the application linking |
|
{\tt libasir.a} can parse human readable outputs, a function {\tt |
|
asir\_ox\_pop\_string()} will be sufficient for receiving results. |
|
The following program shows its usage. |
|
|
|
\begin{verbatim} |
|
/* $OpenXM: OpenXM/doc/oxlib/test.c,v 1.3 2002/02/25 |
|
07:24:33 noro Exp $ */ |
|
#include <asir/ox.h> |
|
|
|
main() { |
|
char ibuf[BUFSIZ]; |
|
char *obuf; |
|
int len,len0; |
|
|
|
asir_ox_init(1); /* Use the network byte order */ |
|
|
|
len0 = BUFSIZ; |
|
obuf = (char *)malloc(len0); |
|
while ( 1 ) { |
|
printf("Input> "); |
|
fgets(ibuf,BUFSIZ,stdin); |
|
if ( !strncmp(ibuf,"bye",3) ) |
|
exit(0); |
|
/* the string in ibuf is executed, and the result |
|
is pushed onto the stack */ |
|
asir_ox_execute_string(ibuf); |
|
/* estimate the string length of the result */ |
|
len = asir_ox_peek_cmo_string_length(); |
|
if ( len > len0 ) { |
|
len0 = len; |
|
obuf = (char *)realloc(obuf,len0); |
|
} |
|
/* write the result to obuf as a string */ |
|
asir_ox_pop_string(obuf,len0); |
|
printf("Output> %s\n",obuf); |
|
} |
|
} |
|
\end{verbatim} |
|
In this program, \verb+asir_ox_execute_string()+ executes an Asir command line |
|
in {\tt ibuf} and the result is pushed onto the stack as a CMO data. |
|
Then we prepare a buffer sufficient to hold the result and call |
|
\verb+asir_ox_pop_string()+, which pops the result from the stack |
|
and convert it to a human readable form. Here is an example of execution: |
|
\begin{verbatim} |
|
% cc test.c OpenXM/lib/libasir.a OpenXM/lib/libasir-gc.a -lm |
|
% a.out |
|
Input> A = -z^31-w^12*z^20+y^18-y^14+x^2*y^2+x^21+w^2; |
|
Output> x^21+y^2*x^2+y^18-y^14-z^31-w^12*z^20+w^2 |
|
Input> B = 29*w^4*z^3*x^12+21*z^2*x^3+3*w^15*y^20-15*z^16*y^2; |
|
Output> 29*w^4*z^3*x^12+21*z^2*x^3+3*w^15*y^20-15*z^16*y^2 |
|
Input> fctr(A*B); |
|
Output> [[1,1],[29*w^4*z^3*x^12+21*z^2*x^3+3*w^15*y^20 |
|
-15*z^16*y^2,1],[x^21+y^2*x^2+y^18-y^14-z^31-w^12*z^20+w^2,1]] |
|
\end{verbatim} |
|
|
\section{Concluding remarks} |
\section{Concluding remarks} |
We have shown the current status of Risa/Asir and its OpenXM |
%We have shown the current status of Risa/Asir and its OpenXM |
interfaces. As a result of our policy of development, it is true that |
%interfaces. As a result of our policy of development, it is true that |
Risa/Asir does not have abundant functions. However it is a completely |
%Risa/Asir does not have abundant functions. However it is a completely |
open system and its total performance is not bad. As OpenXM interface |
%open system and its total performance is not bad. Especially on |
specification is completely documented, we can add another function to |
%Groebner basis computation over {\bf Q}, many techniques for improving |
Risa/Asir by wrapping an existing software system as an OX server and |
%practical performances have been implemented. As the OpenXM interface |
vice versa. User program debugger can be used both for local and |
%specification is completely documented, we can easily add another |
remote debugging. By combining the debugger and the function to reset |
%function to Risa/Asir by wrapping an existing software system as an OX |
servers, one will be able to enjoy parallel and distributed |
%server, and other clients can call functions in Risa/Asir by |
computation. |
%implementing the OpenXM client interface. With the remote debugging |
|
%and the function to reset servers, one will be able to enjoy parallel |
|
%and distributed computation with OpenXM facilities. |
% |
% |
|
We have shown that many techniques for |
|
improving practical performances are implemented in Risa/Asir's |
|
Groebner basis engine. Though another important function, the |
|
polynomial factorizer only implements classical algorithms, its |
|
performance is comparable with or superior to that of Maple or |
|
Mathematica and is still practically useful. By preparing OpenXM |
|
interface or simply linking the Asir OpenXM library, one can call |
|
these efficient functions from any application. Risa/Asir is a |
|
completely open system. It is open source software |
|
and the OpenXM interface specification is completely documented, one |
|
can easily write interfaces to call functions in Risa/Asir and one |
|
will be able to enjoy parallel and distributed computation. |
|
|
|
|
\begin{thebibliography}{7} |
\begin{thebibliography}{7} |
% |
% |
\addcontentsline{toc}{section}{References} |
\addcontentsline{toc}{section}{References} |
|
|
\bibitem{ANY} |
\bibitem{noro:ANY} |
Anay, H., Noro, M., Yokoyama, K. (1996) |
Anay, H., Noro, M., Yokoyama, K. (1996) |
Computation of the Splitting fields and the Galois Groups of Polynomials. |
Computation of the Splitting fields and the Galois Groups of Polynomials. |
Algorithms in Algebraic geometry and Applications, |
Algorithms in Algebraic geometry and Applications, |
Birkh\"auser (Proceedings of MEGA'94), 29--50. |
Birkh\"auser (Proceedings of MEGA'94), 29--50. |
|
|
\bibitem{FPARA} |
\bibitem{noro:BW} |
|
Becker, T., and Weispfenning, V. (1993) |
|
Groebner Bases. |
|
Graduate Texts in Math {\bf 141}. Springer-Verlag. |
|
|
|
\bibitem{noro:FPARA} |
Jean-Charles Faug\`ere (1994) |
Jean-Charles Faug\`ere (1994) |
Parallelization of Groebner basis. |
Parallelization of Groebner basis. |
Proceedings of PASCO'94, 124--132. |
Proceedings of PASCO'94, 124--132. |
|
|
\bibitem{F4} |
\bibitem{noro:F4} |
Jean-Charles Faug\`ere (1999) |
Jean-Charles Faug\`ere (1999) |
A new efficient algorithm for computing Groebner bases ($F_4$). |
A new efficient algorithm for computing Groebner bases ($F_4$). |
Journal of Pure and Applied Algebra (139) 1-3 , 61--88. |
Journal of Pure and Applied Algebra (139) 1-3 , 61--88. |
|
|
\bibitem{FGLM} |
\bibitem{noro:FGLM} |
Faug\`ere, J.-C. et al. (1993) |
Faug\`ere, J.-C. et al. (1993) |
Efficient computation of zero-dimensional Groebner bases by change of ordering. |
Efficient computation of zero-dimensional Groebner bases by change of ordering. |
Journal of Symbolic Computation 16, 329--344. |
Journal of Symbolic Computation 16, 329--344. |
|
|
\bibitem{RFC100} |
\bibitem{noro:SUGAR} |
|
Giovini, A., Mora, T., Niesi, G., Robbiano, L., and Traverso, C. (1991). |
|
``One sugar cube, please'' OR Selection strategies in the Buchberger algorithm. |
|
In Proc. ISSAC'91, ACM Press, 49--54. |
|
|
|
\bibitem{noro:IKNY} |
|
Izu, T., Kogure, J., Noro, M., Yokoyama, K. (1998) |
|
Efficient implementation of Schoof's algorithm. |
|
LNCS 1514 (Proc. ASIACRYPT'98), Springer, 66--79. |
|
|
|
\bibitem{noro:RFC100} |
M. Maekawa, et al. (2001) |
M. Maekawa, et al. (2001) |
The Design and Implementation of OpenXM-RFC 100 and 101. |
The Design and Implementation of OpenXM-RFC 100 and 101. |
Proceedings of ASCM2001, World Scientific, 102--111. |
Proceedings of ASCM2001, World Scientific, 102--111. |
|
|
\bibitem{RISA} |
\bibitem{noro:RISA} |
Noro, M. et al. (1994-2001) |
Noro, M. et al. (1994-2001) |
A computer algebra system Risa/Asir. |
A computer algebra system Risa/Asir. |
{\tt http://www.openxm.org}, {\tt http://www.math.kobe-u.ac.jp/Asir/asir.html}. |
{\tt http://www.openxm.org}, {\tt http://www.math.kobe-u.ac.jp/Asir/asir.html}. |
|
|
\bibitem{REPL} |
\bibitem{noro:REPL} |
Noro, M., McKay, J. (1997) |
Noro, M., McKay, J. (1997) |
Computation of replicable functions on Risa/Asir. |
Computation of replicable functions on Risa/Asir. |
Proceedings of PASCO'97, ACM Press, 130--138. |
Proceedings of PASCO'97, ACM Press, 130--138. |
|
|
\bibitem{NOYO} |
\bibitem{noro:NOYO} |
Noro, M., Yokoyama, K. (1999) |
Noro, M., Yokoyama, K. (1999) |
A Modular Method to Compute the Rational Univariate |
A Modular Method to Compute the Rational Univariate |
Representation of Zero-Dimensional Ideals. |
Representation of Zero-Dimensional Ideals. |
Journal of Symbolic Computation, 28, 1, 243--263. |
Journal of Symbolic Computation, 28, 1, 243--263. |
|
|
\bibitem{OPENXM} |
\bibitem{noro:OPENXM} |
OpenXM committers (2000-2001) |
OpenXM committers (2000-2001) |
OpenXM package. |
OpenXM package. |
{\tt http://www.openxm.org}. |
{\tt http://www.openxm.org}. |
|
|
\bibitem{SY} |
\bibitem{noro:RUR} |
|
Rouillier, R. (1996) |
|
R\'esolution des syst\`emes z\'ero-dimensionnels. |
|
Doctoral Thesis(1996), University of Rennes I, France. |
|
|
|
\bibitem{noro:SY} |
Shimoyama, T., Yokoyama, K. (1996) |
Shimoyama, T., Yokoyama, K. (1996) |
Localization and Primary Decomposition of Polynomial Ideals. |
Localization and Primary Decomposition of Polynomial Ideals. |
Journal of Symbolic Computation, 22, 3, 247--277. |
Journal of Symbolic Computation, 22, 3, 247--277. |
|
|
\bibitem{TRAGER} |
\bibitem{noro:TRAGER} |
Trager, B.M. (1976) |
Trager, B.M. (1976) |
Algebraic Factoring and Rational Function Integration. |
Algebraic Factoring and Rational Function Integration. |
Proceedings of SYMSAC 76, 219--226. |
Proceedings of SYMSAC 76, 219--226. |
|
|
\bibitem{TRAV} |
\bibitem{noro:TRAV} |
Traverso, C. (1988) |
Traverso, C. (1988) |
Groebner trace algorithms. |
Groebner trace algorithms. |
LNCS {\bf 358} (Proceedings of ISSAC'88), Springer-Verlag, 125--138. |
LNCS {\bf 358} (Proceedings of ISSAC'88), Springer-Verlag, 125--138. |
|
|
\bibitem{COCOA} |
\bibitem{noro:BENCH} |
|
{\tt http://www.math.uic.edu/\~\,jan/demo.html}. |
|
|
|
\bibitem{noro:COCOA} |
{\tt http://cocoa.dima.unige.it/}. |
{\tt http://cocoa.dima.unige.it/}. |
|
|
\bibitem{FGB} |
\bibitem{noro:FGB} |
{\tt http://www-calfor.lip6.fr/\~\,jcf/}. |
{\tt http://www-calfor.lip6.fr/\~\,jcf/}. |
|
|
\bibitem{NTL} |
%\bibitem{noro:NTL} |
{\tt http://www.shoup.net/}. |
%{\tt http://www.shoup.net/}. |
|
|
\bibitem{OPENMATH} |
\bibitem{noro:OPENMATH} |
{\tt http://www.openmath.org/}. |
{\tt http://www.openmath.org/}. |
|
|
\bibitem{SINGULAR} |
\bibitem{noro:SINGULAR} |
{\tt http://www.singular.uni-kl.de/}. |
{\tt http://www.singular.uni-kl.de/}. |
|
|
\end{thebibliography} |
\end{thebibliography} |