Artifact d3b18f1bf5e3f996f5b42aa2f50d815b0eea83e2a46128b7783b668ffb4df94f:
- Executable file
r37/doc/misc/oper.tex
— part of check-in
[f2fda60abd]
at
2011-09-02 18:13:33
on branch master
— Some historical releases purely for archival purposes
git-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1375 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: arthurcnorman@users.sourceforge.net, size: 13977) [annotate] [blame] [check-ins using] [more...]
\hoffset -.5cm \documentstyle[11pt]{report} \parindent 0pt \parskip 6pt \pagestyle{empty} \setlength{\topsep}{0.5\baselineskip} % above and below environments \setlength{\itemsep}{\topsep} \setlength{\abovedisplayskip}{\topsep} % for "long" equations \setlength{\belowdisplayskip}{\topsep} \renewcommand{\arraystretch}{1.3} \renewcommand{\thechapter}{\arabic{chapter}} \renewcommand{\thesection}{\arabic{section}.} \renewcommand{\thesubsection}{\arabic{subsection}.} \newcommand{\REDUCE}{REDUCE} % The following are version dependent. \newcommand{\system}{Sun Microsystems SPARC systems and Sun 4} \newcommand{\programsize}{2.5} % megabytes \newcommand{\virtualsize}{128} % megabytes \newcommand{\timingmachine}{Sun 4/260} \newcommand{\machinefactors}{SparcStation 1+&0.9 \\ SparcStation 2 &0.7 \\ SparcServer &0.9 \\ Sun 4/110 &1.1 \\ Sun 4/65 &1.0} \newcommand{\cartridgecommand}{tar xbf 126 /dev/rst0} \newcommand{\tapespace}{8.8} % megabytes \newcommand{\createtime}{11} % seconds \newcommand{\executablespace}{2.5} % megabytes \newcommand{\testtime}{5.5} % seconds \newcommand{\floatingpointdigits}{12} \begin{document} \vspace*{1cm} \begin{center} {\LARGE {\bf REDUCE} User's Guide for the } \vspace*{2mm} \\ {\LARGE {\system} Workstations} \\ \vspace*{.5cm} {\LARGE Version 3.4} \\[0.3cm] {\large by} \\[0.3cm] {\Large Anthony C. Hearn}\\ {\large RAND} \\ {\large Santa Monica, CA 90407-2138 USA} \\[0.3cm] {\large and} \\[0.3cm] {\Large Winfried Neun}\\ {\large ZIB} \\ {\large 1000 Berlin 31, FRG} \\[0.3cm] {\large July 1991}\\[0.5cm] \vfill {\bf Abstract} \end{center} This document describes operating procedures for running {\REDUCE} specific to the {\system} workstations. \begin{center} {ZIB Publication M 2.010.04} \\ \vspace*{1cm} Copyright \copyright 1991 by RAND and ZIB. All rights reserved. \end{center} Registered system holders may reproduce all or any part of this publication for internal purposes, provided that the source of the material is clearly acknowledged, and the copyright notice is retained. \newpage \tableofcontents \thispagestyle{empty} \newpage \setcounter{page}{1} \pagestyle{plain} \section{Preliminary} This document describes operating procedures for running {\REDUCE} specific to the {\system} workstations. It supplements the {\REDUCE} User's Manual, describing features, extensions and limitations specific to this implementation of {\REDUCE}. This manual assumes that {\tt csh} is used as the command shell. If a different shell is used, please change commands or filenames accordingly. The files that form the {\REDUCE} system are stored under the {\REDUCE} root directory, identified here as ``\$reduce''. To execute {\REDUCE} first check that the {\REDUCE} binary directory, identified here as {\tt reduce.bindir} is included in your search path. If not, the path definition in your .login or .cshrc file should be modified accordingly, e.g.: \begin{verbatim} set path=( <reduce.bindir> $path) \end{verbatim} Alternatively, for calling {\REDUCE} without a search path reference, you can put an entry in the .login or .cshrc file to define an alias for calling {\REDUCE} directly, e.g.: \begin{verbatim} alias reduce <reduce.bindir>/reduce \end{verbatim} In order to access the {\REDUCE} directories most easily, you should also include the statement (csh dependent) \begin{verbatim} setenv reduce <REDUCE root directory> \end{verbatim} Directories of interest to the general user include \$reduce/doc, containing relevant documents and \$reduce/xmpl, containing various examples of the use of {\REDUCE}. The more serious user may also be interested in the {\REDUCE} sources stored in the directory \$reduce/src. \\ To run {\REDUCE}, you enter (in lower case only) \begin{verbatim} reduce \end{verbatim} or, if you like a simple protocol of your session written into a file, \begin{verbatim} reduce | tee <file> \end{verbatim} after which {\REDUCE} will respond with a banner line and then prompt for the first line of input: \begin{verbatim} REDUCE 3.4, 15-Jul-91 ... 1: \end{verbatim} You can now begin entering commands. Alternatively you can enter the full pathname: \begin{verbatim} <reduce.bindir>/reduce \end{verbatim} \section{{\REDUCE} Documentation} {\REDUCE} documents are kept in the directory \$reduce/doc . These include descriptions of all user contributed packages and the following: \begin{center} \begin{tabular}{rl} reduce.tex & {\REDUCE} User's Manual in \LaTeX\ format \\ install.tex & Installation instructions in \LaTeX\ format \\ oper.tex & System specific operation notes in \LaTeX\ format \\ sl.doc & Standard LISP Report in plain text format. % bugs33.doc & Known bugs and problems in REDUCE 3.3. \end{tabular} \end{center} \section{An Introduction to {\REDUCE}} New users of {\REDUCE} are advised to process the seven {\REDUCE} Lessons, which are available as \$reduce/xmpl/less$\langle$i$\rangle$. For example, to run Lesson 1, you would say: \begin{verbatim} in "$reduce/xmpl/less1"; \end{verbatim} A number of example files are also contained in the \$reduce/xmpl directory. These show how many of the facilities available in {\REDUCE} are used. \section{Resource Requirement} The distributed version of {\REDUCE} requires approximately {\executablespace} megabytes for storage of the executable binary file. At run time, it takes its default execution size from the underlying PSL system. This size can be changed with the \verb|set_heap_size| command (see chapter 7). This implementation will allocate up to {\virtualsize} megabytes dynamically, if the operating system supplies a sufficiently large swap space on disks. \section{File Handling} The file names that appear in {\tt in}, {\tt out} and {\tt shut} statements follow normal UNIX conventions. If the name contains uppercase or special characters (e.g., \verb| $ ~ . /|) it must be enclosed in double quotes (``FileName"). Whereas, if an identifier is used as a filename all characters are interpreted as lower case. Filenames containing patterns \verb| ~user, ~/ or $var| are expanded , whereas patterns including \verb| * , ? , {...} or [...]| are not expanded. If you execute the statement (csh dependent) \begin{verbatim} source $reduce/util/reduce-names \end{verbatim} (preferably in your .login or .cshrc file), {\REDUCE} sub-directories such as \$reduce/xmpl can then be referenced using symbolic names. These are formed by prefixing \$r to the sub-directory names. Thus less1 can also be input by the statement \begin{verbatim} in "$rxmpl/less1"; \end{verbatim} \section{Internal Parameters} \subsection{Object Sizes} The maximum string and identifier lengths are limited only by the underlying PSL base. The current implementation allows several thousand characters in both identifiers and strings. However, we recommend that such names be limited to 24 characters or less for compatibility with other versions of {\REDUCE}. In the default precision, floating point numbers are printed in fixed-point notation rounded to {\floatingpointdigits} digits. Arbitrary precision integer and real arithmetic are supported. \subsection{Special Characters and Interrupts} Lower case input is permitted, but converted to upper case unless the switch {\tt raise} is off. The end-of-file character is $\langle$control$\rangle$D. A terminal interrupt (often $\langle$del$\rangle$ or $\langle$control$\rangle$C) causes the current calculation to halt. The user is then prompted whether to continue the evaluation. If not, {\REDUCE} prompts for the next command. In some cases the continuation prompt may be omitted and {\REDUCE} immediately prompts for the next command. $\langle$escape$\rangle$ is used to terminate strings in the {\REDUCE} interactive editor. \subsection{Miscellaneous} There is no link currently to an external editor. The internal ordering on alphabetic characters is from A through Z followed by a through z. Times (as reported by {\tt on time; } or {\tt showtime;}) are given in milliseconds, and measure execution time and garbage collection time separately. They do not include operating system overhead (e.g., swapping time). To exit {\REDUCE} use {\tt bye;} . Alternatively, if you want to continue the {\REDUCE} session later use {\tt <control>Z}. To restart, one says {\tt fg}, or another valid UNIX command for this purpose. Use the UNIX {\tt kill} command to remove the job. \section{Customizing the {\REDUCE} Environment} \subsection{Size of Working Space} Depending on the complexity of your application, the amount of storage used by {\REDUCE} for storing and manipulating your data will vary considerably. You may get an idea of the storage requirements however by turning on the switch {\tt gc}: \begin{verbatim} on gc; \end{verbatim} You will then get messages like: \begin{verbatim} *** Garbage collection starting *** GC 2: 15-Jul-91 16:12:53 (~ 1836 ms cpu time, gc : 28 %) *** time 289 ms, 50167 occupied, 51876 recovered, 949833 free \end{verbatim} at various points in your calculation. >From these statistics you can see the amount of storage used, the free memory, and the percentage of cpu time spent on memory management (garbage collection). If the percentage is high, more than 20\% say, it is recommended that you increase memory size. This can be done by the command: \begin{verbatim} set_heap_size nnnnnnn; \end{verbatim} where nnnnnnn is the size in machine words of the dynamic storage. The default will be (in most cases) 1000000 words. The present memory size is returned by: \begin{verbatim} set_heap_size nil; \end{verbatim} \subsection{Initial Commands} When {\REDUCE} is initialized, a .reducerc file, if present, will be read from the user's home directory. This file can contain any {\REDUCE} or PSL commands needed for customizing the {\REDUCE} environment. Typically these are load commands to load specific user modules or the inclusion of local user directories through the LOADDIRECTORIES facilities. See the PSL manual for more information on this feature. The commands in the .reducerc file must be in Standard Lisp syntax. To display {\REDUCE} commands in Standard Lisp syntax, the {\REDUCE} {\tt on defn} feature can be used. The script \$reduce/util/mkslfile is available for converting an entire file to Standard Lisp syntax. For further details, the Standard Lisp Report should be consulted. \section{Communicating with UNIX} There are two different ways for a {\REDUCE} user to communicate with the UNIX operating system: It is possible to issue a UNIX command and return to {\REDUCE} at its completion by means of the command {\tt system}. Alternatively, some UNIX functions are built into the REDUCE executable directly such that the user can influence the present task and interpret the system's return value. The argument to {\tt system} is a string which is then passed as a UNIX command to your default shell. For example, \begin{verbatim} system "vi foo/bah"; \end{verbatim} will edit the file foo/bah using the "vi" editor, and \begin{verbatim} system "lpr foo/bah"; \end{verbatim} will print the same file. If you want to change for example your current working directory the command: \begin{verbatim} system "cd /tmp"; \end{verbatim} is not of much use, since the {\tt cd} command is run in a UNIX child's environment and not in the Reduce task environment. In this case the command \begin{verbatim} cd "/tmp"; \end{verbatim} will produce the desired effect. More internally available functions are provided, including {\tt pwd}, {\tt getenv} and {\tt setenv}. The latter work as described in the UNIX ``man" pages, i.e., they expect parameters as strings, e.g. \begin{center} \begin{tabular}{l@{\rm\quad returns }l} \tt pwd(); & \tt "/tmp/" \\ \tt setenv ("hugo","otto"); & \tt NIL \rm and then \\ \tt getenv "hugo"; & \tt "otto" \end{tabular} \end{center} \section{Implementation Dependent Error Messages} A number of error messages from the underlying PSL system may be seen from time to time. These include: \paragraph{Floating point exception.} Probably means a division by zero has been attempted or a floating-point overflow has happend. \paragraph{Heap space exhausted.} Your problem is too large in its present form for the available workspace; either change your problem formulation or ask your site consultant to build a bigger system for you. \paragraph{Non-numeric argument in arithmetic.} This means that a Lisp arithmetic routine has been called with an invalid argument. \paragraph{Segmentation violation.} This indicates an illegal memory reference. It can arise from applying the Lisp function {\tt car} to an atom in compiled code. \paragraph{Bus error.} This indicates an illegal memory reference. It can arise from applying the Lisp function {\tt car} to an atom in compiled code. \paragraph{Binding stack overflow, restarting...} This can arise from the evaluation of very complicated expressions. You can increase the binding stack by the \verb|set_bndstk_size| command. For example, to set this to 100000, use: \begin{verbatim} set_bndstk_size 100000; \end{verbatim} \section{Further Help} For further help with {\REDUCE}, please contact: \begin{center} $\langle$list your site consultant here$\rangle$ \end{center} \end{document}