1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276 |
- <!DOCTYPE html>
- <html lang="en-GB">
- <head>
- <meta charset="UTF-8" />
- <meta name="author" content="Francis Wright" />
- <title>Run-REDUCE User Guide</title>
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.css"
- integrity="sha384-AfEj0r4/OFrOo5t7NnNe46zW/tFgW6x/bCJG8FqQCEo3+Aro6EYUG4+cU+KJWu/X" crossorigin="anonymous" />
- <!-- The loading of KaTeX is deferred to speed up page rendering -->
- <script defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/katex.min.js"
- integrity="sha384-g7c+Jr9ZivxKLnZTDUhnkOnsh30B4H0rpLUpJ4jAIKs4fnJI+sEnkvrMWph2EDg4" crossorigin="anonymous"></script>
- <!-- To automatically render math in text elements, include the auto-render extension: -->
- <script defer src="https://cdn.jsdelivr.net/npm/katex@0.12.0/dist/contrib/auto-render.min.js"
- integrity="sha384-mll67QQFJfxn0IYznZYonOWZ644AWYC+Pt2cHqMaRhXVrursRwvLnLaebdGIlYNa" crossorigin="anonymous"
- onload="renderMathInElement(document.body);"></script>
- <style>
- body {
- font-family: "Lucida Sans Unicode", "Lucida Grande", "Lucida Sans", Arial, sans-serif;
- font-size: 12pt;
- max-width: 640px;
- margin-right: auto;
- margin-left: auto;
- }
- code {
- font-family: "Lucida Console", "Lucida Sans Typewriter", monospace;
- }
- h1, h2, h3 {
- font-family: "Lucida Bright", Georgia, Times, "Times New Roman", serif;
- }
- table {
- margin-right: auto;
- margin-left: auto;
- }
- td, th {
- padding-right: 10px;
- padding-left: 10px;
- text-align: left;
- }
- table.small {
- font-size: small
- }
- table.nowrap td, table.nowrap th {
- white-space: pre
- }
- </style>
- </head>
- <body>
- <h1>Run-REDUCE User Guide</h1>
- <h3>© 2020 Francis Wright</h3>
- <h2>Contents</h2>
- <ul>
- <li><a href="#GeneralInformation">General Information</a></li>
- <li><a href="#MainWindow">The Main Window</a></li>
- <li><a href="#PopupKeyboard">The Pop-up Keyboard</a></li>
- <li><a href="#Editing">Editing</a></li>
- <li><a href="#Configuration">REDUCE Configuration</a></li>
- <li><a href="#FileMenu">The File Menu</a></li>
- <li><a href="#REDUCEMenu">The REDUCE Menu</a></li>
- <li><a href="#ViewMenu">The View Menu</a></li>
- <li><a href="#TemplatesMenu">The Templates Menu</a></li>
- <li><a href="#FunctionsMenu">The Functions Menu</a></li>
- <li><a href="#HelpMenu">The Help Menu</a></li>
- <li><a href="#TypesetMaths">Typeset Maths Display</a></li>
- <li><a href="#Printing">Printing on Linux</a></li>
- <li><a href="#ConfigExamples">Configuring Run-REDUCE for Subversion Builds</a></li>
- </ul>
- <h2 id="GeneralInformation">General Information</h2>
- <p>Run-REDUCE remembers user preferences and uses them the next
- time it starts. It uses the standard Java
- package <em>java.util.prefs</em>, which stores data persistently
- in an implementation-dependent backing store. On Microsoft Windows
- the preferences for this application are stored in the registry
- under the key
- "<code>Computer\HKEY_CURRENT_USER\Software\JavaSoft\Prefs\fjwright\runreduce</code>"
- and on Linux they are stored in XML files under the directory
- "<code>~/.java/.userPrefs/fjwright/runreduce/</code>".
- </p>
- <p>By default, Run-REDUCE looks in the standard places for a
- REDUCE installation. On Microsoft Windows it looks for the folder
- "<code>\Program Files\Reduce</code>" on all accessible drives. On
- Linux it assumes that executable files are under
- "<code>/usr/lib/reduce</code>", package information is in
- "<code>/usr/share/reduce/packages</code>", and documentation is in
- "<code>/usr/share/doc/reduce</code>". But this information can all
- be <a href="#Configure">reconfigured</a>.
- </p>
- <p>Run-REDUCE supports the relevant
- default <a href="https://wiki.openjdk.java.net/display/OpenJFX/Keyboard+Navigation">JavaFX
- keyboard shortcuts</a>. Additional keyboard shortcuts are
- described below where appropriate, and the keyboard shortcuts
- relevant to text editing are described in the section
- on <a href="#Editing">Editing</a>.
- </p>
- <h2 id="MainWindow">The Main Window</h2>
- <p>The main window consists of one or more REDUCE panels that can
- each run an independent invocation of REDUCE. There are three
- options: a single REDUCE panel (the default); a split pane
- containing two REDUCE panels side-by-side that are both visible;
- a tabbed pane containing one or more REDUCE panels, of which
- only the selected panel is visible. The choice of display pane
- arrangement is controlled by options in
- the <a href="#ViewMenu">View menu</a>. You can switch
- dynamically among the three options, in which case the currently
- selected REDUCE panel (only) and the REDUCE invocation running
- in it (if any) is preserved and carried to the new display pane
- arrangement, but any other REDUCE invocations are discarded.
- </p>
- <p>With a split pane, you can select synchronised scrolling so
- that scrolling the selected REDUCE panel (in any way) also
- scrolls the other REDUCE panel to the same relative position.
- This facility is experimental and currently forces both REDUCE
- panels to display content at the same (relative) position; the
- other REDUCE panel cannot be scrolled from its current position
- but will jump to the same relative position as the selected
- REDUCE panel.
- </p>
- <p>With a split or tabbed pane, you can select the active REDUCE
- panel by clicking on the desired panel in a split pane or tab on
- a tabbed pane. You can also select the next REDUCE panel
- cyclically forwards by pressing <em>Control+Tab</em>
- or <em>Control+PageDown</em>, or backwards by
- pressing <em>Control+Shift+Tab</em> or <em>Control+PageUp</em>.
- The non-selected panel in a split pane is greyed out and the
- selected panel displays a green dot near the top right-hand
- corner, immediately to the left of the <em>Hide Editor</em>
- toggle button. All controls apply (primarily) to the currently
- selected REDUCE panel.
- </p>
- <p>Tabs are initially labelled <em>Tab 1</em>, <em>Tab 2</em>,
- etc., and a new tab is labelled <em>Tab n</em> if it is
- the <em>n<sup>th</sup></em> tab to be added. (Removing tabs does
- not affect the numbering.) However, when REDUCE is run in a tab,
- the tab label changes to the name of the REDUCE command being run,
- and remains so until a different REDUCE command is run in that
- tab.
- </p>
- <h3>REDUCE Panels</h3>
- <p>A REDUCE panel normally consists of two panes one above the
- other. The top pane displays all the REDUCE input and output in
- the current session. It is read-only. The bottom pane is an
- input editor that supports all the standard keyboard and
- mouse-based editing facilities normally provided by your platform.
- It is disabled unless REDUCE is running in this panel. Both panes
- display vertical and horizontal scroll bars when necessary. Text
- does not wrap. The horizontal divider separating the two panes
- can be dragged up and down.
- </p>
- <p>There is a toggle button in the top right-hand corner of each
- REDUCE panel, which when clicked hides the input editor. This is
- useful for viewing long runs of output. Clicking the button again
- shows the input editor.
- </p>
- <p>The name of the currently running (or last run) REDUCE command
- is appended to the label of the REDUCE input/output display pane.
- (You can edit the command names in the <a href="#Configure">REDUCE
- configuration dialogue</a>.)
- </p>
- <p>You type (or paste) REDUCE input into the input editor pane,
- edit it as necessary, and then click on the <em>Send Input</em>
- button, which sends the input to REDUCE and echos it in the top
- pane. This clears the input editor, but you can scroll through
- the previous input (entered via the input editor) using
- the <em>Earlier Input</em> and <em>Later Input</em> buttons.
- Scrolling to input later than the last previous input clears the
- input editor pane back to its state before you started scrolling.
- </p>
- <p>When keyboard focus is in the input editor pane, the following
- keyboard shortcuts are active:
- </p>
- <table>
- <thead>
- <tr>
- <th>Keyboard Shortcut</th>
- <th>Action</th>
- </tr>
- </thead>
- <tbody>
- <tr>
- <td><em>Control+Enter</em></td>
- <td>Send Input (auto-terminated)</td>
- </tr>
- <tr>
- <td><em>Control+Shift+Enter</em></td>
- <td>Send Input (not auto-terminated)</td>
- </tr>
- <tr>
- <td><em>Control+UpArrow</em></td>
- <td>Earlier Input</td>
- </tr>
- <tr>
- <td><em>Control+DownArrow</em></td>
- <td>Later Input</td>
- </tr>
- </tbody>
- </table>
- <p>where <em>Enter</em> is the <em>Return</em> or <em>Enter</em>
- key and <em>UpArrow</em> / <em>DownArrow</em> are the cursor up /
- down keys, respectively.
- </p>
- <p>Sending input to REDUCE strips any trailing white space,
- normally auto-terminates it by adding a semicolon if there was no
- final terminator, and then adds a final newline. However, if
- Run-REDUCE detects a question mark in the input prompt then it
- suppresses auto-termination (so if you really want a terminator
- you must enter it explicitly). As an additional precaution,
- holding the <em>Shift</em> key while clicking on the <em>Send
- Input</em> button or pressing <em>Control+Enter</em> always
- suppresses auto-termination.
- </p>
- <p>You can edit previous input recalled into the input editor as
- necessary and then send it to REDUCE. Input can be multi-line, in
- which case Run-REDUCE processes all the lines
- together. The <em>Send Input</em> action is disabled unless
- REDUCE is running, and the <em>Earlier Input</em>
- and <em>Later Input</em> actions are disabled unless there is
- earlier or later input, respectively.
- </p>
- <h2 id="PopupKeyboard">The Pop-up Keyboard</h2>
- <p>The pop-up keyboard provides access to special symbols and
- Greek letters on the top half of the keyboard and elementary
- functions on the bottom half. It is available by clicking the
- primary mouse-button (normally the left if there is more than one)
- while holding down the <em>Control</em> key while the mouse
- pointer is over an input editor text area or any text field in
- a <a href="#TemplatesMenu">template</a>
- or <a href="#FunctionsMenu">function</a> dialogue. Note that
- clicking the secondary (normally the right) mouse-button on any
- text field pops up a generic editing context menu.
- </p>
- <p>Clicking on a character button on the top half of the pop-up
- keyboard causes that character to overwrite the selected text if
- there is any or otherwise to insert at the text cursor (caret).
- Clicking on a function button on the bottom half of the pop-up
- keyboard causes that function to be applied to the selected text
- if there is any (i.e. wrapped around it using parentheses) or
- otherwise to be inserted followed by parentheses at the text
- cursor, which is left within the parentheses. The pop-up then
- closes. The pop-up also closes if you click anywhere outside it,
- or you can close it by clicking on the <em>Close</em> button in
- the bottom left corner or by pressing the <em>Escape</em> key on
- your main keyboard.
- </p>
- <p>By default, the top half of the pop-up keyboard provides the
- REDUCE symbolic constants ∞ (infinity) and π (pi) in the
- left column and the lower-case Greek alphabet in the right block,
- and the bottom half of the pop-up keyboard provides common
- elementary functions in the left block and trigonometric and
- hyperbolic functions in the right block. The pop-up keyboard has
- two layers and the secondary layer is accessed by either clicking
- on the <em>Shift</em> button in the top left corner or holding
- down the <em>Shift</em> key on your main keyboard. Note that the
- physical <em>Shift</em> key does not act as a toggle but the
- virtual <em>Shift</em> button does. The top half of the secondary
- keyboard layer provides additional REDUCE symbolic constants and
- upper-case Greek letters; the bottom half provides common
- predicates and inverse trigonometric and hyperbolic functions.
- </p>
- <p>All special symbols on the pop-up keyboard have their names
- spelt out appropriately using ASCII characters automatically
- before sending them to REDUCE. The symbolic constants in the top
- left column are given their REDUCE names and the Greek letters in
- the top right block use the TeX naming convention. Note that, by
- default, special symbols are translated to REDUCE identifiers only
- when they are sent to REDUCE, not when they are inserted into the
- input editor. The results should be accepted as identifiers and
- typeset appropriately by all versions of REDUCE.
- </p>
- <p>If you hover your mouse pointer over a symbolic constant button
- then a tooltip pops up giving the REDUCE name of the constant and
- a brief description of it and/or its conventional name and
- approximate numerical value (if appropriate). If you hover your
- mouse pointer over a Greek letter button then a tooltip pops up
- giving its TeX-style name. If you click on the <em>English</em>
- button in the top right corner of the pop-up keyboard or hold down
- the <em>Alt</em> key whilst clicking on any button on the top half
- of the pop-up keyboard then its name spelt-out using ASCII
- characters is output instead of the single non-ASCII character.
- </p>
- <p>If you hover your mouse pointer over a function key then a
- tooltip pops up giving its full name. If you click on
- the <em>Radians</em> button in the bottom right corner of the
- pop-up keyboard or hold down the <em>Alt</em> key whilst clicking
- on any trigonometric function button then the degree version of
- the function is used. The label on the <em>Radians</em> button
- changes to <em>Degrees</em> it you click on it or hold down
- the <em>Alt</em> key, and changes back to <em>Radians</em> if you
- click on it again or release the <em>Alt</em> key. This label
- shows the <strong>current</strong> trigonometric function mode.
- Note that degree mode only works if the TRIGD package has been
- loaded in REDUCE. At some later date I hope to be able to
- automate this, but for now you need to do it by hand.
- </p>
- <p>Note that some characters are available as both symbolic
- constants and as Greek letters, but only π means the same in
- both cases. In order to preserve the two meanings, the symbolic
- constants maybe preceded by a Unicode zero-width non-joiner (ZWNJ)
- character, which is removed automatically when the symbolic
- constant is sent to REDUCE. The ZWNJ character is invisible but
- it is nevertheless there. If you move the text cursor past a
- symbolic constant you will also need to move it past the ZWNJ
- character, although you will not see the cursor move, and if you
- delete a symbolic constant you should also delete the ZWNJ
- character, although again you will not see the cursor move. (If
- you don't delete it then it could cause confusion.)
- </p>
- <h2 id="Editing">Editing</h2>
- <p>Run-REDUCE supports the following keyboard shortcuts on
- Windows and Linux:
- </p>
- <table>
- <tr>
- <th>Select all in focused control or window</th>
- <td><kbd>Ctrl</kbd>+<kbd>A</kbd></td>
- </tr>
- <tr>
- <th>Cut the selection and store it in
- the <a href="https://en.wikipedia.org/wiki/Clipboard_(software)">clipboard</a></th>
- <td><a href="https://en.wikipedia.org/wiki/Ctrl-X"><kbd>Ctrl</kbd>+<kbd>X</kbd></a></td>
- </tr>
- <tr>
- <th>Copy the selection into
- the <a href="https://en.wikipedia.org/wiki/Clipboard_(software)">clipboard</a></th>
- <td><a href="https://en.wikipedia.org/wiki/Ctrl-C"><kbd>Ctrl</kbd>+<kbd>C</kbd></a></td>
- </tr>
- <tr>
- <th>Paste contents
- of <a href="https://en.wikipedia.org/wiki/Clipboard_(software)">clipboard</a>
- at <a href="https://en.wikipedia.org/wiki/Cursor_(computers)">cursor</a></th>
- <td><a href="https://en.wikipedia.org/wiki/Ctrl-V"><kbd>Ctrl</kbd>+<kbd>V</kbd></a></td>
- </tr>
- <tr>
- <th><a href="https://en.wikipedia.org/wiki/Undo">Undo</a>
- the last operation</th>
- <td><kbd>Ctrl</kbd>+<kbd>Z</kbd></td>
- </tr>
- </table>
- <p>However, REDUCE input/output display panes are read-only and so
- only support select and copy operations. All input areas also
- support an editing context menu, which is available by clicking
- the secondary (normally the right) mouse-button while the mouse
- pointer is over the input area.
- </p>
- <h2 id="Configuration">REDUCE Configuration</h2>
- <p>An item on the <em>REDUCE menu</em> displays a dialogue that
- allows you to configure the REDUCE directories and commands.
- The defaults should work for standard installations of snapshot
- releases on Microsoft Windows and Linux. Run-REDUCE currently
- assumes that if it is not running on Windows then the Linux
- default configuration is appropriate, so that is what you will
- see by default on (say) Apple MacOS. There is a button in the
- top left-hand corner to reset the whole REDUCE configuration to
- the platform defaults.
- </p>
- <p>When you click on the <em>Save</em> button, any changes made
- using this dialogue are saved as preferences and the new
- configuration is used within Run-REDUCE. If you click on
- the <em>Cancel</em> button then all changes made since this
- dialogue opened are forgotten. Run-REDUCE warns you if any
- fields that are directories or files do not exist or are
- unreadable and asks if you want to continue anyway. This
- includes command arguments that begin with <code>$REDUCE</code>
- or <code>~</code> followed immediately by <code>/</code>
- or <code>\</code> (see below).
- </p>
- <p>Note that all field values are stripped of leading and trailing
- space before they are used or saved, and empty command argument
- fields are not saved at all. Most fields have a button beside
- them labelled "...". Clicking on it displays a directory or
- file chooser that can be used to set the field (which can then
- be edited further).
- </p>
- <p>The dialogue is divided into three main sections, each of which
- is described separately below.
- </p>
-
- <h3>Generic Information</h3>
- <p>The box in the top right-hand corner covers directories that
- relate to the portable REDUCE code and are independent of
- particular REDUCE implementations or commands. The REDUCE Root
- Directory field provides the initial directory for the directory
- or file choosers for most of the other fields, which is useful
- on Windows or with local builds;
- see <a href="#ConfigExamples">Configuring Run-REDUCE for
- Subversion Builds</a>.
- <p>The <em>Load Packages...</em> facility in the <em>File</em>
- menu requires a standard REDUCE packages directory, which should
- be specified as the value of the <em>REDUCE Packages
- Directory</em> field. This directory should contain directories
- named <em>alg</em>, <em>algint</em>, <em>arith</em>, etc. It is
- only used by <em>Load Packages...</em>. If the directory
- specified does not exist or is mis-configured then <em>Load
- Packages...</em> will pop up a warning and closing it will
- automatically pop up the <em>Configure REDUCE...</em> dialogue
- to allow you to correct the problem.
- </p>
- <p>The <em>Help</em> menu items that display REDUCE documentation
- require the directories containing the distributed documentation
- files to be specified as the values of the <em>REDUCE Manual
- Directory</em> and <em>REDUCE Primers Directory</em> fields.
- These fields are named after the directories in the REDUCE
- Subversion repository and the same directory division is used
- for the standard Windows snapshot installation folders, although
- on a standard Linux snapshot installation the two directories
- are the same. The <em>REDUCE Manual Directory</em> should
- contain the files <em>manual.html</em> and <em>manual.pdf</em>
- and the <em>REDUCE Primers Directory</em> should contain the
- files <em>insidereduce.pdf</em>, <em>primer.pdf</em>
- and <em>sl.pdf</em>, where on Linux the filename extension
- is <em>.pdf.gz</em> instead of just <em>.pdf</em>.
- </p>
- <p>The <em>REDUCE Working Directory</em> field allows you to
- configure the initial working directory used by REDUCE and the
- initial directory used by all the file choosers available from
- the <em>File</em> menu. (However, note that this is only the
- initial directory because you can change the directory when you
- use a file chooser and the file choosers remember and share the
- last directory used. This does not change REDUCE's working
- directory!) By default, the <em>REDUCE Working Directory</em>
- is your home directory, but you can change it to anything you
- want. The button beside this field labelled "..." does not pop
- up a directory chooser directly, but instead pops up a context
- menu with items labelled <em>Your Home
- Directory</em>, <em>Run-REDUCE Directory</em> and <em>Choose Any
- Directory</em>, which respectively set the <em>REDUCE Working
- Directory</em> field to your home directory, the directory
- containing <em>Run-REDUCE.jar</em>, or any directory you choose
- using the directory chooser that pops up. The initial directory
- for this chooser is your home directory.
- </p>
- <h3>The REDUCE Command List</h3>
- <p>In the bottom left-hand corner of the dialogue is a list of
- REDUCE command labels and clicking on a command label selects it
- for editing in the box in the bottom right-hand corner.
- Clicking on the ▲ (up) or ▼ (down) button immediately below this
- list moves the selected command up or down the list cyclically,
- meaning that when a command moves above the top of the list is
- reappears at the bottom, and vice versa. Clicking on
- the <em>Save</em> button saves the order of the commands
- together with the other information in the dialogue, and
- re-starting Run-REDUCE restores it.
- </p>
- <p>Clicking on the <em>Reset Selected Command</em> button resets
- the selected command to its default configuration if this
- exists, otherwise nothing happens. The appropriate default
- configuration is found by matching the command label.
- </p>
- <p>Clicking on the <em>Delete Selected Command</em> button
- completely deletes the selected REDUCE command. If you delete
- all available commands then a new (empty) command is
- automatically created.
- </p>
- <p>Clicking on the <em>Duplicate Selected Command</em> button
- duplicates the configuration for the selected REDUCE command
- with a new label at the bottom of the list. The new label is
- the label of the duplicated command with <em>New</em> appended,
- which you can edit in the Command Label field as you wish. (But
- keep command labels fairly short!). This provides a convenient
- way, for example, to add one or more REDUCE commands with
- non-standard options such as memory size.
- </p>
- <p>Clicking on the <em>Add New Command</em> button adds a new
- REDUCE command at the bottom of the list, which is initially
- labelled <em>New Command</em>, with all other fields empty. You
- could, for example, add one or more commands running REDUCE on
- Common Lisp. (At some future date I may include CL REDUCE in
- the default configuration.)
- </p>
-
- <h3>Specific Information</h3>
- <p>The box in the bottom right-hand corner relates to the REDUCE
- command currently selected in the list on the left. You can
- change the label by editing the <em>Command Label</em> field.
- You should then press the <em>Return</em> key to confirm the
- edit, which will update the label in the list of REDUCE
- commands. Whether you confirm an edit or not, the new label
- will be saved if you click on the <em>Save</em> button. Command
- labels must be unique and an error alert will pop up that
- prevents you from saving a non-unique label.
- </p>
- <p>If the <em>Use Default Command Shell</em> check box is selected
- then the REDUCE command is run via the default system shell,
- which is found as the value of the appropriate environment
- variable: <code>ComSpec</code> on Windows; <code>SHELL</code> on
- other platforms. In this case the command can be any name that
- the shell can execute; it need not be a complete pathname.
- Otherwise, the command entry must be the pathname of an
- executable <strong>binary</strong> program. If <em>Use Default
- Command Shell</em> is selected then the <em>Check Command
- Pathname</em> check box will be visible. You can use it to
- select whether Run-REDUCE should check that the command is a
- pathname that exists and is readable, and the field label
- changes as appropriate. The default configuration uses the
- shell and on Linux also uses the search path and does not check
- the command pathname,
- </p>
- <p>A complete REDUCE command must be split into the command name
- as described above and a sequence of up to 5 command
- arguments. (It would be easy to increase this limit, but I hope
- 5 arguments is enough!) The components of the command that
- would be separated by white space in a normal shell command must
- be entered into separate fields in this dialogue. (Blank
- arguments are ignored.) Run-REDUCE handles the quoting required
- on Windows, so you should not normally include any quotes
- explicitly. If any field (other than Command Label) begins
- with <code>~</code> followed immediately by <code>/</code>
- or <code>\</code> then it is replaced by your home directory (on
- all platforms).
- </p>
- <p>You can use absolute pathnames if you want, but often (as with
- the PSL REDUCE executable and image file names) command
- components share a common root segment. This root segment can
- be specified as <code>$REDUCE</code>, which Run-REDUCE will
- replace with the value of the <em>Command Root Directory</em>
- field if it is set, or with the value of the <em>REDUCE Root
- Directory</em> field otherwise. (I have borrowed environment
- variable syntax, but <code>$REDUCE</code> here is not related to
- any environment variable.) The <em>Command Root Directory</em>
- chooser and file choosers use as initial directory the
- current <em>Command Root Directory</em> field value if defined,
- otherwise the <em>REDUCE Root Directory</em> field value if
- defined, otherwise the platform default REDUCE root directory.
- The file choosers replace the root segment of the returned path
- by $REDUCE if possible.
- </p>
- <p>The two default REDUCE commands, which assume standard
- installations of CSL and PSL REDUCE, share the same root
- directory, which is why the default configuration
- uses <em>REDUCE Root Directory</em> and leaves <em>Command Root
- Directory</em> empty. But a Subversion build or a version of
- REDUCE running on Common Lisp would probably use a different
- root directory.
- </p>
- <h2 id="FileMenu">The File Menu</h2>
- <p>Some items in this menu pop up a dialogue that allows you to
- select one or more items, such as filenames. This dialogue
- supports all the standard keyboard and mouse-based selection
- facilities normally provided by your platform. In particular, in
- dialogues that allow selection of multiple items, holding
- the <em>Control</em> key down while clicking on an item selects or
- deselects it without affecting any other selections, and holding
- a <em>Shift</em> key down while clicking on an item extends the
- selection to that item. Double-clicking on an item selects it and
- then immediately runs the action associated with the confirmation
- button.
- </p>
- <p>Most of the menu items run a REDUCE command, which is echoed in
- the display pane but does not appear in the input editor. The
- file chooser dialogues all share the same default directory, which
- normally is initially your home directory, but the last directory
- you used will be the default directory the next time you use a
- file chooser dialogue. This default directory is generally
- independent of REDUCE's default directory, even if it is initially
- the same.
- </p>
- <p>The <em>File</em> menu provides the following items:</p>
- <h3>Echo File Input</h3>
- <p>Selecting this causes Run-REDUCE to echo file input to
- the <em>Input/Output Display</em> pane. It is selected by
- default.</p>
- <h3>Input from Files...</h3>
- <p>This displays a file chooser that allows you to choose one or
- more source code files to input into REDUCE (using the
- REDUCE <code>IN</code> command). By default, the file chooser
- shows only <code>*.red</code> and <code>*.tst</code> files, but
- you can reset it to show only <code>*.txt</code> files or all
- files. (Note that the recommended extension for REDUCE source code
- file names is <code>.red</code> and that a REDUCE source code file
- should end with <code>;end;</code> to avoid an error message.)
- This menu item is disabled unless REDUCE is running.
- </p>
- <h3>Input Package Files...</h3>
- <p>This works the same as the previous menu item except that the
- initial directory is always the REDUCE packages directory. It is
- primarily intended to provide easy access to the package test
- files.
- </p>
- <h3>Output to New File...</h3>
- <p>This displays a file chooser that allows you to choose a file
- to send output to instead of the GUI (using the
- REDUCE <code>OUT</code> command). By default, the file chooser
- shows only <code>*.log and *.rlg</code> files, but you can reset
- it to show only <code>*.txt</code> files or all files. (Note that
- the extension used for REDUCE package test output log file names
- is <code>.rlg</code>.) Only one output file can be active at a
- time and choosing a new output file redirects output to that file
- without shutting the previous output file. The GUI remember all
- the open output files (opened via this menu item) to facilitate
- switching or shutting output files as described below. This menu
- item is disabled unless REDUCE is running.
- </p>
- <h3>Output to Open File...</h3>
- <p>This displays a list of open output files and allows you to
- select one for output. This menu item is disabled unless there are
- open output files.</p>
- <h3>Output Here</h3>
- <p>This redirects output to the GUI without shutting the current
- output file (using the REDUCE <code>OUT T</code> command). This
- menu item is disabled unless there are open output files.
- </p>
- <h3>Shut Output Files...</h3>
- <p>This displays a list of open output files and allows you to
- select one or more to be shut (using the REDUCE <code>SHUT</code>
- command). This menu item is disabled unless there are open output
- files.</p>
- <h3>Shut Last Output File</h3>
- <p>This shuts the last used open output file (using the
- REDUCE <code>SHUT</code> command). This menu item is disabled
- unless there are open output files.
- </p>
- <h3>Print Session Log...</h3>
- <p>This prints the whole content of the <em>Input/Output
- Display</em> pane including all styling, after first displaying
- your platform's standard print dialogue. After you confirm the
- print dialogue, an alert pops up to either confirm that the
- session log has been sent to the printer or report failure.
- Whilst printing seems to work fine on Microsoft Windows it can be
- a bit awkward on Linux; see <a href="#Printing">Printing on
- Linux</a>.
- </p>
- <h3>Save Session Log...</h3>
- <p>This displays a file chooser that allows you to specify a file
- to which to save the entire contents of the <em>Input/Output
- Display</em> pane. By default, the file chooser shows
- only <code>*.log</code> and <code>*.rlg</code> files, but you can
- reset it to show only <code>*.txt</code> files or all files. The
- filename defaults to <code>session.log</code>, but you can change
- this. If the specified file already exists then the session log
- overwrites its previous content. Typeset maths is output as LaTeX
- markup.
- </p>
- <h3>Append Session Log...</h3>
- <p>This works the same as the previous menu item except that if
- the specified file exists then the session log is appended to its
- previous content.</p>
- <h3>Exit</h3>
- <p>This terminates both REDUCE and the Run-REDUCE GUI, as does
- the close widget that is normally at the top right-hand corner of
- the main window frame.
- </p>
- <h2 id="REDUCEMenu">The REDUCE Menu</h2>
- <p>The <em>REDUCE</em> menu provides the following items:</p>
- <h3>Run REDUCE...</h3>
- <p>This sub-menu provides an item for each configured REDUCE
- command (typically based on different versions of Lisp, by default
- CSL and PSL). Clicking on a REDUCE command runs it. This sub-menu
- is disabled when REDUCE is running.
- </p>
- <h3>Auto-run REDUCE...</h3>
- <p>This sub-menu allows you to select a REDUCE command that
- Run-REDUCE will run automatically when it starts, or
- none. Run-REDUCE remembers this selection and uses it the next
- time it starts. If REDUCE is not running then Run-REDUCE also
- runs the selected REDUCE command immediately.
- </p>
- <h3>Load Packages...</h3>
- <p>This displays a list of standard REDUCE packages and allows you
- to select one or more to load (using the
- REDUCE <code>LOAD_PACKAGE</code> command). The list excludes
- packages that are pre-loaded and is sorted alphabetically.
- Run-REDUCE determines the list of packages each time it starts
- up by reading the <code>package.map</code> file in the REDUCE
- installation. This menu item is disabled unless REDUCE is
- running.
- </p>
- <h3>Stop REDUCE</h3>
- <p>This terminates REDUCE but <strong>not</strong> the
- Run-REDUCE GUI. <strong>It is the recommended way to stop
- REDUCE because then Run-REDUCE reliably knows that REDUCE is no
- longer running.</strong> (Run-REDUCE tries to detect input of
- the <code>BYE</code> and <code>QUIT</code> commands via the input
- editor, but this may be less reliable.) This menu item is disabled
- unless REDUCE is running.
- </p>
- <h3>Clear I/O Display</h3>
- <p>This completely erases the content of the <em>Input/Output
- Display</em> pane. If you want to keep the content, use
- the <em>Save / Append Session Log...</em> item on
- the <em>File</em> menu before clearing!
- </p>
- <h3>Restart REDUCE</h3>
- <p>This does a full clean restart of the last-run REDUCE command,
- which is equivalent to <em>Stop REDUCE</em> followed
- by <em>Clear I/O Display</em> followed by running the last-run
- REDUCE command.
- </p>
- <h3>Configure REDUCE...</h3>
- <p>This displays a dialogue that allows you to configure the
- REDUCE directories and commands;
- see <a href="#Configuration">REDUCE Configuration</a>.</p>
- <h3>Kill REDUCE</h3>
- <p>This cab be used to kill REDUCE in an emergency, such as if it
- hangs or you put it into an infinite loop. Once REDUCE has been
- successfully killed, an information dialogue pops up. If the
- attempt to kill REDUCE may have failed then an error dialogue
- pops up. In this (unlikely) situation, it may be advisable to
- use operating system facilities to check that REDUCE has been
- killed and if necessary kill it, and then restart Run-REDUCE.
- </p>
- <h2 id="ViewMenu">The View Menu</h2>
- <p>Run-REDUCE remembers the options you select using
- the <em>View</em> menu and uses them the next time you start
- Run-REDUCE. Run-REDUCE uses the last set values initially
- when you create a new REDUCE panel. The <em>View</em> menu
- provides the following items:</p>
- <h3>Font Size...</h3>
- <p>This displays a dialogue that allows you to change the font
- size used in the <em>Input/Output Display</em> and <em>Input
- Editor</em> panes. Font size applies to each REDUCE panel
- independently.
- </p>
- <h3>Font Colours...</h3>
- <p>This displays a dialogue that allows you to change the colours
- used in the <em>Input/Output Display</em> pane. Font colours
- apply to all REDUCE panels together.
- </p>
- <p>The colours that you can select are the foreground text colours
- for algebraic and symbolic mode input and output, and the
- background colours for warnings (preceded by <code>***</code>)
- and errors (preceded by <code>*****</code>). The labels on the
- left model the colours. Clicking on a button on the right drops
- down a simple colour grid from which you can pick a colour, and
- clicking on <em>Custom Color...</em> at the bottom of the grid
- opens a more advanced dialogue, which includes the option to
- change the opacity. This is primarily relevant to the
- background colours, which are 25% opaque by default.
- </p>
- <p>If you click on the <em>Cancel</em> button then the colours
- used do not change. If you click on the <em>Save</em> button
- then the currently selected colours are used for the selected
- REDUCE panel and saved as preferences. They will be used by
- default the next time you start Run-REDUCE. If you click on
- the <em>Reset Defaults</em> button then the built-in default
- colours are reinstated in the dialogue but not used or saved
- unless you click on the <em>Save</em> button.
- </p>
- <h3>Bold Prompts</h3>
- <p>Selecting this item causes Run-REDUCE to embolden the display
- of all input prompts. Bold prompts apply to each REDUCE panel
- independently.
- </p>
- <h3>I/O Colouring</h3>
- <p>Selecting this item causes Run-REDUCE to colour the text in
- the <em>Input/Output Display</em> pane. I/O colouring applies to
- each REDUCE panel independently (although the colour choices apply
- to all REDUCE panels together). The colouring depends on REDUCE's
- current input mode: by default, algebraic-mode prompts and input
- are red, algebraic-mode output is blue, symbolic-mode prompts and
- input are green, symbolic-mode output is brown. Echoed file input
- is not coloured. By default, Run-REDUCE highlights warnings and
- errors with quarter-opaque orange and red background colours.
- </p>
- <p>Note that turning I/O colouring on does not fully take effect
- until the next input prompt. Turning I/O colouring off takes
- effect immediately and turning it back on mid-session turns any
- previous I/O colouring back on, but any I/O produced while I/O
- colouring was turned off will not be coloured. (This is because
- the required markup is only generated when I/O colouring is turned
- on to conserve resources.) Output display will be slightly faster
- when I/O colouring if turned off.
- </p>
- <h3>Typeset Maths</h3>
- <p>Selecting this item causes Run-REDUCE to display algebraic-mode
- mathematical output more-or-less as it would be typeset, and
- centred horizontally. Typeset maths applies to each REDUCE
- panel independently. Output display will be significantly
- faster when Typeset Maths is turned
- off. <strong>WARNINGS:</strong> Typeset Maths is currently
- experimental and line breaking is somewhat arbitrary. The
- display may be incorrect in some cases, e.g. with unusual switch
- settings such as <em>on list</em>. If any LaTeX markup appears
- (coloured red) in the output then please let me know! <em>Save
- Session Log...</em> outputs typeset maths using LaTeX markup.
- </p>
- <h3>Single Pane Display</h3>
- <p>Selecting this causes Run-REDUCE to display the selected REDUCE
- panel only. This is the default.
- </p>
- <h3>Split Pane Display</h3>
- <p>Selecting this causes Run-REDUCE to display two REDUCE panels
- side-by-side. The left-hand panel displays the previously
- selected REDUCE panel (if any) and is initially active.
- Clicking on a REDUCE panel makes it active for input via its
- input editor pane and the menus. The inactive REDUCE panel can
- continue to update its output display. Both panels are the same
- size initially, but you can change that by dragging the divider.
- </p>
- <h3>Tabbed Pane Display</h3>
- <p>Selecting this causes Run-REDUCE to display a tabbed pane with
- the previously selected REDUCE panel (if any) displayed under
- the first tab. Clicking on the <code>×</code> icon at the
- right of the selected tab label removes that tab and the REDUCE
- panel it contains. When there is only one tab, removing it
- disables tabbed display but preserves the REDUCE panel that the
- tab contained.
- </p>
- <h3>Synchronise Scrolling</h3>
- <p>Selecting this synchronises the scrolling of the two REDUCE
- panels in a split pane display; see <a href="#MainWindow">The
- Main Window</a>. This menu item is disabled unless split pane
- display is selected.
- </p>
- <h3>Add Another Tab</h3>
- <p>This adds a new tab to a tabbed display. This menu item is
- disabled unless tabbed pane display is selected.
- </p>
- <h2 id="TemplatesMenu">The Templates Menu</h2>
- <p>The <em>Templates</em> menu facilitates construction of
- structured expressions and statements whose syntax might not be
- immediately obvious, especially to a novice. The template
- dialogues all provide hyperlinks to the key sections of the local
- HTML version of the REDUCE Manual, which open in your default web
- browser. The dialogues all provide two buttons that apply the
- filled-in template: the <em>Edit</em> button inserts the template
- output into the input editor at the current cursor position;
- the <em>Evaluate</em> button sends the template output directly to
- REDUCE for evaluation, adding a terminator if necessary, just as
- the <em>Send Input</em> button does. These buttons do not close
- the dialogue, which is non-modal (meaning it does not prevent
- access to other windows) and can be left open but moved out of the
- way. In fact, several template dialogues can be open at the same
- time. To close a template dialogue, click on the <em>Close</em>
- button.
- </p>
- <p>If the template represents an operator with a primary operand
- then this defaults to <em>ws</em>, which is convenient for simple
- interactive calculations, but it can be changed to anything. The
- templates provide some minimal input validation: for example, if
- an element must be an explicit number (rather than a variable that
- must evaluate to a number), the template will check this and
- report an error immediately an inappropriate character is entered.
- When the <em>Evaluate</em> button is used, the template checks
- that all input has been provided that is required for valid REDUCE
- syntax; this is not done when the <em>Edit</em> button is used,
- assuming that further editing will take place. This makes it easy
- to combine the output from templates, for example, to construct a
- multiple <em>for</em> loop.
- </p>
- <p>Some templates have a pair of radio buttons at the top
- labelled <em>Symbolic</em> and <em>Numeric</em> that allow you to
- switch between the two modes of evaluation; the default
- is <em>Symbolic</em>. The <em>Numeric</em> option causes the
- template output to turn <em>rounded</em> mode on before the main
- template result is output and off again afterwards; it may also
- load the <em>numeric</em> package and use specific numerical
- versions of functions. The text message towards the top of each
- template may vary depending on the <em>Symbolic/Numeric</em>
- option.
- </p>
- <p>Some templates have one or more switches towards the bottom,
- which may vary depending on the <em>Symbolic/Numeric</em> option.
- The switches consist of check boxes that initially show default
- settings (not those currently in effect in REDUCE). Any switches
- that are changed from their defaults are set in the template
- output to reflect the change before the main template result is
- output and reset afterwards. (Beware that this will override any
- changes from the default switch settings that were in effect
- before the template was used.)
- </p>
- <p>These templates are intended only for creating simple
- structures, but they can form the basis for arbitrarily complex
- structures if they are entered into the input editor for further
- editing. The fields of expression templates display minimal
- formatting intended to hint at how such an expression would
- normally be typeset.
- </p>
- <p>This menu is disabled unless REDUCE is running.
- The <em>Templates</em> menu provides the following items:</p>
- <h3>Derivative...</h3>
- <p>This template supports (partial) differentiation involving up
- to three independent variables, each to arbitrary order. The
- orders must be explicit positive integers and the total order
- automatically updates to reflect the number of independent
- variables and their orders. If an order is omitted then it
- defaults to 1. The first independent variable is required but
- others are optional. The dependent variable defaults
- to <em>ws</em> and the first independent variable defaults
- to <em>x</em>, but both can be changed.
- </p>
- <h3>Integral...</h3>
- <p>This template supports both indefinite and definite
- integration: if both limits are omitted then the integral is
- indefinite; if both limits are specified then the integral is
- definite. Note that only a definite integral can be evaluated
- numerically and the template checks this. The integrand defaults
- to <em>ws</em> and the integration variable defaults
- to <em>x</em>, but both can be changed.</p>
- <p>By default, the template provides a single integral, but if you
- enter another integration variable in one of the boxes to the
- right of the primary integration variable then an additional
- integral appears wrapping the previous integral, thus supporting
- double and triple integrals. Matching ∫ and <em>d</em> symbol
- pairs have the same colour (blue, green or red) to facilitate
- adding limits to the right ∫ symbol.
- </p>
- <h3>Limit...</h3>
- <p>This template supports limits of (mostly) continuous functions
- (as opposed to sequences). By default, it computes a two-sided
- limit, which is appropriate if the function is continuous at the
- limit point. By clicking successively on the superscript box to
- the right of the limit point field you cycle through the limit
- from the right/above, indicated by a superscript +, the limit from
- the left/below, indicated by a superscript -, and the default
- two-sided limit. All fields are required. The template includes
- an option to load the SPECFN package, which may improve some
- results (according to the SPECFN section of the REDUCE User's
- Manual).
- </p>
- <h3>Sum or Product...</h3>
- <p>This template supports finite repeated sums and products of
- sequences, i.e. functions of a discrete control variable that runs
- over a finite range of successive increasing integers. You select
- whether to construct a sum or product by clicking on the
- appropriate toggle button, which defaults to a sum. All fields
- are required.
- </p>
- <h3>Matrix...</h3>
- <p>This template supports the creation of matrices up to 4 by 4.
- The elements can be any expressions. The (1,1) element is always
- in the top left-hand corner of the template. The width of the
- matrix, i.e. the maximum column index, is determined by the
- right-most non-empty element and the depth of the matrix, i.e. the
- maximum row index, is determined by the lowest non-empty element.
- Within the matrix so determined, empty elements default to zero,
- which is very convenient for entering diagonal, triangular or
- other sparse matrices.
- </p>
- <h3>For Statement...</h3>
- <p>This template supports the creation of <em>for</em> statements
- and is modelled on the diagram at the start of the section of the
- REDUCE manual headed "FOR Statements". You choose between
- iterating over a numerical range and a list by clicking on the
- appropriate tab, which then displays the appropriate template.
- You choose the <em>action</em> and the <em>for each ... in/on</em>
- option via pop-up choice boxes, which default to the most common
- choices. (Note that the <em>for each ... on</em> option is only
- allowed in symbolic mode, but the template does not check this.)
- The field for the expression to be executed by the <em>for</em>
- statement is on a separate line to allow it more space.
- </p>
- <h2 id="FunctionsMenu">The Functions Menu</h2>
- <p>The <em>Functions</em> menu facilitates access to some of the
- mathematical functions provided by REDUCE via dialogue boxes
- similar to those provided by the <em>Templates</em> menu. The
- functions provided include all the special functions listed in
- section 7.2 <em>Mathematical Functions</em> of the REDUCE User's
- Manual. They also include some functions listed only in the
- section on the SPECFN package and when necessary the template
- output loads the SPECFN package. The function dialogues all
- provide hyperlinks to the key sections of the local HTML version
- of the REDUCE Manual, which open in your default web browser.
- </p>
- <p>Hover over a function name to pop up a tooltip that gives a
- hint at its definition, which often uses linearlized
- mathematical notation similar to LaTeX (but without any
- backslashes). Click on the name of a special function to go to
- its full definition in the online
- NIST <a href="https://dlmf.nist.gov/">Digital Library of
- Mathematical Functions</a> (DLMF), which the notation used in
- the templates generally follows. (This occasionally differs
- slightly from the notation used in the REDUCE Manual.)
- </p>
- <p>The function dialogue boxes provide a grid of function
- templates. Click on the radio button to the left of the
- function you want to use. All but the active template is
- disabled and greyed out. The templates display the conventional
- notation used for the functions but with editable text fields
- holding the function arguments. The default arguments are
- either <em>ws</em>, where this seems appropriate, or the
- conventional variable names, usually those used in the DLMF.
- </p>
- <p>All <em>Functions</em> dialogue boxes have a pair of radio
- buttons at the top labelled <em>Symbolic</em>
- and <em>Numeric</em> that allow you to switch between the two
- modes of evaluation; the default is <em>Symbolic</em>.
- The <em>Numeric</em> option causes the template output to
- turn <em>rounded</em> mode on before the main template result is
- output and off again afterwards.
- </p>
- <p>There are also some switches towards the bottom, depending on
- the <em>Symbolic/Numeric</em> option. The switches consist of
- check boxes that initially show default settings (not those
- currently in effect in REDUCE). Any switches that are changed
- from their defaults are set in the template output to reflect
- the change before the main template result is output and reset
- afterwards. (Beware that this will override any changes from
- the default switch settings that were in effect before the
- template was used.) All dialogues provide the
- switch <em>complex</em>, which in most cases is available only
- in <em>numeric</em> mode and turns on the use of complex
- arithmetic; it is off by default. All dialogues also provide
- the switch <em>savesfs</em>, which turns on caching of numerical
- values of special functions; it is on by default.
- </p>
- <p>This menu is disabled unless REDUCE is running.
- The <em>Templates</em> menu provides the following items:</p>
- <h3>Exp, Log, Power, etc...</h3>
- <p>This provides the exponential function, various logarithms,
- power and roots (surds or radicals), factorial and binomial
- coefficients, and the <em>hypot</em>, <em>atan<sub>2</sub></em>
- and <em>atan<sub>2</sub>d</em> functions. The latter
- automatically loads the TRIGD package.
- </p>
- <h3>Gamma & Beta Functions, etc...</h3>
- <p>This provides the Gamma, Beta, digamma, polygamma, normalized
- incomplete Gamma and Beta, and dilogarithm functions, Pochhammer's
- symbols, binomial coefficients and the Riemann zeta function.
- </p>
- <h3>Integral Functions...</h3>
- <p>This provides exponential, logarithmic, sine, cosine,
- hyperbolic sine and hyperbolic cosine integral functions, the
- error function and complementary error function, and the Fresnel
- sine and cosine integral functions.
- </p>
- <h3>Airy & Bessel Functions, etc...</h3>
- <p>This provides Airy functions of the first (Ai) and second (Bi)
- kind and their derivatives (Ai' and Bi'), and the families of
- Bessel functions of the first (<em>J</em>) and second (<em>Y</em>)
- kind, modified Bessel functions of the first (<em>I</em>) and
- second (<em>K</em>) kind, and Hankel functions of the first and
- second kind.
- </p>
- <h3>Struve & Kummer Functions, etc...</h3>
- <p>This provides the families of Struve (<b>H</b>) and modified
- Struve (<b>L</b>) functions, Lommel functions of the first
- (<em>s</em>) and second (<em>S</em>) kind, Kummer <em>M</em>
- and <em>U</em> functions, Whittaker <em>M</em> and <em>W</em>
- functions, and spherical and solid harmonic (<em>Y</em>)
- functions.
- </p>
- <h3>Classical Orthogonal Polynomials...</h3>
- <p>This provides the families of Jacobi (<em>P</em>) and
- Ultraspherical or Gegenbauer (<em>C</em>) polynomials, Chebyshev
- polynomials of the first (<em>T</em>) and second (<em>U</em>)
- kind, Legendre (<em>P</em>) and associated Legendre polynomials,
- Laguerre (<em>L</em>) and generalized Legendre polynomials, and
- Hermite (<em>H</em>) polynomials.
- </p>
- <h2 id="HelpMenu">The Help Menu</h2>
- <p>All the documents accessed via the <em>Help</em> menu are local
- files. The <em>Help</em> menu provides the following items:</p>
- <h3>Run-REDUCE User Guide</h3>
- <p>This opens the Run-REDUCE User Guide in your default web
- browser. It is extracted from the Java JAR file at most once per
- run of Run-REDUCE to your default temporary directory.
- </p>
- <h3>REDUCE Manual etc.</h3>
- <p>These menu items open the manuals and other guides that are
- distributed with REDUCE in your default web browser or PDF viewer,
- as appropriate. The files are assumed to be available in your
- REDUCE installation.
- </p>
- <h3>REDUCE Web Site</h3>
- <p>This opens the REDUCE Web Site in your default web browser. It
- provides a lot of background information about REDUCE.
- </p>
- <h3>SourceForge Project Site</h3>
- <p>This opens the SourceForge Project Site in your default web
- browser. It provides access to the repository containing full
- source code for REDUCE itself, PSL, CSL, and some very closely
- related projects, pre-built distributions of REDUCE for various
- platforms, mailing lists, bug reporting, etc.
- </p>
- <h3>About Run-REDUCE</h3>
- <p>This pops up brief information about Run-REDUCE, including
- the version number and month of the release. The version number
- is also shown in the application title bar.</p>
- <h2 id="TypesetMaths">Typeset Maths Display</h2>
- <h3>Differences from the CSL REDUCE GUI, etc.</h3>
- <ul>
- <li>Display strings as text (using a normal font) and all
- identifiers using italics.</li>
- <li>Always display trailing digits in an identifier, optionally
- preceded by "_", as a subscript. Treat the final "_" in an
- identifier as introducing a subscript if it is followed by
- (the name of) a single character. As a special case, display
- <code>identifier_bar</code> as
- \(\overline{\mathit{identifier}}\) (for
- any <code>identifier</code>), which can be followed by digits
- or "_" as described above. See the examples in the table
- below. Ignore <code>fancy_lower_digits</code>.</li>
- <li>Display <code>repart</code> and <code>impart</code> as
- \(\Re\) and \(\Im\).</li>
- <li>Display <code>abs(x)</code> as \(|x|\) and matrix
- assignments as assignments.</li>
- <li>Do not display superfluous space around commas in algebraic
- lists and flat printed matrix rows.</li>
- </ul>
- <table>
- <tr><th>Identifier</th><th>Displays as</th></tr>
- <tr><td><code>my_id123</code></td><td>\(\mathit{my\_id}_{123}\)</td></tr>
- <tr><td><code>alpha123</code></td><td>\(\alpha_{123}\)</td></tr>
- <tr><td><code>beta_i</code></td><td>\(\beta_i\)</td></tr>
- <tr><td><code>gamma_delta</code></td><td>\(\gamma_\delta\)</td></tr>
- <tr><td><code>my_long_id</code></td><td>\(\mathit{my\_long\_id}\)</td></tr>
- <tr><td><code>z_bar</code></td><td>\(\bar{z}\)</td></tr>
- <tr><td><code>complex_variable_bar</code></td>
- <td>\(\overline{\mathit{complex\_variable}}\)</td></tr>
- <tr><td><code>z_bar123</code></td><td>\(\bar{z}_{123}\)</td></tr>
- <tr><td><code>z_bar_k</code></td><td>\(\bar{z}_k\)</td></tr>
- </table>
- <h3>Derivatives</h3>
- <p>
- The (shared) variable <code>fancy_print_df</code> can be set to
- one of the values <code>partial</code>, <code>total</code>
- or <code>indexed</code> to control the display of derivatives.
- The default value is <code>partial</code>. Typeset maths also
- supports the <code>dfprint</code> switch, and if this switch is
- on then <code>fancy_print_df</code> is ignored. For example,
- with the following settings, derivatives are displayed as
- follows (assuming <code>depend f,x,y</code> and <code>operator
- g</code>):
- </p>
- <table>
- <tr>
- <th><code>Setting</code></th>
- <th><code>df(f,x,2,y)</code></th>
- <th><code>df(g(x,y),x,2,y)</code></th>
- </tr>
- <tr>
- <td><code>fancy_print_df := partial</code></td>
- <td>\(\frac{\partial^3 f}{\partial x^2 \partial y}\)</td>
- <td>\(\frac{\partial^3 g(x,y)}{\partial x^2 \partial y}\)</td>
- </tr>
- <tr>
- <td><code>fancy_print_df := total</code></td>
- <td>\(\frac{d^3 f}{d x^2 d y}\)</td>
- <td>\(\frac{d^3 g(x,y)}{d x^2 d y}\)</td>
- </tr>
- <tr>
- <td><code>fancy_print_df := indexed</code></td>
- <td>\(f_{x,x,y}\)</td>
- <td>\(g(x,y)_{x,x,y}\)</td>
- </tr>
- <tr>
- <td><code>on dfprint</code></td>
- <td>\(f_{x,x,y}\)</td>
- <td>\(g_{x,x,y}\)</td>
- </tr>
- </table>
- <h3>Operators</h3>
- <p>
- An operator declared <code>print_indexed</code> has its
- arguments displayed as indices, e.g. after <code>print_indexed
- a</code> the operator value <code>a(i,2)</code> is displayed as
- \(a_{i,2}\). You can declare several operators together to be
- indexed, e.g.
- <pre>print_indexed a, b, c;</pre>
- </p>
- <h2 id="Printing">Printing on Linux</h2>
-
- <p>It appears that on Linux, JavaFX is not aware of the default
- <em>Print to File</em> printer and only displays the print
- dialogue if there is at least one printer explicitly installed.
- However, it should be sufficient to install the CUPS PDF
- printer, to which Run-REDUCE can print. (But beware that
- Run-REDUCE may not recognise the new printer immediately!) If
- you have problems printing to a real printer then a workaround
- might be first to print to PDF and then to print the PDF to a
- real printer.
- </p>
- <p>If you cancel the print dialogue then Run-REDUCE may be left
- unresponsive for a long time, but switching focus away from and
- then back to Run-REDUCE may make it responsive again.
- Alternatively, you may be able to avoid this problem by
- selecting the <em>Print To File</em> option instead of
- cancelling the print dialogue, clicking on <em>Print</em> and
- then cancelling the resulting file selector, which should cancel
- the whole print job immediately. (Nearly all of the code
- involved is in the standard JavaFX library and so out of my
- control, although in the longer term I might be able to improve
- the responsiveness by running printing in a separate thread.)
- </p>
- <h2 id="ConfigExamples">Configuring Run-REDUCE for Subversion Builds</h2>
- <p>Here are some examples of REDUCE command configurations that
- might be appropriate if you build REDUCE yourself and want to
- run it from your Subversion repository. They assume that you
- downloaded the repository to your home directory using
- the <code>svn</code> command provided by SourceForge.
- </p>
- <h3>Microsoft Windows using the Shell</h3>
- <h4>CSL REDUCE</h4>
- <table class="small nowrap">
- <tr><th>Command Label</th><td><code>CSL REDUCE Subversion</code></td></tr>
- <tr><th>Command Root Directory</th><td><code>~\reduce-algebra-code</code></td></tr>
- <tr><th>Command Pathname</th><td><code>$REDUCE\bin\redcsl.bat</code></td></tr>
- <tr><th>Command Argument 1</th><td><code>--nogui</code></td></tr>
- </table>
- <h4>PSL REDUCE</h4>
- <table class="small nowrap">
- <tr><th>Command Label</th><td><code>PSL REDUCE Subversion</code></td></tr>
- <tr><th>Command Root Directory</th><td><code>~\reduce-algebra-code</code></td></tr>
- <tr><th>Command Pathname</th><td><code>$REDUCE\bin\redpsl.bat</code></td></tr>
- </table>
- <h3>Linux using the Shell</h3>
- <h4>CSL REDUCE</h4>
- <table class="small nowrap">
- <tr><th>Command Label</th><td><code>CSL REDUCE Subversion</code></td></tr>
- <tr><th>Command Root Directory</th><td><code>~/reduce-algebra-code</code></td></tr>
- <tr><th>Command Pathname</th><td><code>$REDUCE/bin/redcsl</code></td></tr>
- <tr><th>Command Argument 1</th><td><code>--nogui</code></td></tr>
- </table>
- <h4>PSL REDUCE</h4>
- <table class="small nowrap">
- <tr><th>Command Label</th><td><code>PSL REDUCE Subversion</code></td></tr>
- <tr><th>Command Root Directory</th><td><code>~/reduce-algebra-code</code></td></tr>
- <tr><th>Command Pathname</th><td><code>$REDUCE/psl/redpsl</code></td></tr>
- </table>
- <h3>Microsoft Windows not using the Shell</h3>
- <h4>CSL REDUCE</h4>
- <table class="small nowrap">
- <tr><th>Command Label</th><td><code>CSL REDUCE Subversion</code></td></tr>
- <tr><th>Command Root Directory</th><td><code>~\reduce-algebra-code\cslbuild\x86_64-pc-windows</code></td></tr>
- <tr><th>Command Pathname</th><td><code>$REDUCE\csl\reduce.com</code></td></tr>
- <tr><th>Command Argument 1</th><td><code>--nogui</code></td></tr>
- </table>
- <h4>PSL REDUCE</h4>
- <table class="small nowrap">
- <tr><th>Command Label</th><td><code>PSL REDUCE Subversion</code></td></tr>
- <tr><th>Command Root Directory</th><td><code>~\reduce-algebra-code\pslbuild\x86_64-pc-windows</code></td></tr>
- <tr><th>Command Pathname</th><td><code>$REDUCE\psl\bpsl.exe</code></td></tr>
- <tr><th>Command Argument 1</th><td><code>-td</code></td></tr>
- <tr><th>Command Argument 2</th><td><code>1000</code></td></tr>
- <tr><th>Command Argument 3</th><td><code>-f</code></td></tr>
- <tr><th>Command Argument 4</th><td><code>$REDUCE\red\reduce.img</code></td></tr>
- </table>
- <h3>Linux not using the Shell</h3>
- <h4>CSL REDUCE</h4>
- <table class="small nowrap">
- <tr><th>Command Label</th><td><code>CSL REDUCE Subversion</code></td></tr>
- <tr><th>Command Root Directory</th><td><code>~/reduce-algebra-code/cslbuild/x86_64-unknown-ubuntu20.04</code></td></tr>
- <tr><th>Command Pathname</th><td><code>$REDUCE/csl/reduce</code></td></tr>
- <tr><th>Command Argument 1</th><td><code>--nogui</code></td></tr>
- </table>
- <h4>PSL REDUCE</h4>
- <table class="small nowrap">
- <tr><th>Command Label</th><td><code>PSL REDUCE Subversion</code></td></tr>
- <tr><th>Command Root Directory</th><td><code>~/reduce-algebra-code/pslbuild/x86_64-unknown-ubuntu20.04</code></td></tr>
- <tr><th>Command Pathname</th><td><code>$REDUCE/psl/bpsl</code></td></tr>
- <tr><th>Command Argument 1</th><td><code>-td</code></td></tr>
- <tr><th>Command Argument 2</th><td><code>1000</code></td></tr>
- <tr><th>Command Argument 3</th><td><code>-f</code></td></tr>
- <tr><th>Command Argument 4</th><td><code>$REDUCE/red/reduce.img</code></td></tr>
- </table>
- </body>
- </html>
|