=================================================================== RCS file: /home/cvs/OpenXM/src/kxx/openxxx.tex,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- OpenXM/src/kxx/openxxx.tex 1999/11/22 08:52:55 1.4 +++ OpenXM/src/kxx/openxxx.tex 2000/01/02 07:35:15 1.5 @@ -1,4 +1,5 @@ -%% $OpenXM: OpenXM/src/kxx/openxxx.tex,v 1.3 1999/11/02 09:07:33 takayama Exp $ +%% $OpenXM: OpenXM/src/kxx/openxxx.tex,v 1.4 1999/11/22 08:52:55 takayama Exp $ +/*&jp %\documentclass{jarticle} \documentstyle{jarticle} \title{{\bf Open XM ¤ÎÀ߷פȼÂÁõ} \\ @@ -7,19 +8,38 @@ } , ¹â»³¿®µ£\thanks{¿À¸ÍÂç³ØÍý³ØÉô¿ô³Ø¶µ¼¼} } -\date{ 1999ǯ, 11·î22Æü} +\date{ 1999ǯ, 12·î31Æü} +*/ +/*&eg +%\documentclass{article} +\documentstyle{article} +\title{{\bf Design and Implementation of OpenXM} \\ + --- Open message eXchange protocol for Mathematics \\ + (English Abstract of Japanese Original Document)} +\author{ Masayuki Noro\thanks{Fujitsu Laboratory +} , + Nobuki Takayama\thanks{Department of Mathematics, Kobe University} +} +\date{ December 31, 1999} +*/ +/*&C \begin{document} \maketitle \def\noroa#1{ } \def\remove#1{ } +*/ +/*&jp {\tt kxx/openxxx.tex}. {\bf Draft} 1997, 11/20 --- . ¤³¤Îʸ½ñ¤Ï open XM ¤ÎÀß·×ÍѤΥá¥â¤È¤·¤Æ¤ÎÌòÌܤ⤢¤ë¤Î¤Ç, °ìÉô¤Î¥Õ¥¡¥¤¥ë̾¤Ï³«È¯¼Ô¤Î¤ß¤¬»²¾È¤Ç¤­¤ë. +*/ -\section{¤Ï¤¸¤á¤Ë} +//&jp \section{¤Ï¤¸¤á¤Ë} +//&eg \section{Introduction} (This part has not been translated) +/*&jp Open XM ¤Ï, ¤ª¤Ê¤¸¥¿¥¤¥×¤Þ¤¿¤Ï°Û¤Ê¤ë¥¿¥¤¥×¤Î¿ô³Ø¥×¥í¥»¥¹´Ö¤Î ¥á¥Ã¥»¡¼¥¸¤Î¤ä¤ê¤È¤ê¤Îµ¬Ìó¤Ç¤¢¤ë. ³«È¯¤ÎÆ°µ¡¤Ï, ¼êºî¤ê(¤Þ¤¿¤Ï¸¦µæŪ¤Ê)¿ô³Ø¥½¥Õ¥È¤ÎÁê¸ß¾è¤êÆþ¤ì¤Î¼Â¸½ @@ -104,24 +124,48 @@ SM ÁØ¤Ï (¥¹¥¿¥Ã¥¯¥Þ¥·¥ó)¥µ¡¼¥Ð¤òÀ©¸æ¤¹¤ë¤¿¤á¤ÎÌ¿Îá¤Î ¤¢¤Ä¤Þ¤ê¤Ç¤¢¤ê, ¥µ¡¼¥Ð¤ÏÈóƱ´üŪ¤ËÆ°ºî¤µ¤»¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë. ½ÀÆðÀ­¤¬¹â¤¤¤Î¤Ç, IMC ¤Ê¤É¤Î¥ê¥â¡¼¥È¥×¥í¥·¡¼¥¸¥ã¥³¡¼¥ë·Ï¤Î ¥×¥í¥È¥³¥ë¤â¥¨¥ß¥å¥ì¡¼¥È¤Ç¤­¤ë. +*/ - - -\section{CMO Basic0 ¤Î object} +//&jp \section{CMO Basic0 ¤Î object} +//&eg \section{CMO Basic0 object} +/*&jp CMO (Common Mathematical Object format) ¥°¥ë¡¼¥× Basic0 ¤Î Object ¤Ï, -¿¤¯¤Î·×»»µ¡¸À¸ì¤¬É¸½à¤È¤·¤Æ¤â¤Ä ¥í¡¼¥ì¥Ù¥ë¤Î¥Ç¡¼¥¿·¿, {\tt int} , {\tt string} -¤Ê¤É¤Ë ¥¿¥°ÉÕ¤±¤·¤¿ object ¤Ç¤¢¤ë. -¤³¤Î CMO ¤Ï¤¹¤Ù¤Æ¤Î open xxx ¤¬¼ÂÁõ¤·¤Æ¤¤¤ë¤È²¾Äꤵ¤ì¤ë. +¤Ê¤É¤ËÂбþ¤¹¤ë object ¤Ç¤¢¤ë. +¤³¤Î CMO ¤Ï¤¹¤Ù¤Æ¤Î OpenXM ¤¬¼ÂÁõ¤·¤Æ¤¤¤ë¤È²¾Äꤵ¤ì¤ë. ¤³¤ÎÀá¤Ç¤Ï, ¥¤¥ó¥È¥í¥À¥¯¥·¥ç¥ó¤È¤·¤Æ, ¥°¥ë¡¼¥× Basic0 ¤Ë°¤¹¤ë CMObject (Common Mathematical Object) ¤ò·Á¼°Åª¤ÊÊýË¡¤ò¤Ä¤«¤ï¤ºÆ³Æþ¤·¤è¤¦. +*/ +/*&eg +Objects in CMO (Common Mathematical Object format) Group Basic0 +are primitive data such as {\tt int}, {\tt string}. +All OpenXM compliant systems should implement all data types +in Group Basic0. +In this section, as an introduction, we will introduce +CMObject (Common Mathematical Object) of group Basic0 without formal +method. +*/ +/*&jp ¤³¤Î¥°¥ë¡¼¥×¤ÎÀµ¼°¤Ê̾Á°¤Ï, CMObject/Basic0 ¤Ç¤¢¤ë. °Ê²¼, {\tt int32} ¤Ç2¤ÎÊä¿ôɽ¸½¤µ¤ì¤¿ -network byte order ¤Î 32 bit integer ¤ò¤¢¤é¤ï¤¹. +32 bit integer ¤ò¤¢¤é¤ï¤¹ +(¤³¤ì¤Ï¤è¤¯»È¤ï¤ì¤ë·×»»µ¡¤Ç¤Î C ¸À¸ì¤Î int ¤ÎÆâÉôɽ¸½). {\tt byte} ¤Ç 8 bit ¥Ç¡¼¥¿¤ò¤¢¤é¤ï¤¹. +*/ +/*&eg +The canonical name of this group is +CMObject/Basic0. +In the sequel, +{\tt int32} means the signed 32 bit integer expressed by two's complement +(Most internal expressions of {\tt int} of the language C take this expression). +{\tt byte} means 8 bit data. +*/ + +//&C +/*&jp CMO ¤Î object ¤Ï \\ \begin{tabular}{|c|c|} \hline @@ -131,9 +175,27 @@ CMO ¤Î object ¤Ï \\ ¤Ê¤ë·Á¤ò¤·¤Æ¤¤¤ë. ¤³¤³¤Ç, {\tt cmo\_tag} ¤Ï, Àµ¤Î {\tt int32} ¤Çɽ¸½¤¹¤ë¤â¤Î¤Èµ¬Ì󤹤ë. +*/ +/*&eg +CMO consists of a tag and a body: \\ +\begin{tabular}{|c|c|} +\hline +{\tt cmo\_tag}& {\tt cmo\_body} \\ +\hline +\end{tabular} \\ +{\tt cmo\_tag} should be given a positive +{\tt int32}. +*/ +/*&C + +*/ +/*&jp {\tt cmo\_tag} ¤Ï object ¤Î¥¿¥¤¥×¤ò¤¢¤é¤ï¤¹¥¿¥°¤Ç¤¢¤ê, °Ê²¼¤Î¤è¤¦¤Ë·è¤á¤Æ¤¤¤ë. +*/ +//&eg The following is a list of tags of CMObject/Basic0. +/*&C @../SSkan/plugin/cmotag.h \begin{verbatim} #define LARGEID 0x7f000000 @@ -145,50 +207,99 @@ CMO ¤Î object ¤Ï \\ #define CMO_MATHCAP 5 #define CMO_LIST 17 \end{verbatim} +*/ +/*&jp °Ê²¼, ³Æ object ¤Î ¥Õ¥©¡¼¥Þ¥Ã¥È¤òÀâÌÀ¤¹¤ë. -¥µ¡¼¥Ð¤Ï¤¹¤Ù¤Æ¤Î object ¤Î CMO ·Á¼°¤ò¥µ¥Ý¡¼¥È¤¹¤ëɬÍפϤʤ¤¤¬, -mathcap (¸å½Ò) Ì䤤¹ç¤ï¤»¤ËÂФ·¤Æ, -¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë CMO ·Á¼°¥Ç¡¼¥¿¤ò¥¯¥é¥¤¥¢¥ó¥È¤ËÃΤ餻¤ëɬÍפ¬ -¤¢¤ë. +¥µ¡¼¥Ð, ¥¯¥é¥¤¥¢¥ó¥È¤Ï¤¹¤Ù¤Æ¤Î object ¤Î CMO ·Á¼°¤ò¥µ¥Ý¡¼¥È¤¹¤ëɬÍפϤʤ¤¤¬, {\tt CMO\_ERROR2}, {\tt CMO\_NULL}, {\tt CMO\_INT32}, {\tt CMO\_STRING}, {\tt CMO\_MATHCAP}, {\tt CMO\_LIST} ¤ÏºÇ¤â´ðËÜŪ¤Ê¥Ç¡¼¥¿¤Ç¤¢¤ê, ¤Þ¤¿Á´¤Æ¤Î¥µ¡¼¥Ð, ¥¯¥é¥¤¥¢¥ó¥È¤¬¼ÂÁõ¤¹¤Ù¤­ CMO ¥Ç¡¼¥¿¤Ç¤¢¤ë. +*/ +/*&eg +We will explain each object format. +Servers and clients do not need to implement all CMO's. +However, +{\tt CMO\_ERROR2}, {\tt CMO\_NULL}, +{\tt CMO\_INT32}, {\tt CMO\_STRING}, {\tt CMO\_MATHCAP}, {\tt CMO\_LIST} +are primitive data and +all servers and clients should implement them. +*/ +/*&C -CMObject Error2 ¤Ï \\ +\noindent +*/ +//&jp CMObject Error2 ¤Ï \\ +//&eg CMObject Error2 is of the form \\ +/*&C \begin{tabular}{|c|c|} \hline {\tt int32 CMO\_ERROR2} & {\sl CMObject} {\rm ob} \\ \hline \end{tabular} \\ +*/ +/*&jp ¤Ê¤ë·Á¤Çɽ¸½¤¹¤ë. -¥¨¥é¡¼¤Î»þ¤ËÅꤲ¤ë object ¤Ç¤¢¤ê, {\it CMObject} ob ¤Î +¥¨¥é¡¼¤Î»þ¤Ë push ¤¹¤ë object ¤Ç¤¢¤ê, {\it CMObject} ob ¤Î Éôʬ¤Ë¾ÜºÙ¤Ê¥¨¥é¡¼¾ðÊ󤬤Ϥ¤¤ë. -ob ¤Ï¥ê¥¹¥È¤Ç¤¢¤ê, ºÇ½é¤ÎÀ®Ê¬¤Ï¥¨¥é¡¼¤òµ¯¤³¤·¤¿ OX ¥á¥Ã¥»¡¼¥¸(¸å½Ò) +ob ¤Ï¥ê¥¹¥È¤Ç¤¢¤ê, TCP/IP ¤Ë¤è¤ë¥¹¥È¥ê¡¼¥à·¿Àܳ¤Î¾ì¹ç, +ºÇ½é¤ÎÀ®Ê¬¤Ï¥¨¥é¡¼¤òµ¯¤³¤·¤¿ OX ¥á¥Ã¥»¡¼¥¸(¸å½Ò) ¤Î¥·¥ê¥¢¥ëÈÖ¹æ¤Ç¤Ê¤¤¤È¤¤¤±¤Ê¤¤. ¥·¥ê¥¢¥ëÈÖ¹æ¤Ï Integer32 ¤Çɽ¸½¤¹¤ë. +*/ +/*&eg +It is an object when a server makes an error. +{\it CMObject} ob carries error informations. +ob is a list and in case of the stream connection like TCP/IP +the first element must be the serial number of the OX message causes the error. +The serial number is Integer32. +*/ +/*&C -CMObject Null ¤Ï \\ +\noindent +*/ + +//&jp CMObject Null ¤Ï \\ +//&eg CMObject Null has the format \\ +/*&C \begin{tabular}{|c|c|} \hline {\tt int32 CMO\_NULL} \\ \hline \end{tabular} \\ +*/ +/*&jp ¤Ê¤ë·Á¤Çɽ¸½¤¹¤ë. +*/ -32 bit integer n ¤Ï CMObject ¤È¤·¤Æ¤Ï Integer32 ¤È¸Æ¤Ð¤ì, \\ +/*&C + +\noindent +*/ + +//&jp 32 bit integer n ¤Ï CMObject ¤È¤·¤Æ¤Ï Integer32 ¤È¸Æ¤Ð¤ì, \\ +//&eg 32 bit integer n is called Integer32 as CMObject and has the format \\ +/*&C \begin{tabular}{|c|c|} \hline {\tt int32 CMO\_INT32}& {\tt int32} {\rm n} \\ \hline \end{tabular} \\ -¤Ê¤ë·Á¤Çɽ¸½¤¹¤ë. +*/ +//&jp ¤Ê¤ë·Á¤Çɽ¸½¤¹¤ë. +/*&C -Ťµ n ¤Î ¥Ð¥¤¥ÈÎó data ¤Ï CMObject ¤È¤·¤Æ¤Ï, Datum ·¿¤È¤è¤Ð¤ì \\ +\noindent +*/ + + +//&jp Ťµ n ¤Î ¥Ð¥¤¥ÈÎó data ¤Ï CMObject ¤È¤·¤Æ¤Ï, Datum ·¿¤È¤è¤Ð¤ì \\ +//&eg A byte array of the length n is called Datum as CMObject and has the format \\ +/*&C \begin{tabular}{|c|c|c|c|} \hline {\tt int32 CMO\_DATUM}& {\tt int32} {\rm n} & {\tt byte} {\rm data[0]} @@ -197,10 +308,17 @@ CMObject Null ¤Ï \\ $\cdots$ & {\tt byte} {\rm data[n-1]} \\ \cline{1-2} \end{tabular} \\ -¤Èɽ¸½¤¹¤ë. -data ¤ÎÉôʬ¤ËľÎó²½ (serialized) ¤µ¤ì¤¿ CMO ¤¬Æþ¤ë¤³¤È¤â¤¢¤ê¤¦¤ë. +*/ +//&jp ¤Èɽ¸½¤¹¤ë. -Ťµ n ¤Î ʸ»úÎó data ¤Ï, CMObject ¤È¤·¤Æ¤Ï, Cstring ·¿¤È¤è¤Ð¤ì \\ +/*&C + +\noindent +*/ + +//&jp Ťµ n ¤Î ʸ»úÎó data ¤Ï, CMObject ¤È¤·¤Æ¤Ï, Cstring ·¿¤È¤è¤Ð¤ì \\ +//&eg String of n bytes is called Cstring as CMObject and has the format \\ +/*&C \begin{tabular}{|c|c|c|c|} \hline {\tt int32 CMO\_STRING}& {\tt int32} {\rm n} & {\tt byte} {\rm data[0]} @@ -209,64 +327,103 @@ data ¤ÎÉôʬ¤ËľÎó²½ (serialized) ¤µ¤ì¤¿ CMO ¤¬Æþ¤ë¤³¤È $\cdots$ & {\tt byte} {\rm data[n-1]} \\ \cline{1-2} \end{tabular} \\ +*/ +/*&jp ¤Èɽ¸½¤¹¤ë. C ¸À¸ì¤ÇÉáÄÌÍѤ¤¤é¤ì¤ë, ʸ»úÎó¤Î¤ª¤ï¤ê¤Î {\tt 0} ¤Ïʸ»úÎó ¤Ë´Þ¤á¤Ê¤¤. +*/ -\remove{ -Ťµ n ¤Î 32bit network byte order ¤Î data ¤Î array ¤Ï \\ -\begin{tabular}{|c|c|c|c|c|c|} -\hline -{\tt int32 CMO\_ARRAYOFINT32}& {\tt int32} {\rm n} & -{\rm data[0]} & {\rm data[1]}&$\cdots$ -& {\rm data[n-1]} \\ -\cline{1-2} -\end{tabular} \\ -¤Èɽ¸½¤¹¤ë. ³Æ {\tt data[i]} ¤ÎÉôʬ¤Ï 4 byte ¤ÎÂ礭¤µ¤ò»ý¤Ä. -} +/*&C \noindent -CMObject Mathcap ¤Ï \\ +*/ +//&jp CMObject Mathcap ¤Ï \\ +//*eg CMObject Mathcap has the format \\ +/*&C \begin{tabular}{|c|c|} \hline {\tt int32 CMO\_MATHCAP} & {\it CMObject} {\rm ob} \\ \hline \end{tabular} \\ +*/ +/*&jp ¤Ê¤ë·Á¤Çɽ¸½¤¹¤ë. {\tt ob} ¤Ï¥ê¥¹¥È¤Ç¤¢¤ê¾¯¤Ê¤¯¤È¤â2¤Ä¤ÎÍ×ÁǤò¤â¤Ä. -0 ÈÖÌܤÎÍ×ÁǤÏ, Integer32 ¤Çɽ¤·¤¿ Version number ¤È, -Cstring ¤Çɽ¤·¤¿¥·¥¹¥Æ¥à̾, Version number, CPUtype, ¤½¤Î¾¤Î¾ðÊó +0 ÈÖÌܤÎÍ×ÁǤÏ, Integer32 ¤Çɽ¤·¤¿ OpenXM protocol version number ¤È, +Cstring ¤Çɽ¤·¤¿¥·¥¹¥Æ¥à̾, Server version, CPU type, ¤½¤Î¾¤Î¾ðÊó ¤Î¥ê¥¹¥È¤Ç¤¢¤ë. 1 ÈÖÌܤÎÍ×ÁǤÏ, ¥·¥¹¥Æ¥à xxx ¤¬°·¤¦¤³¤È¤Î²Äǽ¤Ê -CMO ¥¿¥°¤ò, Integer32 ¤Çɽ¸½¤·¤¿¤â¤Î¤ò½¸¤á¤¿¥ê¥¹¥È¤Ç¤¢¤ë. +SM ¥¿¥°, OX DATA ¥¿¥¤¥×¤È¤½¤ÎÉղþðÊó (CMO ¥¿¥°¤Ê¤É) +¤ò, Integer32 ¤Çɽ¸½¤·¤¿¤â¤Î¤ò½¸¤á¤¿¥ê¥¹¥È¤Ç¤¢¤ë. +*/ +/*&eg +ob is a list of which length is more than or equal to two. +The first element is a list of +OpenXM protocol version number in Integer32, +the server name in Cstring, +the server version and CPU type in Cstring, +and extra informations. +The second element is a list of SM tags and OX data type tags with +suplementary informations (e.g., a list of available CMO tags) +in Integer 32. +*/ +/*&C + \noindent -Ťµ m ¤Î¥ê¥¹¥È¤Ï \\ +*/ +//&jp Ťµ m ¤Î¥ê¥¹¥È¤Ï \\ +//&eg A list of the length m has the form \\ +/*&C \begin{tabular}{|c|c|c|c|c|} \hline {\tt int32 CMO\_LIST}& {\tt int32} {\rm m} & {\tt CMObject}\, ob[0] & $\cdots$ & {\tt CMObject}\, ob[$m-1$] \\ \hline \end{tabular}\\ -¤Çɽ¸½¤¹¤ë. +*/ +//&jp ¤Çɽ¸½¤¹¤ë. -\section{ CMO ¤Îɽ¸½ÊýË¡ } +//&jp \section{ CMO ¤Î·Á¼°ÅªÉ½¸½ÊýË¡ } +//&eg \section{ A formal expression of CMO } +/*&jp Á°¤ÎÀá¤Ç CMO ¤Îɽ¸½ÊýË¡¤ò·Á¼°Åª¤ËÄêµÁ¤»¤º, CMO ¤ÎBasic0 ¤Îɽ¸½Ë¡¤òÀâÌÀ¤·¤¿¤¬, ¤³¤³¤Ç¤Ï, CMO ¤Î Lisp É÷ɽ¸½ (Lisp-like expression) ¤Ç¤¢¤ë CMOexpression ¤ª¤è¤Ó CMO ¤Îɸ½à encoding Ë¡¤òÀâÌÀ¤¹¤ë. -(¥¿¥°¤Î¾Êάµ­Ë¡¤¬¤Û¤·¤¤.) -Á°¤ÎÀá¤Ç¤Ï¤³¤Î ɸ½à encoding Ë¡¤òÍѤ¤¤Æ CMO ¤Îɽ¸½ÊýË¡¤òÀâÌÀ¤·¤¿. +% (¥¿¥°¤Î¾Êάµ­Ë¡¤¬¤Û¤·¤¤.) +*/ +/*&eg +In the previous setion, we have explained the format of CMO's in the +Basic0 group. +In this section, we will introduce CMOexpression which is like the +bracket expression of Lisp and a standard encoding method of CMO. +*/ +/*&jp + ¤Þ¤º, CMOexpression ¤ò·Á¼°Åª¤Ë ³ÈÄ¥ BNF µ­Ë¡¤òÍѤ¤¤ÆÄêµÁ¤·¤è¤¦. ¥¿¥¤¥×¥é¥¤¥¿¥Õ¥©¥ó¥È¤Ç¤«¤«¤ì¤¿µ­¹æ¤Ï½ªÃ¼µ­¹æ¤ò°ÕÌ£¤¹¤ë. ``:'' ¤ÏÄêµÁ¤ò°ÕÌ£¤¹¤ë. ``$|$'' ¤Ï''¤Þ¤¿¤Ï''¤ò°ÕÌ£¤¹¤ë. \{ X \} ¤Ï X ¤Î 0 ²ó°Ê¾å¤Î·«¤êÊÖ¤·¤òɽ¤¹. [ x ] ¤Ï X ¤¬ 0 ²ó¤Þ¤¿¤Ï 1 ²ó½Ð¸½¤¹¤ë¤³¤È¤òɽ¤¹. +*/ +/*&eg +Let us define CMOexpression by the extended BNF expression. +Symbols in the type writer fonts mean terminals. +``:'' means a definition. +``$|$'' means ''or''. +\{ X \} is a repetition of X of more than or equal to 0 times. +[ x ] stands for X or nothing. + +*/ + +/*&C \begin{eqnarray*} \mbox{CMOexpression} &:& \quad @@ -278,21 +435,48 @@ CMOexpression & &|\ \mbox{\tt string} \\ & &|\ \mbox{\tt byte} \\ \end{eqnarray*} +*/ +/*&jp ½ªÃ¼µ­¹æ {\tt int32} ¤Ï, 32 bit integer ¤òɽ¤¹, 10 ¿Ê¤Þ¤¿¤Ï 16 ¿Ê¤Î¿ô»ú¤Î Îó¤Ç¤¢¤ë. ½ªÃ¼µ­¹æ {\tt string} ¤Ï''ʸ»ú''¤ÎÎó¤Ç¤¢¤ë. ½ªÃ¼µ­¹æ {\tt byte} ¤Ï 8 bit ¥Ç¡¼¥¿¤òɽ¤¹, 10 ¿Ê¤Þ¤¿¤Ï 16 ¿Ê¤Î¿ô»ú¤ÎÎó¤Ç¤¢¤ë. +*/ +/*&jp +Terminal {\tt int32} is signed 32 bit integer. +Terminal {\tt string} is a byte array which usually expresses a string. +Terminal {\tt byte} is 8 bit data. + +*/ + +/*&jp CMOexpression ¤Ë¤¢¤é¤ï¤ì¤ë³ÆÍ×ÁǤò¶èÀڤ뤿¤á¤Ë {\tt ,} (¥³¥ó¥Þ) ¤òÍѤ¤¤Æ¤â¤è¤¤. {\tt cmo\_tag} ¤Ï {\tt CMO\_} ¤Ç»Ï¤Þ¤ëÄê¿ô¤Ç¤¢¤ë. CMOexpression ¤Çɽ¸½¤µ¤ì¤ë object ¤ò CMObject ¤È¸Æ¤Ö. +*/ +/*&eg +The comma ({\tt ,}) may be used to separate each element in CMOexpressions. +{\tt cmo\_tag} is a constant that starts with {\tt CMO\_}. + +*/ + +/*&jp ¤³¤Îɽµ­Ë¡ CMOexpression ¤òÍøÍѤ·¤Æ, CMO Basic0 ¤Î object ¤òµ­½Ò ¤·¤Æ¤ß¤è¤¦. Object ¼«ÂΤι½Â¤¤òÀâÌÀ¤¹¤ë¤¿¤á, BNF ¤ò¤â¤¦¤¹¤³¤·³ÈÄ¥¤·¤Æ, Èó½ªÃ¼µ­¹æ, ½ªÃ¼µ­¹æ̾¤Î¤ß¤Ê¤é¤º, ÊÑ¿ô¤Î ̾Á°¤â½ñ¤¯¤³¤È¤Ë¤¹¤ë. ¤³¤¦¤¹¤ë¤³¤È¤Ë¤è¤ê, object ¤Î°ÕÌ£¤ÎÀâÌÀ¤âÍÆ°×¤Ë¤Ê¤ë ¤«¤é¤Ç¤¢¤ë. ¤Þ¤¿ ``---'' ¤Ç¥³¥á¥ó¥È¤Î¤Ï¤¸¤Þ¤ê¤òɽ¤¹¤â¤Î¤È¤¹¤ë. +*/ +/*&eg +Let us describe CMO's in the Basic0 group. +In order to explain the meaning of objects, +we may also put variable names to CMOexpressions. +The start of comments are denoted by ``---''. +*/ +/*&jp ¤¿¤È¤¨¤Ð, (CMObject ¤Î) 32 bit integer ¤Ç¤¢¤ë integer32 ¤ò BNF¤ÇÄêµÁ¤¹¤ì¤Ð, \begin{center} @@ -313,15 +497,27 @@ CMObject ¤Î ({\tt CMO\_INT32}, {\sl int32}\ n) ¤Ï, 32 bit integer $n$ ¤òɽ¸½¤·¤Æ¤¤¤ë¤ó¤À¤È¤¤¤¦¤³¤È¤¬, 1 ¹Ô¤Ç¤ï¤«¤ë. +*/ +/*&eg +(Example part has not yet been translated.) +*/ +/*&jp ¤³¤Îµ­Ë¡¤òÍѤ¤¤Æ, Á°Àá¤ÇƳÆþ¤·¤¿, Basic0 ¤Î CMObject ¤ò ·Á¼°Åª¤ËÄêµÁ¤·¤è¤¦. +*/ +/*&eg +By using this notation, let us define formally CMObjects in the group +Basic0. +*/ +/*&C + \bigbreak \noindent Group CMObject/Basic0 requires nothing. \\ Error2, Null, Integer32, Datum, Cstring, Mathcap, List $\in$ CMObject/Basic0. \\ -Document of CMObject/Basic0 is at {\tt http://www.math.kobe-u.ac.jp/openxxx} -(in Japanese) \\ +Document of CMObject/Basic0 is at {\tt http://www.math.kobe-u.ac.jp/OpenXM} +(in English and Japanese) \\ \begin{eqnarray*} \mbox{Error2}&:& ({\tt CMO\_ERROR2}, {\sl CMObject}\, \mbox{ob}) \\ \mbox{Null} &:& ({\tt CMO\_NULL}) \\ @@ -339,13 +535,20 @@ Document of CMObject/Basic0 is at {\tt http://www.math & & \mbox{--- m is the length of the list.} \end{eqnarray*} -Cstring ¤Ç, {\sl string} s ¤ÎÉôʬ¤ò {\tt byte} ¤Ëʬ²ò¤¹¤ì¤Ð, +*/ + + +//&jp Cstring ¤Ç, {\sl string} s ¤ÎÉôʬ¤ò {\tt byte} ¤Ëʬ²ò¤¹¤ì¤Ð, +//&eg In the definition of ``Cstring'', if we decompose ``{\sl string} s'' into bytes, then ``Cstring'' should be defined as +/*&C \begin{eqnarray*} \mbox{Cstring}&:& ({\tt CMO\_STRING},{\sl int32}\, \mbox{ n}, {\sl byte}\, \mbox{s[0]}, \ldots, {\sl byte}\ \mbox{s[n-1]}) \end{eqnarray*} -¤È¤Ê¤ë. +*/ +//&jp ¤È¤Ê¤ë. +/*&jp ¤Þ¤¿, ``Group CMObject/Basic0 requires nothing'' ¤Ï, °Ê²¼¤Ï, ¥°¥ë¡¼¥× CMObject/Basic0 ¤ÎÄêµÁ¤Ç¤¢¤ê, @@ -355,20 +558,53 @@ Cstring ¤Ç, {\sl string} s ¤ÎÉôʬ¤ò {\tt byte} ¤Ëʬ²ò¤ $\in$ CMObject/Basic0'' ¤Ï, ¥°¥ë¡¼¥× CMObject/Basic0 ¤Ë¤Ï, Error2, Null, Integer32, Datum, Cstring ¤Ê¤ë¥¯¥é¥¹¤Î object ¤¬Â°¤¹¤ë¤³¤È¤ò¼¨¤¹. +*/ +/*&eg +¤Þ¤¿, +``Group CMObject/Basic0 requires nothing'' +means that there is no super group to define CMO's in the group Basic0. +``Error2, Null, Integer32, Datum, Cstring, Mathcap, List +$\in$ CMObject/Basic0'' +means that +Error2, Null, Integer32, Datum, Cstring +are members of the group CMObject/Basic0. +*/ +/*&C +*/ + +/*&jp ¤Ç¤Ï, ¼ÂºÝ¤Î¥Ç¡¼¥¿¤Îɽ¸½¤ÎÎã¤ò¤ß¤Æ¤ß¤è¤¦. ¤¿¤È¤¨¤Ð, 32 bit integer ¤Î 1234 ¤Ï, +*/ +/*&eg +Let us see examples. +32 bit integer 1234 is expressed as +*/ +/*&C \begin{center} ({\tt CMO\_INT32}, 1234) \end{center} +*/ +/*&jp ¤È¤«¤¯. ʸ»úÎó ``Hello'' ¤Ï +*/ +/*&eg +The string ``Hello'' is expressed as +*/ +/*&C \begin{center} ({\tt CMO\_STRING}, 5, "Hello") \end{center} -¤È½ñ¤¯. +*/ +//&jp ¤È½ñ¤¯. +/*&C + +*/ +/*&jp CMOexpression ¤È, CMObject ¤Î¶èÊ̤òÍý²ò¤·¤Æ¤ª¤¯¤Î¤Ï½ÅÍפǤ¢¤ë. ¤¿¤È¤¨¤Ð \begin{center} @@ -426,10 +662,15 @@ byte ¥Ç¡¼¥¿ {\tt byte} ¤«¤Þ¤¿¤Ï \end{center} ¤Î ɸ½à encoding Ë¡¤Ë¤è¤ëɽ¸½¤Ç¤¢¤ë. +*/ +/*&eg +(This part has not yet been translated.) +*/ +//&jp \section{ Open XM ¤ÎÄÌ¿®¥â¥Ç¥ë} +//&eg \section{ Communication model of Open XM} (This part has not yet been translated) -\section{ Open XM ¤ÎÄÌ¿®¥â¥Ç¥ë} - +/*&jp ¤ï¤ì¤ï¤ì¤Ï, ¿ô³Ø¥×¥í¥»¥¹¤¬¥á¥Ã¥»¡¼¥¸¤ò ¸ò´¹¤·¤Ê¤¬¤é·×»»¤¬¿Ê¹Ô¤·¤Æ¤¤¤¯¤È¤¤¤¦¥â¥Ç¥ë¤òÁÛÄꤷ¤ÆÀ߷פò¤¹¤¹¤á¤Æ¤¤¤ë. ³Æ¥×¥í¥»¥¹¤Ï¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¤Ç¤¢¤ê, ¤³¤ì¤ò OX ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¤È¤è¤Ö. @@ -691,10 +932,12 @@ debug ¥â¡¼¥É¤òÈ´¤±¤¿¤¤, ¤Ê¤É¤ÎÍÑÅÓ¤ËÍøÍѤ¹¤ë. operator ¤Î¾ÜºÙ¤Ï¼¡¤ÎÀá¤ÇÀâÌÀ¤¹¤ë. ¤³¤ì¤é¤ÎÄê¿ô¤Î̾Á°¤Ï¥¤¥ó¥×¥ê¥á¥ó¥È¤Î¤È¤­Ã»½Ì·Á¤Çɽ¸½¤·¤Æ¤â¤è¤¤. +*/ +//&jp \section{ OX ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó } +//&eg \section{ OX stackmachine } (This section has not yet been translated.) -\section{ OX ¥µ¡¼¥Ð¥¹¥¿¥Ã¥¯¥Þ¥·¥ó } - +/*&jp ¤³¤ÎÀá¤Ç¤Ï, OX ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó operator ¤ÎÀâÌÀ (TCP/IP ¥½¥±¥Ã¥È¾å¤Ç¤Îɸ½à encoding Ë¡ ¤òÍѤ¤¤ë), ¤ª¤è¤Ó, ¥µ¥ó¥×¥ë¥µ¡¼¥Ð¤È¥ê¥ó¥¯¤¹¤ë¾ì¹ç¤Þ¤¿¤Ï @@ -1290,8 +1533,12 @@ typedef FILE2 * ox_stream; \end{enumerate} -\section{¸½ºß¸¡Æ¤Ãæ¤Îµ¡Ç½} +*/ +//&jp \section{¸½ºß¸¡Æ¤Ãæ¤Îµ¡Ç½} +//&eg \section{Projects in work in progress} (This part has not been translated.) + +/*&jp \subsection{ OX DATA with Length ¤Î¹½Â¤ } Digital signature ÉդΠ{\tt OX\_DATA} ¤Ï @@ -1385,9 +1632,12 @@ add, sub, mul, ¤Ê¤É¤Î´ðËÜŪ¤Ê·×»»¤Ï {\tt SM\_executeFu ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¤ÎÀ©¸æ¹½Â¤¤Ë¤Ä¤¤¤Æ¤â¸¡Æ¤¤·¤Æ¤¤¤ë. +*/ -\section{¥³¥ó¥È¥í¡¼¥ë¥á¥Ã¥»¡¼¥¸ (SMObject/TCPIP/Control)} +//&jp \section{¥³¥ó¥È¥í¡¼¥ë¥á¥Ã¥»¡¼¥¸ (SMObject/TCPIP/Control)} +//&eg \section{Control message (SMObject/TCPIP/Control)} (This section has not been translated.) +/*&jp \begin{enumerate} \item ¥µ¡¼¥Ð¤Ï {\tt SM\_control\_reset\_connection} @@ -1469,7 +1719,13 @@ Reset ¤ËÂФ¹¤ëÊÖ»ö. 0 0 2 03 (OX_SYNC_BALL) \end{verbatim} -\section{TCP/IP ¤Ç¤Î¥»¥Ã¥·¥ç¥ó¤Î¥¹¥¿¡¼¥È} +*/ + + +//&jp \section{TCP/IP ¤Ç¤Î¥»¥Ã¥·¥ç¥ó¤Î¥¹¥¿¡¼¥È} +//&eg \section{How to start a session on TCP/IP} (This section has not yet been translated.) + +/*&jp ¥³¥ó¥È¥í¡¼¥ë¥×¥í¥»¥¹, ·×»»¥×¥í¥»¥¹ ¤È¤â¤Ë, µ¯Æ°Ä¾¸å¤Ë 1 byte ¤Î¥Ç¡¼¥¿¤ò½ñ¤­½Ð¤· flush ¤¹¤ë. @@ -1559,24 +1815,33 @@ Byte order for engine process is network byte order. \end{verbatim} } -\section{ ¥ª¥Ö¥¸¥§¥¯¥È¤Îʸ»úÎóɽ¸½ } +*/ +//&jp \section{ ¥ª¥Ö¥¸¥§¥¯¥È¤Îʸ»úÎóɽ¸½ } +//&eg \section{ String expression of objects} + +/*&jp ʸ»úÎóɽ¸½¤Ï, ¥·¥¹¥Æ¥à xxx ¤Î¥Þ¥Ë¥å¥¢¥ë¤Ëµ­½Ò¤µ¤ì¤Æ¤¤¤ë°ì¼¡¸µÅªÆþ½ÐÎÏ·Á¼°¤Ë ¤·¤¿¤¬¤¦. +*/ +/*&eg +The string expression of objects of the system xxx is also used +for a string expression for the OX xxx server. -\section{ ¿ô, ¿¹à¼° ¤Î CMO ɽ¸½ } +*/ -¥¿¥°¤Î¼ïÎà. +//&jp \section{ ¿ô, ¿¹à¼° ¤Î CMO ɽ¸½ } +//&eg \section{ CMOexpressions for numbers and polynomials } + +/*&C @../SSkan/plugin/cmotag.h \begin{verbatim} #define CMO_MONOMIAL32 19 #define CMO_ZZ 20 -/* #define CMO_ZZ 32 */ #define CMO_QQ 21 #define CMO_ZERO 22 -/* #define CMO_DMS 23 Distributed monomial system */ #define CMO_DMS_GENERIC 24 #define CMO_DMS_OF_N_VARIABLES 25 #define CMO_RING_BY_NAME 26 @@ -1589,14 +1854,23 @@ Byte order for engine process is network byte order. #define CMO_LAMBDA 62 /* for function definition */ \end{verbatim} +*/ + +/*&jp °Ê²¼, ¥°¥ë¡¼¥× CMObject/Basic1, CMObject/Tree ¤ª¤è¤Ó CMObject/DistributedPolynomial ¤Ë°¤¹¤ë CMObject ¤Î·Á¼°¤òÀâÌÀ¤¹¤ë. \noroa{ tagged list ¤òƳÆþ¤¹¤Ù¤­¤«? cf. SSkan/plugin/cmo.txt } -³ÈÄ¥ BNF µ­Ë¡¤È CMOexpression ¤ò¤Þ¤¼¤¿µ­Ë¡¤ÇÄêµÁ¤¹¤ë. ---- ¤Ç¤Ï¤¸¤Þ¤ëʸ¤Ï¥³¥á¥ó¥È¤Ç¤¢¤ë. +*/ +/*&eg +In the sequel, we will explain on the groups +CMObject/Basic1, CMObject/Tree +and CMObject/DistributedPolynomial. +*/ +/*&jp + \bigbreak \noindent Group CMObject/Basic1 requires CMObject/Basic0. \\ @@ -1614,7 +1888,32 @@ ZZ, QQ, Zero, Rational, Indeterminate,$\in$ CMObject/B \mbox{Indeterminate} &:& ({\tt CMO\_INDETERMINATE}, {\sl Cstring}\, {\rm v}) \\ & & \mbox{ --- ÊÑ¿ô̾ $v$ . } \\ \end{eqnarray*} +*/ +/*&eg +\bigbreak +\noindent +Group CMObject/Basic1 requires CMObject/Basic0. \\ +ZZ, QQ, Zero, Rational, Indeterminate,$\in$ CMObject/Basic1. \\ +\begin{eqnarray*} +\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]} ) \\ +&:& \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{ --- Rational number $a/b$. } \\ +\mbox{Rational} &:& ({\tt CMO\_RATIONAL}, {\sl CMObject}\, {\rm a}, {\sl CMObject}\, {\rm b}) \\ +& & \mbox{ --- Rational expression $a/b$. } \\ +\mbox{Indeterminate} &:& ({\tt CMO\_INDETERMINATE}, {\sl Cstring}\, {\rm v}) \\ +& & \mbox{ --- Variable name $v$ . } \\ +\end{eqnarray*} +*/ +/*&C + +*/ + +/*&jp Indeterminate ¤ÏÊÑ¿ô̾¤ò¤¢¤é¤ï¤¹. v ¤Ï¥Ð¥¤¥ÈÎó¤Ç¤¢¤ì¤Ð¤Ê¤Ë¤òÍѤ¤¤Æ¤â¤è¤¤¤¬, ¥·¥¹¥Æ¥àËè¤ËÊÑ¿ô̾¤È¤·¤ÆÍѤ¤¤é¤ì¤ë¥Ð¥¤¥ÈÎó¤ÏÀ©¸Â¤¬¤¢¤ë. @@ -1624,7 +1923,17 @@ v ¤Ï¥Ð¥¤¥ÈÎó¤Ç¤¢¤ì¤Ð¤Ê¤Ë¤òÍѤ¤¤Æ¤â¤è¤¤¤¬, {\tt Dx} ¤Ï {\tt \#dx} ¤ÈÊÑ´¹¤¹¤ë¤Ê¤É¤Î escape sequence ¤òÍѤ¤¤Æ¼Â¸½¤¹¤ë¤Î¤Ï, ̵Íý¤¬¤¢¤ë¤è¤¦¤Ç¤¢¤ë. ¥Æ¡¼¥Ö¥ë¤òºîÀ®¤¹¤ëɬÍפ¬¤¢¤ë¤Ç¤¢¤í¤¦.) +*/ +/*&eg +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. +Indeterminates of CMO and internal variable names must be translated +in one to one correspondence. +*/ +/*&jp + \noindent Group CMObject/Tree requires CMObject/Basic1. \\ Tree, Lambda $\in$ CMObject/Basic1. \\ @@ -1639,8 +1948,27 @@ Tree, Lambda $\in$ CMObject/Basic1. \\ & & \mbox{ --- body ¤ò args ¤ò°ú¿ô¤È¤¹¤ë´Ø¿ô¤È¤¹¤ë. } \\ & & \mbox{ --- optional ¤Ê°ú¿ô¤¬É¬ÍפʤȤ­¤Ï, leaves ¤Î¸å¤Ø¤Ä¤Å¤±¤ë.} \\ \end{eqnarray*} +*/ +/*&eg +\noindent +Group CMObject/Tree requires CMObject/Basic1. \\ +Tree, Lambda $\in$ CMObject/Basic1. \\ +\begin{eqnarray*} +\mbox{Tree} &:& ({\tt CMO\_TREE}, {\sl Cstring}\, {\rm name}, + {\sl Cstring}\, {\rm cdname}, {\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{Lambda} &:& ({\tt CMO\_LAMBDA}, {\sl List}\, {\rm args}, + {\sl Tree} {\rm body}) \\ +& & \mbox{ --- a function with the arguments body. } \\ +& & \mbox{ --- optional arguments come after leaves.} \\ +\end{eqnarray*} +*/ +/*&jp + ¿ô¼°¤ò½èÍý¤¹¤ë¥·¥¹¥Æ¥à¤Ç¤Ï, Tree ¹½Â¤¤¬°ìÈ̤ˤâ¤Á¤¤¤é¤ì¤ë. ¤¿¤È¤¨¤Ð, $\sin(x+e)$ ¤Ï, {\tt (sin, (plus, x, e))} @@ -1676,7 +2004,15 @@ Lisp ¤Î Lambda ɽ¸½¤ÈƱ¤¸. ) \end{verbatim} +\noindent +Example: +\begin{verbatim} +sm1> [(plus) (Basic) [(123).. (345)..]] [(class) (tree)] dc :: +Class.tree [ $plus$ , $Basic$ , [ 123 , 345 ] ] +\end{verbatim} + + \bigbreak ¼¡¤Ë, ʬ»¶É½¸½Â¿¹à¼°¤Ë´Ø·¸¤¹¤ë¥°¥ë¡¼¥×¤òÄêµÁ¤·¤è¤¦. @@ -1858,7 +2194,7 @@ $ 3 x^2 y$ ¤Ï 6 ÊÑ¿ô¤Î¿¹à¼°´Ä¤Î¸µ¤È¤·¤Æ¤ß¤Ê¤µ¤ì¤Æ¤¤¤ë -\section{ºÆµ¢É½¸½Â¿¹à¼°¤ÎÄêµÁ} %% From this/noro/rp.tex +\subsection{ºÆµ¢É½¸½Â¿¹à¼°¤ÎÄêµÁ} \begin{verbatim} #define CMO_RECURSIVE_POLYNOMIAL 27 @@ -1917,13 +2253,23 @@ $$ x^3 (1234 y^5 + 17 ) + x^1 (y^10 + 31 y^5) $$ Èó²Ä´¹Â¿¹à¼°¤â¤³¤Î·Á¼°¤Ç¤¢¤é¤ï¤·¤¿¤¤¤Î¤Ç, ÀѤνç½ø¤ò¾å¤Î¤è¤¦¤Ë ¤¹¤ë¤³¤È. ¤Ä¤Þ¤ê, ¼çÊÑ¿ô¤«¤±¤ë·¸¿ô¤Î½çÈÖ. +\noindent +\begin{verbatim} +sm1 +sm1>(x^2-h). [(class) (recursivePolynomial)] dc /ff set ; +sm1>ff :: +Class.recursivePolynomial h * ((-1)) + (x^2 * (1)) +\end{verbatim} + + + int32 ¤È Integer32 ¤Î°ã¤¤. ¼¡¤Ë¤¯¤ë¥Ç¡¼¥¿¤¬¤«¤Ê¤é¤º int32 ¤È¤ï¤«¤Ã¤Æ¤ª¤ì¤Ð, int32 ¤òÍѤ¤¤ë. ¼¡¤Î¥Ç¡¼¥¿·¿¤¬¤ï¤«¤é¤Ê¤¤¤È¤­ Integer32 ¤òÍѤ¤¤ë. -\section{CPU°Í¸¤Î double } +\subsection{CPU°Í¸¤Î double } \begin{verbatim} #define CMO_64BIT_MACHINE_DOUBLE 40 @@ -2064,9 +2410,10 @@ CMO ¤Î stream ¤Ø¤ÎžÁ÷, stream ¤è¤ê¤ÎžÁ÷¤Ï, \end{enumerate} +\subsection{Îò»Ë} kan -- asir ´Ö¤Ç¤â°Ê¾å¤Î¤è¤¦¤Ë³«È¯¤¬¤¹¤¹¤ó¤À. -Risa/Asir ¤Î³«È¯¤¬¾ÂÄŤÎÉٻΥե©¡¼¥é¥à¤Ç¤ª¤³¤Ê¤ï¤ì¤Æ¤¤¤¿ +Risa/Asir ¤Î³«pȯ¤¬¾ÂÄŤÎÉٻΥե©¡¼¥é¥à¤Ç¤ª¤³¤Ê¤ï¤ì¤Æ¤¤¤¿ ¤³¤í, »ä¤¬¾ÂÄŤò, 1996ǯ, 1·î19Æü¤ËˬÌ䤷, {\tt Asir\_executeString()} ¤Îµ¡Ç½¤òÌîϤ¤µ¤ó¤Ë½ñ¤¤¤Æ¤â¤é¤Ã¤Æ, kan ¤è¤ê asir ¤òʸ»úÎó¤Ç¸Æ¤Ó½Ð¤¹ @@ -2118,6 +2465,8 @@ open XM ¥¹¥¿¥Ã¥¯¥Þ¥·¥ó¤ò¼Â¸½¤·¤Æ¤¤¤ë. {\tt ox\_lauch} ¤Ê¤ë̾Á°¤Ç¤¢¤ë¤¬, µ¡Ç½¤ÏƱ¤¸¤Ç¤¢¤ë. {\tt ox} ¤Î¥½¡¼¥¹¤Ï {\tt oxmain.c} ¤Ç¤¢¤ë. +\subsubsection{OpenXM/src/ox\_toolkit ¤Ë¤¢¤ë¥µ¥ó¥×¥ë¼ÂÁõ} +¤³¤Î¥Ç¥£¥ì¥¯¥È¥ê¤Î²òÀâʸ½ñ¤ò¸«¤è. \subsubsection{ ox\_null } @@ -2305,6 +2654,11 @@ CMObject ¤È kan/sm1 ¤Î object ¤Ï¼¡¤Îµ¬Â§¤Ë¤·¤¿¤¬¤¤ÊÑ´¹ {\tt OxVersion} ÊÑ¿ô¤Ç openXM ¤Î¥×¥í¥È¥³¥ë¤Î version ¤òɽ¤¹. +\subsubsection{ {\tt ox\_sm1} ¤òÍѤ¤¤¿¥¯¥é¥¤¥¢¥ó¥È¤Î¥Æ¥¹¥ÈÊýË¡ } +¤Þ¤À¤«¤¤¤Æ¤Ê¤¤. + +\subsubsection{ {\tt Asir} ¤òÍѤ¤¤¿¥µ¡¼¥Ð¤Î¥Æ¥¹¥ÈÊýË¡ } + \subsection{ ºÇ¾®¤Î TCP/IP ¥¯¥é¥¤¥¢¥ó¥È¤ÎÎã } Java ¤Þ¤¿¤Ï M2 ¤Ë¤è¤ë¥½¡¼¥¹¥³¡¼¥É¤ò·ÇºÜ¤ÎͽÄê. @@ -2384,6 +2738,8 @@ Free Mathematical Software Initiative ¤òºî¤ë¤Ù¤­¤À¤í¤¦ \subsection{ Change log } \begin{enumerate} +\item 1997/11/20 : ¤³¤Î document ¤ÎºÇ½é¤Î version ¤¬À¸¤Þ¤ì¤¿. + kxx/openxxx.tex ¤Ê¤ë̾Á°¤Ç¤¢¤Ã¤¿. \item 1999/07 : {\tt CMO\_ZZ} ¤Î·Á¼°¤òÊѤ¨¤¿. \item 1999/09/7, 9/8 : ʬ»¶É½¸½Â¿¹à¼°, Mathcap, RecursivePolynomial, ¤Î·Á¼°¤òÊѤ¨¤¿. asir, sm1 ¤Ë¼ÂÁõ¤·¤¿. ¥¨¥é¡¼½èÍý¤Î¤¿¤á¤Ë, @@ -2635,7 +2991,9 @@ Example: ¿ô¼°½èÍý, Vol 7, No 2, 2--17. (ISBN4-87243-086-7, SEG ½ÐÈÇ, Tokyo). \\ {\tt http://www.math.kobe-u.ac.jp/openxxx/} \end{thebibliography} +*/ +/*&C \bigbreak \bigbreak \bigbreak @@ -2656,3 +3014,4 @@ Example: } \end{document} +*/ \ No newline at end of file