This book is on dependence concepts and general methods for dependence
testing. Here, dependence means data dependence and the tests are
compile-time tests. We felt the time was ripe to create a solid theory
of the subject, to provide the research community with a uniform
conceptual framework in which things fit together nicely. How successful
we have been in meeting these goals, of course, remains to be seen. We
do not try to include all the minute details that are known, nor do we
deal with clever tricks that all good programmers would want to use. We
do try to convince the reader that there is a mathematical basis
consisting of theories of bounds of linear functions and linear
diophantine equations, that levels and direction vectors are concepts
that arise rather natu- rally, that different dependence tests are
really special cases of some general tests, and so on. Some mathematical
maturity is needed for a good understand- ing of the book: mainly
calculus and linear algebra. We have cov- ered diophantine equations
rather thoroughly and given a descrip- of some matrix theory ideas that
are not very widely known. tion A reader familiar with linear
programming would quickly recog- nize several concepts. We have learned
a great deal from the works of M. Wolfe, and K. Kennedy and R. Allen.
Wolfe's Ph. D. thesis at the University of Illinois and Kennedy &
Allen's paper on vectorization of Fortran programs are still very useful
sources on this subject.