Abstract
Proof-carrying code and other applications in computer security require machine-checkable proofs of properties of machine-language programs. These in turn require axioms about the opcode/operand encoding of machine instructions and the semantics of the encoded instructions. We show how to specify instruction encodings and semantics in higher-order logic, in a way that preserves the factoring of similar instructions in real machine architectures. We show how to automatically generate proofs of instruction decodings, global invariants from local invariants, Floyd-Hoare rules and predicate transformers, all from the specification of the instruction semantics. Our work is implemented in ML and Twelf, and all the theorems are checked in Twelf.
Preview
Unable to display preview. Download preview PDF.
Similar content being viewed by others
References
Necula, G.: Proof Carrying Code. In: The 24th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, New York, pp. 106–119. ACM Press, New York (1997)
Necula, G.C.: Compiling with Proofs. PhD thesis, School of Computer Science. Carnegie Mellon University, Pittsburgh, PA (September 1998)
Pfenning, F.: Logic Programming in the LF logical framework. In: Gérard, Plotkin, G. (eds.) Logical Frameworks, pp. 149–181. Cambridge University Press, Cambridge (1991)
Pfenning, F., Schürmann, C.: System description: Twelf - a meta-logical framework for deductive systems. In: The 16th International Conference on Automated Deduction, Springer, Heidelberg (1999)
Appel, A., Felty, A.: A Semantic Model For Types and Machine Instructions for Proof-Carrying Code. In: The 27th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL 2000 (January 2000)
Wahbe, R., Lucco, S., Anderson, T., Graham, S.: Efficient software-based fault isolation. In: Proc. 14th ACM Symposium on Operating System Principles, New York, pp. 203–216. ACM Press, New York (1993)
Lindholm, T., Yellin, F.: The Java Virtual Machine Specification. Addison Wesley, Reading (1997)
Ramsey, N., Fernandez, M.: The New Jersey Machine-Code Toolkit. In: Proceedings of the 1995 USENIX Technical Conference, New Orleans, LA, Han, pp. 289–302 (1995)
Ramsey, N., Fernandez, M.: Specifying Representations of Machine Instructions. ACM Transactions on Programming Languages and Systems 19(3), 492–524 (1997)
SPARC International, Inc. The SPARC Architecture Manual v. 8. Prentice-Hall, Inc. (1992)
Coquand, T., Huet, G.: The calculus of constructions. Information and Computation 76(2/3), 95–120 (1988)
Gordon, M.J.C., Melham, T.F. (eds.): Introduction to HOL: A theorem proving environment for higher order logic. Cambridge University Press, Cambridge (1993)
Milner, R., Weyhrauch, R.: Proving Compiler Correctness in a Mechanized Logic. Machine Intelligence 7, 51–70 (1972)
Boyer, R.S., Yu, Y.: Automated Correctness Proofs of Machine Code Programs for a Commercial Microprocessor. In: The 11th International Conference of Automated Deduction, pp. 416–430. Springer, Heidelberg (1992)
Wahab, M.: Verification and Abstraction of Flow-Graph Programs with Pointers and Computed Jumps. Technical Report. University of Warwick, Coventry, UK
Gordon, M.: A Mechanized Hoare Logic of State Transitions. In: Roscoe, A.W. (ed.) A Classical Mind: Essays in Honour of C. A. R. Hoare, pp. 143–159. Prentice-Hall, Englewood Cliffs (1994)
Gordon, M.: Mechanizing Programming Logics in Higher Order Logic. In: Birtwistle, G., Subrahmanyam, P.A. (eds.) Current Trends in Hardware Verification and Automated Theorem Proving, pp. 387–439. Springer, Heidelberg (1989)
Stringer-Calvert, D.W.J.: Mechanical Verification of Compiler Correctness. Ph.D. thesis, University of York (1998)
Boyer, R.S., Moore, J.S.: A Computational Logic Handbook. Academic Press, London (1988)
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2000 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Michael, N.G., Appel, A.W. (2000). Machine Instruction Syntax and Semantics in Higher Order Logic. In: McAllester, D. (eds) Automated Deduction - CADE-17. CADE 2000. Lecture Notes in Computer Science(), vol 1831. Springer, Berlin, Heidelberg. https://doi.org/10.1007/10721959_2
Download citation
DOI: https://doi.org/10.1007/10721959_2
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-67664-5
Online ISBN: 978-3-540-45101-3
eBook Packages: Springer Book Archive