Skip to main content

Inference rules for programming languages with side effects in expressions

  • Conference paper
  • First Online:
Theorem Proving in Higher Order Logics (TPHOLs 1996)

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

Included in the following conference series:

Abstract

Much of the work on verifying software has been done on simple, often artificial, languages or subsets of existing languages to avoid difficult details. In trying to verify a secure application written in C, we have encountered and overcome some semantically complicated uses of the language.

We present inference rules for assignment statements with pre- and post-evaluation side effects and while loops with arbitrary pre-evaluation side effects in the test expression. We also discuss the need to abstract the semantics of program functions and present an inference rule for abstraction.

This work was sponsored by the National Science Foundation under NSF grant MIP-9412581

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. Sten Agerholm, “Mechanizing Program Verification in HOL,” in Proceedings of the 1991 International Workshop on the HOL Theorem Proving System and Its Applications (HOL’ 91), edited by Myla Archer, Jeffrey J. Joyce, Karl N. Levitt, and Phillip J. Windley, IEEE Computer Society Press, Los Alamitos, California, 1991, pp. 208–222.

    Chapter  Google Scholar 

  2. Michael A. Arbib and Suad Alagić, “Proof Rules for Gotos,” Acta Information, Vol. 11, No. 2, 1972, pp. 139–148.

    Google Scholar 

  3. Paul E. Black and Phillip J. Windley, “Automatically Synthesized Term Denotation Predicates: A Proof Aid,” in Higher Order Logic Theorem Proving and Its Applications (HOL’ 95), edited by E. Thomas Schubert, Phillip J. Windley, and James Alves-Foss, Springer-Verlag, Berlin, Germany, 1995, pp. 46–57.

    Google Scholar 

  4. Holger Busch, “A Practical Method for Reasoning about Distributed Systems in a Theorem Prover,” in Higher Order Logic Theorem Proving and Its Applications (HOL’ 95), edited by E. Thomas Schubert, Phillip J. Windley, and James Alves-Foss, Springer-Verlag, Germany, 1995, pp. 106–121.

    Google Scholar 

  5. Frederick B. Cohen, “Why is thttpd Secure?” http://all.net/ManAl/white/whitepaper.html or http://all.net/ → ProductsSecure http and gopher daemons (14 March 1996).

    Google Scholar 

  6. Frederick B. Cohen, “A Secure World Wide Web Daemon,” Computers and Security, submitted, 1995.

    Google Scholar 

  7. Paul Curzon, “Deriving Correctness Properties of Compiled Code,” in Higher Order Logic Theorem Proving and Its Applications (HOL’ 92), edited by Luc Claesen and Michael Gordon, Elsevier Science Publishers, 1992, pp. 97–116.

    Google Scholar 

  8. Nissim Francez, Program Verification. Addison-Wesley, 1992.

    Google Scholar 

  9. Michael J. C. Gordon, Programming Language Theory and its Implementation. Prentice-Hall, Inc., New Jersey, 1988.

    Google Scholar 

  10. David Gries & Gary Levin, “Assignment and Procedure Call Proof Rules,” ACM Transactions on Programming Languages and Systems, vol. 2, no. 4, Oct 1980, pp. 564–579.

    Article  MATH  Google Scholar 

  11. Roger Hale, “Reasoning About Software,” in Proceedings of the 1991 International Workshop on the HOL Theorem Proving System and Its Applications (HOL’ 91), edited by Myla Archer, Jeffrey J. Joyce, Karl N. Levitt, and Phillip J. Windley, IEEE Computer Society Press, Los Alamitos, California, 1991, pp. 52–58.

    Chapter  Google Scholar 

  12. Samuel P. Harbison and Guy L. Steele Jr., C, A Reference Manual. Prentice-Hall, Inc., 1991.

    Google Scholar 

  13. William L. Harrison, Karl N. Levitt, Myla Archer, “A HOL Mechanization of The Axiomatic Semantics of a Simple Distributed Programming Language,” in Higher Order Logic Theorem Proving and Its Applications (HOL’ 92), edited by Luc Claesen and Michael Gordon, Elsevier Science Publishers B.V., 1992, pp. 117–126.

    Google Scholar 

  14. C. A. R. Hoare, “An Axiomatic Basis for Computer Programming,” Communications of the ACM, vol. 12, October 1969, pp. 576–583.

    Article  MATH  Google Scholar 

  15. Peter Vincent Homeier, Trustworthy Tools for Trustworthy Programs: A Mechanically Verified Verification Condition Generator for the Total Correctness of Procedures, Ph.D. Dissertation, University of California, Los Angeles, 1995.

    Google Scholar 

  16. HP-UX on-line manual, HP-UX Release 9.0: August 1992, Hewlett-Packard Company, Palo Alto, California.

    Google Scholar 

  17. Derek Jones, “Checking an Application's use of API,” http://www.knosof.co.uk/apichk.html (14 March 1996).

    Google Scholar 

  18. Sara Kalvala, “A Formulation of TLA in Isabelle,” in Higher Order Logic Theorem Proving and Its Applications (HOL’ 95), edited by E. Thomas Schubert, Phillip J. Windley, and James Alves-Foss, Springer-Verlag, Berlin, Germany, 1995, pp. 214–228.

    Google Scholar 

  19. John P. Van Tassel, “The HOL parser Library,” http://lal.cs.byu.edu/lal/holdoc/library.html (13 June 1996).

    Google Scholar 

  20. Cui Zhang, Brian R. Becker, Mark R. Heckman, Karl Levitt, and Ron A. Olsson, “A Hierarchical Method for Reasoning about Distributed Programming Languages,” in Higher Order Logic Theorem Proving and Its Applications (HOL’ 95), edited by E. Thomas Schubert, Phillip J. Windley, and James Alves-Foss, Springer-Verlag, Berlin, Germany, 1995, pp. 385–400.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Gerhard Goos Juris Hartmanis Jan van Leeuwen Joakim von Wright Jim Grundy John Harrison

Rights and permissions

Reprints and permissions

Copyright information

© 1996 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Black, P.E., Windley, P.J. (1996). Inference rules for programming languages with side effects in expressions. In: Goos, G., Hartmanis, J., van Leeuwen, J., von Wright, J., Grundy, J., Harrison, J. (eds) Theorem Proving in Higher Order Logics. TPHOLs 1996. Lecture Notes in Computer Science, vol 1125. Springer, Berlin, Heidelberg. https://doi.org/10.1007/BFb0105396

Download citation

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

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-61587-3

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

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics