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. A simulation from public publication records: the people listed were not invited and did not agree to review.
? Tutorial for this page

James Brotherston

dblp:77/3809 · DBLP profile ↗
← Back
29ranked-venue papers
21as first author
3since 2021 · last 2025
0000-0002-7536-4496ORCID · reported

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

Theory of computation · 17 · 11 first-author · 1 since 2021Software engineering, systems software and programming languages · 12 · 10 first-author · 2 since 2021Artificial intelligence and machine learning · 5 · 3 first-authorApplied, interdisciplinary, general and emerging 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
7 papers
Program verification · 38% Concurrent programming · 32% Compilers and program optimization · 14%
Theoretical computer science
7 papers
Logic in computer science · 77% Computational complexity · 16% Automated reasoning and model checking · 8%

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

TopicWeightPapersLastEvidence papers
Program verification › program logic
separation logic
1.042020
Reasoning over Permissions Regions in Concurrent Separation Logic · CAV (2) 2020
Model checking for symbolic-heap separation logic with inductive predicates · POPL 2016
Parametric completeness for separation theories · POPL 2014
Compilers and program optimization
compiler correctness
0.812024
Mix Testing: Specifying and Testing ABI Compatibility of C/C++ Atomics Implementations · Proc. ACM Program. Lang. 2024
Concurrent programming
memory models
0.812024
Mix Testing: Specifying and Testing ABI Compatibility of C/C++ Atomics Implementations · Proc. ACM Program. Lang. 2024
Concurrent programming › concurrency bugs › deadlock
deadlock analysis
0.512021
A Compositional Deadlock Detector for Android Java · ASE 2021
Program analysis
static analysis
0.512021
A Compositional Deadlock Detector for Android Java · ASE 2021
Logic in computer science › proof theory
substructural logic
0.532014
Undecidability of Propositional Separation Logic and Its Neighbours · J. ACM 2014
Parametric completeness for separation theories · POPL 2014
Classical BI: a logic for reasoning about dualising resources · POPL 2009
Program verification › program logic › separation logic
concurrent separation logic
0.412020
Reasoning over Permissions Regions in Concurrent Separation Logic · CAV (2) 2020
Logic in computer science › proof theory › substructural logic
Boolean BI
0.432014
Undecidability of Propositional Separation Logic and Its Neighbours · J. ACM 2014
Parametric completeness for separation theories · POPL 2014
Undecidability of Propositional Separation Logic and Its Neighbours · LICS 2010
Logic in computer science
proof theory
0.432014
Parametric completeness for separation theories · POPL 2014
Classical BI: a logic for reasoning about dualising resources · POPL 2009
Complete Sequent Calculi for Induction and Infinite Descent · LICS 2007
Logic in computer science › program logic
separation logic
0.322014
Undecidability of Propositional Separation Logic and Its Neighbours · J. ACM 2014
Undecidability of Propositional Separation Logic and Its Neighbours · LICS 2010
Computational complexity
undecidability
0.322014
Undecidability of Propositional Separation Logic and Its Neighbours · J. ACM 2014
Undecidability of Propositional Separation Logic and Its Neighbours · LICS 2010
Logic in computer science › proof theory › substructural logic
bunched implications
0.322014
Parametric completeness for separation theories · POPL 2014
Classical BI: a logic for reasoning about dualising resources · POPL 2009
Program verification
model checking
0.212016
Model checking for symbolic-heap separation logic with inductive predicates · POPL 2016
Automated reasoning and model checking
decidability and complexity of verification
0.212016
Model checking for symbolic-heap separation logic with inductive predicates · POPL 2016
Software testing
compiler testing
0.212024
Mix Testing: Specifying and Testing ABI Compatibility of C/C++ Atomics Implementations · Proc. ACM Program. Lang. 2024
Logic in computer science
completeness
0.212014
Parametric completeness for separation theories · POPL 2014
Computational complexity
decidability
0.212014
Undecidability of Propositional Separation Logic and Its Neighbours · J. ACM 2014
Concurrent programming
concurrency bugs
0.112021
A Compositional Deadlock Detector for Android Java · ASE 2021
Concurrent programming › concurrency bugs
deadlock
0.112021
A Compositional Deadlock Detector for Android Java · ASE 2021
Logic in computer science › proof theory › proof transformation
cut elimination
0.122009
Classical BI: a logic for reasoning about dualising resources · POPL 2009
Complete Sequent Calculi for Induction and Infinite Descent · LICS 2007
Logic in computer science › algebraic logic
algebraic semantics
0.112009
Classical BI: a logic for reasoning about dualising resources · POPL 2009
Program verification › pointer program verification
heap-manipulating program verification
0.112008
Cyclic proofs of program termination in separation logic · POPL 2008
Program verification
termination analysis
0.112008
Cyclic proofs of program termination in separation logic · POPL 2008
Program verification › termination analysis
termination proofs
0.112008
Cyclic proofs of program termination in separation logic · POPL 2008
Program verification › dynamic verification
runtime verification
0.112016
Model checking for symbolic-heap separation logic with inductive predicates · POPL 2016
Logic in computer science › proof theory
inductive definitions
0.112007
Complete Sequent Calculi for Induction and Infinite Descent · LICS 2007
Logic in computer science › proof theory
sequent calculus
0.112007
Complete Sequent Calculi for Induction and Infinite Descent · LICS 2007
Programming languages and type systems
lambda calculus
0.012003
A formalised first-order confluence proof for the -calculus using one-sorted variable names · Inf. Comput. 2003
Logic in computer science › term rewriting
confluence
0.012003
A formalised first-order confluence proof for the -calculus using one-sorted variable names · Inf. Comput. 2003
Program verification › program logic
hoare logic
0.012008
Cyclic proofs of program termination in separation logic · POPL 2008

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

