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
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.
| Release | Date (Wikipedia version list) |
|---|---|
| Maple V | August 1990 |
| Maple V Release 2 | November 1992 |
| Maple V Release 3 | 15 March 1994 |
| Maple V Release 4 | January 1996 |
| Maple V Release 5 | 1 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:
- appears on the left-hand side of an assignment, or
- is the index variable of a
fororseq.
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
Strings and text search
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
fortrangained amodeoption (single,double,complexorgeneric) controlling how function names are translated. BothfortranandCimproved their handling of arrays, writing unassigned entries asundefined.makehelpturned a plain-text file into a help page, so package authors could ship online help with their code.piecewiselet one function take different forms on different intervals.lprintoutput could now be read back into Maple.interface(version)andinterface(wordsize)reported the version string and machine word size.- New help shortcuts:
info(foo),usage(foo)or??foo,example(foo)or???foo, andrelated(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 withRootOffor algebraic equations. Maple could differentiate, integrate, expand as a series and evaluate aDESolnumerically 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,sinorcos. signum(0)became undefined by default, so that rules likesignum(abs(x)) = 1stayed valid. The old behaviour could be restored by setting the environment variable_Envsignum0.RootOfcould select a specific complex root with a numerical approximation, as inRootOf(x^4-2, x, 1.2).- Laplace transforms handled convolutions.
- Plotting added a
discont = trueoption for discontinuities and newcontours,thickness,symbolandfontoptions.
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
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.