Abstract
We present a new technique conceived for improving the accuracy of the results of static analyses of programs (such as constant propagation, range analysis, etc.). It relies on and complements the classical lattice-theoretic model for abstract interpretation [4], and is therefore defined at a very general level, although it applies only to analyses on numbers in this paper. The idea consists in embedding local decreasing iterations in the (global) iteration stage of the analysis; by local iterations, we mean that they correspond to some special control points of the program and not to the whole program to be analyzed. Special techniques dedicated to static analyses on numbers are developed to take full advantage of the method, which allows, in practice, to handle more efficiently conditional branches, assignments in backwards analysis, combinations of static analysis frameworks, and to combine abstract interpretation and symbolic evaluation. Several examples show that it may significantly improve the analysis results.
This research was supported in part by ESPRIT II Basic Research Action #3124 Sémantique (when the author was with the Laboratoire d'Informatique, Ecole Polytechnique, Palaiseau, France), and in part by a postdoctoral INRIA fellowship.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
R. Allen, K. Kennedy, Automatic Translation of FORTRAN Programs to Vector Form, ACM Transactions on Programming Languages and Systems, Vol. 9, No. 4, pp. 491–542, 1987.
G. L. Burn, C. L. Hankin, S. Abramsky, The Theory of Strictness Analysis for Higher Order Functions, Proceedings of the DIKU Workshop on Programs as Data Objects, LNCS 217, pp. 42–62, 1986.
P. Cousot, R. Cousot, Static Determination of Dynamic Properties of Programs, Proceedings of the 2nd International Symposium on Programming, Dunod, Paris, pp. 106–130, 1976.
P. Cousot, R. Cousot, Abstract Interpretation: a Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints, Conf. Rec. of the 4th ACM Symposium on Principles of Programming Languages, pp. 238–252, 1977.
P. Cousot, R. Cousot, A Constructive Characterization of the Lattices of all Retractions, Preclosure, Quasi-closure and Closure Operators on a Complete Lattice, Portugaliae Mathematica, Vol. 38, Fasc. 1–2, pp. 185–198, 1979.
P. Cousot, R. Cousot, Constructive Versions of Tarski's Fixed Point Theorem, Pacific Journal of Mathematics, Vol. 82, No. 1, pp. 43–57, 1979.
P. Cousot, R. Cousot, Systematic Design of Program Analysis Frameworks, Conf. Rec. of the 6th ACM Symposium on Principles of Programming Languages, pp. 269–282, 1979.
P. Cousot, N. Halbwachs, Automatic Discovery of Linear Restraints among Variables of a Program, Conf. Rec. of the 5th ACM Symposium on Principles of Programming Languages, pp. 84–97, 1978.
A. Deutsch, A Storeless Model of Aliasing and its Abstractions using Finite Representations of Right-Regular Equivalence Relations, Proceedings of the 4th IEEE International Conference on Computer Languages, pp. 2–13, 1992.
S. M. German, B. Wegbreit, A Synthesizer of Inductive Assertions, IEEE Transactions on Software Engineering, Vol. se-1, No. 1, pp. 68–75, 1975.
P. Granger, Static Analysis of Arithmetical Congruences, International Journal of Computer Mathematics, Vol. 30, pp. 165–190, 1989.
P. Granger, Static Analysis of Linear Congruence Equalities among Variables of a Program, TAPSOFT'91, Proceedings of the International Joint conference on Theory and Practice of Software Development, Brighton, U.K., Vol. 1 (CAAP'91), LNCS 493, pp. 169–192, 1991.
J. B. Kam, J. D. Ullman, Global Data Flow Analysis and Iterative Algorithms, Journal of the Association for Computing Machinery, Vol. 23, No. 1, pp. 158–171, 1976.
M. Karr, Affine Relationships among Variables of a Program, Acta Informatica, Vol. 6, pp. 133–151, 1976.
G. A. Kildall, A Unified Approach to Global Program Optimization, Conf. Rec. of the ACM Symposium on Principles of Programming Languages, pp. 194–206, 1973.
A. Lichnewsky, F. Thomasset, Introducing Symbolic Problem Solving Techniques in the Dependence Phases of a Vectorizer, Proceedings of the 2nd ACM International Conference on Supercomputing, Saint-Malo, France, pp. 396–406, 1988.
A. Mycroft, The Theory and Practice of Transforming Call-by-need into Call-by-value, Proceedings of the 4th International Symposium on Programming, LNCS 83, pp. 269–281, 1980.
J. H. Reif, H. R. Lewis, Symbolic Evaluation and the Global Value Graph, Conf. Rec. of the 4th ACM Symposium on Principles of Programming Languages, pp. 104–118, 1977.
B. Steffen, J. Knoop, Finite Constants: Characterizations of a New Decidable Set of Constants, Proceedings of Mathematical Foundations of Computer Science 1989, LNCS 379, pp. 481–491, 1989.
B. Wegbreit, Property Extraction in Well-founded Property Sets, IEEE Transactions on Software Engineering, Vol. se-1, No. 3, pp. 270–285, 1975.
M. N. Wegman, F. K. Zadeck, Constant Propagation with Conditional Branches, Conf. Rec. of the 12th ACM Symposium on Principles of Programming Languages, pp. 291–299, 1985.
O. Zariski, P. Samuel, Commutative Algebra, Vol. 1, Van Nostrand, 1958.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1992 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Granger, P. (1992). Improving the results of static analyses of programs by local decreasing iterations. In: Shyamasundar, R. (eds) Foundations of Software Technology and Theoretical Computer Science. FSTTCS 1992. Lecture Notes in Computer Science, vol 652. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-56287-7_95
Download citation
DOI: https://doi.org/10.1007/3-540-56287-7_95
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-56287-0
Online ISBN: 978-3-540-47507-1
eBook Packages: Springer Book Archive