**Previous:** First report of the Algrebra Assistant
**Up:** First report of the Algrebra Assistant
**Next:** Work done

The Algebra Assistant is a project to build an interactive equation editor that promotes exploration of mathematics by removing some of the tedium associated with doing algebra. With less tedium, less errors due to inattention occur, and more possible routes of attack can be considered before frustration sets in.

The Algebra Assistant is concurently conceived to have three major components:

- [graphics interface]
An X window interface provides the maximum portability for the
application. Providing graphics not only makes the equations look
nice, but allows the user to retain all the prior knowledge they
might have with at the chalkboard. An ascii interface would at best be
a kludge, and would require the user to learn a new set of symbols.
- [editor]
The system must provide a mechanism to take an equation and edit it in
the normal ways that one typically does on a chalkboard: this usually
involves writing down an equation (possibly giving it a name), and
then transforming it by doing substitutions, multiplying by unity
(that is, cancelling terms top and bottom, or rationalizing a
denominator), and adding and subtracting unity (either to move a term
from one side of an equation to the other, or to do things like
completing a square).
- [grinder] As a support tool for the above, the system needs to be able to provide a simple level of assistance. All of the operators and symbols being manipulated having some meaning, and the user should be able to request that a particular operation be interpreted. This can be particularly usefull when it comes to doing things like taking derivatives of complicated equations, or doing integrals. It is not suggested that this grinder be all encompasing, but rather that it provide simplications that are easy to do, and provide interface(s) to larger, more complete programs such as Maple, Macsyma, etc.

These portions of the system will be developed in a language called Self. Please see the Self documentation for a proper overview of the language.