Principals in programming languages: a syntactic proof technique

Programs are often structured around the idea that different pieces of code comprise distinct principals, each with a view of its environment. Typical examples include the modules of a large program, a host and its clients, or a collection of interactive agents.In this paper, we formalize this notion of principal in the programming language itself. The result is a language in which intuitive statements such as, "the client must call open to obtain a file handle," can be phrased and proven formally.We add principals to variants of the simply-typed λ-calculus and show how we can track the code corresponding to each principal throughout evaluation. This multiagent calculus yields syntactic proofs of some type abstraction properties that traditionally require semantic arguments.

[1]  Christopher Strachey,et al.  Fundamental Concepts in Programming Languages , 2000, High. Order Symb. Comput..

[2]  John C. Mitchell,et al.  On the Equivalence of Data Representations , 1991, Artificial and Mathematical Theory of Computation.

[3]  Xavier Leroy,et al.  Security properties of typed applets , 1998, POPL '98.

[4]  Karl Crary A simple proof technique for certain parametricity results , 1999, ICFP '99.

[5]  Godmar Back Patrick Tullmann Leigh Stoller Wilson C. Hsie Lepreau Java Operating Systems : Design and Implementation , 1998 .

[6]  Dan S. Wallach,et al.  Understanding Java stack inspection , 1998, Proceedings. 1998 IEEE Symposium on Security and Privacy (Cat. No.98CB36186).

[7]  John C. Reynolds,et al.  Towards a theory of type structure , 1974, Symposium on Programming.

[8]  John H. Reppy,et al.  Higher-Order Concurrency , 1992 .

[9]  Dan S. Wallach,et al.  A new approach to mobile code security , 1999 .

[10]  Michael W. Godfrey,et al.  Secure and portable database extensibility , 1998, SIGMOD '98.

[11]  Matthias Felleisen,et al.  A Syntactic Approach to Type Soundness , 1994, Inf. Comput..

[12]  WadlerPhilip,et al.  Report on the programming language Haskell , 1992 .

[13]  Brian N. Bershad,et al.  Extensibility safety and performance in the SPIN operating system , 1995, SOSP.

[14]  Robin Milner,et al.  Definition of standard ML , 1990 .

[15]  Flemming Nielson,et al.  Two-level functional languages , 1992, Cambridge tracts in theoretical computer science.

[16]  Jon G. Riecke,et al.  The SLam calculus: programming with secrecy and integrity , 1998, POPL '98.

[17]  Andrew C. Myers,et al.  JFlow: practical mostly-static information flow control , 1999, POPL '99.

[18]  John C. Mitchell,et al.  Abstract types have existential type , 1988, TOPL.

[19]  Deyu Hu,et al.  Implementing Multiple Protection Domains in Java , 1998, USENIX Annual Technical Conference.

[20]  Davide Sangiorgi,et al.  Behavioral equivalence in the polymorphic pi-calculus , 2000, JACM.

[21]  C PierceBenjamin,et al.  Behavioral equivalence in the polymorphic pi-calculus , 2000 .

[22]  Martín Abadi,et al.  Formal parametric polymorphism , 1993, POPL '93.

[23]  Geoffrey Smith,et al.  A Type-Based Approach to Program Security , 1997, TAPSOFT.

[24]  John C. Reynolds,et al.  Types, Abstraction and Parametric Polymorphism , 1983, IFIP Congress.

[25]  J. Girard,et al.  Proofs and types , 1989 .