MetaCartSign in to MyCiteSeer

Include Citations | Advanced Search | Help

Include Citations | Advanced Search | Help

  Principals in programming languages: A syntactic proof technique (1999) [14 citations — 1 self]

Download:
Download as a PDF | Download as a PS
by Steve Zdancewic, Dan Grossman, Greg Morrisett
In International Conference on Functional Programming
http://www.cs.cornell.edu/talc/papers/pipl.ps
Add To MetaCart

Abstract:

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.

Citations

491 The Definition of Standard ML (Revised – Milner, Tofte, et al. - 1997
393 A syntactic approach to type soundness – Wright, Felleisen - 1994
390 Extensibility, safety and performance in the SPIN operating system – Bershad, Savage, et al. - 1995
318 Towards a theory of type structure – Reynolds
277 Abstract types have existential type – Mitchell, Plotkin - 1988
266 Types, abstraction, and parametric polymorphism – Reynolds - 1983
260 Proofs and Types – Girard, Taylor, et al. - 1989
230 JFlow: Practical Mostly-Static Information Flow Control – Myers - 1999
179 The SLam calculus: programming with secrecy and integrity – Heintze, Riecke - 1998
131 Fundamental concepts in programming languages – Strachey
119 Higher-order concurrency – Reppy - 1992
99 A type-based approach to program security – Volpano, Smith - 1997
94 Understanding java stack inspection – Wallach, Felten - 1998
63 Security properties of typed applets – Leroy, Rouaix - 1998
54 and Hanne Riis Nielson. Two-Level Functional Languages, volume 34 of Cambridge Tracts – Nielson - 1992
48 Java operating systems: Design and implementation – Back, Tullmann, et al. - 1998
47 Behavioral equivalence in the polymorphic pi-calculus – Pierce, Sangiorgi
34 On the equivalence of data representations – Mitchell - 1991
34 A new approach to mobile code security – Wallach - 1999
21 Report on the Programming Language Haskell (version 1.4) - draft – Peterson, Hammond, et al. - 1997
12 Pierre-Louis Curien. Formal parametric polymorphism – Abadi, Cardelli - 1993
12 A simple proof technique for certain parametricity results – Crary - 1998
8 Two-Level Functional Languages. Number 34 – Nielson, Nielson - 1992
6 Chi-Chao Chang, Grzegorz Czajkowski, Deyu Hu, and Thorsten von Eicken. Implementing multiple protection domains in Java – Hawblitzel - 1998
6 Praveen Seshadri, and Thorsten von Eicken. Secure and portable database extensibility – Godfrey, Mayr - 1998
3 Deyu Hu, and Thorston von Eiken. Implementing multiple protection domains in Java – Hawblitzel, Chang, et al. - 1998
2 Java operating systems: Design and implementation – Hseih, Lepreau - 1998
2 Reppy. Higher-order Concurrency – Hamilton - 1992
2 Syntax and semantics for multiple agents and abstract types – Zdancewic, Grossman - 1999
1 The Definition of Standard ML (Revised – Mitchell - 1997