% $OpenXM: OpenXM/doc/Papers/dag-noro.tex,v 1.4 2001/10/12 02:58:35 noro Exp $ 
\documentclass{slides}
\usepackage{color}
\usepackage{rgb}
\usepackage{graphicx}
\usepackage{epsfig}
\newcommand{\qed}{$\Box$}
\newcommand{\mred}[1]{\smash{\mathop{\hbox{\rightarrowfill}}\limits_{\scriptstyle #1}}}
\newcommand{\tmred}[1]{\smash{\mathop{\hbox{\rightarrowfill}}\limits_{\scriptstyle #1}\limits^{\scriptstyle *}}}
\def\gr{Gr\"obner basis }
\def\st{\, s.t. \,}
\def\ni{\noindent} 
\def\ve{\vfill\eject} 
\textwidth 9.2in
\textheight 7.2in
\columnsep 0.33in
\topmargin -1in
\def\tc{\color{red}}
\def\fbc{\bf\color{MediumBlue}}
\def\itc{\color{brown}}
\def\urlc{\bf\color{DarkGreen}}
\def\bc{\color{LightGoldenrod1}}

\title{\tc A computer algebra system Risa/Asir and OpenXM}

\author{Masayuki Noro\\ Kobe University, Japan}
\begin{document}
\setlength{\parskip}{10pt}
\maketitle

%\begin{slide}{}
%\begin{center}
%\fbox{\fbc \large Part I : OpenXM and Risa/Asir --- overview and history}
%\end{center}
%\end{slide}

%\begin{slide}{}
%\fbox{\fbc Integration of mathematical software systems}
%
%\begin{itemize}
%\item Data integration
%
%\begin{itemize}
%\item OpenMath ({\urlc \tt http://www.openmath.org}) , MP [GRAY98]
%\end{itemize}
%
%Standards for representing mathematical objects
%
%\item Control integration
%
%\begin{itemize}
%\item MCP [WANG99], OMEI [LIAO01]
%\end{itemize}
%
%Protocols for remote subroutine calls or session management
%
%\item Combination of two integrations
%
%\begin{itemize}
%\item MathLink, OpenMath+MCP, MP+MCP
%
%and OpenXM ({\urlc \tt http://www.openxm.org})
%\end{itemize}
%
%Both are necessary for practical implementation
%
%\end{itemize}
%\end{slide}
\begin{slide}{}
\fbox{\fbc A computer algebra system Risa/Asir}

({\urlc \tt http://www.math.kobe-u.ac.jp/Asir/asir.html})

\begin{itemize}
\item {\itc Software mainly for polynomial computation}

\item {\itc User language with C-like syntax}

C language without type declaration, with list processing

\item {\itc Builtin {\tt gdb}-like debugger for user programs}

\item {\itc Open source}

Whole source tree is available via CVS

The latest version : see {\urlc \tt http://www.openxm.org}

\item {\itc OpenXM interface}

\begin{itemize}
\item OpenXM 

An infrastructure for exchanging mathematical data
\item Risa/Asir is a main client in OpenXM package.
\item An OpenXM server {\tt ox\_asir}
\item A library with OpenXM library interface {\tt libasir.a}
\end{itemize}
\end{itemize}
\end{slide}

\begin{slide}{}
\fbox{\fbc Goal of developing Risa/Asir}

\begin{itemize}
\item {\itc Testing new algorithms}

\begin{itemize}
\item Development started in Fujitsu labs

Polynomial factorization, Groebner basis related computation,
cryptosystems , quantifier elimination , $\ldots$
\end{itemize}

\item {\itc To be a general purpose, open system}

Since 1997, we have been developing OpenXM package
containing various servers and clients

Risa/Asir is a component of OpenXM

\item {\itc Environment for parallel and distributed computation}

\end{itemize}
\end{slide}

%\begin{slide}{}
%\fbox{\fbc Capability for polynomial computation}
%
%\begin{itemize}
%\item Fundamental polynomial arithmetics
%
%recursive representation and distributed representation
%
%\item Polynomial factorization
%
%\begin{itemize}
%\item Univariate : over {\bf Q}, algebraic number fields and finite fields
%
%\item Multivariate : over {\bf Q}
%\end{itemize}
%
%\item Groebner basis computation
%
%\begin{itemize}
%\item Buchberger and $F_4$ [FAUG99] algorithm
%
%\item Change of ordering/RUR [ROUI96] of 0-dimensional ideals
%
%\item Primary ideal decomposition
%
%\item Computation of $b$-function (in Weyl Algebra)
%\end{itemize}
%\end{itemize}
%\end{slide}

\begin{slide}{}
\fbox{\fbc History of development : Polynomial factorization}

\begin{itemize}
\item {\itc 1989}

Start of Risa/Asir with Boehm's conservative GC 

({\urlc \tt http://www.hpl.hp.com/personal/Hans\_Boehm/gc})

\item {\itc 1989-1992}

Univariate and multivariate factorizers over {\bf Q}

\item {\itc 1992-1994}

Univariate factorization over algebraic number fields

Intensive use of successive extension, non-squarefree norms

\item {\itc 1996-1998}

Univariate factorization over large finite fields

Motivated by a reseach project in Fujitsu on cryptography

\item {\itc 2000-current}

Multivariate factorization over small finite fields (in progress)
\end{itemize}
\end{slide}

\begin{slide}{}
\fbox{\fbc History of development : Groebner basis}

\begin{itemize}
\item {\itc 1992-1994}

User language $\Rightarrow$ C version; trace lifting [TRAV88]

\item {\itc 1994-1996}

Trace lifting with homogenization

Omitting GB check by compatible prime [NOYO99]

Modular change of ordering/RUR[ROUI96] [NOYO99]

Primary ideal decomposition [SHYO96]

\item {\itc 1996-1998}

Efficient content reduction during NF computation [NORO97]
Solved {\it McKay} system for the first time

\item {\itc 1998-2000}

Test implementation of $F_4$ [FAUG99]

\item {\itc 2000-current}

Buchberger algorithm in Weyl algebra

Efficient $b$-function computation[OAKU97] by a modular method
\end{itemize}
\end{slide}

\begin{slide}{}
\fbox{\fbc Timing data --- Factorization}

\underline{\itc Univariate; over {\bf Q}}

$N_i$ : a norm of a polynomial, $\deg(N_i) = i$
\begin{center}
\begin{tabular}{|c||c|c|c|c|} \hline
		& $N_{105}$ & $N_{120}$ & $N_{168}$ & $N_{210}$ \\ \hline
Asir 	& 0.86	& 59 & 840 & hard \\ \hline
Asir NormFactor & 1.6 	& 2.2& 6.1& hard \\ \hline
%Singular& hard?	& hard?& hard? & hard? \\ \hline
CoCoA 4 & 0.2 	& 7.1	& 16 & 0.5 \\ \hline\hline
NTL-5.2	& 0.16 	& 0.9 	& 1.4 & 0.4 \\ \hline
\end{tabular}
\end{center}

\underline{\itc Multivariate; over {\bf Q}}

$W_{i,j,k} = Wang[i]\cdot Wang[j]\cdot Wang[k]$ in {\tt asir2000/lib/fctrdata}
\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
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}

%--- : not tested
\end{slide}

\begin{slide}{}
\fbox{\fbc Timing data --- DRL Groebner basis computation}

\underline{\itc Over $GF(32003)$}
\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 $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}

\underline{\itc Over {\bf Q}}

\begin{center}
\begin{tabular}{|c||c|c|c|c|c|} \hline
		& $C_7$ & $Homog. C_7$ & $K_7$ & $K_8$ & $McKay$ \\ \hline
Asir $Buchberger$ 	& 389 & 594 & 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 & 0.6 & 5 & 10 \\ \hline
\end{tabular}
\end{center}
--- : not tested
\end{slide}

\begin{slide}{}
\fbox{\fbc Summary of performance}

\begin{itemize}
\item {\itc Factorizer}

\begin{itemize}
\item Multivariate : reasonable performance

\item Univariate : obsoleted by M. van Hoeij's new algorithm [HOEI00]
\end{itemize}

\item {\itc Groebner basis computation}

\begin{itemize}
\item Buchberger

Singular shows nice perfomance

Trace lifting is efficient in some cases over {\bf Q}

\item $F_4$

FGb is much faster than Risa/Asir

But we observe that {\it McKay} is computed efficiently by $F_4$
\end{itemize}
\end{itemize}

\end{slide}

\begin{slide}{}
\fbox{\fbc What is the merit to use Risa/Asir?}

\begin{itemize}
\item {\itc Total performance is not excellent, but not bad}

\item {\itc A completely open system}

The whole source is available

\item {\itc It serves as a test bench to try new ideas}

Interactive debugger is very useful

\item {\itc Interface compliant to OpenXM RFC-100}

The interface is fully documented

\end{itemize}

\end{slide}


%\begin{slide}{}
%\fbox{\fbc CMO = Serialized representation of mathematical object}
%
%\begin{itemize}
%\item primitive data
%\begin{eqnarray*}
%\mbox{Integer32} &:& ({\tt CMO\_INT32}, {\sl int32}\ \mbox{n}) \\
%\mbox{Cstring}&:& ({\tt CMO\_STRING},{\sl int32}\,  \mbox{ n}, {\sl string}\, \mbox{s}) \\
%\mbox{List} &:& ({\tt CMO\_LIST}, {\sl int32}\, len, ob[0], \ldots,ob[m-1])
%\end{eqnarray*}
%
%\item numbers and polynomials
%\begin{eqnarray*}
%\mbox{ZZ}         &:& ({\tt CMO\_ZZ},{\sl int32}\, {\rm f}, {\sl byte}\, \mbox{a[1]}, \ldots
%{\sl byte}\, \mbox{a[$|$f$|$]} ) \\
%\mbox{Monomial32}&:& ({\tt CMO\_MONOMIAL32}, n, \mbox{e[1]}, \ldots, \mbox{e[n]}, \mbox{Coef}) \\
%\mbox{Coef}&:& \mbox{ZZ} | \mbox{Integer32} \\
%\mbox{Dpolynomial}&:& ({\tt CMO\_DISTRIBUTED\_POLYNOMIAL},\\
%                  & & m, \mbox{DringDefinition}, \mbox{Monomial32}, \ldots)\\
%\mbox{DringDefinition}
%                  &:& \mbox{DMS of N variables} \\
%                  & & ({\tt CMO\_RING\_BY\_NAME}, name) \\
%                  & & ({\tt CMO\_DMS\_GENERIC}) \\
%\end{eqnarray*}
%\end{itemize}
%\end{slide}
%
%\begin{slide}{}
%\fbox{\fbc Stack based communication}
%
%\begin{itemize}
%\item Data arrived a client
%
%Pushed to the stack
%
%\item Result
%
%Pushd to the stack
%
%Written to the stream when requested by a command
%
%\item The reason why we use the stack
%
%\begin{itemize}
%\item Stack = I/O buffer for (possibly large) objects
%
%Multiple requests can be sent before their execution
%
%A server does not get stuck in sending results
%\end{itemize}
%\end{itemize}
%\end{slide}

\begin{slide}{}
\fbox{\fbc OpenXM (Open message eXchange protocol for Mathematics) }

\begin{itemize}
\item {\itc An environment for parallel distributed computation}

Both for interactive, non-interactive environment

\item {\itc OpenXM RFC-100 = Client-server architecture}

Client $\Leftarrow$ OX (OpenXM) message $\Rightarrow$ Server

OX (OpenXM) message : command and data

\item {\itc Data}

Encoding : CMO (Common Mathematical Object format)

Serialized representation of mathematical object

--- Main idea was borrowed from OpenMath 

({\urlc \tt http://www.openmath.org})

\item {\itc Command}

stack machine command --- server is a stackmachine

+ server's own command sequences --- hybrid server
\end{itemize}
\end{slide}

\begin{slide}{}
\fbox{\fbc Example of distributed computation --- $F_4$ vs. $Buchberger$ }

\begin{verbatim}
/* competitive Gbase computation over GF(M) */
/* Cf. A.28 in SINGULAR Manual */
/* Process list is specified as buch_vs_f4_mod(...|proc=P) */
def buch_vs_f4_mod(G,V,M,O)
{
  P = getopt(proc);
  if ( type(P) == -1 ) return dp_f4_mod_main(G,V,M,O);
  P0 = P[0]; P1 = P[1]; P = [P0,P1];
  map(ox_reset,P); /* resets the both servers */
  ox_cmo_rpc(P0,"dp_f4_mod_main",G,V,M,O);  /* for F4 */
  ox_cmo_rpc(P1,"dp_gr_mod_main",G,V,0,M,O); /* for Buchberger */
  map(ox_push_cmd,P,262); /* 262 = OX_popCMO */
  F = ox_select(P); /* waits a server to return the result */
  R = ox_get(F[0]); /* gets the result from the winner */
  if ( F[0] == P0 ) { Win = "F4"; Lose = P1;}
  else { Win = "Buchberger"; Lose = P0; }
  ox_reset(Lose); /* simply resets the loser */
  return [Win,R];
}
\end{verbatim}
\end{slide}

\begin{slide}{}
\fbox{\fbc Real speedup by parallelism --- polynomial multiplication}

{\itc Product of dense univariate polynomials with 3000bit coefficients}

{\itc Algorithm : FFT+Chinese remainder (by Shoup)}

\epsfxsize=20cm
\epsffile{3k.ps}

{\itc Communication cost}

\begin{itemize}
\item $O(n{\color{red}\log L})$ with server-server communication (OX-RFC102)
\item $O(n{\color{red}L})$ without server-server communication (OX-RFC100)
\end{itemize}
($L$: number of processes, $n$: degree)

\end{slide}

\begin{slide}{}
\fbox{\fbc References}

[BERN97] L. Bernardin, On square-free factorization of 
multivariate polynomials over a finite field, Theoretical
Computer Science 187 (1997), 105-116.

[FAUG99] J.C. Faug\`ere,
A new efficient algorithm for computing Groebner bases  ($F_4$),
Journal of Pure and Applied Algebra (139) 1-3 (1999), 61-88.

[GRAY98] S. Gray et al,
Design and Implementation of MP, A Protocol for Efficient Exchange of
Mathematical Expression,
J. Symb. Comp. {\bf 25} (1998), 213-238.

[HOEI00] M. van Hoeij, Factoring polynomials and the knapsack problem,
to appear in Journal of Number Theory (2000).

[LIAO01] W. Liao et al,
OMEI: An Open Mathematical Engine Interface,
Proc. ASCM2001 (2001), 82-91.
[NORO97] M. Noro, J. McKay,
Computation of replicable functions on Risa/Asir.
Proc. PASCO'97, ACM Press (1997), 130-138.
\end{slide}

\begin{slide}{}

[NOYO99] M. Noro, K. Yokoyama, 
A Modular Method to Compute the Rational Univariate
Representation of Zero-Dimensional Ideals.
J. Symb. Comp. {\bf 28}/1 (1999), 243-263.

[OAKU97] T. Oaku, Algorithms for $b$-functions, restrictions and algebraic
local cohomology groups of $D$-modules.
Advances in Applied Mathematics, 19 (1997), 61-105.

[ROUI96] F. Rouillier,
R\'esolution des syst\`emes z\'ero-dimensionnels. 
Doctoral Thesis(1996), University of Rennes I, France.

[SHYO96] T. Shimoyama, K. Yokoyama, Localization and Primary Decomposition of Polynomial Ideals.  J. Symb. Comp. {\bf 22} (1996), 247-277.

[TRAV88] C. Traverso, \gr trace algorithms. Proc. ISSAC '88 (LNCS 358), 125-138.

[WANG99] P. S. Wang,
Design and Protocol for Internet Accessible Mathematical Computation,
Proc. ISSAC '99 (1999), 291-298.
\end{slide}
\end{document}
