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