version 1.2, 2000/03/11 09:17:42 |
version 1.5, 2000/03/14 14:25:27 |
|
|
%% $OpenXM: OpenXM/src/ox_math/documents/math2ox.texi,v 1.1 2000/03/08 06:59:37 ohara Exp $ |
%% $OpenXM: OpenXM/src/ox_math/documents/math2ox.texi,v 1.4 2000/03/14 05:46:09 ohara Exp $ |
|
|
\input texinfo |
\input texinfo |
@iftex |
@iftex |
|
|
* Sample Programs:: |
* Sample Programs:: |
@end menu |
@end menu |
|
|
|
@node Starting OX servers,,, Top |
|
|
|
@chapter Starting OX servers |
|
|
|
@node Starting OX servers on the localhost,,, Starting OX servers |
|
@section Starting OX servers on the localhost |
|
|
|
@c Description of OxStart |
|
@menu |
|
* OxStart:: |
|
@end menu |
|
@node OxStart,,, |
|
@subsection @code{OxStart} |
|
@findex OxStart |
|
@table @t |
|
@item OxStart[@var{s}] |
|
:: Start the OX server @code{s}. |
|
@end table |
|
|
|
@table @var |
|
@item return |
|
Integer |
|
@item s |
|
String |
|
@end table |
|
|
|
@itemize @bullet |
|
@item It starts the OX server @code{s}. |
|
@item Servers are looked for in the directory $OpenXM_HOME/bin, hoge hoge. |
|
@end itemize |
|
|
|
@example |
|
In[1]:= Install["math2ox"] |
|
In[2]:= pid = OxStart["ox_sm1"] |
|
@end example |
|
|
|
In this example, @code{ox_sm1} is started on the local machine. |
|
|
|
|
|
|
|
|
|
@node Starting OX servers on a remote machine,,, Top |
|
@section Starting OX servers on a remote machine |
|
|
|
In order to connect to remote OX servers, it is convenient, secure and |
|
recommended to use @code{ssh} (Secure SHell). |
|
The function @code{OxStartRemoteSSH} starts remote OX servers |
|
by ssh. Of course, you are supposed to be able to login the remote |
|
machine by @code{ssh} and @code{$Remote_OpenXM_HOME/rc/cshrc} or |
|
@code{$Remote_OpenXM_HOME/rc/bashrc} are executed from the login shell |
|
of your remote machine. |
|
The function @code{OxStartRemoteSSH[]} does not request your password, |
|
that is, you need to be using @code{ssh-agent} before calling |
|
@code{OxStartRemoteSSH[]}. |
|
Then there will be no check of password. |
|
|
|
@c Description of OxStartRemoteSSH |
|
@menu |
|
* OxStartRemoteSSH:: |
|
@end menu |
|
@node OxStartRemoteSSH,,, |
|
@subsection @code{OxStartRemoteSSH} |
|
@findex OxStartRemoteSSH |
|
@table @t |
|
@item OxStartRemoteSSH[@var{s}, @var{host}] |
|
:: start the OX server @code{s} on the remote machine @code{host} by ssh. |
|
@end table |
|
|
|
@table @var |
|
@item return |
|
Integer |
|
@item s |
|
String |
|
@item host |
|
String |
|
@end table |
|
|
|
We note that the @code{OxStartRemoteSSH[]} is an experimental implementation. |
|
|
|
@itemize @bullet |
|
@item It starts the OX server @code{s}. |
|
@item Servers are looked for in the directory $OpenXM_HOME/bin, hoge hoge. |
|
@end itemize |
|
|
|
@example |
|
In[2]:= pid = OxStartRemoteSSH["ox_sm1", "remotehost"] |
|
@end example |
|
|
|
In this example, @code{ox_sm1} is started on the remote machine @code{remotehost}. |
|
|
@node Mathematica Client Functions,,, Top |
@node Mathematica Client Functions,,, Top |
|
|
@chapter Mathematica Client Functions |
@chapter Mathematica Client Functions |
|
|
|
|
@itemize @bullet |
@itemize @bullet |
@item It starts the OX server @code{s}. |
@item It starts the OX server @code{s}. |
@item Servers are looked for in the directory $OenXM_HOME/bin , hoge hoge. |
@item Servers are looked for in the directory $OpenXM_HOME/bin, hoge hoge. |
@end itemize |
@end itemize |
|
|
@example |
@example |
Line 87 In this example, @code{ox_sm1} is started on the local |
|
Line 177 In this example, @code{ox_sm1} is started on the local |
|
@findex OxSendMessage |
@findex OxSendMessage |
@table @t |
@table @t |
@item OxSendMessage[@var{pid}, @var{s}] |
@item OxSendMessage[@var{pid}, @var{s}] |
:: SendMessage @code{s} to the OX server @code{pid}. |
:: send a message @code{s} to the OX server @code{pid}. |
@end table |
@end table |
|
|
@table @var |
@table @var |
@item return |
@item return |
Integer |
Integer |
@item id |
@item pid |
Integer |
Integer |
@item s |
@item s |
String |
String |
@end table |
@end table |
|
|
@itemize @bullet |
|
@item It starts the OX server @code{s}. |
|
@item Servers are looked for in the directory $OenXM_HOME/bin , hoge hoge. |
|
@end itemize |
|
|
|
@example |
@example |
In[4] := OxSendMessage[pid, "(CMO_LIST, (CMO_STRING, "hello world"), (CMO_ZERO))"] |
In[4] := OxSendMessage[pid, "(CMO_LIST, (CMO_STRING, "hello world"), (CMO_ZERO))"] |
In[5] := OxSendMessage[pid, "(OX_COMMAND, (SM_popCMO))"] |
In[5] := OxSendMessage[pid, "(OX_COMMAND, (SM_popCMO))"] |
Line 114 In this example, an OX data message |
|
Line 199 In this example, an OX data message |
|
and an OX command message (OX_COMMAND, (SM_popCMO)) are sent to |
and an OX command message (OX_COMMAND, (SM_popCMO)) are sent to |
the OX server @code{pid}. |
the OX server @code{pid}. |
|
|
@c Put descriptions of a next function. |
@c Description of OxPopCMO |
|
@menu |
|
* OxPopCMO:: |
|
@end menu |
|
@node OxPopCMO,,, Mathematica Client Functions |
|
@section @code{OxPopCMO} |
|
@findex OxPopCMO |
|
@table @t |
|
@item OxPopCMO[@var{pid}] |
|
:: pop an object on the top of the stack. |
|
@end table |
|
|
|
@table @var |
|
@item return |
|
Manual |
|
@item pid |
|
Integer |
|
@end table |
|
|
@node Starting OX servers on a remote machines,,, Top |
The @code{OxPopCMO[]} function pops an object on the top of the stack of |
@chapter Starting OX servers on a remote machines |
the OX stack machine @code{pid} and returns the object. |
|
The return type of the function @code{OxPopCMO[]} is @code{Manual} in |
|
terms of MathLink, that is, an object of suitable type is returned. |
|
|
|
@example |
|
In[5] := cmo = OxPopCMO[pid] |
|
@end example |
|
|
|
@c Description of OxPopString |
|
@menu |
|
* OxPopString:: |
|
@end menu |
|
@node OxPopString,,, Mathematica Client Functions |
|
@section @code{OxPopString} |
|
@findex OxPopString |
|
@table @t |
|
@item OxPopString[@var{pid}] |
|
:: get a string from the OX server @code{pid}. |
|
@end table |
|
|
|
@table @var |
|
@item return |
|
String |
|
@item pid |
|
Integer |
|
@end table |
|
|
|
The @code{OxPopString[]} function pops an object on the top of the stack |
|
of the OX stack machine @code{pid} and returns a string which is |
|
translated from the object by the OX stack machine. |
|
|
|
@example |
|
In[5] := string = OxPopString[pid] |
|
@end example |
|
|
|
@c Description of OxClose |
|
@menu |
|
* OxClose:: |
|
@end menu |
|
@node OxClose,,, Mathematica Client Functions |
|
@section @code{OxClose} |
|
@findex OxClose |
|
@table @t |
|
@item OxClose[@var{pid}] |
|
:: close the connection to the OX server @code{pid}. |
|
@end table |
|
|
|
@table @var |
|
@item return |
|
none |
|
@item pid |
|
Integer |
|
@end table |
|
|
|
The @code{OxClose[]} function closes the connection to the OX server |
|
@code{pid}. |
|
|
|
@example |
|
In[5] := OxClose[pid] |
|
@end example |
|
|
|
@c Description of OxExecuteString |
|
@menu |
|
* OxExecuteString:: |
|
@end menu |
|
@node OxExecuteString,,, Mathematica Client Functions |
|
@section @code{OxExecuteString} |
|
@findex OxExecuteString |
|
@table @t |
|
@item OxExecuteString[@var{pid}, @var{command}] |
|
:: execute @code{command} on the OX server @code{pid}. |
|
@end table |
|
|
|
@table @var |
|
@item return |
|
none |
|
@item pid |
|
Integer |
|
@item command |
|
String |
|
@end table |
|
|
|
The @code{OxExecuteString[]} function executes @code{command} on the OX server |
|
@code{pid}. |
|
The string @code{command} is interpreted in local language of the OX server. |
|
|
|
@example |
|
In[5] := OxExecuteString["print(1+2);"] |
|
@end example |
|
|
|
@c Description of OxGet |
|
@menu |
|
* OxGet:: |
|
@end menu |
|
@node OxGet,,, Mathematica Client Functions |
|
@section @code{OxGet} |
|
@findex OxGet |
|
@table @t |
|
@item OxGet[@var{pid}] |
|
:: get an object from the connection to the OX server @code{pid}. |
|
@end table |
|
|
|
@table @var |
|
@item return |
|
Manual |
|
@item pid |
|
Integer |
|
@end table |
|
|
|
The @code{OxGet[]} function gets an object from the connection to the OX server |
|
@code{pid}. |
|
|
|
@example |
|
In[5] := cmo = OxGet[pid] |
|
@end example |
|
|
|
@c Put descriptions of a next function. |
|
|
@node Sample Programs,,, Top |
@node Sample Programs,,, Top |
@chapter Sample Programs |
@chapter Sample Programs |
|
|
@tex |
@enumerate |
\noindent |
@item |
1. |
@code{OpenXM/lib/math/primadec.m} is a Mathematica program |
{\tt OpenXM/lib/math/primadec.m} is a Mathematica program |
|
to make primary ideal decompositions by calling |
to make primary ideal decompositions by calling |
{\tt ox\_asir}. |
@code{ox_asir}. |
As to usages, see comments in this file. |
As to usages, see comments in this file. |
|
|
\noindent 2. |
@item |
{\tt OpenXM/lib/math/beta.m} is a Mathematica program |
@code{OpenXM/lib/math/beta.m} is a Mathematica program |
to get beta-nbc bases by calling {\tt ox\_asir}. |
to get beta-nbc bases by calling @code{ox_asir}. |
@end tex |
@end enumerate |
|
|
|
@node Example,,, Top |
|
@chapter Example |
|
|
|
The @code{math2ox} has the following commands: |
|
|
|
@code{OxStart[s_String], |
|
OxStartInsecure[s_String, p_Integer, q_Integer], |
|
OxStartRemoteSSH[s_String, t_String], |
|
OxExecuteString[s_String], OxSendMessage[s_String], OxGet[], OxPopCMO[], |
|
OxPopString[], OxClose[], OxReset[]}. |
|
|
|
First, let us load the math2ox. |
|
@example |
|
In[1]:= <<oxclient.m |
|
@end example |
|
|
|
Second, let us open a connection with an OX server. |
|
For example, if we want to call the @code{ox_sm1} (the kan/sm1 server), then |
|
@example |
|
In[2] := pid = OxStart[pid, "ox_sm1"] |
|
@end example |
|
where we have the connection of reverse mode. The OxStart function |
|
automatically invoke @code{ox_sm1} on the local machine. If you need to |
|
connect an OX server on a remote machine, then you can use reverse mode. |
|
@example |
|
In[2] := pid = OxStartInsecure["water.s.kanazawa-u.ac.jp", 1300, 1400] |
|
@end example |
|
The mode is not secured but you can crypt data stream by using ssh |
|
(Secure SHell). |
|
@example |
|
In[3] := Run["ssh -f water ox -insecure -ox ox_sm1 -host water"] |
|
@end example |
|
|
|
Third, let us send an OX message to the OX server. |
|
We can send an OX message written in OX/CMO expressions. |
|
@example |
|
In[4] := OxSendMessage[pid, "(CMO_LIST, (CMO_STRING, "hello world"), (CMO_ZERO))"] |
|
In[5] := OxSendMessage[pid, "(OX_COMMAND, (SM_popCMO))"] |
|
@end example |
|
If the expression conains syntax errors, then nothing is sent. |
|
|
|
Remarks: if @code{SM_popCMO} is sent by the @code{OxSendMessage[]} function, then the |
|
OX stack machine returns the top of the stack to the @code{math2ox}. |
|
Then, in order to receive the message, we need to call the @code{OxGet[]} |
|
function always after executing @code{OxSendMessage[]} |
|
@example |
|
In[6] := OxGet[pid] |
|
@end example |
|
|
|
If we do not use the @code{OxSendMessage} function and use the @code{OxPopCMO[]} |
|
function, then we do not need to call the @code{OxGet[]}. |
|
@example |
|
In[5] := OxPopCMO[pid] |
|
@end example |
|
|
|
Fourth, if we send a command expressed in the local language of the OX |
|
server, then we need to call the @code{OxExecuteString[]} function. |
|
|
|
Last, let us close the connection. |
|
@example |
|
In[7] := OxClose[pid] |
|
@end example |
|
|
|
@c @node Bibliography,,, Top |
|
@c @unnumbered Bibliography |
|
@node References,,, Top |
|
@unnumbered References |
|
|
|
@enumerate |
|
@item |
|
M. Noro, N. Takayama: |
|
Design and Implementation of OpenXM, 1996, 1997, 1998, 1999, 2000. |
|
|
|
@item |
|
@code{http://www.math.kobe-u.ac.jp/OpenXM/} |
|
|
|
@item |
|
M. Noro, K. Ohara, N. Takayama: |
|
{Introduction to Open Asir}, 1999, Suusiki Shori, Vol 7, No 2, |
|
2--17. (ISBN4-87243-086-7, SEG Publishing, Tokyo). (in Japanese) |
|
|
|
@item |
|
Stephen Wolfram: |
|
{The Mathematica Book}, Third edition, |
|
Wolfram Media/Cambridge University Press, 1996. |
|
|
|
@item |
|
T. Miyachi: |
|
{Mathematica Network Programming}, |
|
Iwanami Shoten Publishers, 1998. (in Japanese) |
|
@end enumerate |
|
|
@node Index,,, Top |
@node Index,,, Top |
@unnumbered Index |
@unnumbered Index |