Greg Nelson

dblp:54/4359 · DBLP profile ↗
← Back
24ranked-venue papers
8as first author
0since 2021 · last 2006
0000-0002-8524-5909ORCID · corroborated

Domains — the database's venue-derived domains; a paper can count in several

Software engineering, systems software and programming languages · 14 · 3 first-authorTheory of computation · 5 · 3 first-authorArtificial intelligence and machine learning · 2 · 1 first-authorApplied, interdisciplinary, general and emerging computing · 2 · 1 first-authorSystems, architecture and hardware · 1Graphics, computer vision, multimedia, augmented reality and games · 1 · 1 first-authorHuman-computer interaction and ubiquitous computing · 1 · 1 first-author

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
12 papers
Compilers and program optimization · 34% Program verification · 34% Concurrent programming · 16%
Theoretical computer science
11 papers
Automated reasoning and model checking · 69% Logic in computer science · 17% Graph algorithms and graph theory · 9%
Computer architecture, parallel and distributed computing, and storage systems
2 papers
Distributed systems · 65% Interconnection networks and networks-on-chip · 35%

Topics — the 30 heaviest of 43, each with the papers that count most for it

TopicWeightPapersLastEvidence papers
Compilers and program optimization
code generation
0.122006
Denali: A practical algorithm for generating optimal code · ACM Trans. Program. Lang. Syst. 2006
Denali: A Goal-directed Superoptimizer · PLDI 2002
Compilers and program optimization › compiler optimization
superoptimization
0.122006
Denali: A practical algorithm for generating optimal code · ACM Trans. Program. Lang. Syst. 2006
Denali: A Goal-directed Superoptimizer · PLDI 2002
Program verification › deductive verification
extended static checking
0.122005
Simplify: a theorem prover for program checking · J. ACM 2005
Extended Static Checking for Java · PLDI 2002
Compilers and program optimization › code generation
instruction selection
0.112006
Denali: A practical algorithm for generating optimal code · ACM Trans. Program. Lang. Syst. 2006
Automated reasoning and model checking
decision procedures
0.142005
Simplify: a theorem prover for program checking · J. ACM 2005
Fast Decision Procedures Based on Congruence Closure · J. ACM 1980
Simplification by Cooperating Decision Procedures · ACM Trans. Program. Lang. Syst. 1979
Debugging and program repair
error localization
0.112005
Simplify: a theorem prover for program checking · J. ACM 2005
Program verification
theorem proving
0.112005
Simplify: a theorem prover for program checking · J. ACM 2005
Automated reasoning and model checking › deduction
quantified reasoning
0.112005
Simplify: a theorem prover for program checking · J. ACM 2005
Concurrent programming
concurrency bugs
0.021997
Eraser: A Dynamic Data Race Detector for Multithreaded Programs · ACM Trans. Comput. Syst. 1997
Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs · SOSP 1997
Concurrent programming › concurrency bug detection
data race detection
0.021997
Eraser: A Dynamic Data Race Detector for Multithreaded Programs · ACM Trans. Comput. Syst. 1997
Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs · SOSP 1997
Program analysis
dynamic analysis
0.021997
Eraser: A Dynamic Data Race Detector for Multithreaded Programs · ACM Trans. Comput. Syst. 1997
Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs · SOSP 1997
Concurrent programming › concurrency bug detection › data race detection
dynamic race detection
0.021997
Eraser: A Dynamic Data Race Detector for Multithreaded Programs · ACM Trans. Comput. Syst. 1997
Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs · SOSP 1997
Program verification
modular verification
0.012002
Data abstraction and information hiding · ACM Trans. Program. Lang. Syst. 2002
Program verification › deductive verification
verification condition generation
0.012002
Extended Static Checking for Java · PLDI 2002
Automated reasoning and model checking
automated theorem proving
0.012002
Denali: A Goal-directed Superoptimizer · PLDI 2002
Automated reasoning and model checking
satisfiability
0.022006
Denali: A practical algorithm for generating optimal code · ACM Trans. Program. Lang. Syst. 2006
Fast Decision Procedures Based on Congruence Closure · J. ACM 1980
Concurrent programming › concurrency bugs
data races
0.011997
Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs · SOSP 1997
Logic in computer science › logic programming › logic programming semantics
fixpoint semantics
0.021994
Adding Fair Choice to Dijkstra's Calculus · ACM Trans. Program. Lang. Syst. 1994
A Generalization of Dijkstra's Calculus · ACM Trans. Program. Lang. Syst. 1989
Interconnection networks and networks-on-chip › switching network › multistage interconnection network
butterfly network
0.011994
On the fault tolerance of the butterfly · STOC 1994
Distributed systems
fault tolerance
0.011994
On the fault tolerance of the butterfly · STOC 1994
Graph algorithms and graph theory
percolation
0.011994
On the fault tolerance of the butterfly · STOC 1994
Graph algorithms and graph theory
random graphs
0.011994
On the fault tolerance of the butterfly · STOC 1994
Logic in computer science › finite model theory
zero-one laws
0.011994
On the fault tolerance of the butterfly · STOC 1994
Automated reasoning and model checking
theorem proving
0.012002
Extended Static Checking for Java · PLDI 2002
Distributed systems
remote procedure call
0.011993
Network Objects · SOSP 1993
Programming languages and type systems
type systems
0.011989
The Modula-3 Type System · POPL 1989
Logic in computer science › semantics
denotational semantics
0.011989
A Generalization of Dijkstra's Calculus · ACM Trans. Program. Lang. Syst. 1989
Programming languages and type systems › object-oriented programming
object-oriented languages
0.011993
Network Objects · SOSP 1993
Program verification › data structure verification
linked data structure verification
0.011983
Verifying Reachability Invariants of Linked Structures · POPL 1983
Programming languages and type systems
language design
0.011989
The Modula-3 Type System · POPL 1989

