| | |
Summary: A Semantic Model of Types and Machine Instructions for
Proof-Carrying Code
Andrew W. Appel
Bell Laboratoriesand Princeton University
Amy P. Felty
Bell Laboratories
July 16, 1999
Abstract
Proof-carrying code is a framework for proving the
safety of machine-language programs with a machine-
checkable proof. Such proofs have previously defined
type-checking rules as part of the logic. We show a uni-
versal type framework for proof-carrying code that will
allow a code producer to choose a programming lan-
guage, prove the type rules for that language as lemmas
in higher-order logic, then use those lemmas to prove
the safety of a particular program. We show how to
handle traversal, allocation, and initialization of values
in a wide variety of types, including functions, records,
unions, existentials, and covariant recursive types.
|