% $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}