% $OpenXM: OpenXM/doc/ascm2001/heterotic-network.tex,v 1.3 2001/03/08 04:24:09 takayama Exp $
\section{Applications}

\subsection{Heterogeneous Servers}

\def\pd#1{ \partial_{#1} }

By using OpenXM, we can treat OpenXM servers essentially 
like a subroutine.
Since OpenXM provides a universal stack machine which does not
depend each servers, 
it is relatively easy to install new servers.
We can build a new computer math system by assembling
different OpenXM servers.
It is similar to building a toy house by LEGO blocks.

We will see three examples of custom-made systems
built by OpenXM servers.

\subsubsection{Computation of annihilating ideals by kan/sm1 and ox\_asir}

Let $D = {\bf Q} \langle x_1, \ldots, x_n , \pd{1}, \ldots, \pd{n} \rangle$
be the ring of differential operators.
For a given polynomial
$ f \in {\bf Q}[x_1, \ldots, x_n] $,
the annihilating ideal of $f^{-1}$ is defined as
$$ {\rm Ann}\, f^{-1} = \{ \ell \in D \,|\,
  \ell \bullet f^{-1} = 0 \}.
$$
Here, $\bullet$ denotes the action of $D$ to functions.
The annihilating ideal can be regarded as the maximal differential
equations for the function $f^{-1}$.
An algorithm to determine generators of the annihilating ideal
was given by Oaku (see, e.g., \cite[5.3]{sst-book}).
His algorithm reduces the problem to computations of Gr\"obner bases
in $D$ and to find the minimal integral root of a polynomial.
This algorithm (the function {\tt annfs}) is implemented by
kan/sm1 \cite{kan}, for Gr\"obner basis computation in $D$, and
{\tt ox\_asir}, to factorize polynomials to find the integral
roots.
These two OpenXM compliant systems are integrated by
the OpenXM protocol.

For example, the following is a sm1 session to find the annihilating
ideal for $f = x^3 - y^2 z^2$.
\begin{verbatim}
sm1>[(x^3-y^2 z^2) (x,y,z)] annfs ::
Starting ox_asir server.
Byte order for control process is network byte order.
Byte order for engine process is network byte order.
[[-y*Dy+z*Dz, 2*x*Dx+3*y*Dy+6, -2*y*z^2*Dx-3*x^2*Dy, 
-2*y^2*z*Dx-3*x^2*Dz, -2*z^3*Dx*Dz-3*x^2*Dy^2-2*z^2*Dx], 
 [-1,-139968*s^7-1119744*s^6-3802464*s^5-7107264*s^4
     -7898796*s^3-5220720*s^2-1900500*s-294000]] 
\end{verbatim}
The last polynomial is factored as
$-12(s+1)(3s+5)(3s+4)(6s+5)(6s+7)$
and the minimal integral root is $-1$
as shown in the output.

Similarly, 
an algorithm to stratify singularity 
\cite{oaku-advance}
is implemented by
kan/sm1 \cite{kan}, for Gr\"obner basis computation in $D$, and
{\tt ox\_asir}, for primary ideal decompositions.

\subsubsection{A Course on Solving Algebraic Equations}

Risa/Asir \cite{asir} is a general computer algebra system
which can be used for Gr\"obner basis computations for zero dimensional ideal
with ${\bf Q}$ coefficients.
However, it is not good at graphical presentations and
numerical methods.
We integrated Risa/Asir, ox\_phc (based on PHC pack by Verschelde \cite{phc}
for the polyhedral homotopy method) and
ox\_gnuplot (GNUPLOT) servers
to teach a course on solving algebraic equations.
This course was presented with the text book \cite{CLO},
which discusses 
on the Gr\"obner basis method and the polyhedral homotopy method
to solve systems of algebraic equations.
We taught the course
with a unified environment
controlled by the Asir user language, which is similar to C.
The following is an Asir session to solve algebraic equations by calling
the PHC pack (Figure \ref{katsura} is the output of {\tt [292]}):
\begin{verbatim}
[287] phc(katsura(7));
The detailed output is in the file tmp.output.*
The answer is in the variable Phc.
0
[290] B=map(first,Phc)$
[291] gnuplot_plotDots([],0)$
[292] gnuplot_plotDots(B,0)$
\end{verbatim}

