An indexed model of recursive types for foundational proof-carrying code

The proofs of "traditional" proof carrying code (PCC) are type-specialized in the sense that they require axioms about a specific type system. In contrast, the proofs of foundational PCC explicitly define all required types and explicitly prove all the required properties of those types assuming only a fixed foundation of mathematics such as higher-order logic. Foundational PCC is both more flexible and more secure than type-specialized PCC.For foundational PCC we need semantic models of type systems on von Neumann machines. Previous models have been either too weak (lacking general recursive types and first-class function-pointers), too complex (requiring machine-checkable proofs of large bodies of computability theory), or not obviously applicable to von Neumann machines. Our new model is strong, simple, and works either in λ-calculus or on Pentiums.

[1]  Dana S. Scott,et al.  Data Types as Lattices , 1976, SIAM J. Comput..

[2]  D. Scott Data Types as Lattices , 1976, SIAM J. Comput..

[3]  Gordon D. Plotkin,et al.  An ideal model for recursive polymorphic types , 1984, Inf. Control..

[4]  Gordon D. Plotkin,et al.  An Ideal Model for Recursive Polymorphic Types , 1986, Inf. Control..

[5]  Rance Cleaveland,et al.  Implementing mathematics with the Nuprl proof development system , 1986 .

[6]  David A. Schmidt,et al.  Denotationaisemantics: a methodology for language development , 1986 .

[7]  Peter D. Mosses,et al.  Denotational semantics , 1995, LICS 1995.

[8]  Furio Honsell,et al.  A framework for defining logics , 1993, JACM.

[9]  Glynn Winskel,et al.  The formal semantics of programming languages - an introduction , 1993, Foundation of computing series.

[10]  F. Pfenning Elf : A MetaLanguage for Deductive Systems ( System Description ) , 1994 .

[11]  Frank Pfenning,et al.  Elf: A Meta-Language for Deductive Systems (System Descrition) , 1994, CADE.

[12]  John C. Mitchell,et al.  Effective models of polymorphism, subtyping and recursion , 1995 .

[13]  Ramesh Viswanathan,et al.  Effective Models of Polymorphism, Subtyping and Recursion (Extended Abstract) , 1996, ICALP.

[14]  Robert Harper,et al.  Typed closure conversion , 1996, POPL '96.

[15]  Andrew M. Pitts,et al.  Relational Properties of Domains , 1996, Inf. Comput..

[16]  Lars Birkedal,et al.  Relational Interpretations of Recursive Types in an operational Setting (Summary) , 1997, TACS.

[17]  David Walker,et al.  Stack-based typed assembly language , 1998, Journal of Functional Programming.

[18]  George C. Necula,et al.  Compiling with proofs , 1998 .

[19]  Lars Birkedal,et al.  Relational Interpretations of Recursive Types in an Operational Setting , 1999, Inf. Comput..

[20]  Karl Crary,et al.  From system F to typed assembly language , 1999 .

[21]  MorrisettGreg,et al.  From system F to typed assembly language , 1999 .

[22]  Frank Pfenning,et al.  System Description: Twelf - A Meta-Logical Framework for Deductive Systems , 1999, CADE.

[23]  Andrew W. Appel,et al.  A semantic model of types and machine instructions for proof-carrying code , 2000, POPL '00.

[24]  Andrew W. Appel,et al.  Machine Instruction Syntax and Semantics in Higher Order Logic , 2000, CADE.

[25]  George C. Necula,et al.  A certifying compiler for Java , 2000, PLDI '00.

[26]  Models for Security Policies in Proof-Carrying Code , .