% $OpenXM: OpenXM/doc/Papers/rims-2002-12-12-ja.tex,v 1.5 2003/03/13 07:44:12 takayama Exp $ % $Id: rims-k-2003-12.tex,v 1.3 2003/03/13 07:37:47 taka Exp $ %% misc-2002/12/rims-2002-12-12.tex --> rims-k-2002-12-12.tex \documentclass{jarticle} \usepackage{rims02} \title{\bf OpenXM 1.2.2 の概要} \author{ OpenXM 開発グループ \ename{OpenXM committers} } \date{2002年12月12日} %% Private macros \newenvironment{FRAME}{\begin{trivlist}\item[] \hrule \hbox to \linewidth\bgroup \advance\linewidth by -30pt \hsize=\linewidth \vrule\hfill \vbox\bgroup \vskip15pt \def\thempfootnote{\arabic{mpfootnote}} \begin{minipage}{\linewidth}}{% \end{minipage}\vskip15pt \egroup\hfill\vrule \egroup\hrule \end{trivlist}} \begin{document} \maketitle OpenXM プロジェクトでは 数学での並列計算, 数学ソフトウエアの統合化 または Conglomerate 化\cite{solomon}, 数学的知識のマネージメント (Mathematical Knowledge Management) などの諸問題を考察するとともに, 実際に数学の研究や数学の応用に使えるパッケージの開発をおこなっている. パッケージは改訂を 4 回おこなった. \begin{enumerate} \item OpenXM 1.1.1 (January 24, 2000): 最初の実験版. \item OpenXM 1.1.2 (March 20, 2000): とりあえず使える版. \item OpenXM 1.1.3 (September 26, 2000): 1.1 系の最終版. OpenXM RFC 100 形式 のプロセス木. 1077 個の数学関数を提供. 提供しているサーバは {\tt ox\_asir}, {\tt ox\_sm1}, {\tt ox\_phc}, {\tt ox\_gnuplot}, {\tt ox\_m2}, {\tt ox\_tigers}, {\tt ox\_math}(ematica), {\tt OMproxy} \cite{rims-1199}. \item OpenXM 1.2.1 (March 2, 2002): Cygwin (Windows) への対応開始. マニュアル自動生成(gentexi)など. \end{enumerate} 1.2 系列では新規サーバの導入や新プロトコルのおおがかりな導入は試みて おらず, OX-RFC (OpenXM-RFC) 100, 101 プロトコルをより安定して動作させるための 改良, さまざまなプラットホームへの対応, 公式集プロジェクトなどにみられるように OpenXM の応用に重点をおいている. ここではちかじか予定している 1.2.2 系での新しい機能と設計における諸問題点を議論したい. \section{ oxd スーパーサーバ } OpenXM では 1.2 系列より Cygwin を用いて Windows にも部分的に対応してきた. また 1.1 系列から OpenXM 対応の Java クラスを提供してきた. これらの開発で経験したことは, OX-RFC 100 による \underline{ サーバの起動が煩雑 } ということである. とくに C と unix の枠組をはずれると OpenXM サーバをクライアントが起動 するのがとても面倒になる. さらにクライアントのコードは OS 毎に分岐させる必要が生じる. この煩雑さを避ける 解決策としては以下のような方法があるであろう. \begin{enumerate} \item Corba などの Agent の仕組みを用いる. \item ssh と oxc を用いる OpenXM RFC 101 (小原) を用いる. \end{enumerate} ``実際に使えるパッケージを配布する'' という立場では, Corba 等の実験的インフラストラクチャを用いるのはなるべく避けたい. また効率重視のパッケージを作成したいときの自由度がない. OpenXM RFC 101 を用いるのは良い方法であるが, 実際には メインのクライアントである asir が OpenXM RFC 100 にしか対応していない し, 100 対応のみのサーバも多い. したがって, RFC 100, 101 両方に対応しかつ, OpenXM サーバを容易に起動 できるようなスーパサーバの開発を試みた. これが oxd である (ソースは {\tt OpenXM/src/kxx/oxd.c }). %%Note: 2002, 10/20. \noindent 利用例: %%%%%%%%%% mini page template %%%%%%%%%%%% \begin{flushleft} \begin{minipage}[t]{5cm} \begin{FRAME} \noindent サーバ側のログ: {\tiny \begin{verbatim} bash-2.03$ cd OpenXM/src/kxx bash-2.03$ ./oxd Hello from open. serverName is localhost and portnumber is 8089 Done the initialization. port =8089 デフォルト ポート 8089 で待つ. Waiting a connection \end{verbatim} } \end{FRAME} \end{minipage} \quad % \begin{minipage}[t]{5cm} \begin{FRAME} \noindent クライアント側のログ: {\tiny \begin{verbatim} bash-2.03$ cd OpenXM/src/OpenMath bash-2.03$ java testclientr たとえば java で接続してみる. \end{verbatim} } \end{FRAME} \end{minipage} \\ \end{flushleft} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \noindent oxd との通信コマンドは以下のように XML 形式である. トップノードは \verb@ @ 〜 \verb@ @ である. %%%%%%%%%% mini page template %%%%%%%%%%%% \begin{flushleft} \begin{minipage}[t]{5cm} \begin{FRAME} \noindent サーバ側: {\tiny \begin{verbatim} ... Serial=0 Trying to accept from localhost... len= 16 Accepted. Connected. 8089 にクライアントがつながった. Waiting a connection... Serial=1 Trying to accept from localhost... Serial=1: command= クライントより送られて来たコマンドは Serial=1: command= こちらより送付した challenge を正しく処理 できたので, 認証が完了. Serial=1: command= ox -ox ox_asir -reverse -control 3167 -data 3168 -finish クライアントより ox サーバの起動コマンドを 受け取る. エンジン名はフルパスでは与えない. Serial=1 : Executing command =/home/taka/OpenXM/bin/openxm ox -ox ox_asir -reverse -control 3167 -data 3168 -finish The server ox_asir was not found. Trying to find it under OpenXM/bin Starting OX server : /home/taka/OpenXM/bin/ox_asir resultCode=0 Serial=1: command= oxd への login は終了. Waiting the termination of the child process (ox server). 1: The child process is terminated. \end{verbatim} } \end{FRAME} \end{minipage} \quad % \begin{minipage}[t]{5cm} \begin{FRAME} \noindent クライアント側: {\tiny \begin{verbatim} 認証方法は file を選択. oxd より ファイル /home/taka/.oxd10793 に touch できたら認証するよと連絡をうける. ? touch したので を送る. Listenning... ox -ox ox_asir -reverse -control 3167 -data 3168 -finish oxd へ OpenXM サーバの起動コマンドを送る. oxd より起動成功のメッセージ をもらう. ? \end{verbatim} } \end{FRAME} Java 側の接続プログラムは簡単で, localhost の oxd で起動するなら \begin{verbatim} asir = new OpenXM("ox_asir"); \end{verbatim} と OX サーバ名を引数として OpenXM コンストラクタ を呼べばよい. %%Note: sm1 のクライアントプログラムは oxd.sm1 の asirconnectr. \end{minipage} \\ \end{flushleft} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%% mini page template %%%%%%%%%%%% \begin{flushleft} \begin{minipage}[t]{5cm} \begin{FRAME} エンジン側の出力: {\tiny \begin{verbatim} controlByteOrder=0 OpenXM/Risa/Asir-Contrib(20020922), Copyright 2000-2002, OpenXM.org Loading ~/.asirrc I'm an ox_asir, Version 20020802. #0 Got OX_COMMAND SM_mathcap 以下略. \end{verbatim} } \end{FRAME} \end{minipage} \quad % \begin{minipage}[t]{5cm} \begin{FRAME} \noindent クライアント側のエンジンとの通信状況: {\tiny \begin{verbatim} Accepted the control port. Accepted the data port. start CMO> (CMO_MATHCAP,(CMO_LIST,3,(CMO_LIST,2, (CMO_INT32,199901160), (CMO_STRING,7,ox_asir)), (CMO_LIST,18,(CMO_INT32,276), 以下略. \end{verbatim} } \end{FRAME} \end{minipage} \\ \end{flushleft} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% このように oxd をもちいることにより, OS や 言語による起動法の 違いを吸収可能である. さらに oxd の実装に agent の仕組みを組み込むことも 可能である. \rightline{開発: 高山} \section{いつでもどこでも ``因数分解$\heartsuit$'' } いつでもどこでも ``因数分解$\heartsuit$'' は, OpenXM のスローガンである. この章では, PDA や Web への対応を紹介する. \subsection{ ザウルス 対応 } シャープのザウルス SL-A300 で Risa/Asir が不完全ながら動作している. SL-A300 ではEmbedix という Linux を搭載している. GC と整数計算のためのマシン語プログラムの部分の移植が問題であったが, GC についてはすでに開発グループ (H-J. Boehm, A. J. Demers) が Xscale CPU に対応していた. 整数計算についてはポータブル整数計算 コード \\ {\tt OpenXM\_contrib2/asir2000/asm/asmalpha.c} を用いた. \rightline{開発: 藤本} \subsection{ OpenXM Online } OpenXM では HTTP プロトコルの部分集合 (GET および POST の一部) を実装し, Webブラウザを OpenXM エンジンのフロントエンドとして利用したり, OpenXM エンジンに対する Remote Procedure Call をおこなうために利用している. この応用として, 現在 Asir Online を \\ {\tt http://fe.math.kobe-u.ac.jp:8090} で実験的に運用している. HTTP を理解するサーバ (httpd) は, kan/sm1 のポストスクリプト言語 で実装されている ({\tt OpenXM/src/kan96xx/Doc/httpd*.sm1}). この実験運用で問題となったのは, \underline{中断の伝播とリソースの制限} の問題である. OpenXM RFC 100 ではエンジンの計算を中断するロバストな プロトコルを定めており, これが OpenXM RFC 100 の特徴の一つである \cite{ascm2001}, \cite{openxm-rfc100}. しかしながら, エンジン間で中断を伝播させる仕組みについては, 標準をなにも決めていない. Web で計算をサービスするにはこれらの仕組みは不可欠であり, 中断を伝播する仕組みとリソースの制限を実験的に実装した. 中断に関しては, 中断したときに実行される関数を登録する仕組みが OpenXM サーバやクランアントにある. 昔の Basic 風なら {\tt On stop goto ...}, 最近の Java 風なら {\tt try \{ ... \} catch \{ ... \} } みたいなものであるが, asir では {\tt register\_handler} 関数, sm1 では {\tt ctrlC-hook } 関数で登録する. この関数の中で次の上意下達の処理をおこない中断を伝播させる. \begin{FRAME} \noindent 上意下達の中断処理: \begin{enumerate} \item 自分の子供プロセスをすべてリストする (たとえば {\tt ox\_get\_serverinfo() }). \item 子供プロセスに順番に OpenXM-RFC 100 の中断メッセージを送る. \end{enumerate} \end{FRAME} 上意下達法で中断はきちんと動作するが, この方法の欠点は中断が逐次的におこなわれるため, 多数のサーバが含まれる 木構造の場合は動作が遅いことである. 今後必要に応じて中断メッセージを同報する方法を新しいプロトコルとして考察すべきであろう. リソース制限に関しても類似の上意下達方式でリソース量を保持している大域変数 の値を伝達することにより OpenXM-RFC 100 の枠内で コマンド毎のリソース制限が可能である. しかしながら shared memory の仕組みがあればより簡単であろう. \rightline{開発: 高山} \section{OpenXM のフロントエンド} Infty Editor は九州大学の鈴木らが中心となり開発している 手書き数式の入力機能ももつエディターである. このエディターから OpenXM サーバをよびだす機能が 藤本により設計実装された. 詳しい報告は \cite{fujimoto}. \rightline{開発: 藤本} \section{ OpenXM/Risa/Asir/Contrib } OpenXM/Risa/Asir (OpenXM 版 Risa/Asir) は OpenXM パッケージの メインのクライアントである. OpenXM/Risa/Asir/Contrib プロジェクトでは, asir 言語でかかれた各種数学関数, ユーティリィティ関数および OpenXM サーバとのインタフェース関数を開発している. 中期目標として ``超幾何関数に関連する計算はなんでもできるように'' を 掲げている. 超幾何関数に関連する計算は, 計算代数, 多面体幾何, 数値解析, ビジュアリゼーションなどいろいろな分野に関係している. 現在の関数一覧は以下のとおり. {\small \begin{verbatim} base_cancel matrix_list_to_matrix print_tex_form base_choose matrix_matrix_to_list print_tfb_form base_flatten matrix_rank print_xdvi_form base_intersection matrix_solve_linear print_xv_form base_memberq matrix_submatrix sm1 base_permutation matrix_transpose sm1_ahg base_position number_abs sm1_appell1 base_prune number_ceiling sm1_appell4 base_replace number_floor sm1_auto_reduce base_set_minus number_imaginary_part sm1_bfunction base_set_union number_is_integer sm1_deRham base_subsetq number_real_part sm1_distraction base_subsets_of_size om_start sm1_gb dsolv_dual om_xml sm1_generalized_bfunction dsolv_starting_term om_xml_to_cmo sm1_genericAnn glib_line ox_check_errors2 sm1_gkz glib_open ox_sm1_forAsir sm1_hilbert glib_plot phc sm1_mul glib_print phc_start sm1_push_int0 glib_putpixel plucker_relation sm1_rank glib_tops poly_degree sm1_reduction glib_window poly_elimination_ideal sm1_restriction gnuplot poly_factor sm1_saturation gnuplot_heat poly_gcd sm1_slope gnuplot_output poly_grobner_basis sm1_start gnuplot_plot_dots poly_hilbert_polynomial sm1_syz gnuplot_plot_function poly_initial sm1_wTensor0 gnuplot_start poly_initial_coefficients sm1_xml_tree_to_prefix_string hilbert_polynomial poly_initial_term tigers m_rtostr poly_solve_linear util_filter m_start print_dvi_form util_find_and_replace m_tree_to_string print_em util_find_substr matrix_clone print_gif_form util_index matrix_det print_input_form util_load_file_as_a_string matrix_diagonal_matrix print_open_math_tfb_form util_part matrix_eigenavalues print_open_math_xml_form util_read_file_as_a_string matrix_identity_matrix print_output util_remove_cr matrix_inner_product print_ox_rfc100_xml_form util_v matrix_inverse print_png_form util_write_string_to_a_file matrix_kernel print_terminal_form \end{verbatim} } 各関数のマニュアルは \\ {\small \tt http://www.math.kobe-u.ac.jp/OpenXM/1.2.2/doc/asir-contrib/html-en/cman-en\_toc.html} \rightline{開発: 野呂, 中山, 高山} \section{サーバの新しい数学関数} 1.2 系ではまだ新しいサーバの接続作業をおこなっていない. 1.3 系の機能になると思うが, 多面体の幾何 (polymake, cdd), 3D グラフィックス関連のサーバ (3D Java, JavaView, OpenGL をもちいた自前のサーバ) の接続を予定している. \noindent {\tt ox\_asir} には次の新しい数学的機能が加わった(野呂, 横山). \begin{enumerate} \item 有限体での因数分解 ({\tt OpenXM\_contrib2/asir2000/engine/Fgfs.c}). \item 有限体での準素イデアル分解 \end{enumerate} \noindent {\tt ox\_sm1} には次の新しい数学的機能が加わった(高山). \begin{enumerate} \item Granger-Oaku の Tangent Cone アルゴリズムの実装のため 解析的微分作用素環における同次化を実装 ({ring\_of\_differential\_operators, weightHomogenization}, {\tt OpenXM/src/kan96xx/Kan/poly3.c}). \item M.J.Ucha の新しい b-関数アルゴリズムの実装のため, ある微分差分作用素環を実装 \\ ({\tt ring\_of\_differential\_difference\_operators}). \end{enumerate} \section{ fb --- 超幾何関数デジタル公式集と OpenMath } OpenXM ではコードネーム fb で 超幾何関数のデジタル公式集を研究している. fb は 1.2 系の目玉といえるモジュールである. 数学公式集の研究はたとえば日本では, 1980 年代後半の佐々木らの研究 が先駆的である \cite{sasaki}. この研究では数式の検索法, 数式の公式集による書き換え, およびそれに適したデータ構造が研究された. さらに岩波公式集をもとに実際のデジタル公式集を作成したが, 著作権の問題があり, 公開されていない. この流れをくみ, さらに OpenMath の XML で公式を表現し検索する研究が 森永, 村上, 野田 \cite{noda-murakami} により最近進展している. OpenXM の fb プロジェクトでは, 上の流れとは異なり, 検索などの問題を考える前の段階の問題 ``いかに数学公式を計算機上に蓄積するか?'' という問題意識のもと, 次のような機能をもつデジタル公式集が欲しいという観点から 設計実装をおこなっている. \begin{enumerate} %% \item Web ベースの Interactive な機能の提供. \item さまざまな数学概念に柔軟に対応できる公式集. \item 公式の数学的意味や参考文献などの情報を機械可読形式で 保持できる公式集. \item XML の機能をフルに生かした公式集. \item 著作権の問題がない公式集. \item 入力ミスの発見を補助する機能など. \end{enumerate} 以下にわれわれの設計と実装の概要を記す. \begin{enumerate} \item OpenMath (www.openmath.org) はさまざまな数学概念に柔軟に対応できる仕組みである. OpenMath を基礎に公式集を記述する. {\tt functions.wolfram.com} では Mathematica 形式で格納された 多数の数学公式が提供されているが, OpenMath を利用ことにより, Mathematica の制約をうけない. %\item A.Cohen らの Interactive Math Book のタグ(Eindhoven tag library) % を用いて, Interactive な機能を記述する \cite{cohen}. % Interactive 機能は公式集にとり重要で, % たとえば公式を参照するときに変数の置き換えは便利である. \item OpenMath オブジェクトを表現するための tfb という言語を開発した. OpenMath プロジェクトでは OpenMath オブジェクト を入力するための RIACA CD Editor(オランダ) や STAR/MathWriter (Stilo Technology) %%Pic: coq-starts.jpg などのシステムが研究されている. たとえば STAR/MathWriter では semantic tex という OpenMath XML とは ある意味でかけ離れた言語をもちいて数学オブジェクトを入力する. この tfb は OpenMath オブジェクトとの 1対1 対応がすぐわかる形式であり, OpenMath シンボルの階層構造の美しさがそのまま見える設計になっているのを特徴とする. \item DocBook \cite{docbook} および OpenMath \cite{openmath} の XML タグを拡張し, formula を トップノードとする独自のタグをいくつか定義した. これらをまとめて fb-formula document タグセットとよんでいる. 超幾何関数に関連する OpenMath Content Dictionary が存在しないため, 自分達で CD hypergeo0, hypergeo1, hypergeo2, hypergeon0, hypergeon1, hypergeon2, weylalgebra1 を開発した (OpenMath CD の contrib を参照 \cite{openmath}). これにより, 公式の数学的意味や参考文献などの情報を機械可読形式で 保持できるようになった. なお, A.Cohen らの Interactive Math Book のプロジェクトも DocBook と OpenMath のタグを拡張する形で 研究している \cite{cohen}. \item OpenMath の XML と Content Dictionary は さまざまな数学概念に柔軟に対応できる仕組みである. たとえば前記の 超幾何関数に関連する Content Dictionary をもとに高山は 1 次元の積分路を表現する Content Dictionary intpath1 を定義し, この Content Dictionary は任意の 1 次元の積分路を 表現できることを twisted (co)homology の理論を用いて証明した. \item fb では DOM や XSL など XML の機能をフルに生かし 公式集を実装する. XML の機能が デジタル公式集にも 有効であることを確認した. 図 \ref{figure:fbcom} の 各コマンドは主に Java で実装されている. %%Comment: でも数式の括弧の省略の処理は面倒. \item fb では 19世紀, 20 世紀の超幾何関数のオリジナル論文をもとに tfb という言語を もちいて入力をおこなっており, 著作権の問題がない. \item 公式の入力にはミスがつきものである. fb では, 数値計算をもちいて明らかな誤りを検出する仕組みを提供している. この仕組みでは OpenXM 版の mathematica および asir サーバ および前述の OpenXM online を用いている. この checker の実装のために退化接続公式を用いた 新しい超幾何関数の数値計算アルゴリズムも 考案された. \end{enumerate} \begin{figure}[tb] \begin{tabular}{|l|l|} \hline fbOM-DocBook document & DocBook タグ(Top), OpenMath タグ, MathBook タグ, formula タグ(独自) \\ \hline fb-DocBook document & DocBook タグ(Top), tfb タグ(独自) , MathBook タグ, formula タグ(独自), \\ \hline fbOM-formula document & formula タグ(Top, 独自), OpenMath タグ, DocBook タグ (一部) \\ \hline fb-formula document & formula タグ(Top, 独自), tfb タグ(独自), DocBook タグ (一部) \\ \hline \end{tabular} \caption{ fb XML 文書のバリエーション} \end{figure} \begin{figure}[tb] \begin{tabular}{|l|l|} \hline {\tt tfb2fb.sh} & fb-formula 文書 を fbOM-formula 文書へ変換 \\ \hline & fb-DocBook 文書 を fbOM-DocBook 文書へ変換 \\ \hline {\tt tfb2ocd.sh} & (互換性のため残してある) \\ \hline {\tt fb2tex.sh} & fbOM-DocBook 文書より LaTeX への変換 \\ \hline {\tt ocd2tex.sh} & (互換性のため残してある) \\ \hline {\tt formula2tex.sh} & fbOM-formula XML 文書より LaTeX への変換 \\ \hline {\tt asir2tfb.sh} & asir 形式から tfb 形式への変換 \\ \hline {\tt tfb2asir-check*.sh} & fb-formula 文書 より asir checker へ.\\ \hline {\tt tfb2math-check.sh} & fb-formula XML 文書 より Mathematica checker へ.\\ \hline \end{tabular} \caption{ fb の変換コマンド(一部)} \label{figure:fbcom} \end{figure} 次は fb-formula 文書の例 ({\tt fb/formula/h21-0060.tfb}). {\small \begin{verbatim} 2 * arith1.root(nums1.pi,2) * hypergeo0.gamma(a + b + (1 / 2)) / hypergeo0.gamma(a + (1 / 2)) / hypergeo0.gamma(b + (1 / 2)) * hypergeo1.hypergeometric2F1(a,b,1 / 2,x) = (hypergeo1.hypergeometric2F1(2 * a, 2 * b, a + b + (1 / 2), 1 + arith1.root(x,2) / 2) + hypergeo1.hypergeometric2F1(2 * a, 2 * b, a + b + (1 / 2), 1 - arith1.root(x,2) / 2)); Yasushi Tamura Quadratic transformation of independent variable @@ /. {a->1/2,b->3/5,c->-2/11,x->0.2} \end{verbatim} } %% Prog: tfb-addtex ../../formula/h21-0060.tfb %% tfb2fb.sh <../../formula/h21-0060.tfb-auto-tex.tfb | formula2tex.sh >t.tex %% platex t この公式を TeX への変換ツールでプレゼンテーション形式に変換したものは \begin{center}$ {\frac{2\,{\sqrt{\pi }}\,\Gamma ({\frac{1}{2}} + a + b)\,{} _2 F_1 (a,b,{\frac{1}{2}},x)}{\Gamma ({\frac{1}{2}} + a)\,\Gamma ({\frac{1}{2}} + b)}} = {}_2 F_1 (2\,a,2\,b,{\frac{1}{2}} + a + b,{\frac{1 - {\sqrt{x}}}{2}}) + {}_2 F_1 (2\,a,2\,b,{\frac{1}{2}} + a + b,{\frac{1 + {\sqrt{x}}}{2}}) $\end{center} この公式は 1881 年の E.Goursat の論文に記載されている 超幾何関数の独立変数の変換公式である. \rightline{開発チーフ: 田村} \rightline{開発: 田村, 高山} \rightline{公式編集メンバー:田村, 高山,中山,藤堂,長谷川} \section{ OpenXM 関連の出版物 } OpenXM 1.2 以降に出版された資料のリスト: \begin{enumerate} \item \cite{noro} では Risa/Asir の内部構造の概要や Risa/Asir の OpenXM への 対応状況が解説してある. \item \cite{asir-book} は日本語による Risa/Asir プログラミングの入門書である. OpenXM を用いた簡単な分散計算への入門の章がある. \item OpenXM の中断機能, 競争計算, などについての短いビデオ. \end{enumerate} \bigbreak 以上 OpenXM 1.2.2 の新機能を概説した. 詳しくは {\tt http://www.openxm.org} の CVS-web を用いてソースコード の変更履歴 およびコミット時のコメントを参照されたい. \begin{thebibliography}{99} \bibitem{cohen} A.Cohen, H.Cuypers, E.R.Barreiro, H. Sterk, Interactive Mathematical Documents on the Web, edited by M.Joswig and N.Takayama: {\it Algebra, Geometry and Software Systems}, Springer, 289--308, 2003 (to appear). % \bibitem{docbook} {\tt http://www.docbook.org} % \bibitem{fujimoto} M.Fujimoto, M.Suzuki, A Handwriting Interface to Various Computer Algebra Systems via OpenXM Framework, Abstracts of 8th International Conference on Applications of Computer Algebra, 2002, Volos, Greece. 103--104. % \bibitem{openmath} {\tt http://www.openmath.org} % \bibitem{openxm} {\tt http://www.openxm.org} % \bibitem{rims-1199} 小原, 高山, 田村, 野呂, 前川, OpenXM 1.1.3 の概要, 数理研講究録 1199 (2001 年 4 月), 179--191. % \bibitem{ascm2001} M.Maekawa, M.Noro, N.Takayama, Y.Tamura, K.Ohara, The Design and Implementation of OpenXM-RFC 100 and 101. Computer Mathematics, Proceedings of the Fifth Asian Symposium (ASCM 2001), edited by Shirayanagi and Yokoyama, World Scientific, 102--111, 2001. % \bibitem{noda-murakami} 森永, 村上, 数学公式データベースと G 関数, 数式処理 {\bf 9} No.2 (2002), 20--31. % \bibitem{noro} M.Noro Computer Algebra System: Risa/Asir, edited by M.Joswig and N.Takayama: {\it Algebra, Geometry and Software Systems}, Springer, 147--162, 2003 (to appear). % \bibitem{openxm-rfc100} M.Noro, N.Takayama, Design and Implementation of OpenXM Client-Server Model and Common Mathematical Object Format (OpenXM-RFC 100). 1997, 2000. \\ {\tt http://www.math.sci.kobe-u.ac.jp/OpenXM/OpenXM-RFC.html} or {\tt http://www.openxm.org} % \bibitem{asir-book} 野呂, 高山, Risa/Asir ドリル, {\tt http://www.math.kobe-u.ac.jp/Asir} %%(配布価格 1,000 円 (送料別) or 送料のみ--- アンケートに協力の場合) % \bibitem{sasaki} T.Sasaki, Y.Masunaga, Y.Saigusa, A.Abe, F.Motoyoshi, M.Sasaki, Formula Database in Computer Algebra System GAL, 数理研講究録 663, 群と微分方程式の数式処理システムの研究 (1988), 3--22. % \bibitem{solomon} A.Solomon, Distributed Computing for Conglomerate Mathematical Systems, edited by M.Joswig and N.Takayama: {\it Algebra, Geometry and Software Systems}, Springer, 309--326, 2003 (to appear). \end{thebibliography} \end{document}