\begin{figure}[htbp]
\epsfxsize=8.5cm
\epsffile{katsura7.ps}
\caption{The first components of the solutions to the system of algebraic equations Katsura 7.}
\label{katsura}
\end{figure}

\subsubsection{Asir-contrib-HG package to solve GKZ hypergeometric systems}

GKZ hypergeometric system is a system of linear partial differential
equations associated to $A=(a_{ij})$  
(an integer $d\times n$-matrix of rank $d$)
and $\beta \in {\bf C}^d$.
The book by Saito, Sturmfels and Takayama \cite{sst-book}
discusses algorithmic methods to construct series solutions of the GKZ
system.
The current Asir-contrib-HG package is built in order to implement
these algorithms.
What we need for the implementation are mainly
(1) Gr\"obner basis computation both in the ring of polynomials
and in the ring of differential operators,
and
(2) enumeration of all the Gr\"obner bases of toric ideals.
Asir and kan/sm1 provide functions for (1) and
{\tt TiGERS} provides a function for (2).
These components communicate each other by OpenXM-RFC 100 protocol.

Let us see an example how to construct series solution of a GKZ hypergeometric
system.
The function
{\tt dsolv\_starting\_term} finds the leading terms of series solutions
to a given direction.
\begin{enumerate}
\item Generate the GKZ hypergeometric system associated to
                    $\pmatrix{ 1&1&1&1&1 \cr
                              1&1&0&-1&0 \cr
                              0&1&1&-1&0 \cr}$
by the function {\tt sm1\_gkz}.
\begin{verbatim}
[1076] F = sm1_gkz( 
      [ [[1,1,1,1,1],
         [1,1,0,-1,0],
         [0,1,1,-1,0]], [1,0,0]]);
[[x5*dx5+x4*dx4+x3*dx3+x2*dx2+x1*dx1-1,
  -x4*dx4+x2*dx2+x1*dx1,
  -x4*dx4+x3*dx3+x2*dx2,
  -dx2*dx5+dx1*dx3,dx5^2-dx2*dx4],
 [x1,x2,x3,x4,x5]]
\end{verbatim}
\item Find the leading terms of this system to the direction
$(1,1,1,1,0)$.
\begin{verbatim}
[1077] A= dsolv_starting_term(F[0],F[1],
                            [1,1,1,1,0])$
Computing the initial ideal.
Done.
Computing a primary ideal decomposition.
Primary ideal decomposition of 
the initial Frobenius ideal
to the direction [1,1,1,1,0] is
[[[x5+2*x4+x3-1,x5+3*x4-x2-1,
   x5+2*x4+x1-1,3*x5^2+(8*x4-6)*x5-8*x4+3,
   x5^2-2*x5-8*x4^2+1,x5^3-3*x5^2+3*x5-1],
 [x5-1,x4,x3,x2,x1]]]

----------- root is [ 0 0 0 0 1 ]
----------- dual system is
[x5^2+(-3/4*x4-1/2*x3-1/4*x2-1/2*x1)*x5+1/8*x4^2
 +(1/4*x3+1/4*x1)*x4+1/4*x2*x3-1/8*x2^2+1/4*x1*x2,
 x4-2*x3+3*x2-2*x1,x5-x3+x2-x1,1]
\end{verbatim}
\item From the output, we can see that we have four possible 
leading terms.
Factoring these leading terms, we get the following simpler expressions.
The third entry
{\tt [[1,1],[x5,1],[-log(x1)+log(x2)-log(x3)+log(x5),1]], }
means that there exists a series solution which starts with
\[
x_5 (-\log x_1 + \log x_2 - \log x_3 + \log x_5) =
   x_5 \log \frac{x_2 x_5}{x_1 x_3}
\]
\begin{verbatim}
[1078] A[0];
[[ 0 0 0 0 1 ]]
[1079] map(fctr,A[1][0]);
[[[1/8,1],[x5,1],[log(x2)+log(x4)-2*log(x5),1],
   [2*log(x1)-log(x2)+2*log(x3)+log(x4)-4*log(x5)
    ,1]],
 [[1,1],[x5,1],
   [-2*log(x1)+3*log(x2)-2*log(x3)+log(x4),1]],
 [[1,1],[x5,1],
   [-log(x1)+log(x2)-log(x3)+log(x5),1]],
 [[1,1],[x5,1]]]
\end{verbatim}
\end{enumerate}








