
                     A COMPENDIUM OF REDUCE PROJECTS

The following is a list of possible REDUCE projects which have been
identified.  Most are self-contained, and many already have had work done
on them.  In the latter case, references are given to the existing work.

For further details, please contact the requester given for the relevant
entry.


1. INPUT AND OUTPUT
   ----- --- ------

INTERACTIVE DISPLAY AND EDITING OF ALGEBRAIC EXPRESSIONS.  Write a program
which displays mathematical expressions in a text book-like form, both on
a CRT and also on a printer capable of graphical output.  Presumably, the
output device should be transparent to the program, provided it meets
certain minimum criteria.  The program should enable a user to point to
sub-expressions, rename them, and perform other modifications of the
expression.  It may make sense to do this on a Unix machine, and link to
TEX or Postcript.  Study the problems of interacting with algebraic
expressions in such an environment and design and implement the necessary
editing techniques.

Status:  There have been several attempts at solving this problem, mostly
proprietary (e.g, MathScribe).  A system designed by Doug Young, then at
Kent State University, written in Franz Lisp for supporting Macsyma on a
Tektronix 4400 display, is available in the "interface" sub-library in the
REDUCE network library as a guide.  Converting this system to run in Rlisp
in an X Windows environment is a possibility.

Requester: reduce@rand.org.

Date: 15 January 1989



2. INTEGRATION
   -----------

INTEGRATION TEST FILE.  Distributed with REDUCE is a file of integration
examples which are in a more or less random order.  An updated version is
in the examples directory.  Organize this file to correspond to a standard
table book or books (such as Gradstyen and Ruznik) and augment with more
difficult examples.

Originator: reduce@rand.org

Date: 15 January 1989


INTEGRATOR TRACE.  There is a switch in the integrator (trint) which prints
out diagnostic information explaining how the integrator works.  However,
the format is rather confusing and untidy.  Clean up this trace output so
that the integrator can become a more useful teaching aid.

Originator: reduce@rand.org

Date: 15 January 1989


ENHANCED HYBRID INTEGRATOR.  Merge the latest distributed integration code
and the Harrington pattern matching augmentation (which is written in the
experimental Mode REDUCE system developed several years ago) into a robust
package.  The Harrington code is available to anyone interested.

Originator: reduce@rand.org

Date: 15 January 1989


DEFINITE INTEGRATION.  Develop and document and effective program for
definite integration.  This would include contour integration as well as
other standard specific methods for definite integration.  Multivariate
definite integration and approximation schemes such as Gaussian
approximation would also be part of this.  Presumably this would require
use of a limits module.

Status:  Stan Kameny <valley!stan@rand.org> is interested in this problem.

Requester: reduce@rand.org

Date: 15 January 1989


3. SUPPORT TOOLS
   ------- -----

A "LINT" FOR REDUCE. Develop a program along the lines of the Lint program
for C which would check a REDUCE program for conformity to some standard.
Presumably, this would use the REDUCE pretty-printing and structuring
programs as a basis.

Status: Improvements are being made to the RPRINT program.  Presumably
these would be useful for this project.

Requester: reduce@rand.org

Date: 15 January 1989


MODULE ANALYSIS. Modify the CREF program so that an "INTERNAL" declaration
in a module could be used to generate IMPORTS and EXPORTS declarations.

Status:  This is a straightforward project that could be used as a practice
problem for a student interested in understanding REDUCE at the system
level.

Requester: reduce@rand.org

Date: 15 January 1989


IRREDUCIBLE BLOCK MATRIX PROGRAM. Write a program which can take a set of
REDUCE or Lisp function definitions and produce a block matrix which shows
all the interconnections of the functions.  This is intended as an aid in
the modularization of programs.

Status:  John Fitch <jpff@maths.bath.ac.uk> has a dataflow analysis program
that is probably equivalent to this.

Requester: reduce@rand.org

Date: 15 January 1989


MEMORY ORGANIZATION. Study and experiment with various memory organizations
(eg, hashed heap, cdr coding, stack-like heap, large virtual memory,
secondary memory use) and determine optimal strategies for supporting
algebraic calculations.  Study also the use of vectors as an alternative
to lists in various calculations.

Requester: reduce@rand.org

Date: 15 January 1989


STRUCTURE COMPARISON OF TWO FILES. Design and implement a program which can
take two files of REDUCE (or Rlisp) definitions and detail the structural
changes in the files by comparing list structure.

Status: A simple version of this is available, but it needs more work
and documentation.

Requester: reduce@rand.org

Date: 15 January 1989


REDUCE MEASUREMENT SUPPORT. Develop aids for the study of time and space
usage in REDUCE calculations. These could include the determination of
function and variable use, and an estimation of the time spent inside
various functions. Various profiling tools would be an obvious result of
this.

Status:  There are various LISP profiling programs around, but they need
customizing for REDUCE.  Some work on the time and space problem has been
done by Patricia Pearce at Plymouth Polytechnic.

Requester: reduce@rand.org

Date: 15 January 1989



5. MATHEMATICAL SUPPORT MODULES
   ------------ ------- -------

A BETTER SOLVE PROGRAM.  The solve program currently available in REDUCE is
fairly limited in scope. Increase the range of problems which this program
can solve, and make the diagnostics when it fails more informative.  In
particular, the implementation of the techniques in Yun's Algsys program
would be very useful, as would improved techniques for solving equations
with trigonometric and transcendental functions.  Numerical approximations
should be considered where closed form solutions are impossible.

Requester: reduce@rand.org

Date: 15 January 1989


GENERAL TRANSFORMS. Implement modules to handle transforms such as Fourier
and Mellin and their inverses.

