[BACK]Return to math2ox.texi CVS log [TXT][DIR] Up to [local] / OpenXM / src / ox_math / documents

Diff for /OpenXM/src/ox_math/documents/math2ox.texi between version 1.3 and 1.7

version 1.3, 2000/03/14 02:21:40 version 1.7, 2000/03/15 08:22:20
Line 1 
Line 1 
 %% $OpenXM: OpenXM/src/ox_math/documents/math2ox.texi,v 1.2 2000/03/11 09:17:42 ohara Exp $  %% $OpenXM: OpenXM/src/ox_math/documents/math2ox.texi,v 1.6 2000/03/14 14:59:39 ohara Exp $
   
 \input texinfo  \input texinfo
 @iftex  @iftex
Line 34 
Line 34 
 @node Top,, (dir), (dir)  @node Top,, (dir), (dir)
   
 @menu  @menu
   * Starting OX servers::
 * Mathematica Client Functions::  * Mathematica Client Functions::
 * Sample Programs::  * Sample Programs::
   * Example::
   * References::
 @end menu  @end menu
   
 @node Starting OX servers,,, Top  @node Starting OX servers,,, Top
   
 @chapter Starting OX servers  @chapter Starting OX servers
   
   @node Loading an OX Client on Mathematica,,, Starting OX servers
   @section Loading an OX Client on Mathematica
   
   The program @code{math2ox} is an external module for Mathematica
   to call OpenXM servers.
   The @code{math2ox} communicates with OpenXM servers by the OpenXM protocol
   and communicates with Mathematica by MathLink.
   
   In order to execute @code{math2ox}, you need to type as follows:
   @example
   In[1]:= Install["math2ox"]
   @end example
   
   We recommend loading a Mathematica program @code{oxclient.m} instead of
   calling @code{Install[]} directly:
   @example
   In[1] := <<oxclient.m
   @end example
   
 @node Starting OX servers on the localhost,,, Starting OX servers  @node Starting OX servers on the localhost,,, Starting OX servers
 @section Starting OX servers on the localhost  @section Starting OX servers on the localhost
   
Line 66  String
Line 87  String
   
 @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
 In[1]:= Install["math2ox"]  In[1]:= pid = OxStart["ox_sm1"]
 In[2]:= pid = OxStart["ox_sm1"]  
 @end example  @end example
   
 In this example, @code{ox_sm1} is started on the local machine.  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.
   
   @node Starting the X Window System with ssh-agent,,, Starting OX servers on a remote machine
   @subsection Starting the X Window System with ssh-agent
   
 @node Starting OX servers on a remote machine,,, Top  If you use the @code{startx} command to boot the X Window System, then
 @section Starting OX servers on a remote machine  we recommend you replace the command by @code{ssh-agent startx}.
   @example
   bash$ ssh-agent startx
   @end example
   If you use @code{xdm} program to login your machine,
   then your @code{.xsession} script needs to contain the followings:
   @example
   exec ssh-agent .xinitrc
   @end example
   @noindent
   where @code{.xinitrc} is executable.
   
 The OpenXM ptotocol says that, if we need to run an OX server on a  After booting the X Window System, you need to type on suitable terminal
 remote machine, then an OX client connect to the OX server on the remote  emulator as follows:
 machine by insecure mode.  @example
   bash$ ssh-add
   @end example
   @noindent
   and input your passphrase.
   
 We note that insecure mode has a risk.  See ssh(1), ssh-agent(1), ssh-add(1), and ssh-keygen(1) for detail.
 For example, we are afraid our packets are listened in.  
 However we know a simple method to plug such a security hole.  
 That is, a connection by ssh (Secure SHell).  
 Of course OpenXM protocol does not request ssh formally, but our  
 mathematica client (math2ox) in current implementation  
 needs ssh to connect a remote server.  
   
 @c  Description of OxStartRemoteSSH  @c  Description of OxStartRemoteSSH
 @menu  @menu
Line 103  needs ssh to connect a remote server.
Line 146  needs ssh to connect a remote server.
 @findex OxStartRemoteSSH  @findex OxStartRemoteSSH
 @table @t  @table @t
 @item OxStartRemoteSSH[@var{s}, @var{host}]  @item OxStartRemoteSSH[@var{s}, @var{host}]
 ::  start the OX server @code{s} on the remote machine @code{host} via ssh.  ::  start the OX server @code{s} on the remote machine @code{host} by ssh.
 @end table  @end table
   
 @table @var  @table @var
Line 115  String
Line 158  String
 String  String
 @end table  @end table
   
 We note that the inplementation of function is incomplete!  We note that the @code{OxStartRemoteSSH[]} is an experimental implementation.
   
 @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
 In[2]:= pid = OxStartRemoteSSH["ox_sm1", "remotehost"]  In[1]:= pid = OxStartRemoteSSH["ox_sm1", "remotehost"]
 @end example  @end example
   
 In this example, @code{ox_sm1} is started on the remote machine @code{remotehost}.  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
   
 The program @code{math2ox} is an external module for Mathematica  
 to call OpenXM servers.  
 The @code{math2ox} communicates with OpenXM servers by the OpenXM protocol  
 and communicates with Mathematica by MathLink.  
   
 @c  Description of OxStart  @c  Description of OxStart
 @menu  @menu
 * OxStart::  * OxStart::
