version 1.3, 2000/01/23 05:28:33 |
version 1.4, 2000/01/24 02:48:24 |
|
|
%% $OpenXM: OpenXM/doc/OpenXM-specs/cmo-basic1.tex,v 1.1.1.1 2000/01/20 08:52:46 noro Exp $ |
%% $OpenXM: OpenXM/doc/OpenXM-specs/cmo-basic1.tex,v 1.3 2000/01/23 05:28:33 noro Exp $ |
//&jp \section{ 数, 多項式 の CMO 表現 } |
//&jp \section{ 数, 多項式 の CMO 表現 } |
//&eg \section{ CMOexpressions for numbers and polynomials } |
//&eg \section{ CMOexpressions for numbers and polynomials } |
|
\label{sec:basic1} |
/*&C |
/*&C |
@../SSkan/plugin/cmotag.h |
@../SSkan/plugin/cmotag.h |
\begin{verbatim} |
\begin{verbatim} |
|
|
*/ |
*/ |
|
|
/*&jp |
/*&jp |
以下, グループ CMObject/Basic1, CMObject/Tree |
以下, グループ CMObject/Basic, CMObject/Tree |
および CMObject/DistributedPolynomial |
および CMObject/DistributedPolynomial |
に属する CMObject の形式を説明する. |
に属する CMObject の形式を説明する. |
\noroa{ tagged list を導入すべきか? cf. SSkan/plugin/cmo.txt } |
\noroa{ tagged list を導入すべきか? cf. SSkan/plugin/cmo.txt } |
|
|
*/ |
*/ |
/*&eg |
/*&eg |
In the sequel, we will explain on the groups |
In the sequel, we will explain on the groups |
CMObject/Basic1, CMObject/Tree |
CMObject/Basic, CMObject/Tree |
and CMObject/DistributedPolynomial. |
and CMObject/DistributedPolynomial. |
*/ |
*/ |
|
|
Line 40 and CMObject/DistributedPolynomial. |
|
Line 40 and CMObject/DistributedPolynomial. |
|
|
|
\bigbreak |
\bigbreak |
\noindent |
\noindent |
Group CMObject/Basic1 requires CMObject/Basic0. \\ |
Group CMObject/Basic requires CMObject/Primitive. \\ |
ZZ, QQ, Zero, Rational, Indeterminate,$\in$ CMObject/Basic1. \\ |
ZZ, QQ, Zero, Rational, Indeterminate,$\in$ CMObject/Basic. \\ |
\begin{eqnarray*} |
\begin{eqnarray*} |
\mbox{Zero} &:& ({\tt CMO\_ZERO}) \\ |
\mbox{Zero} &:& ({\tt CMO\_ZERO}) \\ |
& & \mbox{ --- ユニバーサルな ゼロを表す. } \\ |
& & \mbox{ --- ユニバーサルな ゼロを表す. } \\ |
Line 60 ZZ, QQ, Zero, Rational, Indeterminate,$\in$ CMObject/B |
|
Line 60 ZZ, QQ, Zero, Rational, Indeterminate,$\in$ CMObject/B |
|
|
|
\bigbreak |
\bigbreak |
\noindent |
\noindent |
Group CMObject/Basic1 requires CMObject/Basic0. \\ |
Group CMObject/Basic requires CMObject/Primitive. \\ |
ZZ, QQ, Zero, Rational, Indeterminate,$\in$ CMObject/Basic1. \\ |
ZZ, QQ, Zero, Rational, Indeterminate,$\in$ CMObject/Basic. \\ |
\begin{eqnarray*} |
\begin{eqnarray*} |
\mbox{Zero} &:& ({\tt CMO\_ZERO}) \\ |
\mbox{Zero} &:& ({\tt CMO\_ZERO}) \\ |
& & \mbox{ --- Universal zero } \\ |
& & \mbox{ --- Universal zero } \\ |
Line 102 in one to one correspondence. |
|
Line 102 in one to one correspondence. |
|
/*&jp |
/*&jp |
|
|
\noindent |
\noindent |
Group CMObject/Tree requires CMObject/Basic1. \\ |
Group CMObject/Tree requires CMObject/Basic. \\ |
Tree, Lambda $\in$ CMObject/Basic1. \\ |
Tree, Lambda $\in$ CMObject/Basic. \\ |
\begin{eqnarray*} |
\begin{eqnarray*} |
\mbox{Tree} &:& ({\tt CMO\_TREE}, {\sl Cstring}\, {\rm name}, |
\mbox{Tree} &:& ({\tt CMO\_TREE}, {\sl Cstring}\, {\rm name}, |
{\sl Cstring}\, {\rm cdname}, {\sl List}\, {\rm leaves}) \\ |
{\sl Cstring}\, {\rm cdname}, {\sl List}\, {\rm leaves}) \\ |
Line 119 Tree, Lambda $\in$ CMObject/Basic1. \\ |
|
Line 119 Tree, Lambda $\in$ CMObject/Basic1. \\ |
|
/*&eg |
/*&eg |
|
|
\noindent |
\noindent |
Group CMObject/Tree requires CMObject/Basic1. \\ |
Group CMObject/Tree requires CMObject/Basic. \\ |
Tree, Lambda $\in$ CMObject/Basic1. \\ |
Tree, Lambda $\in$ CMObject/Basic. \\ |
\begin{eqnarray*} |
\begin{eqnarray*} |
\mbox{Tree} &:& ({\tt CMO\_TREE}, {\sl Cstring}\, {\rm name}, |
\mbox{Tree} &:& ({\tt CMO\_TREE}, {\sl Cstring}\, {\rm name}, |
{\sl Cstring}\, {\rm cdname}, {\sl List}\, {\rm leaves}) \\ |
{\sl Cstring}\, {\rm cdname}, {\sl List}\, {\rm leaves}) \\ |
|
|
$\sin(x+e)$ is expressed as |
$\sin(x+e)$ is expressed as |
{\tt (sin, (plus, x, e))} |
{\tt (sin, (plus, x, e))} |
as a tree. |
as a tree. |
Tree may be expressed by putting itself between |
Tree may be expressed by putting the expression between |
{\tt SM\_beginBlock} and {\tt SM\_endBlock}, which are |
{\tt SM\_beginBlock} and {\tt SM\_endBlock}, which are |
stack machine commands for delayed evaluation. |
stack machine commands for delayed evaluation. |
(cf. {\tt \{ }, {\tt \} } in PostScript). |
(cf. {\tt \{ }, {\tt \} } in PostScript). |
Line 213 Class.tree [ $plus$ , $Basic$ , [ 123 , 345 ] ] |
|
Line 213 Class.tree [ $plus$ , $Basic$ , [ 123 , 345 ] ] |
|
|
|
\bigbreak |
\bigbreak |
//&jp 次に, 分散表現多項式に関係するグループを定義しよう. |
//&jp 次に, 分散表現多項式に関係するグループを定義しよう. |
//&eg Let us define a group for distributed polynomials. |
/*&eg |
|
Let us define a group for distributed polynomials. In the following |
|
DMS stands for Distributed Monomial System. |
|
*/ |
|
|
\medbreak |
\medbreak |
\noindent |
\noindent |
Group CMObject/DistributedPolynomials requires CMObject/Basic0, |
Group CMObject/DistributedPolynomials requires CMObject/Primitive, |
CMObject/Basic1. \\ |
CMObject/Basic. \\ |
Monomial, Monomial32, Coefficient, Dpolynomial, DringDefinition, |
Monomial, Monomial32, Coefficient, Dpolynomial, DringDefinition, |
Generic DMS ring, RingByName, DMS of N variables $\in$ |
Generic DMS ring, RingByName, DMS of N variables $\in$ |
CMObject/DistributedPolynomials. \\ |
CMObject/DistributedPolynomials. \\ |
Line 289 $x^e = x_1^{e_1} \cdots x_n^{e_n}$ の各指数 $e_i$ |
|
Line 292 $x^e = x_1^{e_1} \cdots x_n^{e_n}$ の各指数 $e_i$ |
|
\mbox{Generic DMS ring} |
\mbox{Generic DMS ring} |
&:& ({\tt CMO\_DMS\_GENERIC}) \\ |
&:& ({\tt CMO\_DMS\_GENERIC}) \\ |
\mbox{RingByName}&:& ({\tt CMO\_RING\_BY\_NAME}, {\sl Cstring} s) \\ |
\mbox{RingByName}&:& ({\tt CMO\_RING\_BY\_NAME}, {\sl Cstring} s) \\ |
& & \mbox{ --- The ring definition refered by the name ``s''.} \\ |
& & \mbox{ --- The ring definition referred by the name ``s''.} \\ |
\mbox{DMS of N variables} |
\mbox{DMS of N variables} |
&:& ({\tt CMO\_DMS\_OF\_N\_VARIABLES}, \\ |
&:& ({\tt CMO\_DMS\_OF\_N\_VARIABLES}, \\ |
& & \ ({\tt CMO\_LIST}, {\sl int32}\, \mbox{m}, |
& & \ ({\tt CMO\_LIST}, {\sl int32}\, \mbox{m}, |
Line 394 a CMO\_ZZ $14$ is expressed by |
|
Line 397 a CMO\_ZZ $14$ is expressed by |
|
\mbox{(CMO\_ZZ, 1, 0, 0, 0, e)}, |
\mbox{(CMO\_ZZ, 1, 0, 0, 0, e)}, |
\] |
\] |
//&jp と表わす. これはバイト列では |
//&jp と表わす. これはバイト列では |
//&egThe corresponding byte sequence is |
//&eg The corresponding byte sequence is |
\[ |
\[ |
\mbox{\tt 00 00 00 14 00 00 00 01 00 00 00 0e} |
\mbox{\tt 00 00 00 14 00 00 00 01 00 00 00 0e} |
\] |
\] |
Line 442 Ring by Name を用いた場合, 現在の名前空間で変数 yyy に |
|
Line 445 Ring by Name を用いた場合, 現在の名前空間で変数 yyy に |
|
/*&eg |
/*&eg |
We treat polynomial rings and their elements as follows. |
We treat polynomial rings and their elements as follows. |
|
|
An element of a generic DMS ring is an element of |
Generic DMS ring is an $n$-variate polynomial ring $K[x_1, \ldots, x_n]$, |
an $n$-variate polynomial ring $K[x_1, \ldots, x_n]$, |
|
where $K$ is some coefficient set. $K$ is unknown in advance |
where $K$ is some coefficient set. $K$ is unknown in advance |
and it is determined when coefficients are received. |
and it is determined when coefficients of an element are received. |
When a server has received an element in a generic DMS ring, |
When a server has received an element in Generic DMS ring, |
the server has to translate it into the corresponding local object |
the server has to translate it into the corresponding local object |
on the server. Each server has its own translation scheme. |
on the server. Each server has its own translation scheme. |
|
|
In Asir such an element are translated into a distributed polynomial. |
In Asir such an element are translated into a distributed polynomial. |
|
|
In {\tt kan/sm1} things are complicated. |
In {\tt kan/sm1} things are complicated. |
{\tt kan/sm1} does not have any class corresponding to a generic DMS ring. |
{\tt kan/sm1} does not have any class corresponding to Generic DMS ring. |
{\tt kan/sm1} translates a DMS of N variables into an element of |
{\tt kan/sm1} translates a DMS of N variables into an element of |
the CurrentRing. |
the CurrentRing. |
If the CurrentRing is $n'$-variate and $n' < n$, then |
If the CurrentRing is $n'$-variate and $n' < n$, then |
a polynomial ring is newly created. Optional informations such as |
an $n$-variate polynomial ring is newly created. Optional informations such as |
the term order are all ignored. |
the term order are all ignored. |
|
|
If RingbyName ({\tt CMO\_RING\_BY\_NAME}, yyy) |
If RingByName ({\tt CMO\_RING\_BY\_NAME}, yyy) |
is specified as the second field of DMS, |
is specified as the second field of DMS, |
it requests a sever to use a ring object whose name is yyy |
it requests a sever to use a ring object whose name is yyy |
as the destination ring for the translation. |
as the destination ring for the translation. |
Line 504 $3 x^2 y$ is regarded as an element of a six-variate p |
|
Line 504 $3 x^2 y$ is regarded as an element of a six-variate p |
|
#define CMO_POLYNOMIAL_IN_ONE_VARIABLE 33 |
#define CMO_POLYNOMIAL_IN_ONE_VARIABLE 33 |
\end{verbatim} |
\end{verbatim} |
|
|
Group CMObject/RecursivePolynomial requires CMObject/Basic0, CMObject/Basic1.\\ |
Group CMObject/RecursivePolynomial requires CMObject/Primitive, CMObject/Basic.\\ |
Polynomial in 1 variable, Coefficient, Name of the main variable, |
Polynomial in 1 variable, Coefficient, Name of the main variable, |
Recursive Polynomial, Ring definition for recursive polynomials |
Recursive Polynomial, Ring definition for recursive polynomials |
$\in$ CMObject/RecursivePolynomial \\ |
$\in$ CMObject/RecursivePolynomial \\ |
Line 543 $\in$ CMObject/RecursivePolynomial \\ |
|
Line 543 $\in$ CMObject/RecursivePolynomial \\ |
|
\mbox{({\tt CMO\_POLYNOMIAL\_IN\_ONE\_VARIABLE},\, {\sl int32}\, m, } \\ |
\mbox{({\tt CMO\_POLYNOMIAL\_IN\_ONE\_VARIABLE},\, {\sl int32}\, m, } \\ |
& & \quad \mbox{ Name of the main variable }, \\ |
& & \quad \mbox{ Name of the main variable }, \\ |
& & \quad \mbox{ \{ {\sl int32} e, Coefficient \}} \\ |
& & \quad \mbox{ \{ {\sl int32} e, Coefficient \}} \\ |
& & \mbox{ --- m is the number of monimials. } \\ |
& & \mbox{ --- m is the number of monomials. } \\ |
& & \mbox{ --- A pair of e and Coefficieint represents a monomial. } \\ |
& & \mbox{ --- A pair of e and Coefficient represents a monomial. } \\ |
& & \mbox{ --- The pairs of e and Coefficient are sorted in the } \\ |
& & \mbox{ --- The pairs of e and Coefficient are sorted in the } \\ |
& & \mbox{ \quad decreasing order, usually with respect to e.} \\ |
& & \mbox{ \quad decreasing order, usually with respect to e.} \\ |
& & \mbox{ --- e denotes an exponent of a monomial with respect to } \\ |
& & \mbox{ --- e denotes an exponent of a monomial with respect to } \\ |
Line 591 $$ x^3 (1234 y^5 + 17 ) + x^1 (y^{10} + 31 y^5) $$ |
|
Line 591 $$ x^3 (1234 y^5 + 17 ) + x^1 (y^{10} + 31 y^5) $$ |
|
/*&eg |
/*&eg |
We intend to represent non-commutative polynomials with the |
We intend to represent non-commutative polynomials with the |
same form. In such a case, the order of products are defined |
same form. In such a case, the order of products are defined |
as above, that is a power of the mail variable $\times$ a coeffcient. |
as above, that is a power of the main variable $\times$ a coeffcient. |
*/ |
*/ |
|
|
\noindent |
\noindent |
Line 613 Class.recursivePolynomial h * ((-1)) + (x^2 * (1)) |
|
Line 613 Class.recursivePolynomial h * ((-1)) + (x^2 * (1)) |
|
\end{verbatim} |
\end{verbatim} |
|
|
\noindent |
\noindent |
Group CMObject/MachineDouble requires CMObject/Basic0.\\ |
Group CMObject/MachineDouble requires CMObject/Primitive.\\ |
64bit machine double, Array of 64bit machine double |
64bit machine double, Array of 64bit machine double |
128bit machine double, Array of 128bit machine double |
128bit machine double, Array of 128bit machine double |
$\in$ CMObject/MachineDouble \\ |
$\in$ CMObject/MachineDouble \\ |
Line 693 conformant float. |
|
Line 693 conformant float. |
|
*/ |
*/ |
|
|
\noindent |
\noindent |
Group CMObject/Bigfloat requires CMObject/Basic0, CMObject/Basic1.\\ |
Group CMObject/Bigfloat requires CMObject/Primitive, CMObject/Basic.\\ |
Bigfloat |
Bigfloat |
$\in$ CMObject/Bigfloat \\ |
$\in$ CMObject/Bigfloat \\ |
|
|