Demo Data from EDBT 2026 / reviewers in the wild / expert
Peter Lee 0001
dblp:l/PeterLee1
· DBLP profile ↗
38ranked-venue papers
5as first author
0since 2021 · last 2015
—ORCID · conflict
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 25 · 5 first-authorTheory of computation · 9Artificial intelligence and machine learning · 7Systems, architecture and hardware · 6Computer networks · 1Security and privacy · 1
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
21 papers |
Program verification · 50% Programming languages and type systems · 20% Compilers and program optimization · 10% | |
| Human-computer interaction and pervasive computing
1 paper |
Human-AI interaction · 100% | |
| Artificial intelligence
4 papers |
Language models and text generation · 34% Multi-agent systems · 34% Motion planning and robot control · 32% | |
| Computer architecture, parallel and distributed computing, and storage systems
3 papers |
Distributed systems · 49% Emerging computing paradigms · 37% Memory systems · 12% |
Topics — the 30 heaviest of 56, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program verification
proof-carrying code |
0.1 | 5 | 2000 | A certifying compiler for Java · PLDI 2000 A Proof-Carrying Code Architecture for Java · CAV 2000 The Design and Implementation of a Certifying Compiler · PLDI 1998 |
Programming languages and type systems
heap-manipulating programs |
0.1 | 1 | 2010 | Automatic numeric abstractions for heap-manipulating programs · POPL 2010 |
Program verification
safety verification |
0.1 | 1 | 2010 | Automatic numeric abstractions for heap-manipulating programs · POPL 2010 |
Program verification
termination analysis |
0.1 | 1 | 2010 | Automatic numeric abstractions for heap-manipulating programs · POPL 2010 |
Programming languages and type systems
domain-specific languages |
0.1 | 1 | 2008 | Programming modular robots with locally distributed predicates · ICRA 2008 |
Program verification › pointer program verification
heap reasoning |
0.1 | 1 | 2008 | THOR: A Tool for Reasoning about Shape and Arithmetic · CAV 2008 |
Program analysis › static analysis › pointer analysis
shape analysis |
0.1 | 1 | 2008 | THOR: A Tool for Reasoning about Shape and Arithmetic · CAV 2008 |
Program verification
static verification |
0.1 | 2 | 2007 | Enforcing resource bounds via static verification of dynamic checks · ACM Trans. Program. Lang. Syst. 2007 Safe Kernel Extensions Without Run-Time Checking · OSDI 1996 |
Program verification › program logic
hoare logic |
0.1 | 1 | 2007 | Enforcing resource bounds via static verification of dynamic checks · ACM Trans. Program. Lang. Syst. 2007 |
Program verification › quantitative verification
resource bound verification |
0.1 | 1 | 2007 | Enforcing resource bounds via static verification of dynamic checks · ACM Trans. Program. Lang. Syst. 2007 |
Program verification › quantitative verification
resource verification |
0.1 | 1 | 2007 | Enforcing resource bounds via static verification of dynamic checks · ACM Trans. Program. Lang. Syst. 2007 |
Distributed systems
distributed debugging |
0.1 | 1 | 2007 | Distributed Watchpoints: Debugging Large Multi-Robot Systems · ICRA 2007 |
Knowledge, reasoning and agents › Multi-agent systems
modular robotics |
0.1 | 3 | 2008 | Programming modular robots with locally distributed predicates · ICRA 2008 Distributed Watchpoints: Debugging Large Multi-Robot Systems · ICRA 2007 Scalable Shape Sculpting via Hole Motion: Motion Planning in Lattice-constrained Modular Robots · ICRA 2006 |
Robotics › Motion planning and robot control
motion planning |
0.1 | 1 | 2006 | Scalable Shape Sculpting via Hole Motion: Motion Planning in Lattice-constrained Modular Robots · ICRA 2006 |
Program verification › code-level verification
java verification |
0.1 | 1 | 2005 | JVer: A Java Verifier · CAV 2005 |
Compilers and program optimization
verified compilation |
0.0 | 2 | 2000 | A certifying compiler for Java · PLDI 2000 The Design and Implementation of a Certifying Compiler · PLDI 1998 |
Runtime systems and virtual machines › dynamic compilation
run-time code generation |
0.0 | 2 | 1998 | Run-time Code Generation and Modal-ML · PLDI 1998 Optimizing ML with Run-Time Code Generation · PLDI 1996 |
Compilers and program optimization
compiler correctness |
0.0 | 1 | 2000 | A certifying compiler for Java · PLDI 2000 |
Programming languages and type systems
type systems |
0.0 | 1 | 2000 | A Proof-Carrying Code Architecture for Java · CAV 2000 |
Program verification
dynamic verification |
0.0 | 1 | 2007 | Enforcing resource bounds via static verification of dynamic checks · ACM Trans. Program. Lang. Syst. 2007 |
Runtime systems and virtual machines
garbage collection |
0.0 | 1 | 1998 | Generational Stack Collection and Profile-Driven Pretenuring · PLDI 1998 |
Runtime systems and virtual machines › garbage collection
generational garbage collection |
0.0 | 1 | 1998 | Generational Stack Collection and Profile-Driven Pretenuring · PLDI 1998 |
Programming languages and type systems › type systems
modal type systems |
0.0 | 1 | 1998 | Run-time Code Generation and Modal-ML · PLDI 1998 |
Runtime systems and virtual machines › garbage collection
pretenuring |
0.0 | 1 | 1998 | Generational Stack Collection and Profile-Driven Pretenuring · PLDI 1998 |
Compilers and program optimization › program specialization
runtime specialization |
0.0 | 1 | 1998 | Run-time Code Generation and Modal-ML · PLDI 1998 |
Programming languages and type systems › type systems
type soundness |
0.0 | 1 | 1998 | The Design and Implementation of a Certifying Compiler · PLDI 1998 |
Logic in computer science › proof theory
logical frameworks |
0.0 | 1 | 1998 | Efficient Representation and Validation of Proofs · LICS 1998 |
Internet of things and sensor networks
wireless sensor network |
0.0 | 1 | 2005 | Claytronics: highly scalable communications, sensing, and actuation networks · SenSys 2005 |
Runtime systems and virtual machines › dynamic compilation
just-in-time compilation |
0.0 | 1 | 1996 | Optimizing ML with Run-Time Code Generation · PLDI 1996 |
Operating systems › extensible operating systems › kernel extensibility
kernel extensions |
0.0 | 1 | 1996 | Safe Kernel Extensions Without Run-Time Checking · OSDI 1996 |
Methods — techniques the papers use, named apart from their topics
speech recognition · 0.7natural language processing · 0.7reactive programming · 0.2locally distributed predicates · 0.2online monitoring · 0.1distributed predicate detection · 0.1abstract interpretation · 0.1modular robotics algorithms · 0.1proof checking · 0.1static analysis · 0.1linear inequalities · 0.1hoare logic · 0.1proof-carrying code · 0.1hole motion · 0.1distributed parallel algorithm · 0.1type inference · 0.0reconstruction algorithm · 0.0proof representation · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2015 | Coding by Everyone, Every DayabstractIn recent years, advances in machine learning and related fields have led to significant advances in a range of user-interface technologies, including audio processing, speech recognition, and natural language processing. These advances in turn have enabled speech-based digital assistants and speech-to-speech translation systems to become practical to deploy on a large scale. In essence, machines are becoming capable of hearing what we are saying. But will they understand what we want them to do when we talk to them? What are the prospects for getting useful work done in essence, by synthesizing programs -- through the act of having a conversation with a computer? In this lecture, I will speculate on the central role that programming-language design and program synthesis may have in this possible -- and I will argue, likely -- future of computing, one in which every user writes programs, every day, by conversing with a computing system. Peter Lee 0001 |
POPL | 1 |
| 2011 | Detecting Locally Distributed PredicatesabstractIn this article, we formalize locally distributed predicates , a concept previously introduced to address specific challenges associated with modular robotics and distributed debugging. A locally distributed predicate (LDP) is a novel construction for representing and detecting distributed properties in sparse-topology systems. Our previous work on LDPs presented empirical validation; here we show a formal model for two variants of the LDP algorithm, LDP-Basic and LDP-Snapshot, and establish performance bounds for these variants. We prove that LDP-Basic can detect strong stable predicates, that LDP-Snapshot can detect all stable predicates, and discuss their applicability to various distributed programming domains and to spatial computing in general. LDP detection in bounded-degree networks is shown to be scale-free, making the approach particularly attractive for specific topologies, even though LDPs are less efficient than snapshot algorithms in general distributed systems. Michael DeRosa, Seth Copen Goldstein, Peter Lee 0001, Jason Campbell, Padmanabhan Pillai |
ACM Trans. Auton. Adapt. Syst. | 3 |
| 2010 | Automatic numeric abstractions for heap-manipulating programsabstractWe present a logic for relating heap-manipulating programs to numeric abstractions. These numeric abstractions are expressed as simple imperative programs over integer variables and have the property that termination and safety of the numeric program ensures termination and safety of the original, heap-manipulating program. We have implemented an automated version of this abstraction process and present experimental results for programs involving a variety of data structures. Stephen Magill, Ming-Hsien Tsai 0001, Peter Lee 0001, Yih-Kuen Tsay |
POPL | 3 |
| 2009 | A Language for Large Ensembles of Independently Executing Nodes
Michael P. Ashley-Rollman, Peter Lee 0001, Seth Copen Goldstein, Padmanabhan Pillai, Jason Campbell |
ICLP | 2 |
| 2009 | A tale of two planners: Modular robotic planning with LDPabstractLDP (Locally Distributed Predicates) is a distributed, high-level language for programming modular reconfigurable robot systems (MRRs). In this paper we present the implementation of two motion-planning algorithms in LDP, and analyze both their performance and ease of implementation. We present multiple variations of one planner, including a novel resource allocation algorithm. We then draw conclusions about both the utility of the motion-planning algorithms and the suitability of LDP to the problem space. Our experiments suggest that metamodule-based planning approaches have a cost in time and/or energy terms, but that the cost can be worth paying in exchange for the additional generality and separation-of-concerns offered by these techniques. The particular tradeoff for a given system will depend upon its goals and the details of the underlying modules. Michael DeRosa, Seth Copen Goldstein, Peter Lee 0001, Padmanabhan Pillai, Jason Campbell |
IROS | 3 |
| 2008 | THOR: A Tool for Reasoning about Shape and Arithmetic
Stephen Magill, Ming-Hsien Tsai 0001, Peter Lee 0001, Yih-Kuen Tsay |
CAV | 3 |
| 2008 | Programming modular robots with locally distributed predicatesabstractWe present a high-level language for programming modular robotic systems, based on locally distributed predicates (LDP), which are distributed conditions that hold for a connected subensemble of the robotic system. An LDP program is a collection of LDPs with associated actions which are triggered on any subensemble that matches the predicate. The result is a reactive programming language which efficiently and concisely supports ensemble-level programming. We demonstrate the utility of LDP by implementing three common, but diverse, modular robotic tasks. Michael DeRosa, Seth Copen Goldstein, Peter Lee 0001, Padmanabhan Pillai, Jason Campbell |
ICRA | 3 |
| 2007 | Distributed Watchpoints: Debugging Large Multi-Robot SystemsabstractTightly-coupled multi-agent systems such as modular robots frequently exhibit properties of interest that span multiple modules. These properties cannot easily be detected from any single module, though they might readily be detected by combining the knowledge of multiple modules. Testing for distributed conditions is especially important in debugging or verifying the correctness of software for modular robots. We have developed a technique we call distributed watchpoint triggers which can efficiently recognize such distributed conditions. Our watchpoint description language can handle a variety of temporal, spatial, and logical properties spanning multiple robots. This paper presents that language, describes our fully-distributed, online mechanism for detecting distributed conditions in a running system, and evaluates the performance of our implementation. We found that the performance of the system is highly dependent on the program being debugged, scales linearly with ensemble size, and is small enough to make the system practical in all but the worst case scenarios Michael DeRosa, Jason Campbell, Padmanabhan Pillai, Seth Copen Goldstein, Peter Lee 0001, Todd C. Mowry |
ICRA | 5 |
| 2007 | Meld: A declarative approach to programming ensemblesabstractThis paper presents Meld, a programming language for modular robots, i.e., for independently executing robots where inter-robot communication is limited to immediate neighbors. Meld is a declarative language, based on P2, a logicprogramming language originally designed for programming overlay networks. By using logic programming, the code for an ensemble of robots can be written from a global perspective, as opposed to a large collection of independent robot views. This greatly simplifies the thought process needed for programming large ensembles. Initial experience shows that this also leads to a considerable reduction in code size and complexity. An initial implementation of Meld has been completed and has been used to demonstrate its effectiveness in the Claytronics simulator. Early results indicate that Meld programs are considerably more concise (more than 20× shorter) than programs written in C++, while running nearly as efficiently. Michael P. Ashley-Rollman, Seth Copen Goldstein, Peter Lee 0001, Todd C. Mowry, Padmanabhan Pillai |
IROS | 3 |
| 2007 | Model-Driven Construction of Certified Binaries
Sagar Chaki, James Ivers, Peter Lee 0001, Kurt C. Wallnau, Noam Zeilberger |
MoDELS | 3 |
| 2007 | Enforcing resource bounds via static verification of dynamic checksabstractWe show how to limit a program's resource usage in an efficient way, using a novel combination of dynamic checks and static analysis. Usually, dynamic checking is inefficient due to the overhead of checks, while static analysis is difficult and rejects many safe programs. We propose a hybrid approach that solves these problems. We split each resource-consuming operation into two parts. The first is a dynamic check, called reserve. The second is the actual operation, called consume, which does not perform any dynamic checks. The programmer is then free to hoist and combine reserve operations. Combining reserve operations reduces their overhead, while hoisting reserve operations ensures that the program does not run out of resources at an inconvenient time. A static verifier ensures that the program reserves resources before it consumes them. This verification is both easier and more flexible than an a priori static verification of resource usage. We present a sound and efficient static verifier based on Hoare logic and linear inequalities. As an example, we present a version of tar written in Java. Ajay Chander, David Espinosa, Nayeem Islam, Peter Lee 0001, George C. Necula |
ACM Trans. Program. Lang. Syst. | 4 |
| 2006 | Scalable Shape Sculpting via Hole Motion: Motion Planning in Lattice-constrained Modular RobotsabstractWe describe a novel shape formation algorithm for ensembles of 2-dimensional lattice-arrayed modular robots, based on the manipulation of regularly shaped voids within the lattice ("holes"). The algorithm is massively parallel and fully distributed. Constructing a goal shape requires time proportional only to the complexity of the desired target geometry. Construction of the shape by the modules requires no global communication nor broadcast floods after distribution of the target shape. Results in simulation show 97.3% shape compliance in ensembles of approximately 60,000 modules, and we believe that the algorithm will generalize to 3D and scale to handle millions of modules Michael DeRosa, Seth Copen Goldstein, Peter Lee 0001, Jason Campbell, Padmanabhan Pillai |
ICRA | 3 |
| 2005 | JVer: A Java Verifier
Ajay Chander, David Espinosa, Nayeem Islam, Peter Lee 0001, George C. Necula |
CAV | 4 |
| 2005 | Enforcing Resource Bounds via Static Verification of Dynamic Checks
Ajay Chander, David Espinosa, Nayeem Islam, Peter Lee 0001, George C. Necula |
ESOP | 4 |
| 2005 | Claytronics: highly scalable communications, sensing, and actuation networksabstractWe propose a demonstration of extremely scalable modular robotics algorithms developed as part of the Claytronics Project (http://www-2.cs.cmu.edu/~claytronics/), as well as a demonstration of proof-of-concept prototypes. Our effort envisions multi-million-module robot ensembles able to morph into three-dimensional scenes, eventually with sufficient fidelity so as to convince a human observer the scenes are real. Although this work is potentially revolutionary in the sense that it holds out the possibility of radically altering the relationship between computation, humans, and the physical world, many of the research questions involved are similar in flavor to more mainstream systems research, albeit larger in scale. For instance, as in sensor networks, each robot will incorporate sensing, computation, and communications components. However, unlike most sensor networks each robot will also include mechanisms for actuation and motion. Many of the key challenges in this project involve coordination and communication of sensing and actuation across such large ensembles of independent units. Burak Aksak, Preethi Srinivas Bhat, Jason Campbell, Michael DeRosa, Stanislav Funiak, Phillip B. Gibbons, Seth Copen Goldstein, Carlos Guestrin, Ashish Gupta 0003, Casey Helfrich, James F. Hoburg, Brian T. Kirby, James J. Kuffner, Peter Lee 0001, Todd C. Mowry, Padmanabhan Pillai, Ram Ravichandran, Benjamin D. Rister, Srinivasan Seshan, Metin Sitti |
SenSys | 14 |
| 2003 | What Are We Trying to Prove? Reflections on Experiences with Proof-Carrying Code
Peter Lee 0001 |
TACAS | 1 |
| 2003 | Automated techniques for provably safe mobile code
Christopher Colby, Karl Crary, Robert Harper 0001, Peter Lee 0001, Frank Pfenning |
Theor. Comput. Sci. | 4 |
| 2002 | Temporal Logic for Proof-Carrying Code
Andrew Bernard, Peter Lee 0001 |
CADE | 2 |
| 2000 | Proof Generation in the Touchstone Theorem Prover
George C. Necula, Peter Lee 0001 |
CADE | 2 |
| 2000 | A Proof-Carrying Code Architecture for Java
Christopher Colby, Peter Lee 0001, George C. Necula |
CAV | 2 |
| 2000 | A certifying compiler for JavaabstractThis paper presents the initial results of a project to determine if the techniques of proof-carrying code and certifying compilers can be applied to programming languages of realistic size and complexity. The experiment shows that: (1) it is possible to implement a certifying native-code compiler for a large subset of the Java programming language; (2) the compiler is freely able to apply many standard local and global optimizations; and (3) the PCC binaries it produces are of reasonable size and can be rapidly checked for type safety by a small proof-checker. This paper also presents further evidence that PCC provides several advantages for compiler development. In particular, generating proofs of the target code helps to identify compiler bugs, many of which would have been dicult to discover by testing. Christopher Colby, Peter Lee 0001, George C. Necula, Fred Blau, Mark Plesko, Kenneth Cline |
PLDI | 2 |
| 1998 | Efficient Representation and Validation of ProofsabstractThis paper presents a logical framework derived from the Edinburgh Logical Framework (LF) that can be used to obtain compact representations of proofs and efficient proof checkers. These are essential ingredients of any application that manipulates proofs as first-class objects, such as a Proof-Carrying Code system, in which proofs are used to support easy validation of properties of safety-critical or untrusted code. Our framework, which we call LF/sub i/, inherits from LF the capability to encode various logics in a natural way. In addition, the LF/sub i/ framework allows proof representations without the high degree of redundancy that is characteristic of LF representations. The missing parts of LF/sub i/ proof representations can be reconstructed during proof checking by an efficient reconstruction algorithm. We also describe an algorithm that can be used to strip the unnecessary parts of an LF representation of a proof. The experimental data that we gathered in the context of a Proof-Carrying Code system shows that the savings obtained from using LF/sub i/ instead of LF can make the difference between practically useless proofs of several megabytes and manageable proofs of tens of kilobytes. George C. Necula, Peter Lee 0001 |
LICS | 2 |
| 1998 | Generational Stack Collection and Profile-Driven PretenuringabstractThis paper presents two techniques for improving garbage collection performance: generational stack collection and profile-driven pretenuring. The first is applicable to stack-based implementations of functional languages while the second is useful for any generational collector. We have implemented both techniques in a generational collector used by the TIL compiler (Tarditi, Morrisett, Cheng, Stone, Harper, and Lee 1996), and have observed decreases in garbage collection times of as much as 70% and 30%, respectively.Functional languages encourage the use of recursion which can lead to a long chain of activation records. When a collection occurs, these activation records must be scanned for roots. We show that scanning many activation records can take so long as to become the dominant cost of garbage collection. However, most deep stacks unwind very infrequently, so most of the root information obtained from the stack remains unchanged across successive garbage collections. Generational stack collection greatly reduces the stack scan cost by reusing information from previous scans.Generational techniques have been successful in reducing the cost of garbage collection (Ungar 1984). Various complex heap arrangements and tenuring policies have been proposed to increase the effectiveness of generational techniques by reducing the cost and frequency of scanning and copying. In contrast, we show that by using profile information to make lifetime predictions, pretenuring can avoid copying data altogether. In essence, this technique uses a refinement of the generational hypothesis (most data die young) with a locality principle concerning the age of data: most allocations sites produce data that immediately dies, while a few allocation sites consistently produce data that survives many collections. Perry Cheng, Robert Harper 0001, Peter Lee 0001 |
PLDI | 3 |
| 1998 | The Design and Implementation of a Certifying CompilerabstractThis paper presents the design and implementation of a compiler that translates programs written in a type-safe subset of the C programming language into highly optimized DEC Alpha assembly language programs, and a certifier that automatically checks the type safety and memory safety of any assembly language program produced by the compiler. The result of the certifier is either a formal proof of type safety or a counterexample pointing to a potential violation of the type system by the target program. The ensemble of the compiler and the certifier is called a certifying compiler.Several advantages of certifying compilation over previous approaches can be claimed. The notion of a certifying compiler is significantly easier to employ than a formal compiler verification, in part because it is generally easier to verify the correctness of the result of a computation than to prove the correctness of the computation itself. Also, the approach can be applied even to highly optimizing compilers, as demonstrated by the fact that our compiler generates target code, for a range of realistic C programs, which is competitive with both the cc and gcc compilers with all optimizations enabled. The certifier also drastically improves the effectiveness of compiler testing because, for each test case, it statically signals compilation errors that might otherwise require many executions to detect. Finally, this approach is a practical way to produce the safety proofs for a Proof-Carrying Code system, and thus may be useful in a system for safe mobile code. George C. Necula, Peter Lee 0001 |
PLDI | 2 |
| 1998 | Run-time Code Generation and Modal-MLabstractThis paper presents a typed programming language and compiler for run-time code generation. The language, called ML', extends ML with modal operators in the style of the Mini-ML'e language of Davies and Pfenning. ML' allows programmers to use types to specify precisely the stages of computation in a program. The types also guide the compiler in generating target code that exploits the staging information through the use of run-time code generation. The target machine is currently a version of the Categorical Abstract Machine, called the CCAM, which we have extended with facilities for run-time code generation.This approach allows the programmer to express the staging that he wants directly to the compiler. It also provides a typed framework in which to verify the correctness of his staging intentions, and to discuss his staging decisions with other programmers. Finally, it supports in a natural way multiple stages of run-time specialization, so that dynamically generated code can be used in the generation of yet further specialized code.This paper presents an overview of the language, with several examples of programs that illustrate key concepts and programming techniques. Then, it discusses the CCAM and the compilation of ML' programs into CCAM code. Finally, the results of some experiments are shown, to demonstrate the benefits of this style of run-time code generation for some applications. Philip Wickline, Peter Lee 0001, Frank Pfenning |
PLDI | 2 |
| 1998 | Certifying, Optimizing Compilation (Abstract)
Peter Lee 0001 |
SAS | 1 |
| 1997 | Research on Proof-Carrying Code for Untrusted-Code SecurityabstractA powerful method of interaction between two software systems is through mobile code. By allowing code to be installed dynamically and then executed, a host system can provide a flexible means of access to its internal resources and services. There are many problems to be solved before such uses of untrusted code can become practical. We focus on the problem of how to establish guarantees about the intrinsic behavior of untrusted programs. Of particular interest are the following: (1) How can the host system ensure that the untrusted code will not damage it, for example, by corrupting internal data structures? (2) How can the host ensure that the untrusted code will not use too many resources (such as CPU, memory, and so forth) or use them for too long a time period? (3) How can the host make these assurances without undue effort and deleterious effect on overall system performance? Our position is that the theory of programming languages, including formal semantics, type theory, and applications of logic, are critical to solving the untrusted code security problem. To illustrate the possibilities of programming language theory, we briefly describe one rather extreme but promising example, which is proof carrying code (PCC). This is a technique by which the host establishes a set of safety rules that guarantee safe behavior of programs, and the code producer creates a formal safety proof that proves, for the untrusted code, adherence to the safety rules. Then, the host is able to use a simple and fast proof validator to check, with certainty, that the proof is valid and hence the foreign code is safe to execute. George C. Necula, Peter Lee 0001 |
S&P | 2 |
| 1996 | Safe Kernel Extensions Without Run-Time CheckingabstractNo abstract available. George C. Necula, Peter Lee 0001 |
OSDI | 2 |
| 1996 | Optimizing ML with Run-Time Code GenerationabstractWe describe the design and implementation of a compiler that automatically translates ordinary programs written in a subset of ML into code that generates native code at run time. Run-time code generation can make use of values and invariants that cannot be exploited at compile time, yielding code that is often superior to statically optimal code. But the cost of optimizing and generating code at run time can be prohibitive. We demonstrate how compile-time specialization can reduce the cost of run-time code generation by an order of magnitude without greatly affecting code quality. Several benchmark programs are examined, which exhibit an average cost of only six cycles per instruction generated at run time. Peter Lee 0001, Mark Leone |
PLDI | 1 |
| 1996 | TIL: A Type-Directed Optimizing Compiler for MLabstractarticle Free Access Share on TIL: a type-directed optimizing compiler for ML Authors: D. Tarditi School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PAView Profile , G. Morrisett School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PAView Profile , P. Cheng School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PAView Profile , C. Stone School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PAView Profile , R. Harper School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PAView Profile , P. Lee School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PA School of Computer Science, Carnegie Mellon University, 5000 Forbes Avenue, Pittsburgh, PAView Profile Authors Info & Claims ACM SIGPLAN NoticesVolume 31Issue 5May 1996 pp 181–192https://doi.org/10.1145/249069.231414Online:01 May 1996Publication History 212citation719DownloadsMetricsTotal Citations212Total Downloads719Last 12 Months39Last 6 weeks2 Get Citation AlertsNew Citation Alert added!This alert has been successfully added and will be sent to:You will be notified whenever a record that you have chosen has been cited.To manage your alert preferences, click on the button below.Manage my AlertsNew Citation Alert!Please log in to your account Save to BinderSave to BinderCreate a New BinderNameCancelCreateExport CitationPublisher SiteeReaderPDF David Tarditi, J. Gregory Morrisett, Perry Cheng, Christopher A. Stone, Robert Harper 0001, Peter Lee 0001 |
PLDI | 6 |
| 1996 | Trace-Based Program AnalysisabstractWe present trace-based program analysis, a semantics-based framework for statically analyzing and transforming programs with loops, assignments, and nested record structures. Trace-based analyses are based on transfer transition systems, which define the small-step operational semantics of programming languages. Intuitively, transfer transition systems provide direct support for reasoning about the possible execution traces of a program, instead of just individual program states. The traces in a transfer transition system have many uses, including the finite representation of all possible terminating executions of a loop. Also, traces may be systematically "pieced together," thus allowing the composition of separately analyzed program fragments. The utility of the approach is demonstrated by showing three applications: software pipelining, loop-invariant removal, and data alias detection. 1 Introduction In this paper, we consider semantics-based program analysis for the purposes of s... Christopher Colby, Peter Lee 0001 |
POPL | 2 |
| 1996 | Benchmarking Implementations of Functional Languages with 'Pseudoknot', a Float-Intensive BenchmarkabstractAbstract Over 25 implementations of different functional languages are benchmarked using the same program, a floating-point intensive application taken from molecular biology. The principal aspects studied are compile time and execution time for the various implementations that were benchmarked. An important consideration is how the program can be modified and tuned to obtain maximal performance on each language implementation. With few exceptions, the compilers take a significant amount of time to compile this program, though most compilers were faster than the then current GNU C compiler (GCC version 2.5.8). Compilers that generate C or Lisp are often slower than those that generate native code directly: the cost of compiling the intermediate form is normally a large fraction of the total compilation time. There is no clear distinction between the runtime performance of eager and lazy implementations when appropriate annotations are used: lazy implementations have clearly come of age when it comes to implementing largely strict applications, such as the Pseudoknot program. The speed of C can be approached by some implementations, but to achieve this performance, special measures such as strictness annotations are required by non-strict implementations. The benchmark results have to be interpreted with care. Firstly, a benchmark based on a single program cannot cover a wide spectrum of ‘typical’ applications. Secondly, the compilers vary in the kind and level of optimisations offered, so the effort required to obtain an optimal version of the program is similarly varied. Pieter H. Hartel, Marc Feeley, Martin Helmut Alt, Lennart Augustsson, Marcel Beemster, Emmanuel Chailloux, Christine H. Flood, Wolfgang Grieskamp, John H. G. van Groningen, Kevin Hammond, Bogumil Hausman, Melody Y. Ivory, Richard E. Jones, Jasper Kamperman, Peter Lee 0001, Xavier Leroy, Rafael Dueire Lins, Sandra Loosemore, Niklas Röjemo, Manuel Serrano, Jean-Pierre Talpin, Jon Thackray, Pum Walters, Pierre Weis, Peter Wentworth |
J. Funct. Program. | 16 |
| 1994 | Lightweight Run-Time Code Generation
Mark Leone, Peter Lee 0001 |
PEPM | 2 |
| 1992 | Cache Behavior of Combinator Graph ReductionabstractThe results of cache-simulation experiments with an abstract machine for reducing combinator graphs are presented. The abstract machine, called TIGRE, exhibits reduction rates that, for similar kinds of combinator graphs on similar kinds of hardware, compare favorably with previously reported techniques. Furthermore, TIGRE maps easily and efficiently onto standard computer architectures, particularly those that allow a restricted form of self-modifying code. This provides some indication that the conventional "stored program" organization of computer systems is not necessarily an inappropriate one for functional programming language implementations. This is not to say, however, that present day computer systems are well equipped to reduce combinator graphs. In particular, the behavior of the cache memory has a significant effect on performance. In order to study and quantify this effect, trace-driven cache simulations of a TIGRE graph reducer running on a reduced instruction-set computer are conducted. The results of these simulations are presented with the following hardware-cache parameters varied: cache size, block size, associativity, memory update policy, and write-allocation policy. To begin with, the cache organization of a commercially available system is used and then the performance sensitivity with respect to variations of each parameter are measured. From the results of the simulation study, a conclusion is made that combinator-graph reduction using TIGRE runs most efficiently when using a cache memory with an allocate-on-write-miss strategy, moderately large block size (preferably with subblock placement), and copy-back memory updates. Philip Koopman, Peter Lee 0001, Daniel P. Siewiorek |
ACM Trans. Program. Lang. Syst. | 2 |
| 1991 | Metacircularity in the Polymorphic lambda-Calculus
Frank Pfenning, Peter Lee 0001 |
Theor. Comput. Sci. | 2 |
| 1989 | A Fresh Look at Combinator Graph ReductionabstractWe present a new abstract machine for graph reduction called TIGRE. Benchmark results show that TIGRE's execution speed compares quite favorably with previous combinator-graph reduction techniques on similar hardware. Furthermore, the mapping of TIGRE onto conventional hardware is simple and efficient. Mainframe implementations of TIGRE provide performance levels exceeding those previously available on custom graph reduction hardware. Philip Koopman, Peter Lee 0001 |
PLDI | 2 |
| 1988 | An Automatically Generated, Realistic Compiler for an Imperative Programming LanguageabstractWe describe the automatic generation of a complete, realistic compiler from formal specifications of the syntax and semantics of Sol/C, a nontrivial imperative language “sort of like C.” The compiler exhibits a three pass structure, is efficient, and produces object programs whose performance characteristics compare favorably with those produced by commercially available compilers. To our knowledge, this is the first time that this has been accomplished. Uwe F. Pleban, Peter Lee 0001 |
PLDI | 2 |
| 1987 | A Realistic Compiler Generator Based on High-Level SemanticsabstractWe have developed a new style of semantic definition called high-level semantics. In constrast to traditional denotational semantics, high-level semantics is suitable for both defining the functional meaning of programming languages, as well as describing realistic compiler implementations. Moreover, high-level specifications are considerably more descriptive and intelligible than traditional specifications. Peter Lee 0001, Uwe F. Pleban |
POPL | 1 |