mix testing · 0.8differential testing · 0.8model checking · 0.5fixed-point algorithm · 0.5critical pairs · 0.5compositional analysis · 0.5abstract interpretation · 0.5algebraic semantics · 0.5hybrid logic · 0.4fractional permissions · 0.4minsky machine encoding · 0.3proof theory · 0.2display logic · 0.1cut elimination · 0.1henkin models · 0.1cyclic proofs · 0.1
YearPublicationVenuePosition
2025 The failure of cut-elimination in cyclic proof for first-order logic with inductive definitions
abstract
Abstract A cyclic proof system is a proof system whose proof figure is a tree with cycles. The cut-elimination in a proof system is fundamental. It is conjectured that the cut-elimination in the cyclic proof system for first-order logic with inductive definitions does not hold. This paper shows that the conjecture is correct by giving a sequent not provable without the cut rule but provable in the cyclic proof system.
Yukihiro Oda, James Brotherston, Makoto Tatsuta
J. Log. Comput.2
2024 Mix Testing: Specifying and Testing ABI Compatibility of C/C++ Atomics Implementations
abstract
The correctness of complex software depends on the correctness of both the source code and the compilers that generate corresponding binary code. Compilers must do more than preserve the semantics of a single source file: they must ensure that generated binaries can be composed with other binaries to form a final executable. The compatibility of composition is ensured using an Application Binary Interface (ABI), which specifies details of calling conventions, exception handling, and so on. Unfortunately, there are no official ABIs for concurrent programs, so different atomics mappings, although correct in isolation, may induce bugs when composed. Indeed, today, mixing binaries generated by different compilers can lead to an erroneous resulting binary. We present mix testing : a new technique designed to find compiler bugs when the instructions of a C/C++ test are separately compiled for multiple compatible architectures and then mixed together. We define a class of compiler bugs, coined mixing bugs , that arise when parts of a program are compiled separately using different mappings from C/C++ atomic operations to assembly sequences. To demonstrate the generality of mix testing, we have designed and implemented a tool, atomic-mixer , which we have used: (a) to reproduce one existing non-mixing bug that state-of-the-art concurrency testing tools are limited to being able to find (showing that atomic-mixer at least meets the capabilities of these tools), and (b) to find four previously-unknown mixing bugs in LLVM and GCC, and one prospective mixing bug in mappings proposed for the Java Virtual Machine. Lastly, we have worked with engineers at Arm to specify, for the first time, an atomics ABI for Armv8, and have used atomic-mixer to validate the LLVM and GCC compilers against it.
Luke Geeson, James Brotherston, Wilco Dijkstra, Alastair F. Donaldson, Lee Smith, Tyler Sorensen 0001, John Wickerson
Proc. ACM Program. Lang.2
2021 A Compositional Deadlock Detector for Android Java
abstract
We develop a static deadlock analysis for commercial Android Java applications, of sizes in the tens of millions of LoC, under active development at Facebook. The analysis runs primarily at code-review time, on only the modified code and its dependents; we aim at reporting to developers in under 15 minutes.To detect deadlocks in this setting, we first model the real language as an abstract language with balanced re-entrant locks, nondeterministic iteration and branching, and non-recursive procedure calls. We show that the existence of a deadlock in this abstract language is equivalent to a certain condition over the sets of critical pairs of each program thread; these record, for all possible executions of the thread, which locks are currently held at the point when a fresh lock is acquired. Since the critical pairs of any program thread is finite and computable, the deadlock detection problem for our language is decidable, and in NP.We then leverage these results to develop an open-source implementation of our analysis adapted to deal with real Java code. The core of the implementation is an algorithm which computes critical pairs in a compositional, abstract interpretation style, running in quasi-exponential time. Our analyser is built in the Infer verification framework and has been in industrial deployment for over two years; it has seen over two hundred fixed deadlock reports with a report fix rate of ~54%.
James Brotherston, Paul Brunet, Nikos Gorogiannis, Max I. Kanovich
ASE1
2020 Reasoning over Permissions Regions in Concurrent Separation Logic
abstract
We propose an extension of separation logic with fractional permissions, aimed at reasoning about concurrent programs that share arbitrary regions or data structures in memory. In existing formalisms, such reasoning typically either fails or is subject to stringent side conditions on formulas (notably precision ) that significantly impair automation. We suggest two formal syntactic additions that collectively remove the need for such side conditions: first, the use of both “weak” and “strong” forms of separating conjunction, and second, the use of nominal labels from hybrid logic. We contend that our suggested alterations bring formal reasoning with fractional permissions in separation logic considerably closer to common pen-and-paper intuition, while imposing only a modest bureaucratic overhead.
James Brotherston, Diana Costa 0001, Aquinas Hobor, John Wickerson
CAV (2)1
2020 Automatically Verifying Temporal Properties of Pointer Programs with Cyclic Proof
abstract
In this article, we investigate the automated verification of temporal properties of heap-aware programs. We propose a deductive reasoning approach based on cyclic proof . Judgements in our proof system assert that a program has a certain temporal property over memory state assertions, written in separation logic with user-defined inductive predicates, while the proof rules of the system unfold temporal modalities and predicate definitions as well as symbolically executing programs. Cyclic proofs in our system are, as usual, finite proof graphs subject to a natural, decidable soundness condition, encoding a form of proof by infinite descent. We present a proof system tailored to proving CTL properties of nondeterministic pointer programs, and then adapt this system to handle fair execution conditions. We show both versions of the system to be sound, and provide an implementation of each in the Cyclist theorem prover, yielding an automated tool that is capable of automatically discovering proofs of (fair) temporal properties of pointer programs. Experimental evaluation of our tool indicates that our approach is viable, and offers an interesting alternative to traditional model checking techniques.
Gadi Tellez, James Brotherston
J. Autom. Reason.2
2018 On the Complexity of Pointer Arithmetic in Separation Logic
James Brotherston, Max I. Kanovich
APLAS1
2017 Biabduction (and Related Problems) in Array Separation Logic
James Brotherston, Nikos Gorogiannis, Max I. Kanovich
CADE1
2017 Automatically Verifying Temporal Properties of Pointer Programs with Cyclic Proof
Gadi Tellez, James Brotherston
CADE2
2017 Automatic cyclic termination proofs for recursive procedures in separation logic
abstract
We describe a formal verification framework and tool implementation, based upon cyclic proofs, for certifying the safe termination of imperative pointer programs with recursive procedures. Our assertions are symbolic heaps in separation logic with user defined inductive predicates; we employ explicit approximations of these predicates as our termination measures. This enables us to extend cyclic proof to programs with procedures by relating these measures across the pre- and postconditions of procedure calls.
Reuben N. S. Rowe, James Brotherston
CPP2
2017 Realizability in Cyclic Proof: Extracting Ordering Information for Infinite Descent
Reuben N. S. Rowe, James Brotherston
TABLEAUX2
2016 Model checking for symbolic-heap separation logic with inductive predicates
abstract
We investigate the *model checking* problem for symbolic-heap separation logic with user-defined inductive predicates, i.e., the problem of checking that a given stack-heap memory state satisfies a given formula in this language, as arises e.g. in software testing or runtime verification. First, we show that the problem is *decidable*; specifically, we present a bottom-up fixed point algorithm that decides the problem and runs in exponential time in the size of the problem instance. Second, we show that, while model checking for the full language is EXPTIME-complete, the problem becomes NP-complete or PTIME-solvable when we impose natural syntactic restrictions on the schemata defining the inductive predicates. We additionally present NP and PTIME algorithms for these restricted fragments. Finally, we report on the experimental performance of our procedures on a variety of specifications extracted from programs, exercising multiple combinations of syntactic restrictions.
James Brotherston, Nikos Gorogiannis, Max I. Kanovich, Reuben N. S. Rowe
POPL1
2015 Sub-classical Boolean Bunched Logics and the Meaning of Par
abstract
We investigate intermediate logics between the bunched logics Boolean BI and Classical BI, obtained by combining classical propositional logic with various flavours of Hyland and De Paiva's full intuitionistic linear logic. Thus, in addition to the usual multiplicative conjunction (with its adjoint implication and unit), our logics also feature a multiplicative disjunction (with its adjoint co-implication and unit). The multiplicatives behave "sub-classically", in that disjunction and conjunction are related by a weak distribution principle, rather than by De Morgan equivalence. We formulate a Kripke semantics, covering all our sub-classical bunched logics, in which the multiplicatives are naturally read in terms of resource operations. Our main theoretical result is that validity according to this semantics coincides with provability in a corresponding Hilbert-style proof system. Our logical investigation sheds considerable new light on how one can understand the multiplicative disjunction, better known as linear logic's "par", in terms of resource operations. In particular, and in contrast to the earlier Classical BI, the models of our logics include the heap-like memory models of separation logic, in which disjunction can be interpreted as a property of intersection operations over heaps.
James Brotherston, Jules Villard
CSL1
2015 Disproving Inductive Entailments in Separation Logic via Base Pair Approximation
James Brotherston, Nikos Gorogiannis
TABLEAUX1
2014 Parametric completeness for separation theories
abstract
In this paper, we close the logical gap between provability in the logic BBI, which is the propositional basis for separation logic, and validity in an intended class of separation models, as employed in applications of separation logic such as program verification. An intended class of separation models is usually specified by a collection of axioms describing the specific model properties that are expected to hold, which we call a separation theory.
James Brotherston, Jules Villard
POPL1
2014 Cyclic Abduction of Inductively Defined Safety and Termination Preconditions
James Brotherston, Nikos Gorogiannis
SAS1
2014 Undecidability of Propositional Separation Logic and Its Neighbours
abstract
In this article, we investigate the logical structure of memory models of theoretical and practical interest. Our main interest is in “the logic behind a fixed memory model”, rather than in “a model of any kind behind a given logical system”. As an effective language for reasoning about such memory models, we use the formalism of separation logic. Our main result is that for any concrete choice of heap-like memory model, validity in that model is undecidable even for purely propositional formulas in this language. The main novelty of our approach to the problem is that we focus on validity in specific, concrete memory models, as opposed to validity in general classes of models. Besides its intrinsic technical interest, this result also provides new insights into the nature of their decidable fragments. In particular, we show that, in order to obtain such decidable fragments, either the formula language must be severely restricted or the valuations of propositional variables must be constrained. In addition, we show that a number of propositional systems that approximate separation logic are undecidable as well. In particular, this resolves the open problems of decidability for Boolean BI and Classical BI. Moreover, we provide one of the simplest undecidable propositional systems currently known in the literature, called “Minimal Boolean BI”, by combining the purely positive implication-conjunction fragment of Boolean logic with the laws of multiplicative *-conjunction, its unit and its adjoint implication, originally provided by intuitionistic multiplicative linear logic. Each of these two components is individually decidable: the implication-conjunction fragment of Boolean logic is co-NP-complete, and intuitionistic multiplicative linear logic is NP-complete. All of our undecidability results are obtained by means of a direct encoding of Minsky machines.
James Brotherston, Max I. Kanovich
J. ACM1
2012 A Generic Cyclic Theorem Prover
James Brotherston, Nikos Gorogiannis, Rasmus Lerchedahl Petersen
APLAS1
2011 Automated Cyclic Entailment Proofs in Separation Logic
James Brotherston, Dino Distefano, Rasmus Lerchedahl Petersen
CADE1
2011 Craig Interpolation in Displayable Logics
James Brotherston, Rajeev Goré
TABLEAUX1
2011 Sequent calculi for induction and infinite descent
abstract
This article formalizes and compares two different styles of reasoning with inductively defined predicates, each style being encapsulated by a corresponding sequent calculus proof system.The first system, LKID, supports traditional proof by induction, with induction rules formulated as rules for introducing inductively defined predicates on the left of sequents.We show LKID to be cut-free complete with respect to a natural class of Henkin models; the eliminability of cut follows as a corollary. The second system, LKIDω, uses infinite (non-well-founded) proofs to represent arguments by infinite descent. In this system, the left-introduction rules for inductively defined predicates are simple case-split rules, and an infinitary, global condition on proof trees is required in order to ensure soundness.We show LKIDω to be cut-free complete with respect to standard models, and again infer the eliminability of cut. The infinitary system LKIDω is unsuitable for formal reasoning. However, it has a natural restriction to proofs given by regular trees, i.e. to those proofs representable by finite graphs, which is so suited. We demonstrate that this restricted ‘cyclic’ proof system, CLKIDω, subsumes LKID, and conjecture that CLKIDω and LKID are in fact equivalent, i.e. that proof by induction is equivalent to regular proof by infinite descent.
James Brotherston, Alex K. Simpson
J. Log. Comput.1
2010 Undecidability of Propositional Separation Logic and Its Neighbours
abstract
Separation logic has proven an effective formalism for the analysis of memory-manipulating programs. We show that the purely propositional fragment of separation logic is undecidable. In fact, for any choice of concrete heap-like model of separation logic, validity in that model remains undecidable. Besides its intrinsic technical interest, this result also provides new insights into the nature of decidable fragments of separation logic. In addition, we show that a number of propositional systems which approximate separation logic are undecidable as well. In particular, these include both Boolean BI and Classical BI. All of our undecidability results are obtained by means of a single direct encoding of Minsky machines.
James Brotherston, Max I. Kanovich
LICS1
2009 Classical BI: a logic for reasoning about dualising resources
abstract
We show how to extend O'Hearn and Pym's logic of bunched implications, BI, to classical BI (CBI), in which both the additive and the multiplicative connectives behave classically. Specifically, CBI is a non-conservative extension of (propositional) Boolean BI that includes multiplicative versions of falsity, negation and disjunction. We give an algebraic semantics for CBI that leads us naturally to consider resource models of CBI in which every resource has a unique dual. We then give a cut-eliminating proof system for CBI, based on Belnap's display logic, and demonstrate soundness and completeness of this proof system with respect to our semantics.
James Brotherston, Cristiano Calcagno
POPL1
2008 Cyclic proofs of program termination in separation logic
abstract
We propose a novel approach to proving the termination of heap-manipulating programs, which combines separation logic with cyclic proof within a Hoare-style proof system.Judgements in this system express (guaranteed) termination of the program when started from a given line in the program and in a state satisfying a given precondition, which is expressed as a formula of separation logic. The proof rules of our system are of two types: logical rules that operate on preconditions; and symbolic execution rules that capture the effect of executing program commands.
James Brotherston, Richard Bornat, Cristiano Calcagno
POPL1
2007 Complete Sequent Calculi for Induction and Infinite Descent
abstract
This paper compares two different styles of reasoning with inductively defined predicates, each style being encapsulated by a corresponding sequent calculus proof system. The first system supports traditional proof by induction, with induction rules formulated as sequent rules for introducing inductively defined predicates on the left of sequents. We show this system to be cut-free complete with respect to a natural class of Henkin models; the eliminability of cut follows as a corollary. The second system uses infinite (non-well-founded) proofs to represent arguments by infinite descent. In this system, the left rules for inductively defined predicates are simple case-split rules, and an infinitary, global condition on proof trees is required to ensure soundness. We show this system to be cut-free complete with respect to standard models, and again infer the eliminability of cut. The second infinitary system is unsuitable for formal reasoning. However, it has a natural restriction to proofs given by regular trees, i.e. to those proofs representable by finite graphs. This restricted "cyclic" system subsumes the first system for proof by induction. We conjecture that the two systems are in fact equivalent, i.e., that proof by induction is equivalent to regular proof by infinite descent.
James Brotherston, Alex K. Simpson
LICS1
2007 Formalised Inductive Reasoning in the Logic of Bunched Implications
James Brotherston
SAS1
2005 Cyclic Proofs for First-Order Logic with Inductive Definitions
James Brotherston
TABLEAUX1
2003 A formalised first-order confluence proof for the -calculus using one-sorted variable names
René Vestergaard, James Brotherston
Inf. Comput.2
2002 Searching for Invariants Using Temporal Resolution
James Brotherston, Anatoli Degtyarev, Michael Fisher 0001, Alexei Lisitsa 0001
LPAR1
2001 A Formalised First-Order Confluence Proof for the lambda-Calculus Using One-Sorted Variable Names
René Vestergaard, James Brotherston
RTA2