Evaluating Recursive Sets

Seminar

Many computations (e.g., program analyses) are best expressed as recursively defined sets. For example, the set of paths in a graph can be defined recursively as follows:

This set can be computed by applying these two rules iteratively. At each step of the iteration, knowing how the state changed in the last iteration can help speed up the program compared to a naïve approach. This is essentially a form of incrementalization. For example, for efficiently computing paths in a graph, you need to know which paths were found in the last iteration.

Recursive set computations are often expressed in a logic programming language like Datalog. In this seminar topic, you will look at Datafun, a functional language inspired by Datalog. Datafun makes use of seminaïve evaluation, which is an incremental approach for computing recursive sets.

You will look at:

You will also write a small program that either

References