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
Preview
Unable to display preview. Download preview PDF.
References
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.
Michael A. Arbib and Suad Alagić, “Proof Rules for Gotos,” Acta Information, Vol. 11, No. 2, 1972, pp. 139–148.
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.
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.
Frederick B. Cohen, “Why is thttpd Secure?” http://all.net/ManAl/white/whitepaper.html or http://all.net/ → Products → Secure http and gopher daemons (14 March 1996).
Frederick B. Cohen, “A Secure World Wide Web Daemon,” Computers and Security, submitted, 1995.
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.
Nissim Francez, Program Verification. Addison-Wesley, 1992.
Michael J. C. Gordon, Programming Language Theory and its Implementation. Prentice-Hall, Inc., New Jersey, 1988.
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.
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.
Samuel P. Harbison and Guy L. Steele Jr., C, A Reference Manual. Prentice-Hall, Inc., 1991.
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.
C. A. R. Hoare, “An Axiomatic Basis for Computer Programming,” Communications of the ACM, vol. 12, October 1969, pp. 576–583.
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.
HP-UX on-line manual, HP-UX Release 9.0: August 1992, Hewlett-Packard Company, Palo Alto, California.
Derek Jones, “Checking an Application's use of API,” http://www.knosof.co.uk/apichk.html (14 March 1996).
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.
John P. Van Tassel, “The HOL parser Library,” http://lal.cs.byu.edu/lal/holdoc/library.html (13 June 1996).
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.
Author information
Authors and Affiliations
Editor information
Rights 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