VLDB 2026 Research / reviewers in the wild / expert
Nicholas Coughlin
dblp:249/1773
· DBLP profile ↗
12ranked-venue papers
6as first author
10since 2021 · last 2026
0000-0001-8758-0666ORCID · verified
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 8 · 4 first-author · 7 since 2021Theory of computation · 6 · 3 first-author · 5 since 2021Security and privacy · 2 · 1 first-author · 1 since 2021
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2026 | Data Structure Analysis for Binaries
Sadra Bayat Tork, Nicholas Coughlin, Alicia Michael, James Tobler, Kirsten Winter |
TACAS (2) | 2 |
| 2025 | Translation Validation for LLVM's AArch64 BackendabstractLLVM’s backends translate its intermediate representation (IR) to assembly or object code. Alongside register allocation and instruction selection, these backends contain many analogues of components traditionally associated with compiler middle ends: dataflow analyses, common subexpression elimination, loop invariant code motion, and a first-class IR—MIR, the “machine IR.” In effect, this kind of compiler backend is a highly optimizing compiler in its own right, with all of the correctness hazards entailed by a million lines of intricate C++. As a step towards gaining confidence in the correctness of work done by LLVM backends, we have created arm-tv, which formally verifies translations between LLVM IR and AArch64 (64-bit ARM) code. Ours is not the first translation validation work for LLVM, but we have advanced the state of the art along multiple fronts: arm-tv is a checking validator that enforces numerous ABI rules; we have extended Alive2 (which we reuse as a verification backend) to deal with unstructured mixes of pointers and integers that are typical of assembly code; we investigate the tradeoffs between hand-written AArch64 semantics and those derived mechanically from ARM’s published formal semantics; and, we have used arm-tv to discover 45 previously unknown miscompilation bugs in this LLVM backend, most of which are now fixed in upstream LLVM. Ryan Berger, Mitch Briles, Nader Boushehrinejad Moradi, Nicholas Coughlin, Kait Lam, Nuno P. Lopes, Stefan Mada, Tanmay Tirpankar, John Regehr |
Proc. ACM Program. Lang. | 4 |
| 2024 | Detecting Speculative Execution Vulnerabilities on Weak Memory ModelsabstractAbstract Speculative execution attacks affect all modern processors and much work has been done to develop techniques for detection of associated vulnerabilities. Modern processors also operate on weak memory models which allow out-of-order execution of code. Despite this, there is little work on looking at the interplay between speculative execution and weak memory models. In this paper, we provide an information flow logic for detecting speculative execution vulnerabilities on weak memory models. The logic is general enough to be used with any modern processor, and designed to be extensible to allow detection of vulnerabilities to specific attacks. The logic has been proven sound with respect to an abstract model of speculative execution in Isabelle/HOL. Nicholas Coughlin, Kait Lam, Graeme Smith 0001, Kirsten Winter |
FM (1) | 1 |
| 2024 | Lift-Offline: Instruction Lifter Generators
Nicholas Coughlin, Alistair Michael, Kait Lam |
SAS | 1 |
| 2023 | Lift-off: Trustworthy ARMv8 semantics from formal specifications
Kait Lam, Nicholas Coughlin |
FMCAD | 2 |
| 2023 | Compositional Reasoning for Non-multicopy Atomic ArchitecturesabstractRely/guarantee reasoning provides a compositional approach to reasoning about concurrent programs. However, such reasoning traditionally assumes a sequentially consistent memory model and hence is unsound on modern hardware in the presence of data races. In this article, we present a rely/guarantee-based approach for non-multicopy atomic weak memory models, i.e., where a thread’s stores are not simultaneously propagated to all other threads and hence are not observable by other threads at the same time. Such memory models include those of the earlier versions of the ARM processor as well as the POWER processor. This article builds on our approach to compositional reasoning for multicopy atomic architectures, i.e., where a thread’s stores are simultaneously propagated to all other threads. In that context, an operational semantics can be based on thread-local instruction reordering. We exploit this to provide an efficient compositional proof technique in which weak memory behaviour can be shown to preserve rely/guarantee reasoning on a sequentially consistent memory model. To achieve this, we introduce a side-condition, reordering interference freedom on each thread, reducing the complexity of weak memory to checks over pairs of reorderable instructions. In this article, we extend our approach to non-multicopy atomic weak memory models. We utilise the idea of reordering interference freedom between parallel components. This by itself would break compositionality but serves as a vehicle to derive a refined compatibility check between rely and guarantee conditions, which takes into account the effects of propagations of stores that are only partial, i.e., not covering all threads. All aspects of our approach have been encoded and proved sound in Isabelle/HOL. Nicholas Coughlin, Kirsten Winter, Graeme Smith 0001 |
Formal Aspects Comput. | 1 |
| 2022 | Compositional noninterference on hardware weak memory models
Nicholas Coughlin, Graeme Smith 0001 |
Sci. Comput. Program. | 1 |
| 2021 | Backwards-directed information flow analysis for concurrent programsabstractA number of approaches have been developed for analysing information flow in concurrent programs in a compositional manner, i.e., in terms of one thread at a time. Early approaches modelled the behaviour of a given thread's environment using simple read and write permissions on variables, or by associating specific behaviour with whether or not locks are held. Recent approaches allow more general representations of environmental behaviour, increasing applicability. This, however, comes at a cost. These approaches analyse the code in a forwards direction, from the start of the program to the end, constructing the program's entire state after each instruction. This process needs to take into account the environmental influence on all shared variables of the program. When environmental influence is modelled in a general way, this leads to increased complexity, hindering automation of the analysis. In this paper, we present a compositional information flow analysis for concurrent systems which is the first to support a general representation of environmental behaviour and be automated within a theorem prover. Our approach analyses the code in a backwards direction, from the end of the program to the start. Rather than constructing the entire state at each instruction, it generates only the security-related proof obligations. These are, in general, much simpler, referring to only a fraction of the program's shared variables and thus reducing the complexity introduced by environmental behaviour. For increased applicability, our approach analyses value-dependent information flow, where the security classification of a variable may depend on the current state. The resulting logic has been proved sound within the theorem prover Isabelle/HOL. Kirsten Winter, Nicholas Coughlin, Graeme Smith 0001 |
CSF | 2 |
| 2021 | Rely/Guarantee Reasoning for Multicopy Atomic Weak Memory Models
Nicholas Coughlin, Kirsten Winter, Graeme Smith 0001 |
FM | 1 |
| 2021 | Information-flow control on ARM and POWER multicore processors
Graeme Smith 0001, Nicholas Coughlin, Toby C. Murray |
Formal Methods Syst. Des. | 2 |
| 2020 | Rely/Guarantee Reasoning for Noninterference in Non-Blocking AlgorithmsabstractNoninterference characterizes a security property in which an attacker cannot determine the inputs to a system based on outputs of a lower classification. Value-dependent noninterference enables the analysis of systems in which these classifications may depend on the system's state and evolve throughout execution. Existing approaches to enforcing such a property for concurrent systems are constrained in their capability to express how the concurrent components modify shared variables and, therefore, the value-dependent classifications. Such approaches typically make use of externally verified annotations or coarse locking primitives to express limited constraints on variables, such as read and write permissions. Consequently, these techniques are insufficient for the analysis of programs that feature complex concurrent behaviours or require fine-grained synchronisation, as seen in non-blocking algorithms. This paper presents a compositional logic for enforcing value-dependent noninterference properties for complex concurrent algorithms, including non-blocking algorithms. It uses rely/guarantee reasoning to establish how classifications may be modified by concurrent components. Additionally, the logic allows for the specification of security policies at a component level and ensures their valid composition. These results have been formalised in Isabelle/HOL. Nicholas Coughlin, Graeme Smith 0001 |
CSF | 1 |
| 2019 | Value-Dependent Information-Flow Security on Weak Memory Models
Graeme Smith 0001, Nicholas Coughlin, Toby C. Murray |
FM | 2 |