=================================================================== RCS file: /home/cvs/OpenXM/doc/OpenXM-specs/cmo-basic1.tex,v retrieving revision 1.5 retrieving revision 1.11 diff -u -p -r1.5 -r1.11 --- OpenXM/doc/OpenXM-specs/cmo-basic1.tex 2000/01/24 07:36:35 1.5 +++ OpenXM/doc/OpenXM-specs/cmo-basic1.tex 2001/08/27 05:39:15 1.11 @@ -1,4 +1,4 @@ -%% $OpenXM: OpenXM/doc/OpenXM-specs/cmo-basic1.tex,v 1.4 2000/01/24 02:48:24 noro Exp $ +%% $OpenXM: OpenXM/doc/OpenXM-specs/cmo-basic1.tex,v 1.10 2001/04/10 11:56:29 takayama Exp $ //&jp \section{ 数, 多項式 の CMO 表現 } //&eg \section{ CMOexpressions for numbers and polynomials } \label{sec:basic1} @@ -64,9 +64,11 @@ ZZ, QQ, Zero, Rational, Indeterminate,$\in$ CMObject/B \mbox{Zero} &:& ({\tt CMO\_ZERO}) \\ & & \mbox{ --- ユニバーサルな ゼロを表す. } \\ \mbox{ZZ} &:& ({\tt CMO\_ZZ},{\sl int32}\, {\rm f}, {\sl byte}\, \mbox{a[1]}, \ldots -{\sl byte}\, \mbox{a[m]} ) \\ +{\sl byte}\, \mbox{a[$|$f$|$]} ) \\ &:& \mbox{ --- bignum をあらわす. a[i] についてはあとで説明}\\ -\mbox{QQ} &:& ({\tt CMO\_QQ}, {\sl ZZ}\, {\rm a}, {\sl ZZ}\, {\rm b}) \\ +\mbox{QQ} &:& ({\tt CMO\_QQ}, + {\sl int32}\, {\rm m}, {\sl byte}\, \mbox{a[1]}, \ldots, {\sl byte}\, \mbox{a[$|$m$|$]}, + {\sl int32}\, {\rm n}, {\sl byte}\, \mbox{b[1]}, \ldots, {\sl byte}\, \mbox{b[$|$n$|$]})\\ & & \mbox{ --- 有理数 $a/b$ を表す. } \\ \mbox{Rational} &:& ({\tt CMO\_RATIONAL}, {\sl CMObject}\, {\rm a}, {\sl CMObject}\, {\rm b}) \\ & & \mbox{ --- $a/b$ を表す. } \\ @@ -84,9 +86,11 @@ ZZ, QQ, Zero, Rational, Indeterminate,$\in$ CMObject/B \mbox{Zero} &:& ({\tt CMO\_ZERO}) \\ & & \mbox{ --- Universal zero } \\ \mbox{ZZ} &:& ({\tt CMO\_ZZ},{\sl int32}\, {\rm f}, {\sl byte}\, \mbox{a[1]}, \ldots -{\sl byte}\, \mbox{a[m]} ) \\ +{\sl byte}\, \mbox{a[$|$m$|$]} ) \\ &:& \mbox{ --- bignum. The meaning of a[i] will be explained later.}\\ -\mbox{QQ} &:& ({\tt CMO\_QQ}, {\sl ZZ}\, {\rm a}, {\sl ZZ}\, {\rm b}) \\ +\mbox{QQ} &:& ({\tt CMO\_QQ}, + {\sl int32}\, {\rm m}, {\sl byte}\, \mbox{a[1]}, \ldots, {\sl byte}\, \mbox{a[$|$m$|$]}, + {\sl int32}\, {\rm n}, {\sl byte}\, \mbox{b[1]}, \ldots, {\sl byte}\, \mbox{b[$|$n$|$]})\\ & & \mbox{ --- Rational number $a/b$. } \\ \mbox{Rational} &:& ({\tt CMO\_RATIONAL}, {\sl CMObject}\, {\rm a}, {\sl CMObject}\, {\rm b}) \\ & & \mbox{ --- Rational expression $a/b$. } \\ @@ -99,6 +103,7 @@ ZZ, QQ, Zero, Rational, Indeterminate,$\in$ CMObject/B */ /*&jp +\subsection{Indeterminate および Tree} Indeterminate は変数名をあらわす. v はバイト列であればなにを用いてもよいが, システム毎に変数名として用いられるバイト列は制限がある. @@ -110,6 +115,7 @@ escape sequence を用いて実現するのは, 無理があるようで テーブルを作成する必要があるであろう.) */ /*&eg +\subsection{Indetermnate and Tree} Indeterminate is a name of a variable. v may be any sequence of bytes, but each system has its own restrictions on the names of variables. @@ -124,10 +130,10 @@ Group CMObject/Tree requires CMObject/Basic. \\ Tree, Lambda $\in$ CMObject/Basic. \\ \begin{eqnarray*} \mbox{Tree} &:& ({\tt CMO\_TREE}, {\sl Cstring}\, {\rm name}, - {\sl Cstring}\, {\rm cdname}, {\sl List}\, {\rm leaves}) \\ + {\sl List}\, {\rm attributes}, {\sl List}\, {\rm leaves}) \\ & & \mbox{ --- 名前 name の定数または関数. 関数の評価はおこなわない. } \\ -& & \mbox{ --- cdname は空文字列でなければ name の意味が説明されている }\\ -& & \mbox{ --- OpenMath CD (content dictionary) の名前. } \\ +& & \mbox{ --- attributes は空リストでなければ name の属性を保持している. }\\ +& & \mbox{ --- 属性リストは, key と 値のペアである. }\\ \mbox{Lambda} &:& ({\tt CMO\_LAMBDA}, {\sl List}\, {\rm args}, {\sl Tree} {\rm body}) \\ & & \mbox{ --- body を args を引数とする関数とする. } \\ @@ -141,10 +147,10 @@ Group CMObject/Tree requires CMObject/Basic. \\ Tree, Lambda $\in$ CMObject/Basic. \\ \begin{eqnarray*} \mbox{Tree} &:& ({\tt CMO\_TREE}, {\sl Cstring}\, {\rm name}, - {\sl Cstring}\, {\rm cdname}, {\sl List}\, {\rm leaves}) \\ + {\sl List}\, {\rm attributes}, {\sl List}\, {\rm leaves}) \\ & & \mbox{ --- A function or a constant of name. Functions are not evaluated. } \\ -& & \mbox{ --- cdname may be a null. If it is not null, it is the name of}\\ -& & \mbox{ --- the OpenMath CD (content dictionary). } \\ +& & \mbox{ --- attributes may be a null list. If it is not null, it is a list of}\\ +& & \mbox{ --- key and value pairs. } \\ \mbox{Lambda} &:& ({\tt CMO\_LAMBDA}, {\sl List}\, {\rm args}, {\sl Tree} {\rm body}) \\ & & \mbox{ --- a function with the arguments body. } \\ @@ -185,7 +191,7 @@ stack machine commands for delayed evaluation. However it makes the implementation of stack machines complicated. It is desirable that CMObject is independent of OX stack machine. Therefore we introduce an OpenMath like tree representation for CMO -tree object. +Tree object. This method allows us to implement tree structure easily on individual OpenXM systems. Note that CMO Tree corresponds to Symbol and Application in OpenMath. @@ -208,23 +214,27 @@ It is the same as the Lambda expression in Lisp. //&jp 例: $sin(x+e)$ の表現. //&eg Example: the expression of $sin(x+e)$. \begin{verbatim} -(CMO_TREE, (CMO_STRING, "sin"), (CMO_STRING, "basic"), +(CMO_TREE, (CMO_STRING, "sin"), + (CMO_LIST,[size=]1,(CMO_LIST,[size=]2,(CMO_STRING, "cdname"), + (CMO_STRING,"basic"))) (CMO_LIST,[size=]1, (CMO_TREE, (CMO_STRING, "plus"), (CMO_STRING, "basic"), (CMO_LIST,[size=]2, (CMO_INDETERMINATE,"x"), -//&jp (CMO_TREE,(CMO_STRING, "e"), 自然対数の底 -//&eg (CMO_TREE,(CMO_STRING, "e"), Napier's number - (CMO_STRING, "basic")) +//&jp (CMO_TREE,(CMO_STRING, "e"), 自然対数の底 +//&eg (CMO_TREE,(CMO_STRING, "e"), the base of natural logarithms + (CMO_STRING, "basic")) )) ) ) \end{verbatim} +//&jp Leave の成分には, 多項式を含む任意のオブジェクトがきてよい. +//&eg Elements of the leave may be any objects including polynomials. \noindent Example: \begin{verbatim} sm1> [(plus) (Basic) [(123).. (345)..]] [(class) (tree)] dc :: -Class.tree [ $plus$ , $Basic$ , [ 123 , 345 ] ] +Class.tree [ $plus$ , $basic$ , [ 123 , 345 ] ] \end{verbatim} @@ -551,7 +561,7 @@ $\in$ CMObject/RecursivePolynomial \\ \mbox{ Polynomial in 1 variable}\, | \, \mbox{Coefficient} \\ \mbox{RringDefinition} & : & \mbox{ {\sl List} v } \\ -& & \quad \mbox{ --- v は, 変数名(indeterminate) のリスト. } \\ +& & \quad \mbox{ --- v は, 変数名(indeterminate) または Tree のリスト. } \\ & & \quad \mbox{ --- 順序の高い順. } \\ \end{eqnarray*} */ @@ -581,7 +591,7 @@ $\in$ CMObject/RecursivePolynomial \\ \mbox{ Polynomial in 1 variable}\, | \, \mbox{Coefficient} \\ \mbox{RringDefinition} & : & \mbox{ {\sl List} v } \\ -& & \quad \mbox{ --- v is a list of names of indeterminates. } \\ +& & \quad \mbox{ --- v is a list of names of indeterminates or trees. } \\ & & \quad \mbox{ --- It is sorted in the decreasing order. } \\ \end{eqnarray*} */