Input Program

Program Graph

Tuple spaces – A Learning Environment

tup4fun is a tool supporting concurrent programming based on tuple spaces, as used in DTU's course 02148 - Introduction to Coordination in Distributed Applications.

Browser Compatibility

The tool uses a responsive design and can be used on any device with a modern browser. The tool has been developed and tested in Google Chrome v60. The online version of the tool has also been tested in Firefox v49, Opera v46, Safari v10, and Internet Explorer v11.


The core functionality is written in F# and then converted to JavaScript using Fable.

This software is protected under the Simplified BSD License and the Intellectual Property Rights of the Technical University of Denmark.

Bugs and suggestions

Please report all bugs and suggestions to Alberto Lluch:


This tool is compiled to javascript, and therefore only requires a browser to run. Download the tool for offline usage.

Download Tuple spaces – A Learning Environment

Tuple Spaces

Explore how the memory changes, upon execution of the actions. Recall that if more guards are satisfied then it is non-deterministic which action to take.

When using the Show Trace, non-deterministic choices will be shown in the first column as , and if clicked the trace will be "reset" from that configuration.

When using the Show Resulting Configurations, all non-deterministic choices will be explored, until it reaches the number of steps, gets stuck or terminates. A short summary of the final configurations is found at the end. Warning If the input code is highly non-deterministic, and the number of steps is high, the tree of possible end-configurations will grow big (and therefore long execution).

For both outputs all non-terminated (or non-stuck) configuration can be extended with 1-1000 steps.

When initializing tuple spaces, it must be specified which type of space is used. The options are random (R), queue (Q), stack (S), FIFO (F) and LIFO (L). Initialization only allows integers. The buffer size for tuples must also be specified as either a positive non-zero integer or INF for an unbounded size.