| version 1.4, 2001/11/26 08:42:28 |
version 1.5, 2001/11/28 08:46:54 |
|
|
| % $OpenXM: OpenXM/doc/Papers/dag-noro-proc.tex,v 1.3 2001/11/26 08:41:14 noro Exp $ |
% $OpenXM: OpenXM/doc/Papers/dag-noro-proc.tex,v 1.4 2001/11/26 08:42:28 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. |
| Line 93 data. It defines a client-server architecture for par |
|
| Line 93 data. It defines a client-server architecture for par |
|
| distributed computation. Risa/Asir is software for polynomial |
distributed computation. Risa/Asir is software for polynomial |
| computation. It has been developed for testing new algorithms, and now |
computation. It has been developed for testing new algorithms, and now |
| it acts as both a client and a server in the OpenXM package. In this |
it acts as both a client and a server in the OpenXM package. In this |
| article we present an overview of Risa/Asir and its performances on |
article we present an overview of Risa/Asir and review several |
| several functions. We also show Risa/Asir's OpenXM interfaces and |
techniques for improving performances of Groebner basis computation. |
| examples of usages of them. |
We also show Risa/Asir's OpenXM interfaces and their usages by |
| |
examples. |
| \end{abstract} |
\end{abstract} |
| |
|
| \section{A computer algebra system Risa/Asir} |
\section{A computer algebra system Risa/Asir} |
| Line 105 examples of usages of them. |
|
| Line 106 examples of usages of them. |
|
| Risa/Asir \cite{RISA} is software mainly for polynomial |
Risa/Asir \cite{RISA} is software mainly for polynomial |
| computation. Its major functions are polynomial factorization and |
computation. Its major functions are polynomial factorization and |
| Groebner basis computation, whose core parts are implemented as |
Groebner basis computation, whose core parts are implemented as |
| builtin functions. Some higher algorithms such as primary ideal |
built-in functions. Some higher algorithms such as primary ideal |
| decomposition or Galois group computation are built on them by the |
decomposition or Galois group computation are built on them by the |
| user language. The user language is called Asir language. Asir |
user language called Asir language. Asir language can be regarded as C |
| language can be regarded as C language without type declaration of |
language without type declaration of variables, with list processing, |
| variables, with list processing, and with automatic garbage |
and with automatic garbage collection. A built-in {\tt gdb}-like user |
| collection. A builtin {\tt gdb}-like user language debugger is |
language debugger is available. It is open source and the source code |
| available. It is open source and the source code and binaries are |
and binaries are available via {\tt ftp} or {\tt CVS}. Risa/Asir is |
| available via ftp or CVS. |
not only a standalone computer algebra system but also a main |
| Risa/Asir is not only an standalone computer algebra system but also a |
component in OpenXM package \cite{OPENXM}, which is a collection of |
| main component in OpenXM package \cite{OPENXM}, which is a collection |
various software compliant to OpenXM protocol specification. OpenXM |
| of software comliant to OpenXM protocol specification. OpenXM is an |
is an infrastructure for exchanging mathematical data and Risa/Asir |
| infrastructure for exchanging mathematical data and Risa/Asir has |
has three kind of OpenXM interfaces : client interfaces, an OpenXM |
| three kind of OpenXM intefaces : an inteface as a server, as a cllient |
server, and a subroutine library. Our goals of developing Risa/Asir |
| and as a subroutine library. We will explain them in the later |
are as follows: |
| section. |
|
| |
|
| Our goals of developing Risa/Asir are as follows: |
|
| |
|
| \begin{enumerate} |
\begin{enumerate} |
| \item Providing a test bed of new algorithms |
\item Providing a platform for testing new algorithms |
| |
|
| Risa/Asir has been a platform for testing experimental algorithms in |
Risa/Asir has been a platform for testing experimental algorithms in |
| polynomial factorization, computation related to Groebner basis, |
polynomial factorization, computation related to Groebner basis, |
| Line 134 various modular techniques to overcome difficulties ca |
|
| Line 132 various modular techniques to overcome difficulties ca |
|
| intermediate coefficients. We have had several results and they have |
intermediate coefficients. We have had several results and they have |
| been implemented in Risa/Asir. |
been implemented in Risa/Asir. |
| |
|
| \item Gereral purpose open system |
\item General purpose open system |
| |
|
| We need a lot of functions to make Risa/Asir a general purpose |
We need a lot of functions to make Risa/Asir a general purpose |
| computer algebra system. In recent years we can obtain various high |
computer algebra system. In recent years we can obtain various high |
| performance applications or libraries as free software. We wrapped |
performance applications or libraries as free software. We wrapped |
| such software as OpenXM servers and we started to release a collection |
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 |
of such servers and clients as the OpenXM package in 1997. Risa/Asir |
| now a main client in the package. |
is now a main client in the package. |
| |
|
| \item Environment for parallel and distributed computation |
\item Environment for parallel and distributed computation |
| |
|
| The origin of OpenXM is a protocol for doing parallel distributed |
The origin of OpenXM is a protocol for doing parallel distributed |
| compuatations by connecting multiple Risa/Asir. OpenXM is also |
computations by connecting multiple Risa/Asir's over TCP/IP. OpenXM is |
| designed to provide an enviroment efficient parallel distributed |
also designed to provide an environment efficient parallel distributed |
| computation. Currently only client-server communication is possible, |
computation. Currently only client-server communication is available, |
| but we are preparing a specification OpenXM-RFC 102 allowing |
but we are preparing a specification OpenXM-RFC 102 allowing |
| client-client communication, which will enable us to execute |
client-client communication, which will enable us to execute wider |
| wider range of parallel algorithms efficiently. |
range of parallel algorithms efficiently. |
| \end{enumerate} |
\end{enumerate} |
| |
|
| \subsection{Groebner basis and the related computation} |
\subsection{Groebner basis and the related computation} |
| Line 183 recently proposed have not yet implemented. For Univa |
|
| Line 181 recently proposed have not yet implemented. For Univa |
|
| over algebraic number fields, Trager's algorithm \cite{TRAGER} is |
over algebraic number fields, Trager's algorithm \cite{TRAGER} is |
| implemented with some modifications. Its major applications are |
implemented with some modifications. Its major applications are |
| splitting field and Galois group computation of polynomials over the |
splitting field and Galois group computation of polynomials over the |
| rationals. For such purpose a tower of simple extensions are suitable |
rationals \cite{ANY}. For such purpose a tower of simple extensions |
| because factors represented over a simple extension often have huge |
are suitable because factors represented over a simple extension often |
| coefficients \cite{ANY}. For univariate factorization over finite |
have huge coefficients. For univariate factorization over finite |
| fields, equal degree factorization + Cantor-Zassenhaus algorithm is |
fields, equal degree factorization and Cantor-Zassenhaus algorithm are |
| implemented. We can use various representation of finite fields: |
implemented. We can use various representation of finite fields: |
| $GF(p)$ with a machine integer prime $p$, $GF(p)$, $GF(p^n)$ with any |
$GF(p)$ with a machine integer prime $p$, $GF(p)$ and $GF(p^n)$ with |
| odd prime $p$, $GF(2^n)$ with a bit representation of polynomials over |
any odd prime $p$, $GF(2^n)$ with a bit-array representation of |
| $GF(2)$ and $GF(p^n)$ with small $p^n$ represented by a primitive |
polynomials over $GF(2)$ and $GF(p^n)$ with small $p^n$ represented by |
| root. For multivariate factorization over the rationals, the |
a primitive root. For multivariate factorization over the rationals, |
| classical EZ(Extented Zassenhaus) type algorithm is implemented. |
the classical EZ(Extended Zassenhaus) type algorithm is implemented. |
| |
|
| \subsection{Other functions} |
\subsection{Other functions} |
| By applying Groebner basis computation and polynomial factorization, |
By applying Groebner basis computation and polynomial factorization, |
| we have implemented several higher level algorithms. A typical |
we have implemented several higher level algorithms. A typical |
| application is primary ideal decomposition of polynomial ideals over |
application is primary ideal decomposition of polynomial ideals over |
| {\bf Q}, which needs both functions. Shimoyama-Yokoyama algorithm |
{\bf Q}, which needs both functions. Shimoyama-Yokoyama algorithm |
| \cite{SY} for primary decompsition is written in the user language. |
\cite{SY} for primary decomposition is written in the user language. |
| Splitting field and Galois group computation are closely related and |
Splitting field and Galois group computation \cite{ANY} are closely |
| are also important applications of polynomial factorization. Our |
related and are also important applications of polynomial |
| implementation of Galois group computation algorithm \cite{ANY} |
factorization. |
| requires splitting field computation, which is written in the |
|
| user language. |
|
| |
|
| \section{Techniques for efficient Groebner basis computation over {\bf Q}} |
\section{Techniques for efficient Groebner basis computation over {\bf Q}} |
| \label{gbtech} |
\label{gbtech} |
| Line 214 Groebner basis computation over {\bf Q}, which are eas |
|
| Line 210 Groebner basis computation over {\bf Q}, which are eas |
|
| implemented but may not be well known. |
implemented but may not be well known. |
| We use the following notations. |
We use the following notations. |
| \begin{description} |
\begin{description} |
| |
\item $Id(F)$ : a polynomial ideal generated by $F$ |
| \item $\phi_p$ : the canonical projection from ${\bf Z}$ onto $GF(p)$ |
\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 $HT(f)$ : the head term of a polynomial with respect to a term order |
| \item $HC(f)$ : the head coefficient of a polynomail with respect to a term order |
\item $HC(f)$ : the head coefficient of a polynomial with respect to a term order |
| \end{description} |
\end{description} |
| |
|
| \subsection{Combination of homogenization and trace lifting} |
\subsection{Combination of homogenization and trace lifting} |
| Line 235 such that $\phi_p(G)$ \\ |
|
| Line 232 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 254 such that $HT(h)|HT(g)$ \} |
|
| Line 251 such that $HT(h)|HT(g)$ \} |
|
| 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 number of zero normal forms may |
| increase by the homogenization, but they are detected over |
increase by the homogenization, but they are detected over |
| GF(p). Finally, by dehomogenizing the candidate we can expect that |
$GF(p)$. Finally, by dehomogenizing the candidate we can expect that |
| lots of redundant elements can be removed. We will show later that this is |
lots of redundant elements can be removed. We will show later that this is |
| surely efficient for some input polynomial sets. |
surely efficient for some input polynomial sets. |
| |
|
|
|
| |
|
| \subsection{Integer contents reduction} |
\subsection{Integer contents reduction} |
| |
|
| 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{REPL}. |
| \begin{tabbing} |
\begin{tabbing} |
| Line 296 Write $f$ as $f = g_0q+r$ by division with remainder f |
|
| Line 293 Write $f$ as $f = g_0q+r$ by division with remainder f |
|
| 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 in the elements in the subsets 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 311 $g_0$ with high accuracy. Then other components are ea |
|
| Line 308 $g_0$ with high accuracy. Then other components are ea |
|
| |
|
| \section{Risa/Asir performance} |
\section{Risa/Asir performance} |
| |
|
| 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 |
and polynomial factorization. The measurements were made on |
| a PC with PentiumIII 1GHz and 1Gbyte of main memory. Timings |
a PC with PentiumIII 1GHz and 1Gbyte of main memory. Timings |
| are given in seconds. In the tables `---' means it was not |
are given in seconds. In the tables `---' means it was not |
| measured. |
measured. |
| |
|
| \subsection{Groebner basis computation} |
\subsection{Groebner basis computation} |
| |
|
| Table \ref{gbmod} and Table \ref{gbq} shows timing data for Groebner |
Table \ref{gbmod} and Table \ref{gbq} show timing data for Groebner |
| basis compuation over $GF(32003)$ and over {\bf Q} respectively. |
basis computation over $GF(32003)$ and over {\bf Q} respectively. |
| $C_n$ is the cyclic $n$ system and $K_n$ is the Katsura $n$ system, |
$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 |
both are famous bench mark problems \cite{BENCH}. We also measured |
| $McKay$ system over {\bf Q} \cite{REPL}. the term order is graded |
the timing for $McKay$ system over {\bf Q} \cite{REPL}. the term |
| reverse lexicographic order. In the both tables, the first three rows |
order is graded reverse lexicographic order. In the both tables, the |
| are timings for the Buchberger algorithm, and the last two rows are |
first three rows are timings for the Buchberger algorithm, and the |
| timings for $F_4$ algorithm. As to the Buchberger algorithm over |
last two rows are timings for $F_4$ algorithm. As to the Buchberger |
| $GF(32003)$, Singular\cite{SINGULAR} shows the best performance among |
algorithm over $GF(32003)$, Singular\cite{SINGULAR} shows the best |
| the three systems. $F_4$ implementation in Risa/Asir is faster than |
performance among the three systems. $F_4$ implementation in Risa/Asir |
| the Buchberger algorithm implementation in Singluar, but it is still |
is faster than the Buchberger algorithm implementation in Singular, |
| several times slower than $F_4$ implemenataion in FGb \cite{FGB}. In |
but it is still several times slower than $F_4$ implementation in FGb |
| Table \ref{gbq}, $C_7$ and $McKay$ can be computed by the Buchberger |
\cite{FGB}. In Table \ref{gbq}, $C_7$ and $McKay$ can be computed by |
| algorithm with the methods described in Section \ref{gbtech}. It is |
the Buchberger algorithm with the methods described in Section |
| obvious that $F_4$ implementation in Risa/Asir over {\bf Q} is too |
\ref{gbtech}. It is obvious that $F_4$ implementation in Risa/Asir |
| immature. Nevertheless the timing of $McKay$ is greatly reduced. |
over {\bf Q} is too immature. Nevertheless the timing of $McKay$ is |
| Fig. \ref{f4vsbuch} explains why $F_4$ is efficient in this case. |
greatly reduced. Fig. \ref{f4vsbuch} explains why $F_4$ is efficient |
| The figure shows that |
in this case. The figure shows that the Buchberger algorithm produces |
| the Buchberger algorithm produces normal forms with |
normal forms with huge coefficients for S-polynomials after the 250-th |
| huge coefficients for S-polynomals after the 250-th one, |
one, which are the computations in degree 16. However, we know that |
| which are the computations in degree 16. |
the reduced basis elements have much smaller coefficients after |
| However, we know that the reduced basis elements have |
removing contents. As $F_4$ algorithm automatically produces the |
| much smaller coefficients after removing contents. |
reduced ones, the degree 16 computation is quite easy in $F_4$. |
| As $F_4$ algorithm automatically produces the reduced ones, |
|
| the degree 16 computation is quite easy in $F_4$. |
|
| |
|
| \begin{table}[hbtp] |
\begin{table}[hbtp] |
| \begin{center} |
\begin{center} |
| Line 362 FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \ |
|
| Line 357 FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \ |
|
| |
|
| \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|c|} \hline |
| & $C_7$ & $Homog. C_7$ & $K_7$ & $K_8$ & $McKay$ \\ \hline |
& $C_7$ & $Homog. C_7$ & $C_8$ & $K_7$ & $K_8$ & $McKay$ \\ \hline |
| Asir $Buchberger$ & 389 & 594 & 29 & 299 & 34950 \\ \hline |
Asir $Buchberger$ & 389 & 594 & 54000 & 29 & 299 & 34950 \\ \hline |
| Singular & --- & 15247 & 7.6 & 79 & $>$ 20h \\ \hline |
Singular & --- & 15247 & --- & 7.6 & 79 & $>$ 20h \\ \hline |
| CoCoA 4 & --- & 13227 & 57 & 709 & --- \\ \hline\hline |
CoCoA 4 & --- & 13227 & --- & 57 & 709 & --- \\ \hline\hline |
| Asir $F_4$ & 989 & 456 & 90 & 991 & 4939 \\ \hline |
Asir $F_4$ & 989 & 456 & --- & 90 & 991 & 4939 \\ \hline |
| FGb(estimated) & 8 &11 & 0.6 & 5 & 10 \\ \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 computation over {\bf Q}} |
| Line 384 FGb(estimated) & 8 &11 & 0.6 & 5 & 10 \\ \hline |
|
| Line 379 FGb(estimated) & 8 &11 & 0.6 & 5 & 10 \\ \hline |
|
| \label{f4vsbuch} |
\label{f4vsbuch} |
| \end{figure} |
\end{figure} |
| |
|
| |
Table \ref{minipoly} shows timing data for the minimal polynomial |
| |
computation over {\bf Q}. Singular provides a function {\tt finduni} |
| |
for computing the minimal polynomial in each variable in ${\bf |
| |
Q}[x_1,\ldots,x_n]/I$ for zero dimensional ideal $I$. The modular |
| |
method used in Asir is efficient when the resulting minimal |
| |
polynomials have large coefficients and we can verify the fact from Table |
| |
\ref{minipoly}. |
| |
\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} |
| |
|
| \subsection{Polynomial factorization} |
\subsection{Polynomial factorization} |
| |
|
| %Table \ref{unifac} shows timing data for univariate factorization over |
%Table \ref{unifac} shows timing data for univariate factorization over |
| Line 418 $Wang[i]$, $Wang[j]$, $Wang[k]$ given in a data file |
|
| Line 432 $Wang[i]$, $Wang[j]$, $Wang[k]$ given in a data file |
|
| in Risa/Asir source tree and located in {\tt asir2000/lib}. |
in Risa/Asir source tree and located in {\tt asir2000/lib}. |
| For these examples Risa/Asir shows reasonable performance |
For these examples Risa/Asir shows reasonable performance |
| compared with other famous systems. |
compared with other famous systems. |
| |
|
| \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 |
| Line 435 Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline |
|
| Line 448 Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline |
|
| \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}, |
As to univariate factorization over {\bf Q}, |
| the univariate factorizer implements only classical |
the univariate factorizer implements only classical |
| algorithms and its behaviour is what one expects, |
algorithms and its behavior is what one expects, |
| that is, it shows average performance in cases |
that is, it shows average performance in cases |
| where there are little eraneous factors, but |
where there are little extraneous factors, but |
| shows poor performance for hard to factor polynomials. |
shows poor performance for hard to factor polynomials. |
| |
|
| \section{OpenXM and Risa/Asir OpenXM interfaces} |
\section{OpenXM and Risa/Asir OpenXM interfaces} |
| Line 448 shows poor performance for hard to factor polynomials. |
|
| Line 460 shows poor performance for hard to factor polynomials. |
|
| \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{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{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 |
|
|
| \subsection{OpenXM client interface of {\tt asir}} |
\subsection{OpenXM client interface of {\tt asir}} |
| |
|
| 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 503 a typical OpenXM session. |
|
| Line 516 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 provides 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 a 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 555 Asir OpenXM library {\tt libasir.a} includes functions |
|
| Line 568 Asir OpenXM library {\tt libasir.a} includes functions |
|
| stack machine commands supported in {\tt ox\_asir}. By linking {\tt |
stack machine commands supported in {\tt ox\_asir}. By linking {\tt |
| libasir.a} an application can use the same functions as in {\tt |
libasir.a} an application can use the same functions as in {\tt |
| ox\_asir} without accessing to {\tt ox\_asir} via TCP/IP. There is |
ox\_asir} without accessing to {\tt ox\_asir} via TCP/IP. There is |
| also a stack and library functions to manipulate it. In order to make |
also a stack, which can be manipulated by library functions. In |
| full use of this interface, one has to prepare conversion functions |
order to make full use of this interface, one has to prepare |
| between CMO and the data structures proper to the application. |
conversion functions between CMO and the data structures proper to the |
| A function {\tt asir\_ox\_pop\_string()} is provided to convert |
application. A function {\tt asir\_ox\_pop\_string()} is provided to |
| CMO to a human readable form, which may be sufficient for a simple |
convert CMO to a human readable form, which may be sufficient for a |
| use of this interface. |
simple use of this interface. |
| |
|
| \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 vice versa. User program debugger can be used both for |
| computation. |
local and remote debugging. By combining the debugger and the function |
| |
to reset servers, one will be able to enjoy parallel and distributed |
| |
computation with OpenXM facilities. |
| % |
% |
| \begin{thebibliography}{7} |
\begin{thebibliography}{7} |
| % |
% |
| Line 640 Traverso, C. (1988) |
|
| Line 655 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{BENCH} |
| |
{\tt http://www.math.uic.edu/\~\,jan/demo.html}. |
| |
|
| \bibitem{COCOA} |
\bibitem{COCOA} |
| {\tt http://cocoa.dima.unige.it/}. |
{\tt http://cocoa.dima.unige.it/}. |
| |
|
| \bibitem{FGB} |
\bibitem{FGB} |
| {\tt http://www-calfor.lip6.fr/\~\,jcf/}. |
{\tt http://www-calfor.lip6.fr/\~\,jcf/}. |
| |
|
| \bibitem{NTL} |
%\bibitem{NTL} |
| {\tt http://www.shoup.net/}. |
%{\tt http://www.shoup.net/}. |
| |
|
| \bibitem{OPENMATH} |
\bibitem{OPENMATH} |
| {\tt http://www.openmath.org/}. |
{\tt http://www.openmath.org/}. |