- Sponsor:
- sigplan
This volume contains the papers and abstracts presented at POPL '02, the Twenty-Ninth Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. The POPL conference is a forum for presentation of research on the design, definition, analysis, and implementation of programming languages and programming systems. This year's conference is in Portland, Oregon.A total of 128 ten-page extended abstracts were received in response to a call for papers. SIGPLAN policy forbids submission from members of the program committee. Each submission was read by members of the program committee and short reviews were collected and discussed by the committee as a whole. The deliberation led to the selection of 28 papers. Papers were judged according to their originality, clarity, innovation, perceived importance of the results, and appropriateness to the expected audience. Due to the format of the conference, many good papers were not selected.In addition to the contributed papers, the POPL '02 program features three invited talks. The invited speakers were selected by the committee to complement and enhance the program of contributed papers.Although submissions were read and evaluated, the papers that appear in this volume may differ in form and content from the submitted abstracts. The conference selection process does not constitute full review of the work. It is expected that many of the papers printed here will be revised and submitted to refereed archival journals for publication.
The SLAM project: debugging system software via static analysis
The goal of the SLAM project is to check whether or not a program obeys "API usage rules" that specify what it means to be a good client of an API. The SLAM toolkit statically analyzes a C program to determine whether or not it violates given usage ...
Mining specifications
Program verification is a promising approach to improving program quality, because it can search all possible program executions for specific errors. However, the need to formally describe correct behavior or errors is a major barrier to the widespread ...
Role analysis
We present a new role system in which the type (or role) of each object depends on its referencing relationships with other objects, with the role changing as these relationships change. Roles capture important object and data structure properties and ...
Analyzing security protocols with secrecy types and logic programs
We study and further develop two language-based techniques for analyzing security protocols. One is based on a typed process calculus; the other, on untyped logic programs. Both focus on secrecy properties. We contribute to these two techniques, in ...
Types as models: model checking message-passing programs
Abstraction and composition are the fundamental issues in making model checking viable for software. This paper proposes new techniques for automating abstraction and decomposition using source level type information provided by the programmer. Our ...
Lazy abstraction
One approach to model checking software is based on the abstract-check-refine paradigm: build an abstract model, then check the desired property, and if the check fails, refine the model and start over. We introduce the concept of lazy abstraction to ...
Bisimulation congruences in safe ambients
We study a variant of Levi and Sangiorgi's Safe Ambients (SA) enriched with passwords (SAP). In SAP by managing passwords, for example generating new ones and distributing them selectively, an ambient may now program who may migrate into its computation ...
A uniform type structure for secure information flow
The π-calculus is a formalism of computing in which we can compositionally represent dynamics of major programming constructs by decomposing them into a single communication primitive, the name passing. This work reports our experience in using a linear/...
Bounding space usage of conservative garbage collectors
Conservative garbage collectors can automatically reclaim unused memory in the absence of precise pointer location information. If a location can possibly contain a pointer, it is treated by the collector as though it contained a pointer. Although it is ...
The hardness of cache conscious data placement
The growing gap between the speed of memory access and cache access has made cache misses an influential factor in program efficiency. Much effort has been spent recently on reducing the number of cache misses during program run. This effort includes ...
Towards automatic construction of staged compilers
Some compilation systems, such as offline partial evaluators and selective dynamic compilation systems, support staged optimizations. A staged optimization is one where a logically single optimization is broken up into stages, with the early stage(s) ...
From POPL to the classroom and back
This invited talk presents an overview of the TeachScheme! and DrScheme projects. The former aims at bringing the principles of programming and programming languages into the introductory programming curriculum. The latter is a program development ...
CCured: type-safe retrofitting of legacy code
In this paper we propose a scheme that combines type inference and run-time checking to make existing C programs type safe. We describe the CCured type system, which extends that of C by separating pointer types according to their usage. This type ...
An efficient profile-analysis framework for data-layout optimizations
Data-layout optimizations rearrange fields within objects, objects within objects, and objects within the heap, with the goal of increasing spatial locality. While the importance of data-layout optimizations has been growing, their deployment has been ...
Stochastic lambda calculus and monads of probability distributions
Probability distributions are useful for expressing the meanings of probabilistic languages, which support formal modeling of and reasoning about uncertainty. Probability distributions form a monad, and the monadic definition leads to a simple, natural ...
Representation independence, confinement and access control [extended abstract]
Denotational semantics is given for a Java-like language with pointers, subclassing and dynamic dispatch, class oriented visibility control, recursive types and methods, and privilege-based access control. Representation independence (relational ...
Systematic design of program transformation frameworks by abstract interpretation
We introduce a general uniform language-independent framework for designing online and offline source-to-source program transformations by abstract interpretation of program semantics. Iterative source-to-source program transformations are designed ...
Predicate abstraction for software verification
Software verification is an important and difficult problem. Many static checking techniques for software require annotations from the programmer in the form of method specifications and loop invariants. This annotation overhead, particularly of loop ...
The first-order theory of subtyping constraints
We investigate the first-order of subtyping constraints. We show that the first-order theory of non-structural subtyping is undecidable, and we show that in the case where all constructors are either unary or nullary, the first-order theory is decidable ...
A type system for certified binaries
A certified binary is a value together with a proof that the value satisfies a given specification. Existing compilers that generate certified code have focused on simple memory and control-flow safety rather than more advanced properties. In this paper,...
Functional logic overloading
Functional logic overloading is a novel approach to user-defined overloading that extends Haskell's concept of type classes in significant ways. Whereas type classes are conceptually predicates on types in standard Haskell, they are type functions in ...
Scalable formal design methods for asynchronous VLSI
This lecture will provide an overview of the field of asynchronous VLSI, and show how formal methods have played a critical role in the design of complex asynchronous systems. In particular, I will talk about program transformations and their ...
Adaptive functional programming
An adaptive computation maintains the relationship between its input and output as the input changes. Although various techniques for adaptive computing have been proposed, they remain limited in their scope of applicability. We propose a general ...
The strength of non-size increasing computation
We study the expressive power of non-size increasing recursive definitions over lists. This notion of computation is such that the size of all intermediate results will automatically be bounded by the size of the input so that the interpretation in a ...
Composing dataflow analyses and transformations
Dataflow analyses can have mutually beneficial interactions. Previous efforts to exploit these interactions have either (1) iteratively performed each individual analysis until no further improvements are discovered or (2) developed "super-analyses" ...
Proving correctness of compiler optimizations by temporal logic
Many classical compiler optimizations can be elegantly expressed using rewrite rules of form: I ⇒ I′ if φ, where I, I′ are intermediate language instructions and φ is a property expressed in a temporal logic suitable for describing program data flow. ...
Exploiting prolific types for memory management and optimizations
In this paper, we introduce the notion of prolific and non-prolific types, based on the number of instantiated objects of those types. We demonstrate that distinguishing between these types enables a new class of techniques for memory management and ...
Stack inspection: theory and variants
Stack inspection is a security mechanism implemented in runtimes such as the JVM and the CLR to accommodate components with diverse levels of trust. Although stack inspection enables the fine-grained expression of access control policies, it has rather ...
Information flow inference for ML
This paper presents a type-based information flow analysis for a call-by-value λ-calculus equipped with references, exceptions and let-polymorphism, which we refer to as Core ML. The type system is constraint-based and has decidable type inference. Its ...
Resource usage analysis
It is an important criterion of program correctness that a program accesses resources in a valid manner. For example, a memory region that has been allocated should be eventually deallocated, and after the deallocation, the region should no longer be ...
Cited By
- Cohen N and Petrank E (2017). Limitations of Partial Compaction, ACM Transactions on Programming Languages and Systems, 39:1, (1-44), Online publication date: 23-Mar-2017.
- Hathhorn C, Ellison C and Roşu G Defining the undefinedness of C Proceedings of the 36th ACM SIGPLAN Conference on Programming Language Design and Implementation, (336-345)
- Hathhorn C, Ellison C and Roşu G (2015). Defining the undefinedness of C, ACM SIGPLAN Notices, 50:6, (336-345), Online publication date: 7-Aug-2015.
Recommendations
Acceptance Rates
Year | Submitted | Accepted | Rate |
---|---|---|---|
POPL '15 | 227 | 52 | 23% |
POPL '14 | 220 | 51 | 23% |
POPL '04 | 176 | 29 | 16% |
POPL '03 | 126 | 24 | 19% |
POPL '02 | 128 | 28 | 22% |
POPL '01 | 126 | 24 | 19% |
POPL '00 | 151 | 30 | 20% |
POPL '99 | 136 | 24 | 18% |
POPL '98 | 175 | 32 | 18% |
POPL '97 | 225 | 36 | 16% |
POPL '96 | 148 | 34 | 23% |
POPL '94 | 173 | 39 | 23% |
POPL '93 | 199 | 39 | 20% |
POPL '92 | 204 | 30 | 15% |
POPL '91 | 152 | 31 | 20% |
POPL '89 | 191 | 30 | 16% |
POPL '88 | 177 | 28 | 16% |
POPL '87 | 108 | 29 | 27% |
POPL '83 | 170 | 28 | 16% |
POPL '82 | 121 | 38 | 31% |
POPL '81 | 121 | 24 | 20% |
POPL '79 | 146 | 27 | 18% |
POPL '78 | 135 | 27 | 20% |
POPL '77 | 105 | 25 | 24% |
POPL '76 | 90 | 20 | 22% |
POPL '75 | 100 | 23 | 23% |
POPL '73 | 100 | 22 | 22% |
Overall | 4,130 | 824 | 20% |