Requester: reduce@rand.org

Date: 15 January 1989


ORDINARY DIFFERENTIAL EQUATIONS. Implement the ideas of Singer and
collaborators in a REDUCE program, and interface with other REDUCE programs
that produce solutions to ODE's in a literal form, such as the ODESOLVE
package in REDUCE 3.4.

Requester: reduce@rand.org

Date: 15 January 1989


POISSON SERIES.  Develop an efficient REDUCE implementation of these.
Test on various examples from celestial mechanics described in the
literature.  In particular, one should decide whether it's more efficient
to use complex exponential notation and turn the Poisson series into a
complex power series.  This approach is used in such calculations as the
theory of the motion of the Moon where the Poisson series in the final
result may have several hundred thousand terms.


Requester: reduce@rand.org

Date: 15 January 1989



6. DOCUMENTATION AND ON-LINE REFERENCE AIDS
   ------------- --- ------- --------- ----

"STYLE" AND TUTORIAL MANUAL.  Collect and standardize a number of
non-trivial programs in REDUCE.  These should illustrate a range of
techniques including the use of the symbolic, algebraic and mixed modes of
operations.  Parsing constructs such as macros, special combining forms
(eg FOR EACH) should be illustrated.  Indentation conventions as
determined by the REDUCE prettyprinter should be observed and stressed.

Requester: reduce@rand.org

Date: 15 January 1989


ON LINE HELP FACILITY.  Develop an on-line help facility for REDUCE.  This
should be able to explain the meaning of any defined symbol, and also give
further clarification when errors are encountered.

Status: Several models of help facilities already exist, but none are
available in the current REDUCE library.

Requester: reduce@rand.org

Date: 15 January 1989


AUTOMATIC MODULE DOCUMENTER. Design and implement a protocol for the
automatic extraction of special comment-like statements (for example,
headed by the keyword TEXT) from modules and procedures to produce
automatically source for an online HELP facility.  Eventually, one could
require that all modules have such text before being accepted by the
system.

Requester: reduce@rand.org

Date: 15 January 1989


FUNCTION DEFINITION REFERENCE.  Make it possible for a user to type a
function name and have that function's definition appear.  In a
module-based system, presumably only entry points would be allowed as
candidates for display.

Requester: reduce@rand.org

Date: 15 January 1989


A COMPEDIUM OF REDUCE PROGRAMMING EXAMPLES. Collect together the numerous
examples of REDUCE programs available at RAND, Utah and possibly elsewhere
(e.g. CERN) into a publishable compendium. Organize the sections to
illustrate various application areas, and cross-reference by REDUCE
facilities used.

Status: Several collections already exist (e.g., the one distributed by
Colorado State University).

Requester: reduce@rand.org

Date: 15 January 1989



7. COMPILATION
   -----------

COMPILATION OF REAL ARITHMETIC EXPRESSIONS.  Develop an addition to the
Portable Lisp Compiler that can compile expressions involving real
(floating point) arithmetic.  This would include the handling of multiple
precision expressions.

Requester: reduce@rand.org

Date: 15 January 1989


AN ANTI-COMPILER. Write a program which can take a sequence of compiler
c-macros and convert them back into "readable" Lisp definitions. Extend
this if possible to assembly language output.

Requester: reduce@rand.org

Date: 15 January 1989


VECTOR COMPILATION.  Develop a machine independent protocol for the
efficient compilation of vectors.

Status: Much of this is now available in the PSL compiler.

Requester: reduce@rand.org

Date: 15 January 1989


BLOCK COMPILATION.  Develop a block compiler for LISP.  Suitable protocols
and c-macros for in-line coding should also be studied

Status:  Code for this has been developed by Hearn and people at Cambridge
University.  There is of course the question of whether one should use the
Portable Lisp Compiler for this anyway, or start from scratch on a
"modern" compiler.

Requester: reduce@rand.org

Date: 15 January 1989



8. USER CODE OPTIMIZATIONS AND TRANSFORMATIONS
   ---- ---- ------------- --- ---------------

A SPECIFIC CASE STUDY. Look at the code for the Einstein tensor generation
in the existing REDUCE test file and determine if optimizations are
possible first by hand and then automatically. In particular, see to what
extent the optimizations can be pattern directed.

Requester: reduce@rand.org

Date: 15 January 1989


PROGRAM OPTIMIZATION BY REMOVAL OF REDUNDANT TRANSFORMATIONS. Algebraic
code is often full of transformations from one mode to another. In some
cases, it is possible that a string of such transformations can be replaced
by a simpler single transformation, or results stored temporarily so that a
reconversion is not necessary later in the program. Determine to what
extent this is true in user programs and develop appropriate (hopefully
pattern directed) techniques to remove such redundancy.

Requester: reduce@rand.org

Date: 15 January 1989



12. HIGH ENERGY PHYSICS
    ---- ------ -------

ALTERNATIVE ALGORITHMS FOR TRACE EVALUATION. In 1953, Caienello and Fubini
suggested an alternative method for trace evaluation to the one commonly
used. Investigate the relative efficiency of this method, and study its
potential generalization to quantum chromodynamics. At the same time,
the current trace algorithms could be reevaluated to see if they can be
implemented more efficiently.

Requester: reduce@rand.org

Date: 15 January 1989


FACTORING EXPRESSIONS INVOLVING DOT PRODUCTS.  Write a program that can
factorize expressions involving dot products of vectors.  E.g., this would
transform a.a + 2*a.b + b.b  into  (a+b).(a+b).

Requester: Geert J v Oldenborgh <t19@nikhefh.hep.nl>

Date: 20 October 1988
