Stringvacua Installation

Download package: (For installation instructions see below.)

System requirements

The package is designed for systems with an underlying Unix-type operating system, including various flavours of Linux and Darwin (OSX), as well as Cygwin for Windows. It assumes that you have a working installation of Mathematica (version 5.0 or higher) and a working version of Singular (version 3.0.1 or higher). The latter is freely available from the Singular website at which also provides detailed installation instructions. For Windows users, we require that Cygwin be installed; it is freely available from which has self-explanatory installation guidance. Luckily, Singular is now a standard sub-package within Cygwin.

Cautionary notes for Cygwin:
  1. During Cygwin setup/installation, be sure to select Singular in the maths category;
  2. Make sure you have write permission to the directory /tmp (this is usually true);
  3. Make sure Cygwin is in your Windows path. This is usually done with the cygwin installation. You can check by running cmd from Start-> Run... and typing path on the shell which pops up; make sure DRIVENAME:\cygwin\bin is in the path (where DRIVENAME is the drive on which you have installed Cygwin). Otherwise, go to Control Panel -> Performance and Maintenance -> System, in the Advanced tab click on the button Environment Variables, add the DRIVENAME:\cygwin\bin explicitly.

For a run-time Singular protocol the package uses a standard xterm, which will be available on most Unix systems. This protocol feature can be switched off in which case xterm will not be required. On the Cygwin system, the xterm option is currently disabled to avoid incompatibility with Windows.

Installation procedure

First download the file Stringvacua.tar and save it in the directory $UserBaseDirectory/Applications. Execute $UserBaseDirectory in Mathematica to find the explicit path on your particular architecture. On Linux systems it is typically ~/.Mathematica/Applications, on OSX it is ~/Library/Mathematica/Applications and on Windows/Cygwin, it is typically /cygdrive/c/Documents\ and\ Settings/USERNAME/Application\ Data/Mathematica/Applications (or C:\Documents/ and/ Settings\USERNAME\Application/ Data\Mathematica in Windows format). Then, in $UserBaseDirectory/Applications, untar the file using

tar -xf Stringvacua.tar

Then, the directory $UserBaseDirectory/Applications contains the file Stringvacua.m and the two sub-directories Stringvacua and Stringvacualib. Note that the file structure has to be precisely of this form for the package to work properly. If you use the above shell tar command this will be automatic. Beware that other tar software (such as StuffIt and WinZip) often creates a sub-directory so that the file Stringvacua.m and the two package sub-directories end up in a folder which may be called $UserBaseDirectory/Applications/Stringvacua Folder. In this case, the package content has to be moved back to $UserBaseDirectory/Applications. This completes the installation.

Running for the first time

Start up Mathematica. In the case of Macintosh and unix systems, start up X11 if it is not already running. If you are using the notebook interface on Mathematica versions less than 6.0, open the Help pop-up menu and execute Help:Rebuild Help Index. This will install the browser help for the package in the AddOns&Links section of the help browser, which should now contain a new entry Stringvacua. On Mathematica 6.0, there is no need to rebuild the help index. Of course, if you are using the text interface, there is no such step. Then simply evaluate (note the backward apostrophe):

<< Stringvacua`

to load the package. To get started follow the help system or the tutorial which is available on the package web page.


The package is using a fixed set of files to handle the exchange of data between Mathematica and Singular. This means there should be only one Singular call from the package at any given time. For example, running two notebooks and package modules in each at the same time will lead to problems. In addition, although the package is compatible with the use of ssh forwarding, problems will occur if the user employs the internal Mathematica option to run the kernel on a remote machine.


When I load the package into Mathematica I am being told the xterm or Singular executables have not been found.

This means the executables for xterm or Singular have not been found (as you might have guessed). The package is looking for these executables in the standard places, so your system probably has a non-standard installation. This problem can be easily fixed by following the instructions on XtermPath and SingularPath in the Stringvacua Options section of the Mathematica help.

The system manager was too lazy to install Singular. Can I still use the package?

Yes! Just install Singular yourself somewhere in your home directory tree. It's easy and the details are described on the Singular home page. If you install so that the Singular executable (or a soft link to it) is in ~/bin or ~/usr/bin it will be automatically found by the package. Otherwise, read the first point under 'troubleshooting' above.

If I use a module which calls Singular, Mathematica just hangs and nothing happens.

First check if both Singular and xterm actually work (for example by starting them from an xterm) and that X11 is running. Make sure that the package has found the Singular and xterm executables. This is the case if no warning message is displayed when loading the package. Otherwise, read the first point under 'troubleshooting' above. If the problem persists there is likely to be a problem with the scripts which handle the interaction between Mathematica and Singular. Although these scripts have been tested on a number of different architectures, there is no guarantee for all flavours of unix. In this case you can first try to switch off the xterm protocol feature by executing SetOptions[Stringvacua,SingularProtocol->"None"]. If this doesn't help try switching off the intermediate scripts completely by executing SetOptions[Stringvacua,SingularTimer->"off"]. Singular will then be directly called from Mathematica and things should definitely work. However, in this mode, Singular calls cannot be timed and there is no protocol for Singular calculations. (See Stringvacua Options in the Mathematica help files for details on the above option settings and how to configure start-up values for those options.)