Abstract
We study the problem of strictness analysis. We start from a new semantic model of strictness properties, and then derive an efficient and on-line algorithm for statically determining strictness properties of first order languages with structured data. This algorithm is based on a new algebraic structure which we first developed for alias analysis: the lattice of unitary-prefix monomial relations on a rational language. This algorithm discovers accurate strictness properties not found by existing algorithms and is formalised in the framework of operational abstract interpretation.
Also at INRIA. This work was partly funded by the CNRS (URA 1439), by the French Department of Research and Technology and by the EEC ESPRIT project Sémantique #3124.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
S. Abramsky. Strictness analysis and polymorphic invariance. In Proc. Programs as Data Objects, volume 217 of Lecture Notes on Computer Science. Springer Verlag, 1986.
F.E. Allen. Interprocedural data flow analysis. In Information Processing 74, pages 398–402. North-Holland Pub. Co., 1974.
V. Balasundaram and K. Kennedy. A technique for summarizing data access and its use in parallelism enhancing transformations. In SIGPLAN’89 Conference on Programming Language Design and Implementation, volume 24(7) of Sigplan Notices, pages 41–53, June 1989.
J.P. Banning. A Method for Determining the Side Effects of Procedure Calls. PhD thesis, Stanford University, Stanford Linear Accelerator Center, August 1978.
G. Birkhoff. Lattice Theory., volume XXV. AMS Colloquium Publications, 1979.
A. Bloss and P. Hudak. Variations on strictness analysis. In Proc. of the 1986 ACM Conf. on Lisp and Functional Programming, pages 132–142, Cambridge, MA, August 1986.
G. Burn, C. Hankin, and S. Abramsky. The theory of strictness analysis for higher-order functions. In Proc. Programs as Data Objects, volume 217 of Lecture Notes on Computer Science. Springer Verlag, 1986.
D. Callahan, K.D. Cooper, K. Kennedy, and L. Torczon. Interprocedural constant propagation. In Proc. SIGPLAN Symp. on Compiler Construction, volume 21(6) of Sigplan Notices, pages 152–161, 1986.
D. Clement, J. Despeyroux, T. Despeyroux, and G. Kahn. A simple applicative language: Mini-ML. In Conference Record of the 1986 ACM symposium on LISP and Functional Programming, pages 13–27, Boston, August 1986.
P. Cousot. Semantic foundations of program analysis. In Program Flow Analysis: Theory and Applications, pages 303–342. Prentice-Hall, 1981.
P. Cousot. Methods and logics for proving programs. In Handbook of Theoretical Computer Science, volume B. Elsevier Science Publisher, 1990.
P. Cousot and R. Cousot. Abstract interpretation: a unified lattice model for static analysis of programs by construction of approximation of fixpoints. In Fourth Annual ACM Symposium on Principles of Programming Languages, pages 238–252, Los Angeles, January 1977.
P. Cousot and R. Cousot. Static determination of dynamic properties of recursive procedures. In Working Conf on Formal Description of Programming Concepts, St-Andrews,Canada, August 1977. IFIP WG 2.2, North-Holland.
P. Cousot and N. Halbwachs. Automatic discovery of linear restraints among variables of a program. In Fifth Annual ACM Symposium on Principles of Programming Languages, pages 84–97, Tucson, Ariz., January 1978.
A. Deutsch. A storeless model of aliasing and its abstractions using finite representations of right-regular equivalence relations. In Proceedings of the IEEE 1992 International Conference on Computer Languages, San Francisco, April 1992.
P. Dybjer. Inverse image analysis. In Proc. 14th International Colloquium on Automata, Languages and Programming, volume 267 of Lecture Notes on Computer Science, pages 21–30. Springer Verlag, July 1987.
S. Eilenberg. Automata, Languages and Machines, volume A. Academic Press, 1974.
P. Granger. Static analysis on linear congruence equalities among variables of a program. In TAPSOFT’91, volume 493 of Lecture Notes on Computer Science, pages 169–192. Springer Verlag, 1991.
N. Halbwachs. Détermination automatique de relations linéaires vérifiées par les variables d’un programme. PhD thesis, Université Scientifique et Médicale de Grenoble & Institut National Polytechnique de Grenoble, Grenoble, France, March 1979.
C.V. Hall and D.S. Wise. Compiling strictness into streams. Technical Report 209, Indiana University, Computer Science Dept., Bloomington, December 1986.
M.C.B. Henessy and G.D. Plotkin. Full abstraction for a simple programming language. In Proc. Mathematical Foundations of Computer Science, volume 74 of Lecture Notes on Computer Science, pages 108–120, 1979.
S. Horwitz, P. Pfeiffer, and T. Reps. Dependence analysis for pointer variables. In Conference on Programming Language Design and Implementation, volume 24(7) of SIGPLAN Notices, pages 28–40, June 1989.
P. Hudak and J. Young. Higher-order strictness analysis in untyped lambda calculus. In Thirteenth Annual ACM Symposium on Principles of Programming Languages, pages 97–109, St Petersburg, Florida, January 1986.
R.J.M. Hughes. Backwards analysis of functional programs. In D. Bjorner, A.P. Ershov, and N.D Jones, editors, Proc. Workshop on Partial Evaluation and Mixed Computation, pages 155–169. North-Holland, October 1987.
N.D. Jones and A. Mycroft. Data flow analysis of applicative programs using minimal function graphs. In Thirteenth Annual ACM Symposium on Principles of Programming Languages, pages 296–306, Florida, January 1986.
S.B. Jones and D. Le Métayer. A new method for strictness analysis on non-flat domains. In Functional Programming, Proc. of the 1989 Glasgow Workshop, pages 1–11, Fraserburgh, Scotland, August 1989. Springer Verlag.
M. Karr. Affine relationships among variables of a program. Acta Informatica, 6: 133–151, 1976.
Z. Manna. Logics of programs. In S.H. Lavington, editor, Information Processing 80, pages 41–51. IFIP, North Holland Pub. Co., 1980.
F. Masdupuy. Using abstract interpretation to detect array data dependencies. In Kyushu University Press, editor, Proceedings of the International Symposium on Supercomputing, pages 19–27, Fukuoka, nov 1991. ISBN 4-87378-284-8.
R. Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17 (3): 348–375, December 1978.
S. Muchnick and N.D. Jones. Complexity of flow analysis inductive assertion synthesis and a language due to dijkstra. In Program Flow Analysis: Theory and Applications, pages 380–393, New Jersey, 1981. Prentice-Hall.
A. Mycroft. The theory and practice of transforming call-by-need into call-by- value. In Proc. International Symposium on Programming, volume 83 of Lecture Notes on Computer Science, pages 269–281, 1980.
A. Mycroft and F. Nielson. Strong abstract interpretation using power domains. In Programs as Data Objects, volume 217 of Lecture Notes on Computer Science, pages 536–547. Springer Verlag, October 1985.
S. Ono. Relationships among strictness-related analyses for applicative languages. In K. Fuchi and L. Kott, editors, Programming of Future Generation Computers, pages 257–283. Elsevier Science Publishers B.V., 1988.
O. Ore. Galois connections. Transactions Amer. Math. Soc., 55: 493–515, 1944.
R.C. Sekar, S. Pawagi, and I.V. Ramakrishnan. Small domains spell fast strictness analysis. In Seventeenth Annual ACM Symposium on Principles of Programming Languages, pages 169–183, San Francisco, January 1991.
P. Sestoft and G. Argo. Detecting unshared expressions in the improved three instruction machine, unpublished note, November 1989.
M. Sharir and A. Pnueli. Two approaches to inter procedural data flow analysis. In S. Muchnick and N.D. Jones, editors, Program Flow Analysis: Theory and Applications, pages 189–234. Prentice-Hall, 1981.
P. Wadler and R.J.M. Hughes. Projections for strictness analysis. In Functional Programming Languages and Computer Architecture, volume 274 of Lecture Notes on Computer Science, pages 385-407, Portland, September 1987. Springer Verlag.
D.A. Wright. A new technique for strictness analysis. In S. Abramsky and T.S.E Maibaum, editors, Proc. TAPSOFT’91, volume 494 of Lecture Notes on Computer Science, pages 235–258, Brighton, April 1991. Springer Verlag.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1992 British Computer Society
About this paper
Cite this paper
Deutsch, A. (1992). An Operational Model of Strictness Properties and its Abstractions. In: Heldal, R., Holst, C.K., Wadler, P. (eds) Functional Programming, Glasgow 1991. Workshops in Computing. Springer, London. https://doi.org/10.1007/978-1-4471-3196-0_7
Download citation
DOI: https://doi.org/10.1007/978-1-4471-3196-0_7
Publisher Name: Springer, London
Print ISBN: 978-3-540-19760-7
Online ISBN: 978-1-4471-3196-0
eBook Packages: Springer Book Archive