Skip to main content

Staging static analyses using abstraction-based program specialization

  • Conference paper
  • First Online:
Principles of Declarative Programming (ALP 1998, PLILP 1998)

Abstract

Conventional partial evaluators specialize programs with respect to concrete values, but programs can also be specialized with respect to abstractions of concrete values. We present a novel method for staging static analyses using abstraction-based program specialization (ABPS). Building on earlier work by Consel and Khoo and Jones, we give an ABPS system that serves as a formal foundation for a suite of analysis and verification tools that we are developing for Ada programs. Our tool set makes use of existing verification packages. Currently many programs must be hand-transformed before they can be submitted to these packages. We have determined that these hand-transformations can be carried out automatically using ABPS. Thus, preprocessing programs using ABPS can significantly extend the applicability of existing tools without modifying the tools themselves.

Supported in part by NSF under grant CCR-9701418 and NASA under award 21209.

Supported in part by NSF and DARPA under grants CCR-9633388, CCR-9703094, CCR-9708184 and NASA under award 21209.

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

Access this chapter

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. Lars Ole Andersen. Program Analysis and Specialization for the C Programming Language. PhD thesis, DIKU, Computer Science Department, University of Copenhagen, Copenhagen, Denmark, 1994. DIKU Report 94-19.

    Google Scholar 

  2. J. Michael Ashley. A practical and flexible flow analysis for higher-order languages. In Proceedings of the Twenty-third Annual ACM Symposium on Principles of Programming Languages, pages 184–194, 1996.

    Google Scholar 

  3. J. Michael Ashley and Charles Consel. Fixpoint computation for polyvariant static analyses of higher-order applicative programs. ACM Transactions on Programming Languages and Systems, 16(5):1431–1448, September 1994.

    Article  Google Scholar 

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

    Article  Google Scholar 

  5. Chris Colby and Peter Lee. An implementation of parameterized partial evaluation. Bigre Journal, 74:82–89, 1991.

    Google Scholar 

  6. Charles Consel, Luke Hornof, FranÇois NoËl, Jacques Noyé, and Nicolae Volanschi. A uniform approach for compile-time and run-time specialization. In Proceedings of the 1996 International Seminar on Partial Evaluation, number 1110 in Lecture Notes in Computer Science, pages 54–72, Dagstuhl Castle, Germany, February 1996.

    Google Scholar 

  7. Charles Consel and Siau Cheng Khoo. Parameterized partial evaluation. ACM Transactions on Programming Languages and Systems, 15(3):463–493, 1993.

    Article  MathSciNet  Google Scholar 

  8. Matthew Dwyer, John Hatcliff, and Muhammad Nanda. Using partial evaluation to enable verification of concurrent software. ACM Computing Surveys, 1998. (in press).

    Google Scholar 

  9. M.B. Dwyer and L.A. Clarke. Data flow analysis for verifying properties of concurrent programs. Software Engineering Notes, 19(5):62–75, December 1994. Proceedings of the Second ACM SIGSOFT Symposium on Foundations of Software Engineering.

    Article  Google Scholar 

  10. Robert Glück and Andrei Klimov. Occam's razor in metacomputation: the notion of a perfect process tree. In Patrick Cousot, Moreno Falaschi, Gilberto Filè, and Antoine Rauzy, editors, Proceedings of the Third International Workshop on Static Analysis WSA'93, volume 724 of Lecture Notes in Computer Science, pages 112–123, Padova, Italy, September 1993.

    Google Scholar 

  11. Carsten K. Gomard and Neil D. Jones. Compiler generation by partial evaluation. In G. X. Ritter, editor, Information Processing '89. Proceedings of the IFIP 11th World Computer Congress, pages 1139–1144. IFIP, North-Holland, 1989.

    Google Scholar 

  12. G.J. Holzmann. The model checker spin. IEEE Transactions on Software Engineering, 23(5):279–294, May 1997.

    Article  MathSciNet  Google Scholar 

  13. Neil D. Jones. The essence of program transformation by partial evaluation and driving. In Masahiko Sato Neil D. Jones, Masami Hagiya, editor, Logic, Language and Computation, a Festschrift in honor of Satoru Takasu, pages 206–224. Springer-Verlag, April 1994.

    Google Scholar 

  14. Neil D. Jones, Carsten K. Gomard, and Peter Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall International, 1993.

    Google Scholar 

  15. Siau Cheng Khoo. Parameterized partial evaluation: theory and practice. PhD thesis, Yale University, June 1992.

    Google Scholar 

  16. Michael Leuschel. Program specialization and abstract interpretation reconciled. Technical Report CW 259, Departement Computerwetenschappen, K.U.Leaven, Belgium, May 1998.

    Google Scholar 

  17. K.L. McMillan. Symbolic Model Checking. Kluwer Academic Publishers, 1993.

    Google Scholar 

  18. David A. Schmidt. Trace-based abstract interpretation of operational semantics. Lisp and Symbolic Computation. (in press).

    Google Scholar 

  19. Morten H. Sørensen and Robert Glück. An algorithm of generalization in positive supercompilation. In John Lloyd, editor, Logic Programming: Proceedings of the 1995 International Symposium, pages 465–479. MIT Press, 1995.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Catuscia Palamidessi Hugh Glaser Karl Meinke

Rights and permissions

Reprints and permissions

Copyright information

© 1998 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Hatcliff, J., Dwyer, M., Laubach, S. (1998). Staging static analyses using abstraction-based program specialization. In: Palamidessi, C., Glaser, H., Meinke, K. (eds) Principles of Declarative Programming. ALP PLILP 1998 1998. Lecture Notes in Computer Science, vol 1490. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0056612

Download citation

  • DOI: https://doi.org/10.1007/BFb0056612

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-65012-6

  • Online ISBN: 978-3-540-49766-0

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics