A Generic Framework for Interprocedural Analyses of Numerical Properties
Relations among program variables like 1 + 3 ·x 1 + 5 ·x 2 ≡ 0  have been called linear congruence relations. Such a relation is valid at a program point iff it is satisfied by all reaching program states. Knowledge about non-trivial valid congruence relations is crucial for various aggressive program transformations. It can also form the backbone of a program correctness proof.
In his seminal paper , Philippe Granger presents an intraprocedural analysis which is able to infer linear congruence relations between integer variables. For affine programs, i.e., programs where all assignments are affine expressions and branching is non-deterministic, Granger’s analysis is complete, i.e., infers all valid congruence relations between variables. No upper bound, though, has been proven for Granger’s algorithm. Here, we present a variation of Granger’s analysis which runs in polynomial time. Moreover, we provide an interprocedural extension of this algorithm. The polynomial algorithm as well as its interprocedural extension are obtained by means of multiple instances of a general framework for constructing interprocedural analyses of numerical properties. This framework can be used for different numerical domains such as fields or modular rings and thus also covers the interprocedural analyses of [2,3] where valid affine relations are inferred.
We also indicate how the base technique can be extended to deal with equality guards in the interprocedural setting.
- 1.Granger, P.: Static Analysis of Linear Congruence Equalities among Variables of a Program. In: Abramsky, S. (ed.) CAAP 1991 and TAPSOFT 1991. LNCS, vol. 493, pp. 169–192. Springer, Heidelberg (1991)Google Scholar
- 2.Müller-Olm, M., Seidl, H.: Precise Interprocedural Analysis through Linear Algebra. In: 31st ACM Symp. on Principles of Programming Languages (POPL), pp. 330–341 (2004)Google Scholar