Demonstration venue · read-only. Every page can be browsed; the buttons that would change it are switched off. Create an account to run TaxoReview on your own data.

John C. Reynolds

dblp:r/JohnCReynolds · DBLP profile ↗
← Back
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

TopicWeightPapersLastEvidence papers
Program verification › program logic
separation logic
0.562012
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.232012
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.112012
Syntactic control of interference for separation logic · POPL 2012
Program analysis
static analysis
0.112012
Syntactic control of interference for separation logic · POPL 2012
Requirements engineering and software design › software design principles
information hiding
0.122009
Separation and information hiding · ACM Trans. Program. Lang. Syst. 2009
Separation and information hiding · POPL 2004
Runtime systems and virtual machines
garbage collection
0.122008
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.112009
Separation and information hiding · ACM Trans. Program. Lang. Syst. 2009
Runtime systems and virtual machines › garbage collection
copying garbage collection
0.112008
Local reasoning about a copying garbage collector · ACM Trans. Program. Lang. Syst. 2008
Program verification › modular reasoning
local reasoning
0.112008
Local reasoning about a copying garbage collector · ACM Trans. Program. Lang. Syst. 2008
Operating systems › resource management › memory management
ownership transfer
0.012004
Separation and information hiding · POPL 2004
Programming languages and type systems
language semantics
0.032009
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.012002
Separation Logic: A Logic for Shared Mutable Data Structures · LICS 2002
Logic in computer science
program logic
0.012002
Separation Logic: A Logic for Shared Mutable Data Structures · LICS 2002
Logic in computer science › program logic
separation logic
0.012002
Separation Logic: A Logic for Shared Mutable Data Structures · LICS 2002
Programming languages and type systems › language semantics › formal semantics
imperative language semantics
0.012000
From Algol to polymorphic linear lambda-calculus · J. ACM 2000
Programming languages and type systems › type systems › substructural type systems
linear types
0.012000
From Algol to polymorphic linear lambda-calculus · J. ACM 2000
Program analysis › static analysis › pointer analysis
aliasing analysis
0.012004
Separation and information hiding · POPL 2004
Programming languages and type systems
mutable data structures
0.012004
Separation and information hiding · POPL 2004
Programming languages and type systems › programming paradigms › imperative languages
algol-like language
0.021995
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.011987
Conjunctive Types and Algol-like Languages · LICS 1987
Logic in computer science
type theory
0.011989
Syntactic Control of Inference, Part 2 · ICALP 1989
Programming languages and type systems
language design
0.011987
Conjunctive Types and Algol-like Languages · LICS 1987
Logic in computer science › semantics
denotational semantics
0.021977
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.011977
Semantics of the Domain of Flow Diagrams · J. ACM 1977
Programming languages and type systems › language semantics › formal semantics › denotational semantics
continuation semantics
0.011974
On the Relation between Direct and Continuation Semantics · ICALP 1974
Programming languages and type systems › functional programming
higher-order functions
0.011978
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
YearPublicationVenuePosition
2012 Syntactic control of interference for separation logic
abstract
Separation 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
POPL2
2011 Making Program Logics Intelligible
abstract
To 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
TASE1
2009 Using Category Theory to Design Programming Languages
John C. Reynolds
ESOP1
2009 Separation and information hiding
abstract
We 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 collector
abstract
We 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
FSTTCS1
2004 Local reasoning about a copying garbage collector
abstract
We 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
POPL3
2004 Separation and information hiding
abstract
We 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
POPL3
2002 Separation Logic: A Logic for Shared Mutable Data Structures
abstract
In 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
LICS1
2000 From Algol to polymorphic linear lambda-calculus
abstract
In 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. ACM2
1995 Using Functor Categories to Generate Intermediate Code
abstract
In 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
POPL1
1993 An Introduction to Logical Relations and Parametric Polymorphism - Tutorial
abstract
No abstract available.
John C. Reynolds
POPL1
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
MFPS2
1989 Syntactic Control of Inference, Part 2
John C. Reynolds
ICALP1
1987 Conjunctive Types and Algol-like Languages
John C. Reynolds
LICS1
1978 Syntactic Control of Interference
abstract
In 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
POPL1
1977 Semantics of the Domain of Flow Diagrams
abstract
A 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. ACM1
1974 On the Relation between Direct and Continuation Semantics
John C. Reynolds
ICALP1