Kac  history

The oldest code in Kac dates back to 1989, and was used to study modular invariant partition functions of affine Lie algebras (usually called “Kac-Moody algebras” at that time). It consisted of a set of routines implementing the Kac-Peterson formula for modular transformations and the Verlinde formula for fusion rules.

The original program was written in FORTRAN on the CERN IBM. Since it seemed worth preserving I decided to make it sufficiently user friendly so that in the future I would still be able to remember how to use it. Most older programs I had written started with a prompt like “Please enter input” or even just a question mark, without any explanation of what input was expected. 

In 1992 I bought a NeXT computer, and the program was converted to C. Even today, the Kac-Peterson routines are the original FORTRAN functions, converted using f2c. A major effort was the extension of these routines to E8. The Kac-Peterson formula involves a summation over the Weyl group, which is very large (696729600 elements) for E8. This was dealt with by using determinant formulas for the D16 subalgebra, and summing over the E8/D16 Weyl group coset orbits.  This resulted in about 1500 lines of computer-generated code (created using Jos Vermaseren’s program FORM). Before this modification, a single E8 S-matrix element took 15 minutes of CPU time on a 1991 SUN computer. Meanwhile (2011), on  a 3.06 GHz intel core 2 duo, and using the new algorithm, this takes .0002 seconds.

Using the Interface Builder on the NeXT I made a graphical user interface, which looked like this:

And this is the icon of version 4.0

The graphical version had an extensive HELP system, but when NeXTstep became OPENstep, the help system was essentially dropped by NeXT.

A few years later I abandoned the GUI in favor of a command line interface, because it is more flexible, and allowed me to make Kac programmable and build in many more options. I build my own command language with a built-in help system, all written in C, so that the program is maximally compatible with just about any unix system, and essentially independent on availability of libraries. Around 2005 Tim Dijkstra, my student at the time, build in support for command completion and history. Although very useful, this did illustrate the wisdom of making the program as much as possible independent of system libraries: in some linux version these features do not work, and may even render the entire program unusable, because of version changes or unavailability of the “readline” library.

The program has been compiled on linux and Macs, but only once I have tried to build a Windows version. It runs in an MS-DOS window under Windows 98/95 and is not very well tested. Some file options may not work, and the CPU-time indication is approximate.

Here are several binaries of Version 4, made available only for historical reasons

Version 4

  1. BulletNeXT (GUI)

  2. BulletNeXT (Terminal)

  3. BulletMS-DOS

  4. BulletSUN (Terminal)

  5. BulletLinux (Terminal)