FORM Factsheet


Why use Symbolic Manipulation?

The use of computerized formula manipulation greatly simplifies the work of scientists and engineers. Not only is it faster than work by hand, it is usually also more reliable. It is also much easier to obtain a nice printout of the results.

What is FORM?

FORM is a Symbolic Manipulation system that is designed for the processing of exceptionally large formulae in as little time as possible. There are many criteria by which to judge what is the best Symbolic Manipulation system; by this criterion FORM wins the prize.

What distinguishes FORM from the rest?

Computer Algebra (CA) systems are designed to provide the user with a mathematicians workbench. They contain an enormous library of mathematical knowledge and try to react to input in almost the same way as a human would. For most common problems this is ideal. However, this design forces some limitations on the internal structure of such a CA system. It results mostly in a restriction of the size of the expression that can be manipulated (determined by the size of the physical memory of the computer). When this size is surpassed, either the problem will be abandoned, or execution becomes intolerably slow. In FORM the allowable types of operations have been restricted to some degree to remove these limits. Hence the maximum size of expressions is determined by the amount of free disk space. The execution time is effected little by the disk accesses. FORM has a smaller instruction set than most CA-systems and needs some more care in programming, but it will allow the solution of a very large class of problems that are too big for CA-systems. For this reason FORM is called a Symbolic Manipulation system rather than a CA-system.

The optimization for speed and expression size has a spinoff: it turns out that the structure of FORM is very well suited for parallel processing. It may be possible to gain a few extra orders of magnitude in symbolic power in the future.

What kind of problems will FORM solve?

FORM is a language like C or Fortran. By itself it will not solve anything, but when programmed properly, one can do very much with it. It is rapidly becoming the premier symbolic language in particle physics. In general it will be useful in deep perturbation expansions. These occur in many fields of science and engineering. It is very good with multivariate polynomials. It has tools to manipulate the argument fields of functions in abstract ways. It can deal with non-commuting objects in a natural way. The basic rule is that if you have a problem that is too big for your favorite system, have a good look at FORM.

Is FORM hard to learn?

Whether FORM is experienced as easy or as hard depends often on the prior experience of the user with CA-systems. This is caused by a completely different operational philosophy. This again is at least partially caused by the two basic requirements: speed and large formulae. Once this philosophy is understood things are very easy. The user is aided in this with a large tutorial section in the manual. The largest part of the 259 page manual is taken by a description of all features and commands. A big section is taken by some explicit examples, some of which are rather complicated, but everything is explained. The tutorial introduction FORM for Pedestrians of André Heck (CAN) makes the learning curve for FORM users less steep.

Should you sell your CA-system?

Of course not! The knowledge base of a good CA-system is very valuable. It is often very nice to solve a problem by giving parts of it to the CA-system, then do the big part of it with FORM and then prepare a beautiful output with the CA-system again. This is just like Fortran: because a CA-system can do some calculations, it does not mean that one has no further need for a calculational language. Actually the hybrid of FORM and a CA-system can surpass the usefulness of either system alone manifold.

On which computers is FORM available?

FORM is a system that runs in batch mode. This makes it rather easy to get it to run on nearly any computer, provided this computer has a decent C compiler. Especially the performance on the high end workstations is very good when compared to mainframes. It will run on computers with MS-DOS (1 Mbyte and hard disk needed); Atari-ST/TT; Apple Macintosh; VAX/VMS, VAX/Ultrix, DEC-stations; Apollo DN3500, DN10000; NeXT; IBM RS-6000; SUN 3, 4 and SPARC; Silicon Graphics, and many others.

Is FORM well supported?

FORM is very much alive. Version 1 came out in 1989 and is available by anonymous ftp from ftp.nikhef.nl. Version 2 came out in 1991. In the future the language is expected to become even better. Often users suggest improvements that would make the solution of their individual problems much easier. These then are often properly "abstracted" so that they may work for many types of problems and worked into the language. Bugs (yes, they all have them) are usually eliminated quickly, if they are properly repeatable.

How to obtain more information about FORM?

The easiest way to ask questions about FORM is to send e-mail to form@can.nl. If this path is not available to you, you can try snail mail to: CAN Diensten, Kruislaan 419, 1098 VA, Amsterdam, The Netherlands. (CAN stands for Computer Algebra Nederland)

Some facts about FORM

Size
The executable takes about 200-400 Kbytes, depending on the type of computer. Libraries (when available) can be obtained by means of anonymous ftp from ftp.nikhef.nl (connect with ftp to this computer, give the user name anonymous and your network or mail address as the password. The directory form will contain a readme file to help you further).

Origins
FORM was written by J.A.M. Vermaseren at NIKHEF-H (the Dutch national institute for nuclear and high energy physics). Work started in 1984. It has been written in C. The source code is close to 1 Mbyte and exceeds 40,000 lines. This code is kept manageable with a folding editor.

Data types
Symbols, Vectors, Indices, Functions (commuting and non-commuting), Sets, Tensors, Tables, Expressions.

Operations
Id, multiply, (anti)symmetrize, discard, trace, contract, collect, sum, ratio, count.

Available functions
d_(Kronecker delta), delta_, distrib_, e_(Levi Civita tensor), fac_(factorial), g_(Dirac gamma matrix), nargs_, order_, replace_, reverse_, sum_, sump_, theta_.

Modes
Brackets, antibrackets, format, modulus, (n)write, (n)print, fixindex, dimension, compress, keep, propercount.

Flow control
If/elseif/else/endif, while/endwhile, repeat/endrepeat, goto/label.

Preprocessor
Include, call, procedure/endprocedure, if/else/endif, ifdef, ifndef, define, undefine, do/enddo, message, commentchar.

Modules
.global, .sort, .store, .clear, .end. With special option.

And more...
Argument/endargument, delete, fill, skip, drop, load, save.

Most powerful statement
The id statement allows "regular expression like" pattern matching to initiate substitutions. There are several options.

Some very big problems solved

CAN Address
CAN Diensten
Kruislaan 419
1098 VA Amsterdam
The Netherlands
email: form@can.nl
fax: +31 20 5608448
tel: +31 20 5608400

FORM Home Page.


webmaster@can.nl

Last updated: April 15, 1998