Principals in Programming Languages: Technical Results

This is the companion technical report for “Principals in Programming Languages” [20]. See that document for a more readable version of these results. In this paper, we describe two variants of the simply typed λ-calculus extended with a notion of principal. The results are languages in which intuitive statements like “the client must call open to obtain a file handle” can be phrased and proven formally. The first language is a two-agent calculus with references and recursive types, while the second language explores the possibility of multiple agents with varying amounts of type information. We use these calculi to give syntactic proofs of some type abstraction results that traditionally require semantic arguments.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

[15]  Dan Grossman,et al.  Principals in programming languages: a syntactic proof technique , 1999, ICFP '99.

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

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

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

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