Skip to main content

Structure-Preserving Binary Relations for Program Abstraction

  • Chapter
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 2566))

Abstract

An abstraction is a property-preserving contraction of a program’s model into a smaller one that is suitable for automated analysis. An abstraction must be sound, and ideally, complete. Soundness and completeness arguments are intimately connected to the abstraction process, and approaches based on homomorphisms and Galois connections are commonly employed to define abstractions and prove their soundness and completeness. This paper develops Mycroft and Jones’s proprosal that an abstraction should be stated as a form of structure-preserving binary relation. Mycroft-Jones-style relations are defined, developed, and employed in characterizations of the homomorphism and Galois-connection approaches to abstraction.

Supported by NSF CCR-9970679, INT-9981558, ITR-0085949, and ITR-0086154.

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

Buying options

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

Learn about institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. A. Aho, R. Sethi, and J. Ullman. Compilers: Principles, Techniques, and Tools. Addison Wesley, 1986.

    Google Scholar 

  2. E. Clarke, O. Grumberg, S. Jha, Y. Lu, and H. Veith. Counterexample-guided abstraction refinement. In Proc. Computer-Aided Verification 2000, Lecture Notes in Computer Science. Springer, 2000.

    Google Scholar 

  3. E. Clarke, O. Grumberg, and D. Peled. Model Checking. MIT Press, 1999.

    Google Scholar 

  4. E.M. Clarke, O. Grumberg, and D.E. Long. Verification tools for finite-state concurrent systems. In J.W. deBakker, W.-P. deRoever, and G. Rozenberg, editors, A Decade of Concurrency: Reflections and Perspectives, number 803 in Lecture Notes in Computer Science, pages 124–175. Springer, 1993.

    Google Scholar 

  5. E.M. Clarke, O. Grumberg, and D.E. Long. Model checking and abstraction. ACM Transactions on Programming Languages and Systems, 16(5):1512–1542, 1994.

    Article  Google Scholar 

  6. P. Cousot, editor. Static Analysis, 8th International Symposium. Lecture Notes in Computer Science 2126, Springer, Berlin, 2001.

    MATH  Google Scholar 

  7. P. Cousot and R. Cousot. Abstract interpretation: a unified lattice model for static analysis of programs. In Proc. 4th ACM Symp. on Principles of Programming Languages, pages 238–252. ACM Press, 1977.

    Google Scholar 

  8. P. Cousot and R. Cousot. Systematic design of program analysis frameworks. In Proc. 6th ACM Symp. on Principles of Programming Languages, pages 269–282. ACM Press, 1979.

    Google Scholar 

  9. P. Cousot and R. Cousot. Abstract interpretation frameworks. Journal of Logic and Computation, 2(4):511–547, 1992.

    Article  MATH  MathSciNet  Google Scholar 

  10. P. Cousot and R. Cousot. Higher-order abstract interpretation. In Proc. IEEE Int’l. Conf. Programming Languages. IEEE Press, 1994.

    Google Scholar 

  11. P. Cousot and R. Cousot. Systematic design of program transformations by abstract interpretation. In Proc. 29th ACM Symp. on Principles of Prog. Languages. ACM Press, 2002.

    Google Scholar 

  12. D. Dams, R. Gerth, and O. Grumberg. Abstract interpretation of reactive systems. ACM TOPLAS, 19:253–291, 1997.

    Article  Google Scholar 

  13. C. Gunter. Semantics of Programming Languages. MIT Press, Cambridge, MA, 1992.

    MATH  Google Scholar 

  14. D. Harel. Statecharts: a visual formalization for complex systems. Science of Computer Programming, 8, 1987.

    Google Scholar 

  15. J. Hartmanis and R. Streans. Pair algebras and their application to automata theory. Information and Control, 7:485–507, 1964.

    Article  MathSciNet  Google Scholar 

  16. M. Hecht. Flow Analysis of Computer Programs. Elsevier, 1977.

    Google Scholar 

  17. N. Jones and F. TNielson. Abstract interpretation: a semantics-based tool for program analysis. In S. Abramsky, D. Gabbay, and T. Maibaum, editors, Handbook of Logic in Computer Science, Vol. 4, pages 527–636. Oxford Univ. Press, 1995.

    Google Scholar 

  18. D. Lacey, N.D. Jones, E. Van Wyk, and C. Frederiksen. Proving correctness of compiler optimizations by temporal logic. In Proc. 29th ACM Symp. on Principles of Prog. Languages. ACM Press, 2002.

    Google Scholar 

  19. C. Loiseaux, S. Graf, J. Sifakis, A. Bouajjani, and S. Bensalem. Property preserving abstractions for the verification of concurrent systems. Formal Methods in System Design, 6:11–44, 1995.

    Article  MATH  Google Scholar 

  20. C. McGowan. An inductive proof technique for interpreter equivalence. In R. Rustin, editor, Formal Semantics of Programming Languages, pages 139–148. Prentice-Hall, 1972.

    Google Scholar 

  21. A. Melton, G. Strecker, and D. Schmidt. Galois connections and computer science applications. In Category Theory and Computer Programming, pages 299–312. Lecture Notes in Computer Science 240, Springer-Verlag, 1985.

    Google Scholar 

  22. R. Milner. A Calculus of Communicating Systems. Springer-Verlag, Lecture Notes in Computer Science 92, 1980.

    MATH  Google Scholar 

  23. R. Milner. Communication and Concurrency. Prentice-Hall, 1989.

    Google Scholar 

  24. J.C. Mitchell. Foundations for Programming Languages. The MIT Press, Cambridge, Massachusetts, 1996.

    Google Scholar 

  25. M. Müller-Olm, D.A. Schmidt, and B. Steffen. Model checking: A tutorial introduction. In G. Filé and A. Cortesi, editors, Proc. 6th Static Analysis Symposium. Springer LNCS, 1999.

    Google Scholar 

  26. A. Mycroft and N.D. Jones. A relational framework for abstract interpretation. In Programs as Data Objects, pages 156–171. Lecture Notes in Computer Science 217, Springer-Verlag, 1985.

    Google Scholar 

  27. F. Nielson. Two-level semantics and abstract interpretation. Theoretical Computer Science, 69(2):117–242, 1989.

    Article  MATH  MathSciNet  Google Scholar 

  28. F. Nielson and H. R. Nielson. Two-Level Functional Languages. Cambridge University Press, 1992.

    Google Scholar 

  29. F. Nielson, H.R. Nielson, and C. Hankin. Principles of Program Analysis. Springer Verlag, 1999.

    Google Scholar 

  30. D. Park. Concurrency and automata in infinite strings. Lecture Notes in Computer Science 104, pages 167–183. Springer, 1981.

    Google Scholar 

  31. G. D. Plotkin. Lambda-definability in the full type hierarchy. In J. Seldin and J. Hindley, editors, To H. B. Curry: Essays on Combinatory Logic, Lambda Calculus and Formalism, pages 363–374. Academic Press, 1980.

    Google Scholar 

  32. J. Reynolds. Types, abstraction, and parametric polymorphism. In R.E.A. Mason, editor, Information Processing’ 83, pages 513–523. North-Holland, Amsterdam, 1983.

    Google Scholar 

  33. D.A. Schmidt. Natural-semantics-based abstract interpretation. In A. Mycroft, editor, Static Analysis Symposium, number 983 in Lecture Notes in Computer Science, pages 1–18. Springer-Verlag, 1995.

    Google Scholar 

  34. D.A._Schmidt. Data-flow analysis is model checking of abstract interpretations. In Proc. 25th ACM Symp. on Principles of Prog. Languages. ACM Press, 1998.

    Google Scholar 

  35. D.A. Schmidt. Binary relations for abstraction and refinement. Workshop on Refinement and Abstraction, Amagasaki, Japan, Nov. 1999. Elsevier Electronic Notes in Computer Science, to appear.

    Google Scholar 

  36. D.A. Schmidt and B. Steffen. Data-flow analysis as model checking of abstract interpretations. In G. Levi, editor, Proc. 5th Static Analysis Symposium. Springer LNCS 1503, 1998.

    Google Scholar 

  37. B. Steffen. Generating data-flow analysis algorithms for modal specifications. Science of Computer Programming, 21:115–139, 1993.

    Article  MATH  Google Scholar 

  38. B. Steffen. Property-oriented expansion. In R. Cousot and D. Schmidt, editors, Static Analysis Symposium: SAS’96, volume 1145 of Lecture Notes in Computer Science, pages 22–41. Springer-Verlag, 1996.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2002 Springer-Verlag Berlin Heidelberg

About this chapter

Cite this chapter

Schmidt, D.A. (2002). Structure-Preserving Binary Relations for Program Abstraction. In: Mogensen, T.Æ., Schmidt, D.A., Sudborough, I.H. (eds) The Essence of Computation. Lecture Notes in Computer Science, vol 2566. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-36377-7_12

Download citation

  • DOI: https://doi.org/10.1007/3-540-36377-7_12

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-00326-7

  • Online ISBN: 978-3-540-36377-4

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics