=================================================================== RCS file: /home/cvs/OpenXM/doc/Papers/rims-2002-12-12-ja.tex,v retrieving revision 1.1 retrieving revision 1.5 diff -u -p -r1.1 -r1.5 --- OpenXM/doc/Papers/rims-2002-12-12-ja.tex 2002/12/02 02:17:50 1.1 +++ OpenXM/doc/Papers/rims-2002-12-12-ja.tex 2003/03/13 07:44:12 1.5 @@ -1,11 +1,10 @@ -% $OpenXM$ -% It was under misc-2002/12, -%Id: rims-2003-12.tex,v 1.10 2002/12/02 02:14:55 taka Exp $ -% Some .gif files are under misc-2002/12. -%% OpenXM/doc/Papers へ移動. rims-2002-12-12.tex +% $OpenXM: OpenXM/doc/Papers/rims-2002-12-12-ja.tex,v 1.4 2002/12/07 03:27:00 takayama Exp $ +% $Id: rims-2002-12-12-ja.tex,v 1.5 2003/03/13 07:44:12 takayama 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 開発グループ } +\author{ OpenXM 開発グループ \ename{OpenXM committers} } \date{2002年12月12日} %% Private macros @@ -47,6 +46,10 @@ Conglomerate 化\cite{solomon}, \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 系での新しい機能と設計における諸問題点を議論したい. @@ -54,7 +57,7 @@ Conglomerate 化\cite{solomon}, OpenXM では 1.2 系列より Cygwin を用いて Windows にも部分的に対応してきた. また 1.1 系列から OpenXM 対応の Java クラスを提供してきた. -これらの開発で経験したことは, +これらの開発で経験したことは, OX-RFC 100 による \underline{ サーバの起動が煩雑 } ということである. とくに C と unix の枠組をはずれると OpenXM サーバをクライアントが起動 @@ -339,62 +342,46 @@ OpenXM/Risa/Asir/Contrib プロジェクトでは, asir 現在の関数一覧は以下のとおり. {\small \begin{verbatim} -base_cancel poly_factor -base_choose poly_gcd -base_flatten poly_grobner_basis -base_intersection poly_hilbert_polynomial -base_memberq poly_initial -base_permutation poly_initial_coefficients -base_position poly_initial_term -base_prune poly_solve_linear -base_replace print_dvi_form -base_set_minus print_em -base_set_union print_gif_form -base_subsetq print_input_form -base_subsets_of_size print_open_math_tfb_form -dsolv_dual print_open_math_xml_form -dsolv_starting_term print_output -glib_line print_ox_rfc100_xml_form -glib_open print_png_form -glib_plot print_terminal_form -glib_print print_tex_form -glib_putpixel print_tfb_form -glib_tops print_xdvi_form -glib_window print_xv_form -gnuplot sm1 -gnuplot_heat sm1_ahg -gnuplot_output sm1_appell1 -gnuplot_plot_dots sm1_appell4 -gnuplot_plot_function sm1_auto_reduce -gnuplot_start sm1_bfunction -hilbert_polynomial sm1_deRham -m_rtostr sm1_distraction -m_start sm1_gb -m_tree_to_string sm1_generalized_bfunction -matrix_clone sm1_genericAnn -matrix_det sm1_gkz -matrix_diagonal_matrix sm1_hilbert -matrix_eigenavalues sm1_mul -matrix_identity_matrix sm1_push_int0 -matrix_inner_product sm1_rank -matrix_inverse sm1_reduction -matrix_kernel sm1_restriction -matrix_list_to_matrix sm1_saturation -matrix_matrix_to_list sm1_slope -matrix_rank sm1_start -matrix_solve_linear sm1_syz -matrix_submatrix sm1_wTensor0 -matrix_transpose sm1_xml_tree_to_prefix_string -om_start tigers -om_xml util_filter -om_xml_to_cmo util_find_and_replace -ox_check_errors2 util_find_substr -ox_sm1_forAsir util_load_file_as_a_string -phc util_part -phc_start util_read_file_as_a_string -plucker_relation util_remove_cr -poly_degree util_write_string_to_a_file -poly_elimination_ideal +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} } 各関数のマニュアルは \\ @@ -407,14 +394,16 @@ http://www.math.kobe-u.ac.jp/OpenXM/1.2.2/doc/asir-con \section{サーバの新しい数学関数} 1.2 系ではまだ新しいサーバの接続作業をおこなっていない. -近いうちに多面体の幾何 (polymake, cdd), -3D グラフィックス関連のサーバ (3D Java, JavaView) +1.3 系の機能になると思うが, +多面体の幾何 (polymake, cdd), 3D グラフィックス関連のサーバ +(3D Java, JavaView, OpenGL をもちいた自前のサーバ) の接続を予定している. \noindent -{\tt ox\_asir} には次の新しい数学的機能が加わった(野呂). +{\tt ox\_asir} には次の新しい数学的機能が加わった(野呂, 横山). \begin{enumerate} \item 有限体での因数分解 ({\tt OpenXM\_contrib2/asir2000/engine/Fgfs.c}). +\item 有限体での準素イデアル分解 \end{enumerate} \noindent @@ -425,7 +414,7 @@ http://www.math.kobe-u.ac.jp/OpenXM/1.2.2/doc/asir-con ({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} @@ -441,41 +430,62 @@ fb は 1.2 系の目玉といえるモジュールである およびそれに適したデータ構造が研究された. さらに岩波公式集をもとに実際のデジタル公式集を作成したが, 著作権の問題があり, 公開されていない. -この流れをくみ, さらに OpenMath の XML で公式を表現する研究が +この流れをくみ, さらに OpenMath の XML で公式を表現し検索する研究が 森永, 村上, 野田 \cite{noda-murakami} により最近進展している. + OpenXM の fb プロジェクトでは, -次の視点からデジタル公式集の設計実装をおこなっている. +上の流れとは異なり, 検索などの問題を考える前の段階の問題 +``いかに数学公式を計算機上に蓄積するか?'' +という問題意識のもと, +次のような機能をもつデジタル公式集が欲しいという観点から +設計実装をおこなっている. \begin{enumerate} -\item Web ベースの Interactive な機能の提供. +%% \item Web ベースの Interactive な機能の提供. +\item さまざまな数学概念に柔軟に対応できる公式集. \item 公式の数学的意味や参考文献などの情報を機械可読形式で 保持できる公式集. -\item さまざまな数学概念に柔軟に対応できる公式集. \item XML の機能をフルに生かした公式集. \item 著作権の問題がない公式集. -\item 入力ミスの発見を補助する機能. +\item 入力ミスの発見を補助する機能など. \end{enumerate} -以下にわれわれの設計の概要を記す. +以下にわれわれの設計と実装の概要を記す. \begin{enumerate} -\item A.Cohen らの Interactive Math Book のタグ(Eindhoven tag library) - を用いて, Interactive な機能を記述する \cite{cohen}. - Interactive 機能は公式集にとり重要で, - たとえば公式を参照するときに変数の置き換えは便利である. +\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 XML タグセットとよんでいる. + これらをまとめて 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}. + なお, A.Cohen らの Interactive Math Book のプロジェクトも + DocBook と OpenMath のタグを拡張する形で + 研究している \cite{cohen}. \item OpenMath の XML と Content Dictionary は さまざまな数学概念に柔軟に対応できる仕組みである. たとえば前記の @@ -484,39 +494,35 @@ OpenXM の fb プロジェクトでは, を定義し, この Content Dictionary は任意の 1 次元の積分路を 表現できることを twisted (co)homology の理論を用いて証明した. \item fb では DOM や XSL など XML の機能をフルに生かし - 公式集を実装した. XML の機能が デジタル公式集にも + 公式集を実装する. XML の機能が デジタル公式集にも 有効であることを確認した. 図 \ref{figure:fbcom} の 各コマンドは主に Java で実装されている. %%Comment: でも数式の括弧の省略の処理は面倒. \item fb では 19世紀, 20 世紀の超幾何関数のオリジナル論文をもとに tfb という言語を もちいて入力をおこなっており, 著作権の問題がない. - tfb は OpenMath オブジェクトを表現するための言語である. - OpenMath プロジェクトでは OpenMath オブジェクト を入力するための - RIACA CD Editor(オランダ) や STAR/MathWriter (Stilo Technology) -%%Pic: coq-starts.jpg - などのGUI 型のプログラムが研究されている. - この tfb は - OpenMath オブジェクトの厳密な入力が容易であるのを特徴としている. \item 公式の入力にはミスがつきものである. fb では, 数値計算をもちいて明らかな誤りを検出する仕組みを提供している. この仕組みでは OpenXM 版の mathematica および asir サーバ および前述の OpenXM online を用いている. + この checker の実装のために退化接続公式を用いた + 新しい超幾何関数の数値計算アルゴリズムも + 考案された. \end{enumerate} -なお, (2) 〜 (6) はデジタル公式集として新しい試みである. + \begin{figure}[tb] \begin{tabular}{|l|l|} \hline -fb XML & DocBook タグ(Top), OpenMath タグ, MathBook タグ, +fbOM-DocBook document & DocBook タグ(Top), OpenMath タグ, MathBook タグ, formula タグ(独自) \\ \hline -fb (tfb) XML & +fb-DocBook document & DocBook タグ(Top), tfb タグ(独自) , MathBook タグ, formula タグ(独自), \\ \hline -fb (formula) XML & +fbOM-formula document & formula タグ(Top, 独自), OpenMath タグ, DocBook タグ (一部) \\ \hline -fb (formula,tfb) XML & +fb-formula document & formula タグ(Top, 独自), tfb タグ(独自), DocBook タグ (一部) \\ \hline \end{tabular} @@ -526,18 +532,18 @@ fb (formula,tfb) XML & \begin{figure}[tb] \begin{tabular}{|l|l|} \hline -{\tt tfb2fb.sh} & fb (tfb) XML 文書 - を fb XML 文書へ変換 \\ \hline - & fb (formula,tfb) XML 文書 - を fb (formula) XML 文書へ変換 \\ \hline +{\tt tfb2fb.sh} & fb-formula 文書 + を fbOM-formula 文書へ変換 \\ \hline + & fb-DocBook 文書 + を fbOM-DocBook 文書へ変換 \\ \hline {\tt tfb2ocd.sh} & (互換性のため残してある) \\ \hline -{\tt fb2tex.sh} & fb XML 文書より LaTeX への変換 \\ \hline +{\tt fb2tex.sh} & fbOM-DocBook 文書より LaTeX への変換 \\ \hline {\tt ocd2tex.sh} & (互換性のため残してある) \\ \hline -{\tt formula2tex.sh} & fb (formula) XML 文書より LaTeX への変換 \\ \hline +{\tt formula2tex.sh} & fbOM-formula XML 文書より LaTeX への変換 \\ \hline {\tt asir2tfb.sh} & asir 形式から tfb 形式への変換 \\ \hline -{\tt tfb2asir-check*.sh} & fb (formula,tfb) XML 文書 より +{\tt tfb2asir-check*.sh} & fb-formula 文書 より asir checker へ.\\ \hline -{\tt tfb2math-check.sh} & fb (formula,tfb) XML 文書 より +{\tt tfb2math-check.sh} & fb-formula XML 文書 より Mathematica checker へ.\\ \hline \end{tabular} \caption{ fb の変換コマンド(一部)} @@ -546,27 +552,26 @@ fb (formula,tfb) XML & -次は fb (formula,tfb) XML文書の例 ({\tt fb/formula/h21-0060.tfb}). +次は fb-formula 文書の例 ({\tt fb/formula/h21-0060.tfb}). {\small \begin{verbatim} - - 2 ~arith1.times~ arith1.root(nums1.pi,2) - ~arith1.times~ hypergeo0.gamma(a ~arith1.plus~ b ~arith1.plus~ - (1 ~arith1.divide~ 2)) - ~arith1.divide~ hypergeo0.gamma(a ~arith1.plus~ (1 ~arith1.divide~ 2)) - ~arith1.divide~ hypergeo0.gamma(b ~arith1.plus~ (1 ~arith1.divide~ 2)) - ~arith1.times~ hypergeo1.hypergeometric2F1(a,b,1 ~arith1.divide~ 2,x) - ~relation1.eq~ - (hypergeo1.hypergeometric2F1(2 ~arith1.times~ a, 2 ~arith1.times~ b, - a ~arith1.plus~ b ~arith1.plus~ (1 ~arith1.divide~ 2), - 1 ~arith1.plus~ arith1.root(x,2) ~arith1.divide~ 2) - ~arith1.plus~ - hypergeo1.hypergeometric2F1(2 ~arith1.times~ a, 2 ~arith1.times~ b, - a ~arith1.plus~ b ~arith1.plus~ (1 ~arith1.divide~ 2), - 1 ~arith1.minus~ arith1.root(x,2) ~arith1.divide~ 2)); + + 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 @@ -658,8 +663,8 @@ Computer Mathematics, Proceedings of the Fifth Asian S 102--111, 2001. % \bibitem{noda-murakami} -森永, 村上, 野田, 数学公式データベースと G 関数, -preprint. +森永, 村上, 数学公式データベースと G 関数, +数式処理 {\bf 9} No.2 (2002), 20--31. % \bibitem{noro} M.Noro