The talk presents a method for analyzing the progressions of induction variables and pointers in (non-perfectly) nested loops for array dependence testing, value range analysis, and loop parallelization and vectorization in compilers. The analysis method uses the chains of recurrences framework, originally developed for expediting the evaluation of closed form functions on grids using aggressive strength reduction. In our work we turn this approach upside down and use it to analyze array index functions to determine if loops can be parallelized and vectorized. The analysis effectively constructs recurrence forms for induction variables and pointer arithmetic. Linear and nonlinear dependence testing is applied directly on these recurrence forms to construct a dependence vector hierarchy for loop optimization, thereby bypassing traditional induction variable substitution and array recovery methods. Results will be shown using a prototype implementation developed for the Polaris restructuring compiler. Recently, the GCC 4.0 development team implemented our approach, with some limitations, for dependence testing and auto-vectorization in GCC.