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.
Keywords
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.
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.
Preview
Unable to display preview. Download preview PDF.
References
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.
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.
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.
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.
Chris Colby and Peter Lee. An implementation of parameterized partial evaluation. Bigre Journal, 74:82–89, 1991.
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.
Charles Consel and Siau Cheng Khoo. Parameterized partial evaluation. ACM Transactions on Programming Languages and Systems, 15(3):463–493, 1993.
Matthew Dwyer, John Hatcliff, and Muhammad Nanda. Using partial evaluation to enable verification of concurrent software. ACM Computing Surveys, 1998. (in press).
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.
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.
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.
G.J. Holzmann. The model checker spin. IEEE Transactions on Software Engineering, 23(5):279–294, May 1997.
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.
Neil D. Jones, Carsten K. Gomard, and Peter Sestoft. Partial Evaluation and Automatic Program Generation. Prentice-Hall International, 1993.
Siau Cheng Khoo. Parameterized partial evaluation: theory and practice. PhD thesis, Yale University, June 1992.
Michael Leuschel. Program specialization and abstract interpretation reconciled. Technical Report CW 259, Departement Computerwetenschappen, K.U.Leaven, Belgium, May 1998.
K.L. McMillan. Symbolic Model Checking. Kluwer Academic Publishers, 1993.
David A. Schmidt. Trace-based abstract interpretation of operational semantics. Lisp and Symbolic Computation. (in press).
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.
Author information
Authors and Affiliations
Editor information
Rights 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