Est. 1994 Intermediate

Maple V3

Maple V Release 3, the 1994 release of Waterloo Maple Software's computer algebra system, which added the global statement, name protection, unlimited-length strings and a rewritten statistics package to the Maple programming language.

Created by Waterloo Maple Software; Maple originated in the Symbolic Computation Group at the University of Waterloo

Paradigm Procedural, embedded in a computer algebra system
Typing Dynamic, with optional type checks on procedure parameters
First Appeared 1994
Latest Version Maple V Release 3 (1994); superseded by Maple V Release 4 (around January 1996)

Maple V Release 3 (often shortened to Maple V3 or MVR3) is the 1994 release of Maple, the computer algebra system developed by Waterloo Maple Software of Waterloo, Ontario. Maple is both a mathematics environment and a programming language. Users type expressions to integrate, solve, simplify or plot, and they extend the system by writing procedures in the Maple language, which is also the language most of Maple’s own mathematical library is written in.

Release 3 was the third release in the Maple V series. Its press announcement emphasised the user interface and the mathematics: a worksheet interface that could export to LaTeX, more robust symbolic results, better interactive graphics, and a searchable help system. For people who wrote Maple code, the release notes record several changes to the language itself, including a new global declaration, automatic local variables, protected system names, and strings of unlimited length. Maple V Release 4 replaced it in early 1996. Maple is still developed today. Release 3 itself is long out of support.

History & Origins

Maple at Waterloo

According to the University of Waterloo Symbolic Computation Group’s history of Maple, the project was conceived in November 1980. The goal was a computer algebra system accessible to large numbers of researchers and students. The designers chose to implement it in a systems language from the BCPL family, first B and then C, instead of LISP, and made memory efficiency as important as speed so that Maple could run on modest machines. In late 1987 the decision was made to incorporate Waterloo Maple Software, which Wikipedia dates to 1988. The company is known today as Maplesoft.

The Maple V series

Maple V appeared in 1990. Wikipedia’s version list dates it to August 1990 and says it brought X11 and Windows versions of the graphical interface that had first shipped for the Macintosh with Maple 4.3. Maple V Release 2, which Wikipedia dates to November 1992, introduced the worksheet, a document that combined text, graphics, input and typeset output. Release 3 continued that line.

ReleaseDate (Wikipedia version list)
Maple VAugust 1990
Maple V Release 2November 1992
Maple V Release 315 March 1994
Maple V Release 4January 1996
Maple V Release 51 November 1997

The 1994 announcement

The Release 3 press release, dated Waterloo, Ontario, 15 March 1994, was forwarded to MIT’s Mathematical Software Users Group the next day. It said that Release 3 was available in North America for:

  • Macintosh
  • MS/PC-DOS 5.0 and later
  • Microsoft Windows 3.1
  • Digital Alpha AXP (OSF/1) and DECstation (Ultrix)
  • IBM RS/6000
  • HP 9000/700
  • Sun workstations running SunOS 4.x, 5.0 or Solaris

International availability was set for 1 April 1994, and the release promised that more platforms would be announced later. The Windows version gained a tool bar on worksheet and plot windows and status bars showing memory and CPU usage. The Macintosh and Motif versions gained keyword search in help, and on every platform plots could be saved as GIF files.

Although the product was announced in 1994, development builds existed earlier. Maplesoft’s Release 3 notes show interface(version) returning Maple V, Release 3, Thu Aug 19 15:16:50 MET DST 1993, so the build used for that example was dated August 1993. The public release year is 1994.

Deployment at MIT

MIT’s Athena posts show how a large site adopted the release. On 18 May 1994, Reid Pinchback of MIT Academic Computing Services announced that Release 3 was ready on Athena for Sun (Solaris), RS/6000 (AIX) and DECstation (Ultrix), and a follow-up on 20 May identified it as patchlevel 1. He called it “quite stable with numerous bugfixes” and planned to make it the default at the end of May, renaming the Release 2 locker to maple.vr2.

He noted two practical upgrade issues. The formats of .m files (Maple’s internal library format) and worksheet files had changed. Worksheets converted automatically, but users holding only .m files without their source needed the supplied m2src utility. Startup was also slightly slower than Release 2, which he put down to how the library files were organised and how that interacted with AFS file caching.

Design Philosophy

Maple follows the architecture of the original Waterloo design. A small compiled kernel provides the core language and data structures, and a much larger library of mathematical code, written in Maple itself, is loaded on demand. Release 3 kept this design and made the library easier to package. It introduced march, a library archiver that stored a library as two files, maple.lib holding the code and maple.ind indexing it. The release notes say this gave faster access, used less disk space, and made it easier to distribute a library of Maple code.

The same idea shows up in the share library, a collection of user-contributed packages, routines and worksheets distributed with Maple with their source code included. The Release 3 notes describe it as about 25 application packages, 50 routines, 30 worksheets and 25 PostScript, LaTeX and TeX articles. They also state that “the original Maple src code is there and available to the user should s/he wish to study it or modify it.”

A recurring theme in the Release 3 mathematics is correctness over convenience. The press release quoted a user praising the use of “only reductions and simplifications that are ‘provable’.” The release notes explain the change. Release 3 stopped automatically simplifying sqrt(x^2) to x and (x*y)^(1/3) to x^(1/3)*y^(1/3), because those rules are wrong for some values of x and y. simplify now applied them only when it could prove them valid, for example when x was known to be positive.

Key Features of the Language

Procedures in Maple V syntax

Maple V code looks different from modern Maple. Procedures closed with a plain end, for loops with od, and if statements with fi. The double quote " referred to the previous result, the way % does in later versions. This is the procedure example from the Release 3 notes:

proc(n) local y; global A;
    y := 1;
    for i to n do y := x*y; A[i] := y od;
end;

The global statement and automatic locals

Before Release 3, any variable a procedure did not declare was treated as global. Release 3 added an optional global statement after local, and changed how undeclared variables are treated. According to the release notes, an undeclared variable becomes local if it:

  1. appears on the left-hand side of an assignment, or
  2. is the index variable of a for or seq.

Any other undeclared variable is treated as global. For the procedure above, Maple makes i local, treats x as global, and prints a warning:

Warning, i is assumed to be a local variable

The notes say the warning “serves as a useful reminder to the user to declare variables”. They also say that the change “will affect many users Maple procedures” and that the release came with a tool to insert the global declarations needed to update old code. Release 3 also stopped accepting local declarations inside arrow operators, so x -> local i; x; became a syntax error.

Name protection

Release 3 added a protection mechanism so that users could not accidentally overwrite system names. All built-in and readlib-defined function names, type names and system constants, such as exp, gcd, list and true, became protected. Users could protect and unprotect their own names too:

> lhs := x^2-1;
Error, attempting to assign to lhs which is protected

> height := proc(p,x) local t; max(seq(abs(t),t=[coeffs(p,x)])) end:
> protect(height);
> height := 1;
Error, attempting to assign to height which is protected

The release notes say Maple strings “now have no limitation on their length”. Before Release 3 the limit was 499 characters. Two search functions were added, SearchText (case-sensitive) and searchtext (case-insensitive):

> s := `maple and Maple and MAPLE`:
> SearchText(`Maple`,s);
                                       11
> searchtext(`Maple`,s);
                                       1

In Maple V, strings were written with backquotes, as in this example.

Subpackages and the new stats

The package mechanism was extended to support subpackages. The release notes use the rewritten statistics package to demonstrate them. stats was split into describe, transform, random, statevalf, fit and statplots, and any of the following refers to the same function:

> with(stats): with(describe):
> mean([1,5]), describe[mean]([1,5]), stats[describe,mean]([1,5]);
                                    3, 3, 3

The new stats also supported missing values (missing), data classes written as ranges, and weighted data written as Weight(data, weight). Because the data structure had changed, programs written for the old stats package needed updating.

Code generation and other programming tools

  • fortran gained a mode option (single, double, complex or generic) controlling how function names are translated. Both fortran and C improved their handling of arrays, writing unassigned entries as undefined.
  • makehelp turned a plain-text file into a help page, so package authors could ship online help with their code.
  • piecewise let one function take different forms on different intervals.
  • lprint output could now be read back into Maple.
  • interface(version) and interface(wordsize) reported the version string and machine word size.
  • New help shortcuts: info(foo), usage(foo) or ??foo, example(foo) or ???foo, and related(foo).

Mathematics in Release 3

The press release highlighted integration, exact solutions of equations, the manipulation of symbolic expressions and differential equations, including “two completely new algorithms for solving linear differential equations”. The Release 3 notes add detail:

  • DESol, a new structure for an unsolved differential equation’s solution, by analogy with RootOf for algebraic equations. Maple could differentiate, integrate, expand as a series and evaluate a DESol numerically without a closed-form solution.
  • Integration: some definite integrals now evaluated in terms of the Beta and hypergeometric functions, some Bessel-function integrals were handled, and Hermite reduction was supported for a class of integrands involving exp, ln, sin or cos.
  • signum(0) became undefined by default, so that rules like signum(abs(x)) = 1 stayed valid. The old behaviour could be restored by setting the environment variable _Envsignum0.
  • RootOf could select a specific complex root with a numerical approximation, as in RootOf(x^4-2, x, 1.2).
  • Laplace transforms handled convolutions.
  • Plotting added a discont = true option for discontinuities and new contours, thickness, symbol and font options.

