| | |
Summary: A Semantic Model of Types and Machine Instructions for
ProofCarrying Code
Andrew W. Appel
Bell Laboratories # and Princeton University
Amy P. Felty
Bell Laboratories
July 16, 1999
Abstract
Proofcarrying code is a framework for proving the
safety of machinelanguage programs with a machine
checkable proof. Such proofs have previously defined
typechecking rules as part of the logic. We show a uni
versal type framework for proofcarrying code that will
allow a code producer to choose a programming lan
guage, prove the type rules for that language as lemmas
in higherorder 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.
|