VLDB 2026 Research / reviewers in the wild / expert
John C. Reynolds
dblp:r/JohnCReynolds
· DBLP profile ↗
19ranked-venue papers
12as first author
0since 2021 · last 2012
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 10 · 5 first-authorTheory of computation · 7 · 6 first-authorApplied, interdisciplinary, general and emerging computing · 2 · 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
13 papers |
Program verification · 49% Programming languages and type systems · 17% Runtime systems and virtual machines · 13% | |
| Theoretical computer science
5 papers |
Logic in computer science · 100% |
Topics — the 26 heaviest of 30, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program verification › program logic
separation logic |
0.5 | 6 | 2012 | Syntactic control of interference for separation logic · POPL 2012 Separation and information hiding · ACM Trans. Program. Lang. Syst. 2009 Local reasoning about a copying garbage collector · ACM Trans. Program. Lang. Syst. 2008 |
Programming languages and type systems
type systems |
0.2 | 3 | 2012 | Syntactic control of interference for separation logic · POPL 2012 Syntactic Control of Inference, Part 2 · ICALP 1989 Syntactic Control of Interference · POPL 1978 |
Program verification › program logic › separation logic
concurrent separation logic |
0.1 | 1 | 2012 | Syntactic control of interference for separation logic · POPL 2012 |
Program analysis
static analysis |
0.1 | 1 | 2012 | Syntactic control of interference for separation logic · POPL 2012 |
Requirements engineering and software design › software design principles
information hiding |
0.1 | 2 | 2009 | Separation and information hiding · ACM Trans. Program. Lang. Syst. 2009 Separation and information hiding · POPL 2004 |
Runtime systems and virtual machines
garbage collection |
0.1 | 2 | 2008 | Local reasoning about a copying garbage collector · ACM Trans. Program. Lang. Syst. 2008 Local reasoning about a copying garbage collector · POPL 2004 |
Program verification
program logic |
0.1 | 1 | 2009 | Separation and information hiding · ACM Trans. Program. Lang. Syst. 2009 |
Runtime systems and virtual machines › garbage collection
copying garbage collection |
0.1 | 1 | 2008 | Local reasoning about a copying garbage collector · ACM Trans. Program. Lang. Syst. 2008 |
Program verification › modular reasoning
local reasoning |
0.1 | 1 | 2008 | Local reasoning about a copying garbage collector · ACM Trans. Program. Lang. Syst. 2008 |
Operating systems › resource management › memory management
ownership transfer |
0.0 | 1 | 2004 | Separation and information hiding · POPL 2004 |
Programming languages and type systems
language semantics |
0.0 | 3 | 2009 | Separation and information hiding · ACM Trans. Program. Lang. Syst. 2009 Using Functor Categories to Generate Intermediate Code · POPL 1995 On the Relation between Direct and Continuation Semantics · ICALP 1974 |
Program verification › program logic
hoare logic |
0.0 | 1 | 2002 | Separation Logic: A Logic for Shared Mutable Data Structures · LICS 2002 |
Logic in computer science
program logic |
0.0 | 1 | 2002 | Separation Logic: A Logic for Shared Mutable Data Structures · LICS 2002 |
Logic in computer science › program logic
separation logic |
0.0 | 1 | 2002 | Separation Logic: A Logic for Shared Mutable Data Structures · LICS 2002 |
Programming languages and type systems › language semantics › formal semantics
imperative language semantics |
0.0 | 1 | 2000 | From Algol to polymorphic linear lambda-calculus · J. ACM 2000 |
Programming languages and type systems › type systems › substructural type systems
linear types |
0.0 | 1 | 2000 | From Algol to polymorphic linear lambda-calculus · J. ACM 2000 |
Program analysis › static analysis › pointer analysis
aliasing analysis |
0.0 | 1 | 2004 | Separation and information hiding · POPL 2004 |
Programming languages and type systems
mutable data structures |
0.0 | 1 | 2004 | Separation and information hiding · POPL 2004 |
Programming languages and type systems › programming paradigms › imperative languages
algol-like language |
0.0 | 2 | 1995 | Using Functor Categories to Generate Intermediate Code · POPL 1995 Conjunctive Types and Algol-like Languages · LICS 1987 |
Programming languages and type systems
type theory |
0.0 | 1 | 1987 | Conjunctive Types and Algol-like Languages · LICS 1987 |
Logic in computer science
type theory |
0.0 | 1 | 1989 | Syntactic Control of Inference, Part 2 · ICALP 1989 |
Programming languages and type systems
language design |
0.0 | 1 | 1987 | Conjunctive Types and Algol-like Languages · LICS 1987 |
Logic in computer science › semantics
denotational semantics |
0.0 | 2 | 1977 | Semantics of the Domain of Flow Diagrams · J. ACM 1977 On the Relation between Direct and Continuation Semantics · ICALP 1974 |
Logic in computer science
domain theory |
0.0 | 1 | 1977 | Semantics of the Domain of Flow Diagrams · J. ACM 1977 |
Programming languages and type systems › language semantics › formal semantics › denotational semantics
continuation semantics |
0.0 | 1 | 1974 | On the Relation between Direct and Continuation Semantics · ICALP 1974 |
Programming languages and type systems › functional programming
higher-order functions |
0.0 | 1 | 1978 | Syntactic Control of Interference · POPL 1978 |
Methods — techniques the papers use, named apart from their topics
separation logic · 0.2separating conjunction · 0.2permission algebras · 0.1partial correctness proof · 0.1inductive predicate definition · 0.1auxiliary variables · 0.0semantic analysis · 0.0linear type translation · 0.0functor categories · 0.0continuations · 0.0type inference · 0.0semantic equivalence · 0.0partial-function semantics · 0.0continuous algebra · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2012 | Syntactic control of interference for separation logicabstractSeparation Logic has witnessed tremendous success in recent years in reasoning about programs that deal with heap storage. Its success owes to the fundamental principle that one should keep separate areas of the heap storage separate in program reasoning. However, the way Separation Logic deals with program variables continues to be based on traditional Hoare Logic without taking any benefit of the separation principle. This has led to unwieldy proof rules suffering from lack of clarity as well as questions surrounding their soundness. In this paper, we extend the separation idea to the treatment of variables in Separation Logic, especially Concurrent Separation Logic, using the system of Syntactic Control of Interference proposed by Reynolds in 1978. We extend the original system with permission algebras, making it more powerful and able to deal with the issues of concurrent programs. The result is a streamined presentation of Concurrent Separation Logic, whose rules are memorable and soundness obvious. We also include a discussion of how the new rules impact the semantics and devise static analysis techniques to infer the required permissions automatically. Uday S. Reddy, John C. Reynolds |
POPL | 2 |
| 2011 | Making Program Logics IntelligibleabstractTo verify program specifications, rather than generic safety properties, it will be necessary to integrate verification into the process of programming. Program proving is unlike theorem proving in mathematics mathematical conjectures may give no hint as to how they could be proved, but programs are written by programmers, who must understand informally why their programs work. The job of verification is not to explore some immense search space, but to formalize the programmer's intuitions until any faults are revealed. This requires specifications and proofs that are succinct and intelligible which in turn require logics that go be yond predicate calculus (the assembly language of program proving). In this talk, I will recount and illustrate several steps, old and new, towards this goal - particularly in the treatment of arrays. John C. Reynolds |
TASE | 1 |
| 2009 | Using Category Theory to Design Programming Languages
John C. Reynolds |
ESOP | 1 |
| 2009 | Separation and information hidingabstractWe investigate proof rules for information hiding, using the formalism of separation logic. In essence, we use the separating conjunction to partition the internal resources of a module from those accessed by the module's clients. The use of a logical connective gives rise to a form of dynamic partitioning, where we track the transfer of ownership of portions of heap storage between program components. It also enables us to enforce separation in the presence of mutable data structures with embedded addresses that may be aliased. Peter W. O'Hearn, Hongseok Yang, John C. Reynolds |
ACM Trans. Program. Lang. Syst. | 3 |
| 2008 | Local reasoning about a copying garbage collectorabstractWe present a programming language, model, and logic appropriate for implementing and reasoning about a memory management system. We state semantically what is meant by correctness of a copying garbage collector, and employ a variant of the novel separation logics to formally specify partial correctness of Cheney's copying garbage collector in our program logic. Finally, we prove that our implementation of Cheney's algorithm meets its specification using the logic we have given and auxiliary variables. Noah Torp-Smith, Lars Birkedal, John C. Reynolds |
ACM Trans. Program. Lang. Syst. | 3 |
| 2004 | Toward a Grainless Semantics for Shared-Variable Concurrency
John C. Reynolds |
FSTTCS | 1 |
| 2004 | Local reasoning about a copying garbage collectorabstractWe present a programming language, model, and logic appropriate for implementing and reasoning about a memory management system. We then state what is meant by correctness of a copying garbage collector, and employ a variant of the novel separation logics [18, 23] to formally specify partial correctness of Cheney's copying garbage collector [8]. Finally, we prove that our implementation of Cheney's algorithm meets its specification, using the logic we have given, and auxiliary variables [19]. Lars Birkedal, Noah Torp-Smith, John C. Reynolds |
POPL | 3 |
| 2004 | Separation and information hidingabstractWe investigate proof rules for information hiding, using the recent formalism of separation logic. In essence, we use the separating conjunction to partition the internal resources of a module from those accessed by the module's clients. The use of a logical connective gives rise to a form of dynamic partitioning, where we track the transfer of ownership of portions of heap storage between program components. It also enables us to enforce separation in the presence of mutable data structures with embedded addresses that may be aliased. Peter W. O'Hearn, Hongseok Yang, John C. Reynolds |
POPL | 3 |
| 2002 | Separation Logic: A Logic for Shared Mutable Data StructuresabstractIn joint work with Peter O'Hearn and others, based on early ideas of Burstall, we have developed an extension of Hoare logic that permits reasoning about low-level imperative programs that use shared mutable data structure. The simple imperative programming language is extended with commands (not expressions) for accessing and modifying shared structures, and for explicit allocation and deallocation of storage. Assertions are extended by introducing a "separating conjunction" that asserts that its subformulas hold for disjoint parts of the heap, and a closely related "separating implication". Coupled with the inductive definition of predicates on abstract data structures, this extension permits the concise and flexible description of structures with controlled sharing. In this paper, we survey the current development of this program logic, including extensions that permit unrestricted address arithmetic, dynamically allocated arrays, and recursive procedures. We also discuss promising future directions. John C. Reynolds |
LICS | 1 |
| 2000 | From Algol to polymorphic linear lambda-calculusabstractIn a linearly-typed functional language, one can define functions that consume their arguments in the process of computing their results. This is reminiscent of state transformations in imperative languages, where execition of an assignment statement alters the contents of the store. We explore this connection by translating two variations on Algol 60 into a purely functional language with polymorphic linear types. On the one hand, the translations lead to a semantic analysis of Algol-like programs, in terms of a model of the linear language. On the other hand, they demonstrate that a linearly-typed functional language can be at least as expressive as Algol. Peter W. O'Hearn, John C. Reynolds |
J. ACM | 2 |
| 1995 | Using Functor Categories to Generate Intermediate CodeabstractIn the early 80's Oles and Reynolds devised a semantic model of Algol-like languages using a category of functors from a category of store shapes to the category of predomains. Here we will show how a variant of this idea can be used to define the translation of an Algol-like language to intermediate code in a uniform way that avoids unnecessary temporary variables, provides control-flow translation of boolean expressions, permits online expansion of procedures, and minimizes the storage overhead of calls of closed procedures. The basic idea is to replace continuations by instruction sequences and store shapes by descriptions of the structure of the run-time stack. John C. Reynolds |
POPL | 1 |
| 1993 | An Introduction to Logical Relations and Parametric Polymorphism - TutorialabstractNo abstract available. John C. Reynolds |
POPL | 1 |
| 1993 | On Functors Expressible in the Polymorphic Typed Lambda Calculus
John C. Reynolds, Gordon D. Plotkin |
Inf. Comput. | 1 |
| 1991 | Types, Abstractions, and Parametric Polymorphism, Part 2
QingMing Ma, John C. Reynolds |
MFPS | 2 |
| 1989 | Syntactic Control of Inference, Part 2
John C. Reynolds |
ICALP | 1 |
| 1987 | Conjunctive Types and Algol-like Languages
John C. Reynolds |
LICS | 1 |
| 1978 | Syntactic Control of InterferenceabstractIn programming languages which permit both assignment and procedures, distinct identifiers can represent data structures which share storage or procedures with interfering side effects. In addition to being a direct source of programming errors, this phenomenon, which we call interference can impact type structure and parallelism. We show how to eliminate these difficulties by imposing syntactic restrictions, without prohibiting the kind of constructive interference which occurs with higher-order procedures or SIMULA classes. The basic idea is to prohibit interference between identifiers, but to permit interference among components of collections named by single identifiers. John C. Reynolds |
POPL | 1 |
| 1977 | Semantics of the Domain of Flow DiagramsabstractA domain of flow diagrams similar to that proposed by Scott, a domain of linear flow diagrams proposed by Goguen et al , a domain of decision table diagrams involving mfimtary branching, and a domain of processes based on the ideas of Milner and Beklc are each provided with a direct semantics, closely related to partial-function semantics, and a continuation semantics similar to that developed by Morris and Wadsworth It is shown that there is a variety of meaning-preserving continuous functions among these language-hke domains, that every direct semantics possesses an "equivalent" continuation semantics, and that there is a particular continuation semantics which always gives distinct meanings to distinct processes The proofs utilize the algebraic methods of Goguen et al , which are extended to continuous algebras with operations whose arguments can be Indexed by mflmte sets or even domains. John C. Reynolds |
J. ACM | 1 |
| 1974 | On the Relation between Direct and Continuation Semantics
John C. Reynolds |
ICALP | 1 |