Annotation of OpenXM/doc/ascm2001p/ohp.tex, Revision 1.2
1.2 ! takayama 1: %% $OpenXM: OpenXM/doc/ascm2001p/ohp.tex,v 1.1 2001/09/20 09:27:56 takayama Exp $
1.1 takayama 2: \documentclass{slides}
3: %%\documentclass[12pt]{article}
4: \usepackage{color}
5: \usepackage{epsfig}
6: \newcommand{\htmladdnormallink}[2]{#1}
7: \begin{document}
8: \noindent
9: {\color{green} Design and Implementation of OpenXM-RFC 100 and 101}
10:
11: \noindent
12: M.Maekawa, M.Noro, K.Ohara, N.Takayama, Y.Tamura \\
13: \htmladdnormallink{http://www.openxm.org}{http://www.openxm.org}
14:
15: \newpage
16: \noindent
17: {\color{red} 1. Architecture} \\
18: Integrating (existing) mathematical software systems.
19:
20: Two main applications of the project \\
21: \begin{enumerate}
22: \item Providing an environment for interactive distributed computation.
23: {\color{blue} Risa/Asir}
24: \item e-Bateman project
25: (Electronic version of higher transcendental functions of the 21st century)\\
26: 1st step: Generate and verify hypergeometric function identities.
27: \end{enumerate}
28: \newpage
29:
30: \noindent
31: OpenXM-RFC 100 \\
32: {\color{green} Control}: \\
33: \begin{enumerate}
34: \item Client-server model. Tree structure of processes.
35: \item Wrap (existing) mathematical software systems by the
36: OpenXM {\color{red} stackmachine}.
37: \item execute\_string
38: \begin{verbatim}
39: P = ox_launch(0,"ox_asir");
40: ox_execute_string(Pid," poly_factor(x^10-1);");
41: \end{verbatim}
42: \end{enumerate}
43: \newpage
44:
45: \noindent
46: {\color{green} Data}: \\
47: \begin{tabular}{|c|c|}
48: \hline
49: {\color{red} TAG}& {\color{blue} BODY} \\
50: \hline
51: \end{tabular} \\
52: Two layers: {\color{green} OX message} layer.
53: Layer of Command, CMO, and other data encodings.
54:
55: \noindent
56: {\color{blue} Example 1}: \\
57: \begin{verbatim}
58: P = ox_launch(0,"ox_sm1");
59: ox_push_cmo(P,1);
60: ox_push_cmo(P,1);
61: ox_execute_string(P,"add");
62: ox_pop_cmo(P);
63: \end{verbatim}
64:
65: {\color{green} CMO} is an encoding method based on XML like OpenMath.
66:
67: \begin{tabular}{|c|c|c|}
68: \hline
69: {\tt OX\_DATA} & {\it CMO\_ZZ} & 1 \\
70: \hline
71: \end{tabular} \\
72: \begin{tabular}{|c|c|c|}
73: \hline
74: {\tt OX\_DATA} & {\it CMO\_ZZ} & 1 \\
75: \hline
76: \end{tabular} \\
77: \begin{tabular}{|c|c|c|}
78: \hline
79: {\tt OX\_DATA} & {\it CMO\_STRING} & add \\
80: \hline
81: \end{tabular} \\
82: \begin{tabular}{|c|c|}
83: \hline
84: {\tt OX\_COMMAND} & {\it SM\_executeString} \\
85: \hline
86: \end{tabular} \\
87: \begin{tabular}{|c|c|}
88: \hline
89: {\tt OX\_COMMAND} & {\it SM\_popCMO} \\
90: \hline
91: \end{tabular} \\
92: \htmladdnormallink{http://www.openxm.org}{http://www.openxm.org}
93: \newpage
94:
95: \noindent
96: {\color{red} 2. Error Handling and Resetting} \\
97: \begin{verbatim}
98: P = ox_launch(0,"ox_asir");
99: ox_rpc(P,"fctr",1.2*x^2-1.21);
100: ox_dup_errors(P);
101: ox_pop_cmo(P);
102: \end{verbatim}
103: {\color{green}
104: \verb# [error([8,fctr: invalid argument])] #
105: }\\
106: {\color{blue}
107: Servers say nothing unless is is asked.
108: }
109: \newpage
110:
111: \begin{verbatim}
112: P=ox_launch(0,"ox_asir");
113: ox_rpc(P,"fctr",x^1000-y^1000);
114: ox_reset(P);
115: \end{verbatim}
116:
117: \setlength{\unitlength}{1cm}
118: \begin{picture}(20,7)(0,0)
119: \thicklines
120: \put(5,1.7){\line(1,0){7}}
121: \put(5,4.7){\line(3,-1){7}}
122: \put(12,1){\framebox(5,2.5){client}}
123: \put(1,4){\framebox(4,1.5){\color{blue} controller}}
124: \put(1,1){\framebox(4,1.5){\color{red} engine}}
125: \thinlines
126: \put(0,0.3){\framebox(6,6){}}
127: \put(1.5,-0.7){server}
128: \end{picture}
129: \newpage
130:
131: \noindent{\color{red} 4. Easy to try and evaluate distributed algorithms} \\
132:
133: \noindent
134: Theorem (Cantor-Zassenhaus) \\
135: Let $f_1$ and $f_2$ be degree $d$ polynomials in $F_q[x]$.
136: For a random degree $2d-1$ polynomial $g \in F_q[x]$,
137: the chance of
138: $$ GCD(g^{(q^d-1)/2}-1,f_1 f_2) = f_1 \,\mbox{or}\, f_2 $$
139: is
140: $$ \frac{1}{2}-\frac{1}{(2q)^d}. $$
141:
142: \begin{picture}(20,14)(0,0)
143: \put(7,12){\framebox(4,1.5){client}}
144: \put(2,6){\framebox(4,1.5){server}}
145: \put(7,6){\framebox(4,1.5){server}}
146: \put(12,6){\framebox(4,1.5){server}}
147: \put(0,0){\framebox(4,1.5){server}}
148: \put(5,0){\framebox(4,1.5){server}}
149: \put(13.5,0){\framebox(4,1.5){server}}
150:
151: \put(9,12){\vector(-1,-1){4.3}}
152: \put(9,12){\vector(0,-1){4.3}}
153: \put(9,12){\vector(1,-1){4.3}}
154: \put(4,6){\vector(-1,-2){2.2}}
155: \put(4,6){\vector(1,-2){2.2}}
156: \put(14,6){\vector(1,-3){1.4}}
157: \end{picture}
158:
159: \begin{verbatim}
160: /* factorization of F */
161: /* E = degree of irreducible factors in F */
162: def c_z(F,E,Level)
163: {
164: V = var(F); N = deg(F,V);
165: if ( N == E ) return [F];
166: M = field_order_ff(); K = idiv(N,E); L = [F];
167: while ( 1 ) {
168: /* gererate a random polynomial */
169: W = monic_randpoly_ff(2*E,V);
170: /* compute a power of the random polynomial */
171: T = generic_pwrmod_ff(W,F,idiv(M^E-1,2));
172: if ( !(W = T-1) ) continue;
173: /* G = GCD(F,W^((M^E-1)/2)) mod F) */
174: G = ugcd(F,W);
175: if ( deg(G,V) && deg(G,V) < N ) {
176: /* G is a non-trivial factor of F */
177: if ( Level >= LevelMax ) {
178: /* everything is done on this server */
179: L1 = c_z(G,E,Level+1);
180: L2 = c_z(sdiv(F,G),E,Level+1);
181: } else {
182: /* launch a server if necessary */
183: if ( Proc1 < 0 ) Proc1 = ox_launch();
184: /* send a request with Level = Level+1 */
185: /* ox_c_z is a wrapper of c_z on the server */
186: ox_cmo_rpc(Proc1,"ox_c_z",lmptop(G),E,
187: setmod_ff(),Level+1);
188: /* the rest is done on this server */
189: L2 = c_z(sdiv(F,G),E,Level+1);
190: L1 = map(simp_ff,ox_pop_cmo(Proc1));
191: }
192: return append(L1,L2);
193: }
194: }
195: }
196: \end{verbatim}
197: \newpage
198: \noindent
199: {\color{red} 5. e-Bateman project} \\
200: First Step: \\
201: Gauss Hypergeometric function:
202: $$ {\color{blue} F(a,b,c;x)} = \sum_{n=1}^\infty
203: \frac{(a)_n (b)_n}{(1)_n}{(c)_n} x^n
204: $$
205: where
206: $$ (a)_n = a(a+1) \cdots (a+n-1). $$
1.2 ! takayama 207: $$ \log (1+x) = x F(1,1,2;-x) $$
! 208: $$ \arcsin x = x F(1/2,1/2,3/2;x^2) $$
1.1 takayama 209:
210: \noindent
211: Appell's $F_1$:
212: $$ {\color{blue} F_1(a,b,b',c;x,y)} = \sum_{m,n=1}^\infty
213: \frac{(a)_{m+n} (b)_m (b')_n}{(c)_{m+n}(1)_m (1)_n} x^m y^n.
214: $$
215: \newpage
216: Mathematical formula book, e.g.,
217: Erdelyi: {\color{green} Higher Transcendental Functions} \\
218: {\color{blue} Formula (type A)}\\
219: The solution space of the ordinary differential equation
220: $$ x(1-x) \frac{d^2f}{dx^2} -\left( c-(a+b+1)x \right) \frac{df}{dx} - a b f = 0$$
221: is spanned by
222: $$ F(a,b,c;x) , \ x^{1-c} F(a,b,c;x) $$
223: when $c \not\in {\bf Z}$. \\
224: {\color{blue} Formula (type B)}\\
225: \begin{eqnarray*}
226: &\ & F(a_1, a_2, b_2;z) \, F(-a_1,-a_2,2-b_2;z) \\
227: &+& \frac{z}{e_2}\, F'(a_1, a_2, b_2;z) \, F(-a_1,-a_2,2-b_2;z) \\
228: &-& \frac{z}{e_2}\, F(a_1, a_2, b_2;z) \, F'(-a_1,-a_2,2-b_2;z) \\
229: &-& \frac{a_1+a_2-e_2}{a_1 a_2 e_2}z^2\,
230: F'(a_1, a_2, b_2;z)\,F'(-a_1,-a_2,2-b_2;z) \\
231: &=& 1
232: \end{eqnarray*}
233: where $e_2 = b_2-1$ and $a_1, a_2, e_2, e_2-a_2 \not\in {\bf Z}$. \\
234: (generalization of $\sin^2 x + \cos^2 x =1$.)
235:
236: \noindent
237: Project in progress: \\
238: We are trying to generate or verify type A formulas and type B formulas
239: for {\color{blue} GKZ hypergeometric systems}.
240:
241: \begin{tabular}{|c|c|c|}
242: \hline
243: & type A & type B \\ \hline
244: Algorithm & {\color{red} OK} (SST book) & in progress \\ \hline
245: Implementation & partially done & NO \\ \hline
246: \end{tabular}
247:
248: \noindent
249: Our ox servers
250: {\tt ox\_asir}, {\tt ox\_sm1}, {\tt ox\_tigers}, {\tt ox\_gnuplot},
1.2 ! takayama 251: {\tt ox\_mathematica}, {\tt OMproxy} (JavaClasses), {\tt ox\_m2}
1.1 takayama 252: are used to generate, verify and present formulas of type A
253: for GKZ hypergeometric systems.
1.2 ! takayama 254:
! 255: \newpage
! 256: \noindent
! 257: {\color{green} Competitive Gr\"obner Basis Computation}
! 258: \begin{verbatim}
! 259: extern Proc1,Proc2$
! 260: Proc1 = -1$ Proc2 = -1$
! 261: /* G:set of polys; V:list of variables */
! 262: /* Mod: the Ground field GF(Mod); O:type of order */
! 263: def dgr(G,V,Mod,O)
! 264: {
! 265: /* invoke servers if necessary */
! 266: if ( Proc1 == -1 ) Proc1 = ox_launch();
! 267: if ( Proc2 == -1 ) Proc2 = ox_launch();
! 268: P = [Proc1,Proc2];
! 269: map(ox_reset,P); /* reset servers */
! 270: /* P0 executes Buchberger algorithm over GF(Mod) */
! 271: ox_cmo_rpc(P[0],"dp_gr_mod_main",G,V,0,Mod,O);
! 272: /* P1 executes F4 algorithm over GF(Mod) */
! 273: ox_cmo_rpc(P[1],"dp_f4_mod_main",G,V,Mod,O);
! 274: map(ox_push_cmd,P,262); /* 262 = OX_popCMO */
! 275: F = ox_select(P); /* wait for data */
! 276: /* F[0] is a server's id which is ready */
! 277: R = ox_get(F[0]);
! 278: if ( F[0] == P[0] ) { Win = "Buchberger"; Lose = P[1]; }
! 279: else { Win = "F4"; Lose = P[0]; }
! 280: ox_reset(Lose); /* reset the loser */
! 281: return [Win,R];
! 282: }
! 283: \end{verbatim}
! 284: \newpage
1.1 takayama 285:
286: \end{document}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>