Algorithmics on Directed Spaces

In this section, we explain algorithms which are based on the geometric semantics of programs. In order to ease the presentation, those algorithms are formulated for simple programs, and we only hint at generalizations: programs with branchings can generally be handled by adapting the algorithms, and loops can be handled up to a finite depth by unrolling the programs. We illustrate the wide variety of applications of the geometric point of view by presenting a compact way of representing regions in the geometric semantics, an algorithm for detecting deadlocks, and an algorithm for factoring programs into independent parallel processes.