Skip to main content

An Operational Model of Strictness Properties and its Abstractions

Extended abstract

  • Conference paper
Functional Programming, Glasgow 1991

Part of the book series: Workshops in Computing ((WORKSHOPS COMP.))

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.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. S. Abramsky. Strictness analysis and polymorphic invariance. In Proc. Programs as Data Objects, volume 217 of Lecture Notes on Computer Science. Springer Verlag, 1986.

    Google Scholar 

  2. F.E. Allen. Interprocedural data flow analysis. In Information Processing 74, pages 398–402. North-Holland Pub. Co., 1974.

    Google Scholar 

  3. 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.

    Google Scholar 

  4. J.P. Banning. A Method for Determining the Side Effects of Procedure Calls. PhD thesis, Stanford University, Stanford Linear Accelerator Center, August 1978.

    Google Scholar 

  5. G. Birkhoff. Lattice Theory., volume XXV. AMS Colloquium Publications, 1979.

    MATH  Google Scholar 

  6. 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.

    Chapter  Google Scholar 

  7. 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.

    Google Scholar 

  8. 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.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. P. Cousot. Semantic foundations of program analysis. In Program Flow Analysis: Theory and Applications, pages 303–342. Prentice-Hall, 1981.

    Google Scholar 

  11. P. Cousot. Methods and logics for proving programs. In Handbook of Theoretical Computer Science, volume B. Elsevier Science Publisher, 1990.

    Google Scholar 

  12. 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.

    Chapter  Google Scholar 

  13. 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.

    Google Scholar 

  14. 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.

    Chapter  Google Scholar 

  15. 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.

    Google Scholar 

  16. 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.

    Google Scholar 

  17. S. Eilenberg. Automata, Languages and Machines, volume A. Academic Press, 1974.

    MATH  Google Scholar 

  18. 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.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. C.V. Hall and D.S. Wise. Compiling strictness into streams. Technical Report 209, Indiana University, Computer Science Dept., Bloomington, December 1986.

    Google Scholar 

  21. 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.

    Google Scholar 

  22. 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.

    Google Scholar 

  23. 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.

    Google Scholar 

  24. 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.

    Google Scholar 

  25. 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.

    Google Scholar 

  26. 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.

    Google Scholar 

  27. M. Karr. Affine relationships among variables of a program. Acta Informatica, 6: 133–151, 1976.

    Article  MATH  MathSciNet  Google Scholar 

  28. Z. Manna. Logics of programs. In S.H. Lavington, editor, Information Processing 80, pages 41–51. IFIP, North Holland Pub. Co., 1980.

    Google Scholar 

  29. 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.

    Google Scholar 

  30. R. Milner. A theory of type polymorphism in programming. Journal of Computer and System Sciences, 17 (3): 348–375, December 1978.

    Article  MATH  MathSciNet  Google Scholar 

  31. 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.

    Google Scholar 

  32. 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.

    Google Scholar 

  33. 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.

    Google Scholar 

  34. 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.

    Google Scholar 

  35. O. Ore. Galois connections. Transactions Amer. Math. Soc., 55: 493–515, 1944.

    MATH  MathSciNet  Google Scholar 

  36. 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.

    Google Scholar 

  37. P. Sestoft and G. Argo. Detecting unshared expressions in the improved three instruction machine, unpublished note, November 1989.

    Google Scholar 

  38. 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.

    Google Scholar 

  39. 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.

    Google Scholar 

  40. 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.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints 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

Publish with us

Policies and ethics