skip to main content
10.1145/503272acmconferencesBook PagePublication PagespoplConference Proceedingsconference-collections
POPL '02: Proceedings of the 29th ACM SIGPLAN-SIGACT symposium on Principles of programming languages
ACM2002 Proceeding
Publisher:
  • Association for Computing Machinery
  • New York
  • NY
  • United States
Conference:
POPL02: The 29th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages 2002 Portland Oregon January 16 - 18, 2002
ISBN:
978-1-58113-450-6
Published:
16 January 2002
Sponsors:
Next Conference
January 19 - 25, 2025
Denver , CO , USA
Bibliometrics
Skip Abstract Section
Abstract

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.

Skip Table Of Content Section
Article
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 ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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/...

Article
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 ...

Article
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 ...

Article
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) ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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,...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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" ...

Article
Proving correctness of compiler optimizations by temporal logic

Many classical compiler optimizations can be elegantly expressed using rewrite rules of form: II′ if φ, where I, I′ are intermediate language instructions and φ is a property expressed in a temporal logic suitable for describing program data flow. ...

Article
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 ...

Article
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 ...

Article
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 ...

Article
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 ...

Contributors
  • Willamette University
  • Stanford University

Recommendations

Acceptance Rates

POPL '02 Paper Acceptance Rate28of128submissions,22%Overall Acceptance Rate824of4,130submissions,20%
YearSubmittedAcceptedRate
POPL '152275223%
POPL '142205123%
POPL '041762916%
POPL '031262419%
POPL '021282822%
POPL '011262419%
POPL '001513020%
POPL '991362418%
POPL '981753218%
POPL '972253616%
POPL '961483423%
POPL '941733923%
POPL '931993920%
POPL '922043015%
POPL '911523120%
POPL '891913016%
POPL '881772816%
POPL '871082927%
POPL '831702816%
POPL '821213831%
POPL '811212420%
POPL '791462718%
POPL '781352720%
POPL '771052524%
POPL '76902022%
POPL '751002323%
POPL '731002222%
Overall4,13082420%