Topo (Toolset for Product Realisation with Lotos)

Lotos Logo

See the download page to obtain this program


These tools were developed by the Department of Telematics Engineering and Systems, Polytechnic University of Madrid. The copyright in the code therefore rests with UPM. Although the tools were developed up to 1993, they remain very useful and have been extensively used by the distributor in his research.

The distributor has taken the original version 3.7 of the tools and ported it to run under CygWin on Microsoft Windows (Windows XP to 10 are known to work). The tools have also been ported to Debian Linux. The binary ports are made available as a convenience to others.

The distributor is not the author or owner of the code. Apply to a colleague of Prof. Juan Quemada if you wish to make use of the source code.


Topo is a front-end to a variety of Lotos tools. These include glad (General Language to Annotate Data, data compilation), ildi (Interactive Lotos Data Interpreter, data analyser), lfe (Lotos Front End, syntax analyser), lola (Lotos Laboratory, simulation and testing), and lsa (Lisa Static Analyser, static semantics checking). The tools can be used individually or through Topo.

Small technical changes have been made during porting:


Installation requires the eps (parsing), lola (simulator) and topo (front-end) directories to be placed anywhere convenient (e.g. /usr/local). The environment variable PATH should be set to include the Topo binary directory (e.g. /usr/local/topo/bin). The environment variable TOPO should be set to wherever Topo is installed (e.g. /usr/local/topo).

The code is supplied pre-built for CygWin and Linux (both with 32-bit and 64-bit Intel versions). Rename one of the bin-* directories as bin, depending on the local system type.


To build the code from scratch requires a Unix-like environment with tools including a C compiler (e.g. gcc), a make facility (e.g. Gnu make) and a shell (e.g. sh). On a 32-bit system, the code should compile reasonable cleanly. On a 64-bit system, there will be many compiler warnings about converting a pointer to/from an integer of a different size; it seems that these wanings can be disregarded.

Adjust eps/eps2, topo/top2 and lola/src/Makefile according to the local environment (C compiler, installation directory, etc.). First build eps by running BUILD (or eps2). Then build topo by running INSTALL (or topo2). Finally build lola by running make in the src directory.

Some header files define variables that result in the linker reporting duplicate symbols (the -fcommon flag of gcc should be used to work around this). Some doubtful code may remain, e.g. functions that return a pointer to a local variable and pointer/integer conversions on a 64-bit system.


See lola/doc and topo/doc for more information on how to call the tools. As an example, the following will check and simulate myspec.lot using the International Standard Lotos library:

    topo myspec.lot -lola -l is


First public port (version 3.7.2) Ken Turner, 2nd February 2011

Second public port (version 3.7.3) Ken Turner, 15th February 2012

Third public port (version 3.7.3) Ken Turner, 11th October 2012

Fourth public port (version 3.7.4) Ken Turner, 23rd January 2023

Fifth public port (version 3.7.5) Ken Turner, 26th January 2023

Up Arrow Up one level to LOTOS Utilities

Web Ken Turner Home   Email    Search Search Web Pages

Last Update: 26th January 2023