Methods — techniques the papers use, named apart from their topics

e-graph matching · 0.2theorem proving · 0.2boolean satisfiability solving · 0.1nelson-oppen method · 0.1automated theorem proving · 0.1annotation language · 0.1lockset analysis · 0.0automatic program checking · 0.0random subgraphs · 0.0probabilistic analysis · 0.0happens-before analysis · 0.0binary rewriting · 0.0ordering theory · 0.0fixed point theory · 0.0constraint satisfaction · 0.0constraint solving · 0.0
YearPublicationVenuePosition
2006 Denali: A practical algorithm for generating optimal code
abstract
This article presents a design for the Denali-2 superoptimizer, which will generate minimum-instruction-length machine code for realistic machine architectures using automatic theorem-proving technology: specifically, using E-graph matching (a technique for pattern matching in the presence of equality information) and Boolean satisfiability solving.This article presents a precise definition of the underlying automatic programming problem solved by the Denali-2 superoptimizer. It sketches the E-graph matching phase and presents a detailed exposition and proof of soundness of the reduction of the automatic programming problem to the Boolean satisfiability problem.
Rajeev Joshi, Greg Nelson, Yunhong Zhou
ACM Trans. Program. Lang. Syst.2
2005 Simplify: a theorem prover for program checking
abstract
This article provides a detailed description of the automatic theorem prover Simplify, which is the proof engine of the Extended Static Checkers ESC/Java and ESC/Modula-3. Simplify uses the Nelson--Oppen method to combine decision procedures for several important theories, and also employs a matcher to reason about quantifiers. Instead of conventional matching in a term DAG, Simplify matches up to equivalence in an E-graph, which detects many relevant pattern instances that would be missed by the conventional approach. The article describes two techniques, error context reporting and error localization, for helping the user to determine the reason that a false conjecture is false. The article includes detailed performance figures on conjectures derived from realistic program-checking problems.
David Detlefs, Greg Nelson, James B. Saxe
J. ACM2
2004 Extended Static Checking for Java
Greg Nelson
MPC1
2003 Reasoning about Quantifiers by Matching in the E-graph
Greg Nelson
CADE1
2002 Extended Static Checking for Java
abstract
Software development and maintenance are costly endeavors. The cost can be reduced if more software defects are detected earlier in the development cycle. This paper introduces the Extended Static Checker for Java (ESC/Java), an experimental compile-time program checker that finds common programming errors. The checker is powered by verification-condition generation and automatic theorem-proving techniques. It provides programmers with a simple annotation language with which programmer design decisions can be expressed formally. ESC/Java examines the annotated software and warns of inconsistencies between the design decisions recorded in the annotations and the actual code, and also warns of potential runtime errors in the code. This paper gives an overview of the checker architecture and annotation language and describes our experience applying the checker to tens of thousands of lines of Java programs.
Cormac Flanagan, K. Rustan M. Leino, Mark Lillibridge, Greg Nelson, James B. Saxe, Raymie Stata
PLDI4
2002 Denali: A Goal-directed Superoptimizer
abstract
This paper provides a preliminary report on a new research project that aims to construct a code generator that uses an automatic theorem prover to produce very high-quality (in fact, nearly mathematically optimal) machine code for modern architectures. The code generator is not intended for use in an ordinary compiler, but is intended to be used for inner loops and critical subroutines in those cases where peak performance is required, no available compiler generates adequately efficient code, and where current engineering practice is to use hand-coded machine language. The paper describes the design of the superoptimizer, and presents some encouraging preliminary results.
Rajeev Joshi, Greg Nelson, Keith H. Randall
PLDI2
2002 Data abstraction and information hiding
abstract
This article describes an approach for verifying programs in the presence of data abstraction and information hiding, which are key features of modern programming languages with objects and modules. This article draws on our experience building and using an automatic program checker, and focuses on the property ofmodular soundness: that is, the property that the separate verifications of the individual modules of a program suffice to ensure the correctness of the composite program. We found this desirable property surprisingly difficult to achieve. A key feature of our methodology for modular soundness is a new specification construct: theabstraction dependency, which reveals which concrete variables appear in the representation of a given abstract variable, without revealing the abstraction function itself. This article discusses in detail two varieties of abstraction dependencies: static and dynamic. The article also presents a new technical definition of modular soundness as a monotonicity property of verifiability with respect to scope and uses this technical definition to formally prove the modular soundness of a programming discipline for static dependencies.
K. Rustan M. Leino, Greg Nelson
ACM Trans. Program. Lang. Syst.2
1998 An Extended Static Checker for Modular-3
K. Rustan M. Leino, Greg Nelson
CC2
1997 Eraser: A Dynamic Data Race Detector for Multi-Threaded Programs
abstract
Article Eraser: a dynamic data race detector for multi-threaded programs Share on Authors: Stefan Savage Department of Computer Science and Engineering, University of Washington, Seattle Department of Computer Science and Engineering, University of Washington, SeattleView Profile , Michael Burrows Digital Equipment Corporation, Systems Research Center Digital Equipment Corporation, Systems Research CenterView Profile , Greg Nelson Digital Equipment Corporation, Systems Research Center Digital Equipment Corporation, Systems Research CenterView Profile , Patrick Sobalvarro Digital Equipment Corporation, Systems Research Center Digital Equipment Corporation, Systems Research CenterView Profile , Thomas Anderson Computer Science Division, University of California, Berkeley Computer Science Division, University of California, BerkeleyView Profile Authors Info & Claims SOSP '97: Proceedings of the sixteenth ACM symposium on Operating systems principlesOctober 1997 Pages 27–37https://doi.org/10.1145/268998.266641Published:01 October 1997 218citation1,521DownloadsMetricsTotal Citations218Total Downloads1,521Last 12 Months6Last 6 weeks0 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 SiteGet Access
Stefan Savage, Michael Burrows, Greg Nelson, Patrick Sobalvarro, Thomas E. Anderson
SOSP3
1997 Eraser: A Dynamic Data Race Detector for Multithreaded Programs
abstract
Multithreaded programming is difficult and error prone. It is easy to make a mistake in synchronization that produces a data race, yet it can be extremely hard to locate this mistake during debugging. This article describes a new tool, called Eraser, for dynamically detecting data races in lock-based multithreaded programs. Eraser uses binary rewriting techniques to monitor every shared-monory reference and verify that consistent locking behavior is observed. We present several case studies, including undergraduate coursework and a multithreaded Web search engine, that demonstrate the effectiveness of this approach.
Stefan Savage, Michael Burrows, Greg Nelson, Patrick Sobalvarro, Thomas E. Anderson
ACM Trans. Comput. Syst.3
1995 An Animation of Euclid's Proposition 47: The Pythagorean Theorem
abstract
No abstract available.
Steven C. Glassman, Greg Nelson
SCG2
1995 Network Objects
Andrew Birrell, Greg Nelson, Susan S. Owicki, Edward Wobber
Softw. Pract. Exp.2
1994 On the fault tolerance of the butterfly
abstract
We study the robustness of the butterfly network against random static faults. Suppose that each edge of the butterfly is present independently of other edges with probability p. Our main result is that there is a 0-1 law on the existence of a linearsized component. More formally, there is a critical probability p such that for p above p, the faulted butterfly almost surely contains a linear-sized component, whereas for p below p, the faulted butterfly almost surely does not contain a linear-sized component. 1 Introduction Given a graph G, let G=p denote the random subgraph obtained by considering each edge independently and including it in the subgraph with probability p, excluding it with probability 1 \\Gamma p. 1 We call G=p a faulted version of G. A long list of theorems illustrate the basic fact that small changes in p can lead to dramatic changes in the connectivity of G=p. In this paper we add to this list a new theorem that shows the degree of fault-tolerance of the butter...
Anna R. Karlin, Greg Nelson, Hisao Tamaki
STOC2
1994 Adding Fair Choice to Dijkstra's Calculus
abstract
The paper studies the incorporation of a fair nondeterministic choice operator into a generalization of Dijkstra's calculus of guarded commands. The generalization drops the law of the excluded miracle to allow commands that correspond to partial relations. Because of fairness, the new operator is not monotonic for the orderings that are generally used for proving the existence of least fixed points for recursive definitions. To prove the existence of fixed points it is necessary to consider several orderings at once, and to restrict the class of recursive definitions.
Manfred Broy, Greg Nelson
ACM Trans. Program. Lang. Syst.2
1993 Network Objects
abstract
A network object is an object whose methods can be invoked over a network. This paper describes the design, implementation, and early experience with a network objects system for Modula-3. The system is novel for its overall simplicity. The paper includes a thorough description of realistic marshaling algorithms for network objects.
Andrew Birrell, Greg Nelson, Susan S. Owicki, Edward Wobber
SOSP2
1992 OOP in Languages Providing Strong, Static Typing (Panel)
abstract
No abstract available.
David Bulman, S. Tucker Taft, Bertrand Meyer 0001, Greg Nelson, Mike Kilian
OOPSLA4
1990 Analog Wetrieval by Constraint Satisfaction
Paul Thagard, Keith J. Holyoak, Greg Nelson, David Gochfeld
Artif. Intell.3
1989 The Modula-3 Type System
abstract
This paper presents an overview of the programming language Modula-3, and a more detailed description of its type system.
Luca Cardelli, James E. Donahue, Mick J. Jordan, Bill Kalsow, Greg Nelson
POPL5
1989 A Generalization of Dijkstra's Calculus
abstract
Dijsktra's calculus of guarded commands can be generalized and simplified by dropping the law of the excluded miracle. This paper gives a self-contained account of the generalized calculus from first principles through the semantics of recursion. The treatment of recursion uses the fixpoint method from denotational semantics. The paper relies only on the algebraic properties of predicates; individual states are not mentioned (except for motivation). To achieve this, we apply the correspondence between programs and predicates that underlies predicative programming. The paper is written from the axiomatic semantic point of view, but its contents can be described from the denotational semantic point of view roughly as follows: The Plotkin-Apt correspondence between wp semantics and the Smyth powerdomain is extended to a correspondence between the full wp/wlp semantics and the Plotkin powerdomain extended with the empty set.
Greg Nelson
ACM Trans. Program. Lang. Syst.1
1985 Juno, a constraint-based graphics system
Greg Nelson
SIGGRAPH1
1983 Verifying Reachability Invariants of Linked Structures
abstract
The paper introduces a reachability predicate for linear lists, develops the elementary axiomatic theory of the predicate, and illustrates its application to program verification with a formal proof of correctness for a short program that traverses and splices linear lists.
Greg Nelson
POPL1
1980 Fast Decision Procedures Based on Congruence Closure
abstract
The notion of the congruence closure of a relation on a graph is defined and several algorithms for computing it are surveyed. A simple proof is given that the congruence closure algorithm provides a decision procedure for the quantifier-free theory of equality. A decision procedure is then given for the quantifier-free theory of LISP list structure based on the congruence closure algorithm. Both decision procedures determine the satisfiability of a conjunction of literals of length n in average time O ( n log n ) using the fastest known congruence closure algorithm. It is also shown that if the axiomatization of the theory of list structure is changed slightly, the problem of determining the satisfiability of a conjunction of literals becomes NP-complete. The decision procedures have been implemented in the authors' simplifier for the Stanford Pascal Verifier.
Greg Nelson, Derek C. Oppen
J. ACM1
1979 Simplification by Cooperating Decision Procedures
abstract
A method for combining decision procedures for several theories into a single decision procedure for their combination is described, and a simplifier based on this method is discussed. The simplifier finds a normal form for any expression formed from individual variables, the usual Boolean connectives, the equality predicate =, the conditional function if-then-else, the integers, the arithmetic functions and predicates +, -, and ≤, the Lisp functions and predicates car, cdr, cons, and atom, the functions store and select for storing into and selecting from arrays, and uninterpreted function symbols. If the expression is a theorem it is simplified to the constant true, so the simplifier can be used as a decision procedure for the quantifier-free theory containing these functions and predicates. The simplifier is currently used in the Stanford Pascal Verifier.
Greg Nelson, Derek C. Oppen
ACM Trans. Program. Lang. Syst.1
1977 Fast Decision Algorithms Based on Union and Find
Greg Nelson, Derek C. Oppen
FOCS1