Download:
|
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
|