Line 158  String
Line 195  String
   
 @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
 In[1]:= Install["math2ox"]  In[1]:= pid = OxStart["ox_sm1"]
 In[2]:= pid = OxStart["ox_sm1"]  
 @end example  @end example
   
 In this example, @code{ox_sm1} is started on the local machine.  In this example, @code{ox_sm1} is started on the local machine.
Line 218  Manual
Line 254  Manual
 Integer  Integer
 @end table  @end table
   
 The @code{OxPopCMO[]} function pop an object on the top of the stack of  The @code{OxPopCMO[]} function pops an object on the top of the stack of
 the OX stack machine @code{pid} and returns the object.  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  @example
 In[5] := cmo = OxPopCMO[]  In[5] := cmo = OxPopCMO[pid]
 @end example  @end example
   
 @c  Description of OxPopString  @c  Description of OxPopString
Line 244  String
Line 282  String
 Integer  Integer
 @end table  @end table
   
 The @code{OxPopString[]} function pop an object on the top of the stack  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  of the OX stack machine @code{pid} and returns a string which is
 translate from the object by the OX stack machine.  translated from the object by the OX stack machine.
   
 @example  @example
 In[5] := string = OxPopString[]  In[5] := string = OxPopString[pid]
 @end example  @end example
   
 @c  Description of OxClose  @c  Description of OxClose
Line 271  none
Line 309  none
 Integer  Integer
 @end table  @end table
   
 The @code{OxClose[]} function close the connection to the OX server  The @code{OxClose[]} function closes the connection to the OX server
 @code{pid}.  @code{pid}.
   
 @example  @example
 In[5] := OxClose[]  In[5] := OxClose[pid]
 @end example  @end example
   
 @c  Description of OxExecuteString  @c  Description of OxExecuteString
Line 301  String
Line 339  String
   
 The @code{OxExecuteString[]} function executes @code{command} on the OX server  The @code{OxExecuteString[]} function executes @code{command} on the OX server
 @code{pid}.  @code{pid}.
 @code{command} is interpreted in local language of the OX server.  The string @code{command} is interpreted in local language of the OX server.
   
 @example  @example
 In[5] := OxExecuteString["print(1+2);"]  In[5] := OxExecuteString["print(1+2);"]
Line 326  Manual
Line 364  Manual
 Integer  Integer
 @end table  @end table
   
 The @code{OxGet[]} function get an object from the connection to the OX server  The @code{OxGet[]} function gets an object from the connection to the OX server
 @code{pid}.  @code{pid}.
   
 @example  @example
 In[5] := cmo = OxGet[]  In[5] := cmo = OxGet[pid]
 @end example  @end example
   
 @c  Put descriptions of a next function.  @c  Put descriptions of a next function.
Line 338  In[5] := cmo = OxGet[]
Line 376  In[5] := cmo = OxGet[]
 @node Sample Programs,,, Top  @node Sample Programs,,, Top
 @chapter Sample Programs  @chapter Sample Programs
   
 @tex  @enumerate
 \noindent  @item
 1.  @code{OpenXM/lib/math/oxclient.m} is a Mathematica program
 {\tt OpenXM/lib/math/primadec.m} is a Mathematica program  to load the @code{math2ox} and to define some Mathematica
   functions for @code{primadec.m} and @code{beta.m}.
   
   @item
   @code{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[],
   OxStartInsecure[],
   OxStartRemoteSSH[],
   OxExecuteString[],
   OxSendMessage[],
   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["ox_sm1"]
   @end example
   @noindent
   where we have the connection of reverse mode.  The @code{OxStart}
   function automatically invoke @code{ox_sm1} on the localhost.
   If you need to connect remote OX servers, then you can use reverse mode.
   @example
   In[2] := pid = OxStartRemoteSSH["ox_sm1", "orange.math.kobe-u.ac.jp"]
   @end example
   
   @c  Remarks: old version.
   @c  @example
   @c  In[2] := pid = OxStartInsecure["water.s.kanazawa-u.ac.jp", 1300, 1400]
   @c  @end example
   @c  The mode is not secured but you can crypt data stream by using ssh
   @c  (Secure SHell).
   @c  @example
   @c  In[3] := Run["ssh -f water ox -insecure -ox ox_sm1 -host water"]
   @c  @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))"]
   @end example
   @noindent
   If the expression contains syntax errors, then nothing is sent.
   
   If you need to get the object on the top of the stack of an OX server
   @code{pid}, then you can call the following function:
   @example
   In[5] := cmo = OxPopCMO[pid]
   @end example
   
   The function @code{OxPopCMO} above is equivalent to
   the following two command:
   @example
   In[5] := OxSendMessage[pid, "(OX_COMMAND, (SM_popCMO))"]
   In[6] := cmo = OxGet[pid]
   @end example
   
   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[]}.
   That is @code{OxGet} flushes the communication route to @code{pid}.  If
   we never use the @code{OxSendMessage} function, then we do not need to
   call the @code{OxGet[]}.
   
   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

Legend:
Removed from v.1.3  
changed lines
  Added in v.1.7

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>