Program Analysis – A Learning Environment

pa4fun is a tool supporting the language and concepts from the notes Program Analysis – An Appetizer.

Browser Compatibility

The tool uses a responsive design and can be used on any device with a modern browser. The tool have been deveopled and tested in Google Chrome v60, Firefox v49, Opera v46, Safari v10, and Internet Explorer v11.


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


Developed by Kasper Laursen, Hanne Riis Nielson, Panagiotis Vasilikos and Mike Castro Lundin, based on the specification developed by Hanne Riis Nielson and Flemming Nielson.

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


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

Download Program Analysis - Learning Environment

Step-wise Execution

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.

If there is a non-deterministic choice it will be shown in the first column as , and if clicked the trace will be "reset" from that configuration.

For the output, all non-terminated and non-stuck configurations can be extended with 1-1000 transitions.

Reaching Definitions

Dangerous Variables

Faint Variables

Available Expressions

Very Busy Expressions

Detection Of Signs

Parity Analysis

Constant Propagation

Constant Propagation Parametric

Interval Analysis