The thesis of the project is that the complexity of developing parallel programs can be mastered with the aid of formal tools to support the process. The role of these tools must be to relieve the programmer from concerns relating to the low-level tactical issues (such as dependency and granularity analysis, scheduling, and load balancing), and to provide support for the decisions relating to high-level strategic issues, e.g. algorithm development. To this end the project exploits the semantic foundations of logic programming (and, more generally, declarative programming) that facilitate tractable formal program analysis, e.g. abstract interpretation, and manipulation, e.g. program transformation.
Analysis and transformation tools are built using these ideas for several tasks, such as automatic parallelization of sequential languages (i.e. automatic construction of dependency graphs and transformation into parallel programs), granularity control (where a parallelized program or an originally concurrent program is sequentialized in part to avoid overhead due to the scheduling of too fine grained tasks), and storage management optimization. These tools are integrated into parallel platforms and their effectiveness assessed on such platforms. Finally, the project also includes a working group on parallel program development.