version 1.6, 2001/11/28 09:05:57 |
version 1.10, 2002/01/04 06:06:09 |
|
|
% $OpenXM: OpenXM/doc/Papers/dag-noro-proc.tex,v 1.5 2001/11/28 08:46:54 noro Exp $ |
% $OpenXM: OpenXM/doc/Papers/dag-noro-proc.tex,v 1.9 2001/12/28 06:06:15 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. |
|
|
% 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 |
|
developed for testing experimental polynomial algorithms, and now it |
|
acts also as a main component in the OpenXM package \cite{OPENXM}. |
|
OpenXM is an infrastructure for exchanging mathematical |
data. It defines a client-server architecture for parallel and |
data. It defines a client-server architecture for parallel and |
distributed computation. Risa/Asir is software for polynomial |
distributed computation. In this article we present an overview of |
computation. It has been developed for testing new algorithms, and now |
Risa/Asir and review several techniques for improving performances of |
it acts as both a client and a server in the OpenXM package. In this |
Groebner basis computation over {\bf Q}. We also show Risa/Asir's |
article we present an overview of Risa/Asir and review several |
OpenXM interfaces and their usages. |
techniques for improving performances of Groebner basis computation. |
|
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 111 decomposition or Galois group computation are built on |
|
Line 111 decomposition or Galois group computation are built on |
|
user language called Asir language. Asir language can be regarded as C |
user language called Asir language. Asir language can be regarded as C |
language without type declaration of variables, with list processing, |
language without type declaration of variables, with list processing, |
and with automatic garbage collection. A built-in {\tt gdb}-like user |
and with automatic garbage collection. A built-in {\tt gdb}-like user |
language debugger is available. It is open source and the source code |
language debugger is available. Risa/Asir is open source and the |
and binaries are available via {\tt ftp} or {\tt CVS}. Risa/Asir is |
source code and binaries are available via {\tt ftp} or {\tt CVS}. |
not only a standalone computer algebra system but also a main |
Risa/Asir is not only a 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 various software compliant to OpenXM protocol specification. |
is an infrastructure for exchanging mathematical data and Risa/Asir |
OpenXM is an infrastructure for exchanging mathematical data and |
has three kind of OpenXM interfaces : client interfaces, an OpenXM |
Risa/Asir has three kinds of OpenXM interfaces : |
server, and a subroutine library. Our goals of developing Risa/Asir |
OpenXM API in the Risa/Asir user language, |
are as follows: |
OpenXM C language API in the Risa/Asir subroutine library, |
|
and an OpenXM server. |
|
Our goals of developing Risa/Asir are as follows: |
|
|
\begin{enumerate} |
\begin{enumerate} |
\item Providing a platform for testing 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, Groebner basis computation, |
cryptography and quantifier elimination. As to Groebner basis, we have |
cryptography and quantifier elimination. As to Groebner basis, we have |
been mainly interested in problems over {\bf Q} and we tried applying |
been mainly interested in problems over {\bf Q} and we tried applying |
various modular techniques to overcome difficulties caused by huge |
various modular techniques to overcome difficulties caused by huge |
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 with other known methods. |
|
|
\item General 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 make use of 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 clients as the OpenXM package in 1997. Risa/Asir |
of such servers and clients as the OpenXM package in 1997. Risa/Asir |
Line 143 is now a main client in the package. |
|
Line 145 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 ancestor of OpenXM is a protocol designed for doing parallel |
computations by connecting multiple Risa/Asir's over TCP/IP. OpenXM is |
distributed computations by connecting multiple Risa/Asir's over |
also designed to provide an environment efficient parallel distributed |
TCP/IP. OpenXM is also designed to provide an environment for |
computation. Currently only client-server communication is available, |
efficient parallel distributed computation. Currently only |
but we are preparing a specification OpenXM-RFC 102 allowing |
client-server communication is available, but we are preparing a |
client-client communication, which will enable us to execute wider |
specification OpenXM-RFC 102 allowing client-client communication, |
range of parallel algorithms efficiently. |
which will enable us to execute wider range of parallel algorithms |
|
requiring collective operations efficiently. |
\end{enumerate} |
\end{enumerate} |
|
|
\subsection{Groebner basis and the related computation} |
\subsection{Groebner basis and the related computation} |
Line 157 range of parallel algorithms efficiently. |
|
Line 160 range of parallel algorithms efficiently. |
|
Currently Risa/Asir can only deal with polynomial ring. Operations on |
Currently Risa/Asir can only deal with polynomial ring. Operations on |
modules over polynomial rings have not yet supported. However, both |
modules over polynomial rings have not yet supported. However, both |
commutative polynomial rings and Weyl algebra are supported and one |
commutative polynomial rings and Weyl algebra are supported and one |
can compute Groebner basis in both rings over the rationals, fields of |
can compute Groebner basis in both rings over {\bf Q}, fields of |
rational functions and finite fields. In the early stage of our |
rational functions and finite fields. In the early stage of our |
development, our effort was mainly devoted to improve the efficiency |
development, our effort was mainly devoted to improve the efficiency |
of computation over the rationals. Our main tool is modular |
of computation over {\bf Q}. Our main tool is modular |
computation. For Buchberger algorithm we adopted the trace lifting |
computation. For Buchberger algorithm we adopted the trace lifting |
algorithm by Traverso \cite{TRAV} and elaborated it by applying our |
algorithm by Traverso \cite{TRAV} and elaborated it by applying our |
theory on a correspondence between Groebner basis and its modular |
theory on a correspondence between Groebner basis and its modular |
image \cite{NOYO}. We also combine the trace lifting with |
image \cite{NOYO}. We also combine the trace lifting with |
homogenization to stabilize selection strategies, which enables us to |
homogenization to stabilize selection strategies, which enables us to |
compute several examples efficiently which is hard to compute without |
compute several examples efficiently which are hard to compute without |
such a combination. Our modular method can be applied to the change |
such a combination. Our modular method can be applied to the change |
of ordering algorithm and rational univariate representation. We also |
of ordering algorithm\cite{FGLM} and rational univariate |
made a test implementation of $F_4$ algorithm \cite{F4}. Later we will |
representation \cite{RUR}. We also made a test implementation of |
show timing data on Groebner basis computation. |
$F_4$ algorithm \cite{F4}. In the later section we will show timing |
|
data on Groebner basis computation. |
|
|
\subsection{Polynomial factorization} |
\subsection{Polynomial factorization} |
|
|
Here we briefly review functions on polynomial factorization. For |
Here we briefly review functions on polynomial factorization. For |
univariate factorization over {\bf Q}, the classical |
univariate factorization over {\bf Q}, the Berlekamp-Zassenhaus |
Berlekamp-Zassenhaus algorithm is implemented. Efficient algorithms |
algorithm is implemented. Efficient algorithms recently proposed have |
recently proposed have not yet implemented. For Univariate factorizer |
not yet implemented. For univariate factorization over algebraic |
over algebraic number fields, Trager's algorithm \cite{TRAGER} is |
number fields, Trager's algorithm \cite{TRAGER} is implemented with |
implemented with some modifications. Its major applications are |
some modifications. Its major applications are splitting field and |
splitting field and Galois group computation of polynomials over the |
Galois group computation of polynomials over {\bf Q} \cite{ANY}. For |
rationals \cite{ANY}. For such purpose a tower of simple extensions |
such purpose a tower of simple extensions are suitable because factors |
are suitable because factors represented over a simple extension often |
represented over a simple extension often have huge coefficients. For |
have huge coefficients. For univariate factorization over finite |
univariate factorization over finite fields, equal degree |
fields, equal degree factorization and Cantor-Zassenhaus algorithm are |
factorization and Cantor-Zassenhaus algorithm are implemented. We can |
implemented. We can use various representation of finite fields: |
use various representation of finite fields: $GF(p)$ with a machine |
$GF(p)$ with a machine integer prime $p$, $GF(p)$ and $GF(p^n)$ with |
integer prime $p$, $GF(p)$ and $GF(p^n)$ with any odd prime $p$, |
any odd prime $p$, $GF(2^n)$ with a bit-array representation of |
$GF(2^n)$ with a bit-array representation of polynomials over $GF(2)$ |
polynomials over $GF(2)$ and $GF(p^n)$ with small $p^n$ represented by |
and $GF(p^n)$ with small $p^n$ represented by a primitive root. For |
a primitive root. For multivariate factorization over the rationals, |
multivariate factorization over {\bf Q}, the EZ(Extended Zassenhaus) |
the classical EZ(Extended Zassenhaus) type algorithm is implemented. |
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, |
Line 210 Groebner basis computation over {\bf Q}, which are eas |
|
Line 214 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 $<$ : a term order in the set of monomials. It is a total order such that |
\item $\phi_p$ : the canonical projection from ${\bf Z}$ onto $GF(p)$ |
|
\item $HT(f)$ : the head term of a polynomial with respect to a term order |
$\forall t, 1 \le t$ and $\forall s, t, u, s<t \Rightarrow us<ut$. |
\item $HC(f)$ : the head coefficient of a polynomial with respect to a term order |
\item $Id(F)$ : a polynomial ideal generated by a polynomial set $F$. |
|
\item $HT(f)$ : the head term of a polynomial with respect to a term order. |
|
\item $HC(f)$ : the head coefficient of a polynomial with respect to a term order. |
|
\item $T(f)$ : terms with non zero coefficients in $f$. |
|
\item $Spoly(f,g)$ : the S-polynomial of $\{f,g\}$ |
|
|
|
$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} |
\end{description} |
|
|
|
\subsection{Groebner basis computation and its improvements} |
|
|
|
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} |
|
Though this algorithm gives a Groebner basis of $Id(F)$, |
|
it is not practical at all. We need lots of techniques to make |
|
it practical. The following are major improvements: |
|
\begin{itemize} |
|
\item Useless pair detection |
|
|
|
We don't have to process all the pairs in $D$ and several useful |
|
criteria for detecting useless pairs were proposed. |
|
|
|
\item Selection strategy |
|
|
|
The selection of $\{f,g\}$ greatly affects the subsequent computation. |
|
The typical strategies are the normal startegy and the sugar strategy. |
|
The latter was proposed for efficient computation under a non |
|
degree-compatible order. |
|
|
|
\item Modular methods |
|
|
|
Even if we apply several criteria, it is difficult to detect all pairs |
|
whose S-polynomials are reduced to zero, and the cost to process them |
|
often occupies a major part in the whole computation. The trace algorithms |
|
were proposed to reduce such cost. This will be explained in more detail |
|
in Section \ref{gbhomo}. |
|
|
|
\item Change of ordering |
|
|
|
For elimination, we need a Groebner basis with respect to a non |
|
degree-compatible order, but it is often hard to compute it by |
|
the Buchberger algorithm. If the ideal is zero dimensional, we |
|
can apply a change of ordering algorithm for a Groebner basis |
|
with respect to any order and we can obtain a Groebner basis |
|
with respect to a desired order. |
|
|
|
\end{itemize} |
|
By implementing these techniques, one can obtain Groebner bases for |
|
wider range of inputs. Nevertheless there are still intractable |
|
problems with these classical tools. In the subsequent sections |
|
we show several methods for further improvements. |
|
|
\subsection{Combination of homogenization and trace lifting} |
\subsection{Combination of homogenization and trace lifting} |
|
\label{gbhomo} |
|
|
Traverso's trace lifting algorithm can be |
Traverso's trace lifting algorithm can be |
formulated in an abstract form as follows \cite{FPARA}. |
formulated in an abstract form as follows (c.f. \cite{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 252 The input is homogenized to suppress intermediate coef |
|
Line 330 The input is homogenized to suppress intermediate coef |
|
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. |
surely efficient for some input polynomial sets. |
|
|
|
\subsection{Minimal polynomial computation by modular method} |
\subsection{Minimal polynomial computation by 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 a partial FGLM \cite{FGLM}, but it often takes long |
Line 264 case we can apply a simple modular method to compute t |
|
Line 342 case we can apply a simple modular method to compute t |
|
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 276 In this algorithm, $m_p$ can be obtained by a partial |
|
Line 354 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{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{gbcont} |
|
|
In some cases the cost to remove integer contents during normal 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 |
Line 289 polynomial $f$ efficiently by the following method \ci |
|
Line 369 polynomial $f$ efficiently by the following method \ci |
|
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 separating 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} |
|
|
\subsection{Groebner basis computation} |
\subsection{Groebner basis computation} |
|
|
Table \ref{gbmod} and Table \ref{gbq} show timing data for Groebner |
Table \ref{gbmod} and Table \ref{gbq} show timing data for Groebner |
basis computation over $GF(32003)$ and over {\bf Q} respectively. |
basis computation over $GF(32003)$ and over {\bf Q} respectively. In |
|
Table \ref{gbq} we compare the timing data under various configuration |
|
of algorithms: with/without trace lifting, homogenization and contents |
|
reduction. |
$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 \cite{BENCH}. We also measured |
both are famous bench mark problems \cite{BENCH}. We also measured |
the timing for $McKay$ system over {\bf Q} \cite{REPL}. the term |
the timing for $McKay$ system over {\bf Q} \cite{REPL}. the term |
order is graded reverse lexicographic order. In the both tables, the |
order is graded reverse lexicographic order. |
first three rows are timings for the Buchberger algorithm, and the |
As to the Buchberger algorithm over $GF(32003)$, |
last two rows are timings for $F_4$ algorithm. As to the Buchberger |
Singular\cite{SINGULAR}'s Buchberger algorithm implementation shows |
algorithm over $GF(32003)$, Singular\cite{SINGULAR} shows the best |
better performance than Risa/Asir. $F_4$ implementation in Risa/Asir |
performance among the three systems. $F_4$ implementation in Risa/Asir |
is outperforms both of them, but it is still several times slower than |
is faster than the Buchberger algorithm implementation in Singular, |
$F_4$ implementation in FGb \cite{FGB}. |
but it is still several times slower than $F_4$ implementation 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. Fig. \ref{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 are the computations in degree 16. However, we know that |
|
the reduced basis elements have much smaller coefficients after |
|
removing contents. As $F_4$ algorithm automatically produces the |
|
reduced ones, the degree 16 computation is quite easy in $F_4$. |
|
|
|
|
Table \ref{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{gbhomo} and \ref{gbcont}. |
|
|
|
Though $F_4$ implementation in Risa/Asir over {\bf Q} is still |
|
experimental, the timing of $McKay$ is greatly reduced. |
|
Fig. \ref{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 are |
|
the computations in degree 16. However, we know that the reduced |
|
basis elements have much smaller coefficients after removing contents. |
|
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} |
\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 & --- \\ \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} |
Line 357 FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \ |
|
Line 442 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|c|} \hline |
\begin{tabular}{|c||c|c|c|c|c|} \hline |
& $C_7$ & $Homog. C_7$ & $C_8$ & $K_7$ & $K_8$ & $McKay$ \\ \hline |
& $C_7$ & $C_8$ & $K_7$ & $K_8$ & $McKay$ \\ \hline |
Asir $Buchberger$ & 389 & 594 & 54000 & 29 & 299 & 34950 \\ \hline |
TR+Homo,Cont & 389 & 54000 & 29 & 299 & 34950 \\ \hline |
Singular & --- & 15247 & --- & 7.6 & 79 & $>$ 20h \\ \hline |
TR+Homo & --- & --- & --- & --- & --- \\ \hline |
CoCoA 4 & --- & 13227 & --- & 57 & 709 & --- \\ \hline\hline |
TR & --- & --- & --- & --- & --- \\ \hline |
Asir $F_4$ & 989 & 456 & --- & 90 & 991 & 4939 \\ \hline |
%Singular & --- & 15247 & --- & 7.6 & 79 & $>$ 20h \\ \hline |
FGb(estimated) & 8 &11 & 288 & 0.6 & 5 & 10 \\ \hline |
%CoCoA 4 & --- & 13227 & --- & 57 & 709 & --- \\ \hline\hline |
|
%Asir $F_4$ & 989 & 456 & --- & 90 & 991 & 4939 \\ \hline |
|
%FGb(estimated) & 8 &11 & 288 & 0.6 & 5 & 10 \\ \hline |
\end{tabular} |
\end{tabular} |
|
|
|
(TR : trace lifting; Homo : homogenization; Cont : contents reduction) |
\end{center} |
\end{center} |
\caption{Groebner basis computation over {\bf Q}} |
\caption{Groebner basis computation over {\bf Q}} |
\label{gbq} |
\label{gbq} |
Line 381 FGb(estimated) & 8 &11 & 288 & 0.6 & 5 & 10 \\ \hline |
|
Line 470 FGb(estimated) & 8 &11 & 288 & 0.6 & 5 & 10 \\ \hline |
|
\end{figure} |
\end{figure} |
|
|
Table \ref{minipoly} shows timing data for the minimal polynomial |
Table \ref{minipoly} shows timing data for the minimal polynomial |
computation over {\bf Q}. Singular provides a function {\tt finduni} |
computations of all variables over {\bf Q} by the modular method. |
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{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_6$ & $C_7$ & $K_6$ & $K_7$ & $K_8$ \\ \hline |
& $C_6$ & $C_7$ & $K_6$ & $K_7$ & $K_8$ \\ \hline |
Singular & 0.9 & 846 & 307 & 60880 & --- \\ \hline |
%Singular & 0.9 & 846 & 307 & 60880 & --- \\ \hline |
Asir & 1.5 & 182 & 12 & 164 & 3420 \\ \hline |
Asir & 1.5 & 182 & 12 & 164 & 3420 \\ \hline |
\end{tabular} |
\end{tabular} |
\end{center} |
\end{center} |
Line 425 Asir & 1.5 & 182 & 12 & 164 & 3420 \\ \hline |
|
Line 509 Asir & 1.5 & 182 & 12 & 164 & 3420 \\ \hline |
|
%\label{unifac} |
%\label{unifac} |
%\end{table} |
%\end{table} |
|
|
Table \ref{multifac} shows timing data for multivariate |
Table \ref{multifac} shows timing data for multivariate factorization |
factorization over {\bf Q}. |
over {\bf Q}. $W_{i,j,k}$ is a product of three multivariate |
$W_{i,j,k}$ is a product of three multivariate polynomials |
polynomials $Wang[i]$, $Wang[j]$, $Wang[k]$ given in a data file {\tt |
$Wang[i]$, $Wang[j]$, $Wang[k]$ given in a data file |
fctrdata} in Asir library directory. It is also included in Risa/Asir |
{\tt fctrdata} in Asir library directory. It is also included |
source tree and located in {\tt asir2000/lib}. These examples have |
in Risa/Asir source tree and located in {\tt asir2000/lib}. |
leading coefficients of large degree which vanish at 0 which tend to |
For these examples Risa/Asir shows reasonable performance |
cause so-called the leading coefficient problem the bad zero |
compared with other famous systems. |
problem. Risa/Asir's implementation carefully treats such cases and it |
|
shows reasonable performance 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 441 variables & 3 & 5 & 5 & 5 & 4 \\ \hline |
|
Line 526 variables & 3 & 5 & 5 & 5 & 4 \\ \hline |
|
monomials & 905 & 41369 & 51940 & 30988 & 3344 \\ \hline\hline |
monomials & 905 & 41369 & 51940 & 30988 & 3344 \\ \hline\hline |
Asir & 0.2 & 4.7 & 14 & 17 & 0.4 \\ \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} |
Line 449 Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline |
|
Line 534 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 |
the univariate factorizer implements only classical |
implements old algorithms and its behavior is what one expects, |
algorithms and its behavior is what one expects, |
that is, it shows average performance in cases where there are little |
that is, it shows average performance in cases |
extraneous factors, but shows poor performance for hard to factor |
where there are little extraneous factors, but |
polynomials with many extraneous factors. |
shows poor performance for hard to factor polynomials. |
|
|
|
\section{OpenXM and Risa/Asir OpenXM interfaces} |
\section{OpenXM and Risa/Asir OpenXM interfaces} |
|
|
Line 484 the method to reset a server is carefully designed and |
|
Line 568 the method to reset a server is carefully designed and |
|
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 built-in interface |
asir} can access to OpenXM servers via several built-in interface |
Line 504 We show a typical OpenXM session. |
|
Line 588 We show 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 516 We show a typical OpenXM session. |
|
Line 600 We show 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. As an example we |
debugging of user programs running on the server. As an example we |
show a program for checking whether a polynomial set is a Groebner |
show a program for checking whether a polynomial set is a Groebner |
basis or not. A client executes {\tt gbcheck()} and servers execute |
basis or not. A client executes {\tt gbcheck()} and servers execute |
{\tt sp\_nf\_for\_gbcheck()} which is a simple normal form computation |
{\tt sp\_nf\_for\_gbcheck()} which is a simple normal form computation |
of a 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 |
Line 563 def gbcheck(B,V,O,Procs) { |
|
Line 647 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. There is |
in {\tt ox\_asir} without accessing to {\tt ox\_asir} via |
also a stack, which can be manipulated by library functions. In |
TCP/IP. There is also a stack, which can be manipulated by the library |
order to make full use of this interface, one has to prepare |
functions. In order to make full use of this interface, one has to |
conversion functions between CMO and the data structures proper to the |
prepare conversion functions between CMO and the data structures |
application. A function {\tt asir\_ox\_pop\_string()} is provided to |
proper to the application itself. A function {\tt |
convert CMO to a human readable form, which may be sufficient for a |
asir\_ox\_pop\_string()} is provided to convert CMO to a human |
simple use of this interface. |
readable form, which may be sufficient for a 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 |
Line 585 Groebner basis computation over {\bf Q}, many techniqu |
|
Line 670 Groebner basis computation over {\bf Q}, many techniqu |
|
practical performances have been implemented. As the OpenXM interface |
practical performances have been implemented. As the OpenXM interface |
specification is completely documented, we can easily add another |
specification is completely documented, we can easily add another |
function to Risa/Asir by wrapping an existing software system as an OX |
function to Risa/Asir by wrapping an existing software system as an OX |
server, and vice versa. User program debugger can be used both for |
server, and other clients can call functions in Risa/Asir by |
local and remote debugging. By combining the debugger and the function |
implementing the OpenXM client interface. With the remote debugging |
to reset servers, one will be able to enjoy parallel and distributed |
and the function to reset servers, one will be able to enjoy parallel |
computation with OpenXM facilities. |
and distributed computation with OpenXM facilities. |
% |
% |
\begin{thebibliography}{7} |
\begin{thebibliography}{7} |
% |
% |
Line 640 Journal of Symbolic Computation, 28, 1, 243--263. |
|
Line 725 Journal of Symbolic Computation, 28, 1, 243--263. |
|
OpenXM committers (2000-2001) |
OpenXM committers (2000-2001) |
OpenXM package. |
OpenXM package. |
{\tt http://www.openxm.org}. |
{\tt http://www.openxm.org}. |
|
|
|
\bibitem{RUR} |
|
Rouillier, R. (1996) |
|
R\'esolution des syst\`emes z\'ero-dimensionnels. |
|
Doctoral Thesis(1996), University of Rennes I, France. |
|
|
\bibitem{SY} |
\bibitem{SY} |
Shimoyama, T., Yokoyama, K. (1996) |
Shimoyama, T., Yokoyama, K. (1996) |