PPRSL Overview License Downloads Andrzej Wąsowski's Home

PPRSL: a Pretty Printer for RSL specificatons


I have summarized pprsl, its enviornment, installation, usage and application in the following FAQ list.

What is RAISE?

RAISE stands for Rigourous Approach to Industrial Software Engineering. RAISE is a formal development method (in a sense similar to VDM or Z). RSL stands for RAISE Specification Language and is a formal language for specifying designs and implementations. You can find out more about RAISE at United Nations University website.

What is PPRSL?

RAISE specification is typically developed and stored in textual format intuitively similar to mathematical notations. This format is easy to type and read, but one would like to have a high quality presentation format for his design. The high quality format would be used for printing and presenting work done in RAISE

Original commercial tools available for RAISE contain a fully featured pretty printer based on latex. However commercial not always means accesible for everybody. Especially it can be too pricey for student projects and ad hoc tasks

pprsl is a little package for pretty printing RSL specifications I developed in autumn 2001, while I was preparing slides for a mini-course on formal methods. The course was given at Department of Mathematics and Information Science, Warsaw University of Technology in fall 2001. The character of the mini-course was very brief and there was no need to obtain a full RAISE software while I only planned to prepare a small set of slides basing on subset of RSL. Thus I came up with the idea with implementing a tiny latex based pretty printer.The program certainly lacks many features but I decided to publish it in case anybody is interested in using it.

pprsl typesets specification in LaTeX and then runs it through a script translating it to png file. Thus the package may be used both for preparing printouts and web publishing.

You can view a sample of RSL specification typeset with help of pprsl here in pdf format or in postcript.

How pprsl compares to other pretty printers for RAISE?

Commercial RAISE toolset (currently supplied by TERMA A/S) contains a full featured pretty printer which operates on the similar basis as pprsl. Original program is far more superior than my little device (at least it covers the full language).

UNU also supplies a pretty printer (see website above). This tool is comprehensive (covers all RSL as far as know), but does not produce a typestting quality output (basically it reorganizes the source file and the result is still the text file, but more ordered).

Both mentioned pretty printers structure text on processing. pprsl does not. Especially it preserves your indentation and line breaking. Neither it expects that your specification is syntactically correct. This is often important if you want to webpublish a specification. One way to do it is to split it into several screen fitable pictures in screen resolution. You may also want to do this if you want to make a presentation on RAISE, which shall be electronically projected.

Once you split the specification each part may not be syntactically correct in this case. Also you want to be able to decide on your onw how much information shall be put in a line to fit important blocks on single pictures.

While pprsl supports pretty printing of syntactically incorect specifications, it may be also helpful in typesetting of syntactically correct and big specifications. With pprsl you can have just one file which is syntactically correct (with respect to RSL type checker) and at the same time contains some formatting information (page breaking etc) and internal (your private and not to be published) comments.

What do I need to make it running?

I developed pprsl on Linux, so a working linux box would be an advantage. At the same time all the packages I used are availble for fairly many OSes around so you may try to make it running on sthg else (while a risk is that it's faster to write it from scratch)

The project was one of the ad hoc ideas and I did not really thought deeply about making it independent. I used everything available on my Linux box to make it running in extremely short time. The list of packages used includes:

This is quite a list for such a little program, but I believe those packages are installed on average Linux box anyway.

I am a programmer. What do I need to compile and modify PPRSL?

Please note that you should be able to run pprsl without compiling it (at least if you are on RH7.1 or later).

Following notes only apply if you really want to make it running on sthg else and/or modify it yourself.

Main program (rsl2latex) has been implemented in Standard ML which is a strict functional language of general purpose widely used in academic research and programming language processing. This particular code is compatible with MoscowML implementation. Compiling it on alternative SML platforms (including SML of New Jersey) would probably demand a significant rewrite of lexer definition (as lexers are not standard among different distributions).

Remaining applications are merely bourne shell scripts.

Why there is no version number?
Is pprsl supported?

I have not assigned any version number to this release as I do not plan to develop the project. The software is not supported in any way. Still I can change my mind if I discover that there is a need. Email me if you need any improvements in PPRSL or you encountered any bugs.


pprsl is a free software published under GPL license version 2 or any later. Although I do not demand that I would be very glad to hear if you found the tool useful. This may increase the motivation to improve it.


The binaries are statically linked so they should work on avarage Linux system (developed and tested on RedHat Linux 7.1). The package contains a little README file which is the only available documentation on installation, usage and sources.

PPRSL Releases

Release Date Download Release notes
  12/12/2001 source tgz, linux binary tgz  

Modified: Andrzej Wąsowski 3rd Feb 2003

[Valid XHTML 1.0!]