With respect to tools for granularity analysis and control, the automatic granularity control system for logic languages proposed in the last period has been improved in several ways. We have proposed improvements in the overall design of the granularity control system, making it symmetric. This means that the tool can be used for both sequentializing a parallel language (or a previously parallelized program) and parallelizing a sequential language (only the former was allowed in the previous design). This has required the development of a lower bounds analysis (rather than the upper bounds analysis used before and available in systems such as CASLOG). On the assessment side, we have tested the granularity control system developed on the &-Prolog and Ciao systems, and measured the performance for several degrees of optimization regarding program transformation techniques such as the ``on-the-fly'' computation of data sizes described in the previous period [48, 22, 49].
At Southampton, analyses aimed at reducing the run-time overhead of concurrent/parallel execution have also been studied. Along this line of work, Southampton initially focussed on schedule analysis of concurrent logic programs. The purpose of schedule analysis is to exploit ordering information obtained from dataflow analyses so as to introduce threads of totally ordered processes into concurrent logic programs. Some of the main compiler optimizations which follow from threads have also been investigated. Information on the ordering of processes which can be input to schedule analysis can be derived by producer and consumer analysis. It also, however, can provide a basis for other compiler optimizations such as local reuse. The main achievement in this direction has been to use abstract interpretation techniques to derive possible and definite ordering information.