The press release claimed that these changes made Maple V “faster, more efficient, and robust”. Neither the release nor the notes give a benchmark for that claim, so it is a vendor statement and not a measured result.

Evolution and Current Relevance

Release 3 was followed by Maple V Release 4, which Wikipedia dates to January 1996. Maplesoft’s online help keeps a separate page on compatibility issues for users upgrading from Release 3 to Release 4. Release 5 followed in 1997, after which Maplesoft dropped the “V” and moved to Maple 6 in 1999. From 2015 onward releases have been named by year.

Maplesoft’s current online help still hosts the Release 3 “new features” notes under updates/v53, which is the same ?updates,v5.3 topic MIT pointed users to in 1994. That makes Release 3 unusually well documented for a 1994 product. The software itself is not: it was sold commercially, it ran on operating systems that are long obsolete, and there is no free distribution or Docker image of it.

Why It Matters

Maple V Release 3 is where several habits of Maple programming begin. Explicit global declarations and the warning about undeclared locals pushed users towards properly scoped procedures. Protected system names stopped a whole class of accidental errors in which a user overwrote a built-in such as list or lhs. Subpackages gave large libraries like stats a structure. The refusal to apply unprovable simplifications such as sqrt(x^2) = x reflected a priority on correctness that computer algebra systems were increasingly expected to have. The MIT deployment notes, with their worry about changed .m file formats and slower startup over AFS, also give a concrete picture of what upgrading a campus-wide mathematics system was like in 1994.

Sources and Verification Notes

  • Announcement, platforms and dates: Waterloo Maple Software press release, 15 March 1994, as forwarded to MIT’s Mathematical Software Users Group (discuss archive msug [131], 16 March 1994).
  • MIT deployment: Reid M. Pinchback, Athena Bugs [12061] (18 May 1994) and msug [134] (20 May 1994).
  • Language and library changes: Maplesoft online help, updates/v53 (“New features that have been added to Maple V for Release 3”), including the code examples quoted above.
  • Origins and the release list: University of Waterloo Symbolic Computation Group, History of Maple; Wikipedia, Maple (software).
  • Books: Maplesoft book catalogue entry for Maple V Student Version Release 3, Dos/Windows (Springer, 1994); msug [139] (6 July 1994) for the Maple V Quick Reference.
  • Not verified: the exact release dates of Maple V, Release 2 and Release 4, which come from Wikipedia’s version list; whether Release 3 had patchlevels after patchlevel 1; and which further platforms were added after the March 1994 announcement. A page on 12000.org reportedly gives 3 March 1994 for Release 3, but it could not be retrieved, and this page uses the 15 March date from the press release.

Timeline

1980
The Maple project is conceived at the University of Waterloo in November 1980, with an operational system with limited capabilities running by the first week of December
1988
Waterloo Maple Software is founded to market, distribute and support Maple. The Waterloo history says the decision to incorporate was made in late 1987
1990
Maple V is released (Wikipedia gives August 1990), bringing X11 and Windows versions of the graphical interface first seen on the Macintosh with Maple 4.3
1992
Maple V Release 2 introduces the Maple worksheet, combining text, graphics, input and typeset output (Wikipedia gives November 1992)
1994
Waterloo Maple Software announces Maple V Release 3 on 15 March 1994 for North America, with international availability set for 1 April 1994
1994
MIT makes Maple V Release 3 (patchlevel 1) available on Athena for Sun Solaris, IBM RS/6000 and DECstation in May 1994, planning to make it the default version at the end of that month
1994
Springer publishes the Maple V Student Version, Release 3 for DOS/Windows
1996
Maple V Release 4 supersedes Release 3 (Wikipedia gives January 1996)

Notable Uses & Legacy

MIT Athena

MIT's Academic Computing Services installed Maple V Release 3 in the Athena 'maple.vr3' locker in May 1994 for Sun (Solaris), RS/6000 (AIX) and DECstation (Ultrix) workstations, and planned to make it the campus default at the end of May, replacing Release 2.

Maple V Student Version, Release 3

A 1994 DOS/Windows student edition published by Springer, which Maplesoft's book catalogue (crediting Waterloo Maple Software as author) describes as giving 'the science student or enthusiast' Maple V's symbolic and numeric capabilities and an 'easy-to-implement programming language'.

Maple V Quick Reference

Nancy Blachman and Michael Mossinghoff's 1994 Brooks/Cole reference (ISBN 0-534-20478-3) described every Maple command in Release 3 and Release 2, with a chapter on programming and Maple analogues for common Mathematica commands.

The Maple share library

Release 3 shipped a user-contributed share library of about 25 application packages, 50 routines and 30 worksheets, organised into subject areas such as algebra, combinatorics, engineering and statistics, with Michael Monagan as its contact for contributions.

Running Today

Run examples using the official Docker image:

docker pull
Last updated: