%% $OpenXM: OpenXM/doc/ascm2001p/ohp.tex,v 1.1 2001/09/20 09:27:56 takayama Exp $
\documentclass{slides}
%%\documentclass[12pt]{article}
\usepackage{color}
\usepackage{epsfig}
\newcommand{\htmladdnormallink}[2]{#1}
\begin{document}
\noindent
{\color{green} Design and Implementation of OpenXM-RFC 100 and 101}

\noindent
M.Maekawa, M.Noro, K.Ohara, N.Takayama, Y.Tamura \\
\htmladdnormallink{http://www.openxm.org}{http://www.openxm.org}

\newpage
\noindent
{\color{red} 1. Architecture} \\
Integrating (existing) mathematical software systems.

Two main applications of the project \\
\begin{enumerate}
\item Providing an environment for interactive distributed computation.
{\color{blue} Risa/Asir}
\item e-Bateman project 
(Electronic version of higher transcendental functions of the 21st century)\\
1st step: Generate and verify hypergeometric function identities.
\end{enumerate}
\newpage

\noindent
OpenXM-RFC 100 \\
{\color{green} Control}: \\
\begin{enumerate}
\item Client-server model. Tree structure of processes.
\item Wrap (existing) mathematical software systems by the
OpenXM {\color{red} stackmachine}.
\item execute\_string
\begin{verbatim}
  P = ox_launch(0,"ox_asir");
  ox_execute_string(Pid," poly_factor(x^10-1);");
\end{verbatim}
\end{enumerate}
\newpage

\noindent
{\color{green} Data}: \\
\begin{tabular}{|c|c|}
\hline
{\color{red} TAG}& {\color{blue} BODY} \\ 
\hline
\end{tabular} \\
Two layers: {\color{green} OX message} layer. 
Layer of Command, CMO, and other data encodings.

\noindent
{\color{blue} Example 1}: \\
\begin{verbatim}
P = ox_launch(0,"ox_sm1");
ox_push_cmo(P,1);
ox_push_cmo(P,1);
ox_execute_string(P,"add");
ox_pop_cmo(P);
\end{verbatim}

{\color{green} CMO} is an encoding method based on XML like OpenMath.

\begin{tabular}{|c|c|c|}
\hline
{\tt OX\_DATA} & {\it CMO\_ZZ} & 1 \\ 
\hline
\end{tabular} \\
\begin{tabular}{|c|c|c|}
\hline
{\tt OX\_DATA} & {\it CMO\_ZZ} & 1 \\ 
\hline
\end{tabular} \\
\begin{tabular}{|c|c|c|}
\hline
{\tt OX\_DATA} & {\it CMO\_STRING} & add \\ 
\hline
\end{tabular} \\
\begin{tabular}{|c|c|}
\hline
{\tt OX\_COMMAND} & {\it SM\_executeString} \\ 
\hline
\end{tabular} \\
\begin{tabular}{|c|c|}
\hline
{\tt OX\_COMMAND} & {\it SM\_popCMO} \\ 
\hline
\end{tabular} \\
\htmladdnormallink{http://www.openxm.org}{http://www.openxm.org}
\newpage

\noindent
{\color{red} 2. Error Handling and Resetting} \\
\begin{verbatim}
P = ox_launch(0,"ox_asir");
ox_rpc(P,"fctr",1.2*x^2-1.21);
ox_dup_errors(P);
ox_pop_cmo(P);
\end{verbatim}
{\color{green}
\verb# [error([8,fctr: invalid argument])] #
}\\
{\color{blue}
Servers say nothing unless is is asked.
}
\newpage

\begin{verbatim}
P=ox_launch(0,"ox_asir");
ox_rpc(P,"fctr",x^1000-y^1000);
ox_reset(P);
\end{verbatim}

\setlength{\unitlength}{1cm}
\begin{picture}(20,7)(0,0)
\thicklines
\put(5,1.7){\line(1,0){7}}
\put(5,4.7){\line(3,-1){7}}
\put(12,1){\framebox(5,2.5){client}}
\put(1,4){\framebox(4,1.5){\color{blue} controller}}
\put(1,1){\framebox(4,1.5){\color{red} engine}}
\thinlines
\put(0,0.3){\framebox(6,6){}}
\put(1.5,-0.7){server}
\end{picture}
\newpage

\noindent{\color{red} 4. Easy to try and evaluate distributed algorithms} \\

\noindent
Theorem (Cantor-Zassenhaus) \\
Let $f_1$ and $f_2$ be degree $d$ polynomials in $F_q[x]$.
For a random degree $2d-1$ polynomial $g \in F_q[x]$,
the chance of
$$ GCD(g^{(q^d-1)/2}-1,f_1 f_2) = f_1 \,\mbox{or}\, f_2 $$
is 
$$ \frac{1}{2}-\frac{1}{(2q)^d}. $$

\begin{picture}(20,14)(0,0)
\put(7,12){\framebox(4,1.5){client}}
\put(2,6){\framebox(4,1.5){server}}
\put(7,6){\framebox(4,1.5){server}}
\put(12,6){\framebox(4,1.5){server}}
\put(0,0){\framebox(4,1.5){server}}
\put(5,0){\framebox(4,1.5){server}}
\put(13.5,0){\framebox(4,1.5){server}}

\put(9,12){\vector(-1,-1){4.3}}
\put(9,12){\vector(0,-1){4.3}}
\put(9,12){\vector(1,-1){4.3}}
\put(4,6){\vector(-1,-2){2.2}}
\put(4,6){\vector(1,-2){2.2}}
\put(14,6){\vector(1,-3){1.4}}
\end{picture}

\begin{verbatim}
/* factorization of F */
/* E = degree of irreducible factors in F */
def c_z(F,E,Level)
{
  V = var(F); N = deg(F,V);
  if ( N == E ) return [F];
  M = field_order_ff(); K = idiv(N,E); L = [F];
  while ( 1 ) {
    /* gererate a random polynomial */
    W = monic_randpoly_ff(2*E,V);
    /* compute a power of the random polynomial */
    T = generic_pwrmod_ff(W,F,idiv(M^E-1,2));
    if ( !(W = T-1) ) continue;
    /* G = GCD(F,W^((M^E-1)/2)) mod F) */
    G = ugcd(F,W);
    if ( deg(G,V) && deg(G,V) < N ) {
      /* G is a non-trivial factor of F */
      if ( Level >= LevelMax ) {
        /* everything is done on this server */
        L1 = c_z(G,E,Level+1);
        L2 = c_z(sdiv(F,G),E,Level+1);
      } else {
        /* launch a server if necessary */
        if ( Proc1 < 0 ) Proc1 = ox_launch();
        /* send a request with Level = Level+1 */
        /* ox_c_z is a wrapper of c_z on the server */
        ox_cmo_rpc(Proc1,"ox_c_z",lmptop(G),E,
            setmod_ff(),Level+1);
        /* the rest is done on this server */
        L2 = c_z(sdiv(F,G),E,Level+1);
        L1 = map(simp_ff,ox_pop_cmo(Proc1));
      }
      return append(L1,L2);
    }
  }
}
\end{verbatim}
\newpage
\noindent
{\color{red} 5. e-Bateman project} \\
First Step: \\
Gauss Hypergeometric function:
$$ {\color{blue} F(a,b,c;x)} = \sum_{n=1}^\infty
  \frac{(a)_n (b)_n}{(1)_n}{(c)_n} x^n
$$
where
$$ (a)_n = a(a+1) \cdots (a+n-1). $$
$$ F(?,?,?;x) = \log (1+x). $$

\noindent
Appell's $F_1$:
$$ {\color{blue} F_1(a,b,b',c;x,y)} = \sum_{m,n=1}^\infty
  \frac{(a)_{m+n} (b)_m (b')_n}{(c)_{m+n}(1)_m (1)_n} x^m y^n.
$$
\newpage
Mathematical formula book, e.g.,
Erdelyi: {\color{green} Higher Transcendental Functions} \\
{\color{blue} Formula (type A)}\\
The solution space of the ordinary differential equation
$$ x(1-x) \frac{d^2f}{dx^2} -\left( c-(a+b+1)x \right) \frac{df}{dx} - a b f = 0$$
is spanned by
$$ F(a,b,c;x) , \  x^{1-c} F(a,b,c;x) $$
when $c \not\in {\bf Z}$. \\
{\color{blue} Formula (type B)}\\
\begin{eqnarray*}
&\ & F(a_1, a_2, b_2;z) \, F(-a_1,-a_2,2-b_2;z)  \\
&+& \frac{z}{e_2}\, F'(a_1, a_2, b_2;z) \, F(-a_1,-a_2,2-b_2;z)  \\
&-& \frac{z}{e_2}\, F(a_1, a_2, b_2;z) \, F'(-a_1,-a_2,2-b_2;z)  \\
&-& \frac{a_1+a_2-e_2}{a_1 a_2 e_2}z^2\,
  F'(a_1, a_2, b_2;z)\,F'(-a_1,-a_2,2-b_2;z) \\
&=& 1
\end{eqnarray*}
where $e_2 = b_2-1$ and $a_1, a_2, e_2, e_2-a_2 \not\in {\bf Z}$.  \\
(generalization of $\sin^2 x + \cos^2 x =1$.)

\noindent
Project in progress: \\
We are trying to generate or verify type A formulas and type B formulas
for {\color{blue} GKZ hypergeometric systems}.

\begin{tabular}{|c|c|c|}
\hline
  & type A & type B \\ \hline
Algorithm &  {\color{red} OK} (SST book) &  in progress \\ \hline
Implementation & partially done & NO \\ \hline
\end{tabular}

\noindent
Our ox servers
{\tt ox\_asir}, {\tt ox\_sm1}, {\tt ox\_tigers}, {\tt ox\_gnuplot},
{\tt ox\_mathematica}, {\tt OMproxy} {\tt ox\_m2}
are used to generate, verify and present formulas of type A
for GKZ hypergeometric systems.

\end{document}