=================================================================== RCS file: /home/cvs/OpenXM/doc/Papers/Attic/dag-noro-proc.tex,v retrieving revision 1.7 retrieving revision 1.13 diff -u -p -r1.7 -r1.13 --- OpenXM/doc/Papers/Attic/dag-noro-proc.tex 2001/11/30 02:02:09 1.7 +++ OpenXM/doc/Papers/Attic/dag-noro-proc.tex 2002/03/11 03:17:00 1.13 @@ -1,4 +1,4 @@ -% $OpenXM: OpenXM/doc/Papers/dag-noro-proc.tex,v 1.6 2001/11/28 09:05:57 noro Exp $ +% $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- % author book to be published by Springer Verlag. @@ -60,6 +60,7 @@ \usepackage{epsfig} \def\cont{{\rm cont}} \def\GCD{{\rm GCD}} +\def\Q{{\bf Q}} % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -87,143 +88,169 @@ \maketitle % typesets the title of the contribution -\begin{abstract} -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 -distributed computation. In this article we present an overview of -Risa/Asir and review several techniques for improving performances of -Groebner basis computation over {\bf Q}. We also show Risa/Asir's -OpenXM interfaces and their usages. -\end{abstract} +%\begin{abstract} +%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{noro:OPENXM}. +%OpenXM is an infrastructure for exchanging mathematical +%data. It defines a client-server architecture for parallel and +%distributed computation. In this article we present an overview of +%Risa/Asir and review several techniques for improving performances of +%Groebner basis computation over {\bf Q}. We also show Risa/Asir's +%OpenXM interfaces and their usages. +%\end{abstract} -\section{A computer algebra system Risa/Asir} +\section{Introduction} -\subsection{What is Risa/Asir?} +%Risa/Asir は, 数, 多項式などに対する演算を実装する engine, +%ユーザ言語を実装する parser and interpreter および, +%他の application との interaction のための OpenXM interface からなる +%computer algebra system である. +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 では, 数, 多項式などの arithmetics および, 多項式 +%GCD, 因数分解, グレブナ基底計算が実装されている. これらは組み込み関数 +%としてユーザ言語から呼び出される. +The engine implements fundamental arithmetics on numbers and polynomials, +polynomial GCD, polynomial factorizations and Groebner basis computations, +etc. +%Risa/Asir のユーザ言語は C 言語 like な文法をもち, 変数の型宣言が +%ない, リスト処理および自動 garbage collection つきのインタプリタ +%言語である. ユーザ言語プログラムは parser により中間言語に +%変換され, interpreter により解釈実行される. interpreter には +%gdb 風の debugger が組み込まれている. +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. +%これらの機能は OpenXM interface を通して他の application からも使用可 +%能である. OpenXM \cite{noro:RFC100} は数学ソフトウェアの client-server +%型の相互呼び出しのための プロトコルである. +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 -computation. Its major functions are polynomial factorization and -Groebner basis computation, whose core parts are implemented as -built-in functions. Some higher algorithms such as primary ideal -decomposition or Galois group computation are built on them by the -user language called Asir language. Asir language can be regarded as C -language without type declaration of variables, with list processing, -and with automatic garbage collection. A built-in {\tt gdb}-like user -language debugger is available. Risa/Asir is open source and the -source code and binaries are available via {\tt ftp} or {\tt CVS}. -Risa/Asir is not only a standalone computer algebra system but also a -main component in OpenXM package \cite{OPENXM}, which is a collection -of various software compliant to OpenXM protocol specification. -OpenXM is an infrastructure for exchanging mathematical data and -Risa/Asir has three kinds of OpenXM interfaces : as a client, as a -server, and as a subroutine library. Our goals of developing Risa/Asir -are as follows: +%Risa/Asir は多項式因数分解, ガロア群計算 \cite{noro:ANY}, グレブナ基底 +%計算 \cite{noro:NM,noro:NY}, 準素イデアル分解 \cite{noro:SY}, 暗号 +%\cite{noro:IKNY} における実験的アルゴリズム をテストするためのプラット +%フォームとして開発されてきた. また, OpenXM API を用いて parallel +%distributed computation の実験にも用いられている. 根幹をなすのは多項 +%式因数分解およびグレブナ基底計算である. 本稿では, 特に, グレブナ基底 +%計算に関して, その基本および {\bf Q} 上での計算の困難を克服するための +%さまざまな工夫およびその効果について述べる. また, Risa/Asir は OpenXM +%package における主要な component の一つである. Risa/Asir を client あ +%るいは server として用いる分散並列計算について, 実例をもとに解説する. +Risa/Asir has been used for implementing and testing experimental +algorithms such as polynomial factorizations, splitting field and +Galois group computations \cite{noro:ANY}, Groebner basis computations +\cite{noro:REPL,noro:NOYO}, primary ideal decomposition \cite{noro:SY} +and cryptgraphy \cite{noro:IKNY}. In these applications two major +functions of Risa/Asir, polynomial factorization and Groebner basis +computation play important roles. We focus on Groebner basis +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. -\begin{enumerate} -\item Providing a platform for testing new algorithms +\section{Efficient Groebner basis computation over {\bf Q}} +\label{tab:gbtech} -Risa/Asir has been a platform for testing experimental algorithms in -polynomial factorization, Groebner basis computation, -cryptography and quantifier elimination. As to Groebner basis, we have -been mainly interested in problems over {\bf Q} and we tried applying -various modular techniques to overcome difficulties caused by huge -intermediate coefficients. We have had several results and they have -been implemented in Risa/Asir with other known methods. +In this section we review several practical techniques to improve +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 -\item General purpose open system + $\forall t, 1 \le t$ and $\forall s, t, u, s $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 -\subsection{Groebner basis and the related computation} +We don't have to process all the pairs in $D$ and several useful +criteria for detecting useless pairs were proposed (cf. \cite{noro:BW}). -Currently Risa/Asir can only deal with polynomial ring. Operations on -modules over polynomial rings have not yet supported. However, both -commutative polynomial rings and Weyl algebra are supported and one -can compute Groebner basis in both rings over {\bf Q}, fields of -rational functions and finite fields. In the early stage of our -development, our effort was mainly devoted to improve the efficiency -of computation over {\bf Q}. 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 are hard to compute without -such a combination. Our modular method can be applied to the change -of ordering algorithm\cite{FGLM} and rational univariate -representation \cite{RUR}. We also made a test implementation of -$F_4$ algorithm \cite{F4}. In the later section we will show timing -data on Groebner basis computation. +\item Selection strategy -\subsection{Polynomial factorization} +The selection of $\{f,g\}$ greatly affects the subsequent computation. +The typical strategies are the normal startegy +and the sugar strategy \cite{noro:SUGAR}. +The latter was proposed for efficient computation under a non +degree-compatible order. -Here we briefly review functions on polynomial factorization. For -univariate factorization over {\bf Q}, the classical -Berlekamp-Zassenhaus algorithm is implemented. Efficient algorithms -recently proposed have not yet implemented. For univariate -factorization over algebraic number fields, Trager's algorithm -\cite{TRAGER} is implemented with some modifications. Its major -applications are splitting field and Galois group computation of -polynomials over {\bf Q} \cite{ANY}. For such purpose a tower of -simple extensions are suitable because factors represented over a -simple extension often have huge coefficients. For univariate -factorization over finite fields, equal degree factorization and -Cantor-Zassenhaus algorithm are implemented. We can use various -representation of finite fields: $GF(p)$ with a machine integer prime -$p$, $GF(p)$ and $GF(p^n)$ with any odd prime $p$, $GF(2^n)$ with a -bit-array representation of polynomials over $GF(2)$ and $GF(p^n)$ -with small $p^n$ represented by a primitive root. For multivariate -factorization over {\bf Q}, the classical EZ(Extended -Zassenhaus) type algorithm is implemented. +\item Modular methods -\subsection{Other functions} -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 decomposition is written in the user language. -Splitting field and Galois group computation \cite{ANY} are closely -related and are also important applications of polynomial -factorization. +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 \cite{noro:TRAV} were proposed to reduce such cost. This +will be explained in more detail in Section \ref{sec:gbhomo}. -\section{Techniques for efficient Groebner basis computation over {\bf Q}} -\label{gbtech} +\item Change of ordering -In this section we review several practical techniques to improve -Groebner basis computation over {\bf Q}, which are easily -implemented but may not be well known. -We use the following notations. -\begin{description} -\item $Id(F)$ : a polynomial ideal generated by a polynomial set $F$ -\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 -\item $HC(f)$ : the head coefficient of a polynomial with respect to a term order -\end{description} +For elimination, we need a Groebner basis with respect to a non +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. +\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} -\label{gbhomo} +\label{sec:gbhomo} -Traverso's trace lifting algorithm can be -formulated in an abstract form as follows (c.f. \cite{FPARA}). +The trace lifting algorithm can be +formulated in an abstract form as follows (c.f. \cite{noro:FPARA}). \begin{tabbing} Input : a finite subset $F \subset {\bf Z}[X]$\\ Output : a Groebner basis $G$ of $Id(F)$ with respect to a term order $<$\\ @@ -253,22 +280,23 @@ $G \leftarrow G \setminus \{g \in G| \exists h \in G \ such that $HT(h)|HT(g)$ \} \end{tabbing} The input is homogenized to suppress intermediate coefficient swells -of intermediate basis elements. The number of zero normal forms may -increase by the homogenization, but they are detected over -$GF(p)$. Finally, by dehomogenizing the candidate we can expect that -lots of redundant elements can be removed. +of intermediate basis elements. The homogenization may increase the +number of normal forms reduced to zero, but they can be +detected by the computations over $GF(p)$. Finally, by +dehomogenizing the candidate we can expect that lots of redundant +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]$. 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 case we can apply a simple modular method to compute the minimal polynomial. \begin{tabbing} 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 \= \\ \> $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))$\\ @@ -281,16 +309,16 @@ $GF(p)$ because $\phi_p(G)$ is a Groebner basis. Once candidate of $\deg(m(x_i))$, $m(x_i)$ can be determined by solving a system of linear equations via the method of indeterminate coefficient, and it can be solved efficiently by $p$-adic method. -Arguments on \cite{NOYO} ensures that $m(x_i)$ is what we want if it +Arguments on \cite{noro:NOYO} ensures that $m(x_i)$ is what we want if it exists. Note that the full FGLM can also be computed by the same method. \subsection{Integer contents reduction} -\label{gbcont} +\label{sec:gbcont} In some cases the cost to remove integer contents during normal form 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} Input : an integral polynomial $f$\\ Output : a pair $(\cont(f),f/\cont(f))$\\ @@ -312,69 +340,75 @@ $g_0$ with high accuracy. Then other components are ea %cost for reading basis elements from disk is often negligible because %of the cost for coefficient computations. -\section{Risa/Asir performance} +\subsection{Performances of Groebner basis computation} -We show timing data on Risa/Asir for Groebner basis computation -and polynomial factorization. The measurements were made on -a PC with PentiumIII 1GHz and 1Gbyte of main memory. Timings -are given in seconds. In the tables `---' means it was not -measured. +We show timing data on Risa/Asir for Groebner basis computation. +All the improvements in this section have been implemented in +Risa/Asir. Besides we have a test implemention of $F_4$ algorithm +\cite{noro:F4}, which is a new algorithm for computing Groebner basis. +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} show timing data for Groebner -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, -both are famous bench mark problems \cite{BENCH}. 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 Singular, -but it is still several times slower than $F_4$ implementation in FGb -\cite{FGB}. In Table \ref{gbq}, Risa/Asir computed $C_7$ and $McKay$ -by the Buchberger algorithm with the methods described in Section -\ref{gbhomo} and \ref{gbcont}. 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$. - \begin{table}[hbtp] \begin{center} \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 -Asir $Buchberger$ & 31 & 1687 & 2.6 & 27 & 294 & 4309 & --- \\ \hline -Singular & 8.7 & 278 & 0.6 & 5.6 & 54 & 508 & 5510 \\ \hline -CoCoA 4 & 241 & $>$ 5h & 3.8 & 35 & 402 &7021 & --- \\ \hline\hline +Asir $Buchberger$ & 31 & 1687 & 2.6 & 27 & 294 & 4309 & $>$ 3h \\ \hline +%Singular & 8.7 & 278 & 0.6 & 5.6 & 54 & 508 & 5510 \\ \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 FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \\ \hline \end{tabular} \end{center} \caption{Groebner basis computation over $GF(32003)$} -\label{gbmod} +\label{tab:gbmod} \end{table} - \begin{table}[hbtp] \begin{center} -\begin{tabular}{|c||c|c|c|c|c|c|} \hline - & $C_7$ & $Homog. C_7$ & $C_8$ & $K_7$ & $K_8$ & $McKay$ \\ \hline -Asir $Buchberger$ & 389 & 594 & 54000 & 29 & 299 & 34950 \\ \hline -Singular & --- & 15247 & --- & 7.6 & 79 & $>$ 20h \\ \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 +\begin{tabular}{|c||c|c|c|c|c|} \hline + & $C_7$ & $C_8$ & $K_7$ & $K_8$ & $McKay$ \\ \hline +{\bf TR}+{\bf Homo}+{\bf Cont} & 389 & 54000 & 35 & 351 & 34950 \\ \hline +{\bf TR}+{\bf Homo} & 1346 & exhaust & 35 & 352 & exhaust \\ \hline +{\bf TR} & $> 3h $ & $>$ 1day & 36 & 372 & $>$ 1day \\ \hline +%Asir $F_4$ & 989 & 456 & --- & 90 & 991 & 4939 \\ \hline \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{center} -\caption{Groebner basis computation over {\bf Q}} -\label{gbq} +\caption{Groebner basis and minimal polynomial computation over {\bf Q}} +\label{tab:gbq} \end{table} \begin{figure}[hbtp] @@ -384,37 +418,32 @@ FGb(estimated) & 8 &11 & 288 & 0.6 & 5 & 10 \\ \hline \epsffile{blen.ps} \end{center} \caption{Maximal coefficient bit length of intermediate bases} -\label{f4vsbuch} +\label{tab:f4vsbuch} \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} +%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} -\subsection{Polynomial factorization} - +%\subsection{Polynomial factorization} +% %Table \ref{unifac} shows timing data for univariate factorization over %{\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 %and $\deg(N_i) = i$ with $j$ modular factors. Risa/Asir is %disadvantageous in factoring polynomials of this type because the %algorithm used in Risa/Asir has exponential complexity. In contrast, -%CoCoA 4\cite{COCOA} and NTL-5.2\cite{NTL} show nice performances +%CoCoA 4\cite{noro:COCOA} and NTL-5.2\cite{noro:NTL} show nice performances %because they implement recently developed algorithms. % %\begin{table}[hbtp] @@ -431,38 +460,37 @@ Asir & 1.5 & 182 & 12 & 164 & 3420 \\ \hline %\caption{Univariate factorization over {\bf Q}} %\label{unifac} %\end{table} - -Table \ref{multifac} shows timing data for multivariate -factorization over {\bf Q}. -$W_{i,j,k}$ is a product of three multivariate polynomials -$Wang[i]$, $Wang[j]$, $Wang[k]$ given in a data file -{\tt fctrdata} in Asir library directory. It is also included -in Risa/Asir source tree and located in {\tt asir2000/lib}. -For these examples Risa/Asir shows reasonable performance -compared with other famous systems. -\begin{table}[hbtp] -\begin{center} -\begin{tabular}{|c||c|c|c|c|c|} \hline - & $W_{1,2,3}$ & $W_{4,5,6}$ & $W_{7,8,9}$ & $W_{10,11,12}$ & $W_{13,14,15}$ \\ \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 +% +%Table \ref{multifac} shows timing data for multivariate factorization +%over {\bf Q}. $W_{i,j,k}$ is a product of three multivariate +%polynomials $Wang[i]$, $Wang[j]$, $Wang[k]$ given in a data file {\tt +%fctrdata} in Asir library directory. It is also included in Risa/Asir +%source tree and located in {\tt asir2000/lib}. These examples have +%leading coefficients of large degree which vanish at 0 which tend to +%cause so-called the leading coefficient problem the bad zero +%problem. Risa/Asir's implementation carefully treats such cases and it +%shows reasonable performance compared with other famous systems. +%\begin{table}[hbtp] +%\begin{center} +%\begin{tabular}{|c||c|c|c|c|c|} \hline +% & $W_{1,2,3}$ & $W_{4,5,6}$ & $W_{7,8,9}$ & $W_{10,11,12}$ & $W_{13,14,15}$ \\ \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 -CoCoA 4 & 5.2 & $>$15min & $>$15min & $>$15min & 117 \\ \hline\hline -Mathematica 4& 0.2 & 16 & 23 & 36 & 1.1 \\ \hline -Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline -\end{tabular} -\end{center} -\caption{Multivariate factorization over {\bf Q}} -\label{multifac} -\end{table} -As to univariate factorization over {\bf Q}, -the univariate factorizer implements only classical -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. +%CoCoA 4 & 5.2 & $>$15min & $>$15min & $>$15min & 117 \\ \hline\hline +%Mathematica 4& 0.2 & 16 & 23 & 36 & 1.1 \\ \hline +%Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline +%\end{tabular} +%\end{center} +%\caption{Multivariate factorization over {\bf Q}} +%\label{multifac} +%\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} @@ -470,10 +498,10 @@ many extraneous factors. OpenXM stands for Open message eXchange protocol for Mathematics. From the viewpoint of protocol design, it can be regarded as a child -of OpenMath \cite{OPENMATH}. However our approach is somewhat +of OpenMath \cite{noro:OPENMATH}. However our approach is somewhat different. Our main purpose is to provide an environment for integrating {\it existing} mathematical software systems. OpenXM -RFC-100 \cite{RFC100} defines a client-server architecture. Under +RFC-100 \cite{noro:RFC100} defines a client-server architecture. Under this specification, a client invokes an OpenXM ({\it OX}) server. The client can send OpenXM ({\it OX}) messages to the server. OX messages consist of {\it data} and {\it command}. Data is encoded according to @@ -490,9 +518,9 @@ hybrid server. OpenXM RFC-100 also defines methods for session management. In particular the method to reset a server is carefully designed and it provides 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 asir} can access to OpenXM servers via several built-in interface @@ -571,120 +599,201 @@ def gbcheck(B,V,O,Procs) { } \end{verbatim} -\subsection{Asir OpenXM library {\tt libasir.a}} +\subsection{OpenXM C language API in {\tt libasir.a}} -Asir OpenXM library {\tt libasir.a} contains functions simulating the -stack machine commands supported in {\tt ox\_asir}. By linking {\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 -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. A function {\tt asir\_ox\_pop\_string()} is -provided to convert CMO to a human readable form, which may be -sufficient for a simple use of this interface. +Risa/Asir subroutine library {\tt libasir.a} contains functions +simulating the stack machine commands supported in {\tt ox\_asir}. By +linking {\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 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 + +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} -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 -Risa/Asir does not have abundant functions. However it is a completely -open system and its total performance is not bad. Especially on -Groebner basis computation over {\bf Q}, many techniques for improving -practical performances have been implemented. As the OpenXM interface -specification is completely documented, we can easily add another -function to Risa/Asir by wrapping an existing software system as an OX -server, and other clients can call functions in Risa/Asir by -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 the current status of Risa/Asir and its OpenXM +%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 +%open system and its total performance is not bad. Especially on +%Groebner basis computation over {\bf Q}, many techniques for improving +%practical performances have been implemented. As the OpenXM interface +%specification is completely documented, we can easily add another +%function to Risa/Asir by wrapping an existing software system as an OX +%server, and other clients can call functions in Risa/Asir by +%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} % \addcontentsline{toc}{section}{References} -\bibitem{ANY} +\bibitem{noro:ANY} Anay, H., Noro, M., Yokoyama, K. (1996) Computation of the Splitting fields and the Galois Groups of Polynomials. Algorithms in Algebraic geometry and Applications, 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) Parallelization of Groebner basis. Proceedings of PASCO'94, 124--132. -\bibitem{F4} +\bibitem{noro:F4} Jean-Charles Faug\`ere (1999) A new efficient algorithm for computing Groebner bases ($F_4$). Journal of Pure and Applied Algebra (139) 1-3 , 61--88. -\bibitem{FGLM} +\bibitem{noro:FGLM} Faug\`ere, J.-C. et al. (1993) Efficient computation of zero-dimensional Groebner bases by change of ordering. 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) The Design and Implementation of OpenXM-RFC 100 and 101. Proceedings of ASCM2001, World Scientific, 102--111. -\bibitem{RISA} +\bibitem{noro:RISA} Noro, M. et al. (1994-2001) A computer algebra system Risa/Asir. {\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) Computation of replicable functions on Risa/Asir. Proceedings of PASCO'97, ACM Press, 130--138. -\bibitem{NOYO} +\bibitem{noro:NOYO} Noro, M., Yokoyama, K. (1999) A Modular Method to Compute the Rational Univariate Representation of Zero-Dimensional Ideals. Journal of Symbolic Computation, 28, 1, 243--263. -\bibitem{OPENXM} +\bibitem{noro:OPENXM} OpenXM committers (2000-2001) OpenXM package. {\tt http://www.openxm.org}. -\bibitem{RUR} +\bibitem{noro:RUR} Rouillier, R. (1996) R\'esolution des syst\`emes z\'ero-dimensionnels. Doctoral Thesis(1996), University of Rennes I, France. -\bibitem{SY} +\bibitem{noro:SY} Shimoyama, T., Yokoyama, K. (1996) Localization and Primary Decomposition of Polynomial Ideals. Journal of Symbolic Computation, 22, 3, 247--277. -\bibitem{TRAGER} +\bibitem{noro:TRAGER} Trager, B.M. (1976) Algebraic Factoring and Rational Function Integration. Proceedings of SYMSAC 76, 219--226. -\bibitem{TRAV} +\bibitem{noro:TRAV} Traverso, C. (1988) Groebner trace algorithms. LNCS {\bf 358} (Proceedings of ISSAC'88), Springer-Verlag, 125--138. -\bibitem{BENCH} +\bibitem{noro:BENCH} {\tt http://www.math.uic.edu/\~\,jan/demo.html}. -\bibitem{COCOA} +\bibitem{noro:COCOA} {\tt http://cocoa.dima.unige.it/}. -\bibitem{FGB} +\bibitem{noro:FGB} {\tt http://www-calfor.lip6.fr/\~\,jcf/}. -%\bibitem{NTL} +%\bibitem{noro:NTL} %{\tt http://www.shoup.net/}. -\bibitem{OPENMATH} +\bibitem{noro:OPENMATH} {\tt http://www.openmath.org/}. -\bibitem{SINGULAR} +\bibitem{noro:SINGULAR} {\tt http://www.singular.uni-kl.de/}. \end{thebibliography}