A constraint language that provides a rich language for communication with the dependence analyzer, by either the programmer or other phases of the compiler is detailed. The worst-case complexity of Presburger Arithmetic indicates that it might be unsuitable for any practical application. However, evidence suggests that analysis of benchmark programs does not cause the exponential growth in the number of constraints that could occur in the worst case. By studying the constraints produced during the analysis, the characteristics that keep the algorithms free of exponential behavior in practice are identified.