VLDB 2026 Research / reviewers in the wild / expert
Nick Benton
dblp:b/NickBenton · also P. N. Benton
· DBLP profile ↗
33ranked-venue papers
24as first author
0since 2021 · last 2018
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 28 · 21 first-authorTheory of computation · 10 · 8 first-authorArtificial intelligence and machine learning · 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
8 papers |
Programming languages and type systems · 73% Program verification · 19% Program analysis · 3% | |
| Theoretical computer science
1 paper |
Logic in computer science · 100% |
Topics — the 25 heaviest of 26, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Programming languages and type systems › language semantics › formal semantics
denotational semantics |
0.3 | 2 | 2014 | Abstract effects and proof-relevant logical relations · POPL 2014 Ultrametric Semantics of Reactive Programs · LICS 2011 |
Program verification › program logic
separation logic |
0.3 | 2 | 2013 | High-level separation logic for low-level code · POPL 2013 Ultrametric Semantics of Reactive Programs · LICS 2011 |
Programming languages and type systems › programming paradigms
functional reactive programming |
0.3 | 2 | 2012 | Higher-order functional reactive programming in bounded space · POPL 2012 Ultrametric Semantics of Reactive Programs · LICS 2011 |
Programming languages and type systems
type systems |
0.2 | 3 | 2014 | Abstract effects and proof-relevant logical relations · POPL 2014 Linear Logic, Monads and the Lambda Calculus · LICS 1996 Simple relational correctness proofs for static analyses and program transformations · POPL 2004 |
Programming languages and type systems › type theory
dependent types |
0.2 | 1 | 2015 | Integrating Linear and Dependent Types · POPL 2015 |
Programming languages and type systems › type systems › substructural type systems
linear types |
0.2 | 1 | 2015 | Integrating Linear and Dependent Types · POPL 2015 |
Programming languages and type systems › computational effects
effect systems |
0.2 | 1 | 2014 | Abstract effects and proof-relevant logical relations · POPL 2014 |
Programming languages and type systems
language semantics |
0.2 | 1 | 2014 | Abstract effects and proof-relevant logical relations · POPL 2014 |
Programming languages and type systems
logical relations |
0.2 | 1 | 2014 | Abstract effects and proof-relevant logical relations · POPL 2014 |
Programming languages and type systems › type systems
type abstraction |
0.2 | 1 | 2014 | Abstract effects and proof-relevant logical relations · POPL 2014 |
Program verification › code-level verification
machine code verification |
0.2 | 1 | 2013 | High-level separation logic for low-level code · POPL 2013 |
Programming languages and type systems › type theory
linear type theory |
0.1 | 1 | 2012 | Higher-order functional reactive programming in bounded space · POPL 2012 |
Programming languages and type systems › type theory
guarded recursion |
0.1 | 1 | 2011 | Ultrametric Semantics of Reactive Programs · LICS 2011 |
Program verification › program logic
hoare logic |
0.1 | 1 | 2015 | Integrating Linear and Dependent Types · POPL 2015 |
Program verification
correctness proof |
0.0 | 1 | 2004 | Simple relational correctness proofs for static analyses and program transformations · POPL 2004 |
Compilers and program optimization
dead code elimination |
0.0 | 1 | 2004 | Simple relational correctness proofs for static analyses and program transformations · POPL 2004 |
Concurrent programming › concurrency theory › process calculi
join calculus |
0.0 | 1 | 2004 | Modern concurrency abstractions for C# · ACM Trans. Program. Lang. Syst. 2004 |
Compilers and program optimization
program transformation |
0.0 | 1 | 2004 | Simple relational correctness proofs for static analyses and program transformations · POPL 2004 |
Program analysis › static analysis › abstract interpretation
relational analysis |
0.0 | 1 | 2004 | Simple relational correctness proofs for static analyses and program transformations · POPL 2004 |
Program verification › program logic
relational hoare logic |
0.0 | 1 | 2004 | Simple relational correctness proofs for static analyses and program transformations · POPL 2004 |
Program analysis
static analysis |
0.0 | 1 | 2004 | Simple relational correctness proofs for static analyses and program transformations · POPL 2004 |
Programming languages and type systems
lambda calculus |
0.0 | 1 | 1996 | Linear Logic, Monads and the Lambda Calculus · LICS 1996 |
Programming languages and type systems › computational effects
monadic metalanguage |
0.0 | 1 | 1996 | Linear Logic, Monads and the Lambda Calculus · LICS 1996 |
Logic in computer science › proof theory › substructural logic
linear logic |
0.0 | 1 | 1996 | Linear Logic, Monads and the Lambda Calculus · LICS 1996 |
Program analysis › static analysis
dependency analysis |
0.0 | 1 | 2004 | Simple relational correctness proofs for static analyses and program transformations · POPL 2004 |
Methods — techniques the papers use, named apart from their topics
realizability model · 0.2proof irrelevance · 0.2setoids · 0.2proof-relevant logical relations · 0.2kripke logical relations · 0.2linear types · 0.1higher-order functions · 0.1ultrametric spaces · 0.1normalization · 0.1non-expansive maps · 0.1call-by-value · 0.0call-by-name · 0.0adjoint presentation · 0.0
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2018 | Semantic Equivalence Checking for HHVM BytecodeabstractWe describe a semantic differencing tool used to compare the byte-codes generated by two different compilers for Hack/PHP at Facebook. The tool is a prover for a simple relational Hoare logic for low-level code and is used in testing, allowing the developers to focus on semantically significant differences between the outputs of the two compilers. Nick Benton |
PPDP | 1 |
| 2018 | Proof-Relevant Logical Relations for Name Generation
Nick Benton, Martin Hofmann 0001, Vivek Nigam |
Log. Methods Comput. Sci. | 1 |
| 2018 | Effect-dependent transformations for concurrent programs
Nick Benton, Martin Hofmann 0001, Vivek Nigam |
Sci. Comput. Program. | 1 |
| 2017 | Correctness of compiling polymorphism to dynamic typingabstractAbstract The connection between polymorphic and dynamic typing was originally considered by Curry et al. (1972, Combinatory Logic , vol. ii) in the form of “polymorphic type assignment” for untyped λ-terms. Types are assigned after the fact to what is, in modern terminology, a dynamic language. Interest in type assignment was revitalized by the proposals of Bracha et al. (1998, OOPSLA) and Bank et al. (1997, POPL) to enrich Java with polymorphism (generics), which in turn sparked the development of other languages, such as Scala, with similar combinations of features. In such a setting, where the target language already has a monomorphic type system, it is desirable to compile polymorphism to dynamic typing in such a way that as much static typing as possible is preserved, relying on dynamics only insofar as genericity is actually required. The basic approach is to compile polymorphism using embeddings from each type into a universal “top” type, ${\mathbb{D}}$ , and partial projections that go in the other direction. This scheme is intuitively reasonable, and, indeed, has been used in practice many times. Proving its correctness, however, is non-trivial. This paper studies the compilation of System F to an extension of Moggi's computational meta-language with a dynamic type and shows how the compilation may be proved correct using a logical relation. Kuen-Bang Hou (Favonia), Nick Benton, Robert Harper 0001 |
J. Funct. Program. | 2 |
| 2016 | Effect-dependent transformations for concurrent programsabstractWe describe a denotational semantics for an abstract effect system for a higher-order, shared-variable concurrent language. The semantics validates general effect-based program equivalences, including sufficient conditions for replacing sequential composition with parallel composition. Effect annotations refer to abstract locations, specified by contracts, rather than physical footprints, allowing us to also show soundness of some transformations involving fine-grained concurrent data structures, such as Michael-Scott queues. Nick Benton, Martin Hofmann 0001, Vivek Nigam |
PPDP | 1 |
| 2015 | Integrating Linear and Dependent TypesabstractIn this paper, we show how to integrate linear types with type dependency, by extending the linear/non-linear calculus of Benton to support type dependency. Next, we give an application of this calculus by giving a proof-theoretic account of imperative programming, which requires extending the calculus with computationally irrelevant quantification, proof irrelevance, and a monad of computations. We show the soundness of our theory by giving a realizability model in the style of Nuprl, which permits us to validate not only the beta-laws for each type, but also the eta-laws. These extensions permit us to decompose Hoare triples into a collection of simpler type-theoretic connectives, yielding a rich equational theory for dependently-typed higher-order imperative programs. Furthermore, both the type theory and its model are relatively simple, even when all of the extensions are considered. Neelakantan R. Krishnaswami, Cécilia Pradic, Nick Benton |
POPL | 3 |
| 2014 | Abstract effects and proof-relevant logical relationsabstractWe give a denotational semantics for a region-based effect system that supports type abstraction in the sense that only externally visible effects need to be tracked: non-observable internal modifications, such as the reorganisation of a search tree or lazy initialisation, can count as 'pure' or 'read only'. This 'fictional purity' allows clients of a module to validate soundly more effect-based program equivalences than would be possible with previous semantics. Our semantics uses a novel variant of logical relations that maps types not merely to partial equivalence relations on values, as is commonly done, but rather to a proof-relevant generalisation thereof, namely setoids. The objects of a setoid establish that values inhabit semantic types, whilst its morphisms are understood as proofs of semantic equivalence. The transition to proof-relevance solves twoawkward problems caused by naïve use of existential quantification in Kripke logical relations, namely failure of admissibility and spurious functional dependencies. Nick Benton, Martin Hofmann 0001, Vivek Nigam |
POPL | 1 |
| 2013 | The Proof Assistant as an Integrated Development Environment
Nick Benton |
APLAS | 1 |
| 2013 | High-level separation logic for low-level codeabstractSeparation logic is a powerful tool for reasoning about structured, imperative programs that manipulate pointers. However, its application to unstructured, lower-level languages such as assembly language or machine code remains challenging. In this paper we describe a separation logic tailored for this purpose that we have applied to x86 machine-code programs. Jonas Braband Jensen, Nick Benton, Andrew Kennedy |
POPL | 2 |
| 2013 | Coq: the world's best macro assembler?abstractWe describe a Coq formalization of a subset of the x86 architecture. One emphasis of the model is brevity: using dependent types, type classes and notation we give the x86 semantics a makeover that counters its reputation for baroqueness. We model bits, bytes, and memory concretely using functions that can be computed inside Coq itself; concrete representations are mapped across to mathematical objects in the SSReflect library (naturals, and integers modulo 2n) to prove theorems. Finally, we use notation to support conventional assembly code syntax inside Coq, including lexically-scoped labels. Ordinary Coq definitions serve as a powerful "macro" feature for everything from simple conditionals and loops to stack-allocated local variables and procedures with parameters. Assembly code can be assembled within Coq, producing a sequence of hex bytes. The assembler enjoys a correctness theorem relating machine code in memory to a separation-logic formula suitable for program verification. Andrew Kennedy, Nick Benton, Jonas Braband Jensen, Pierre-Évariste Dagand |
PPDP | 2 |
| 2012 | Adding Equations to System F Types
Neelakantan R. Krishnaswami, Nick Benton |
ESOP | 2 |
| 2012 | Higher-order functional reactive programming in bounded spaceabstractFunctional reactive programming (FRP) is an elegant and successful approach to programming reactive systems declaratively. The high levels of abstraction and expressivity that make FRP attractive as a programming model do, however, often lead to programs whose resource usage is excessive and hard to predict. In this paper, we address the problem of space leaks in discrete-time functional reactive programs. We present a functional reactive programming language that statically bounds the size of the dataflow graph a reactive program creates, while still permitting use of higher-order functions and higher-type streams such as streams of streams. We achieve this with a novel linear type theory that both controls allocation and ensures that all recursive definitions are well-founded. Neelakantan R. Krishnaswami, Nick Benton, Jan Hoffmann 0002 |
POPL | 2 |
| 2012 | Strongly Typed Term Representations in Coq
Nick Benton, Chung-Kil Hur, Andrew Kennedy, Conor McBride |
J. Autom. Reason. | 1 |
| 2011 | A semantic model for graphical user interfacesabstractWe give a denotational model for graphical user interface (GUI) programming using the Cartesian closed category of ultrametric spaces. The ultrametric structure enforces causality restrictions on reactive systems and allows well-founded recursive definitions by a generalization of guardedness. We capture the arbitrariness of user input (e.g., a user gets to decide the stream of clicks she sends to a program) by making use of the fact that the closed subsets of an ultrametric space themselves form an ultrametric space, allowing us to interpret nondeterminism with a "powerspace" monad. Neelakantan R. Krishnaswami, Nick Benton |
ICFP | 2 |
| 2011 | Ultrametric Semantics of Reactive ProgramsabstractWe describe a denotational model of higher-order functional reactive programming using ultra metric spaces and non expansive maps, which provide a natural Cartesian closed generalization of causal stream functions and guarded recursive definitions. We define a type theory corresponding to this semantics and show that it satisfies normalization. Finally, we show how to efficiently implement reactive programs written in this language using an imperatively updated data flow graph, and give a separation logic proof that this low-level implementation is correct with respect to the high-level semantics. Neelakantan R. Krishnaswami, Nick Benton |
LICS | 2 |
| 2009 | Biorthogonality, step-indexing and compiler correctnessabstractWe define logical relations between the denotational semantics of a simply typed functional language with recursion and the operational behaviour of low-level programs in a variant SECD machine. The relations, which are defined using biorthogonality and stepindexing, capture what it means for a piece of low-level code to implement a mathematical, domain-theoretic function and are used to prove correctness of a simple compiler. The results have been formalized in the Coq proof assistant. Nick Benton, Chung-Kil Hur |
ICFP | 1 |
| 2009 | Relational semantics for effect-based program transformations: higher-order storeabstractWe give a denotational semantics to a type and effect system tracking reading and writing to global variables holding values that may include higher-order effectful functions. Refined types are modelled as partial equivalence relations over a recursively-defined domain interpreting the untyped language, with effect information interpreted in terms of the preservation of certain sets of binary relations on the store. Nick Benton, Andrew Kennedy, Lennart Beringer, Martin Hofmann 0001 |
PPDP | 1 |
| 2008 | Diagrammatic Reasoning in Separation Logic
M. Ridsdale, Mateja Jamnik, Nick Benton, Josh Berdine |
Diagrams | 3 |
| 2007 | Relational semantics for effect-based program transformations with dynamic allocationabstractWe give a denotational semantics to a region-based effect system tracking reading, writing and allocation in a higher-order language with dynamically allocated integer references. Nick Benton, Andrew Kennedy, Lennart Beringer, Martin Hofmann 0001 |
PPDP | 1 |
| 2007 | Formalizing and verifying semantic type soundness of a simple compilerabstractWe describe a semantic type soundness result, formalized in the Coq proof assistant, for a compiler from a simple imperative language with heap-allocated data into an idealized assembly language. Types in the high-level language are interpreted as binary relations, built using both second-order quantification and a form of separation structure, over stores and code pointers in the low-level machine. Nick Benton, Uri Zarfaty |
PPDP | 1 |
| 2006 | Reading, Writing and Relations
Nick Benton, Andrew Kennedy, Martin Hofmann 0001, Lennart Beringer |
APLAS | 1 |
| 2005 | A Typed, Compositional Logic for a Stack-Based Abstract Machine
Nick Benton |
APLAS | 1 |
| 2005 | Embedded interpretersabstractThis is a tutorial on using type-indexed embedding/projection pairs when writing interpreters in statically-typed functional languages. The method allows (higher-order) values in the interpreting language to be embedded in the interpreted language and values from the interpreted language may be projected back into the interpreting one. This is particularly useful when adding command-line interfaces or scripting languages to applications written in functional languages. We first describe the basic idea and show how it may be extended to languages with recursive types and applied to elementary meta-programming. We then show how the method combines with Filinski's continuation-based monadic reflection operations to define an [lsquor]extensional[rsquor] version of the call-by-value monadic translation and hence to allow values to be mapped bidirectionally between the levels of an interpreter for a functional language parameterized by an arbitrary monad. Finally, we show how SML functions may be embedded into, and projected from, an interpreter for an asynchronous $\pi$ -calculus via an ‘extensional’ variant of a standard translation from $\lambda$ into $\pi$ . Nick Benton |
J. Funct. Program. | 1 |
| 2004 | Simple relational correctness proofs for static analyses and program transformationsabstractWe show how some classical static analyses for imperative programs, and the optimizing transformations which they enable, may be expressed and proved correct using elementary logical and denotationaltechniques. The key ingredients are an interpretation of program properties as relations, rather than predicates, and a realization that although many program analyses are traditionally formulated in very intensional terms, the associated transformations are actually enabled by more liberal extensional properties.We illustrate our approach with formal systems for analysing and transforming while-programs. The first is a simple type system which tracks constancy and dependency information and can be used to perform dead-code elimination, constant propagation and program slicing as well as capturing a form of secure information flow. The second is a relational version of Hoare logic, which significantly generalizes our first type system and can also justify optimizations including hoisting loop invariants. Finally we show how a simple available expression analysis and redundancy elimination transformation may be justified by translation into relational Hoare logic. Nick Benton |
POPL | 1 |
| 2004 | Adventures in interoperability: the SML.NET experienceabstractSML.NET is a compiler for Standard ML that targets the Common Language Runtime and is integrated into the Visual Studio development environment. It supports easy interoperability with other .NET languages via a number of language extensions, which go considerably beyond those of our earlier compiler, MLj.This paper describes the new language extensions and the features of the Visual Studio plugin, including syntax highlighting, Intellisense, continuous type inference and debugger support. We discuss our experiences using SML.NET to write SML programs that interoperate with other .NET languages, libraries and frameworks. Examples include the Visual Studio plugin itself (written in SML.NET, using .NET's COM interop features to integrate in a C++ application) and writing ASP.NET and Pocket PC applications in SML. Nick Benton, Andrew Kennedy, Claudio V. Russo |
PPDP | 1 |
| 2004 | Modern concurrency abstractions for C#abstractPolyphonic C ♯ is an extension of the C ♯ language with new asynchronous concurrency constructs, based on the join calculus. We describe the design and implementation of the language and give examples of its use in addressing a range of concurrent programming problems. Nick Benton, Luca Cardelli, Cédric Fournet |
ACM Trans. Program. Lang. Syst. | 1 |
| 2002 | Modern Concurrency Abstractions for C#
Nick Benton, Luca Cardelli, Cédric Fournet |
ECOOP | 1 |
| 2001 | Exceptional Syntax Journal of Functional ProgrammingabstractFrom the points of view of programming pragmatics, rewriting and operational semantics, the syntactic construct used for exception handling in ML-like programming languages, and in much theoretical work on exceptions, has subtly undesirable features. We propose and discuss a more well-behaved construct. Nick Benton, Andrew Kennedy |
J. Funct. Program. | 1 |
| 1999 | Interlanguage Working Without Tears: Blending SML with JavaabstractA good foreign-language interface is crucial for the success of any modern programming language implementation. Although all serious compilers for functional languages have some facility for interlanguage working, these are often limited and awkward to use.This article describes the features for bidirectional interlanguage working with Java that are built into the latest version of the MLj compiler. Because the MLj foreign interface is to another high-level typed language which shares a garbage collector with compiled ML code, and because we are willing to extend the ML language, we are able to provide unusually powerful, safe and easy to use interlanguage working features. Indeed, rather then being a traditional foreign interface, our language extensions are more a partial integration of Java features into SML.We describe this integration of Standard ML and Java, first informally with example program fragments, and then formally in the notation used by The Definition of Standard ML. Nick Benton, Andrew Kennedy |
ICFP | 1 |
| 1998 | Compiling Standard ML to Java BytecodesabstractMLJ compiles SML'97 into verifier-compliant Java bytecodes. Its features include type-checked interlanguage working extensions which allow ML and Java code to call each other, automatic recompilation management, compact compiled code and runtime performance which, using a `just in time' compiling Java virtual machine, usually exceeds that of existing specialised bytecode interpreters for ML. Notable features of the compiler itself include whole-program optimisation based on rewriting, compilation of polymorphism by specialisation, a novel monadic intermediate lang... Nick Benton, Andrew Kennedy, George Russell |
ICFP | 1 |
| 1998 | Computational Types from a Logical PerspectiveabstractMoggi's computational lambda calculus is a metalanguage for denotational semantics which arose from the observation that many different notions of computation have the categorical structure of a strong monad on a cartesian closed category. In this paper we show that the computational lambda calculus also arises naturally as the term calculus corresponding (by the Curry–Howard correspondence) to a novel intuitionistic modal propositional logic. We give natural deduction, sequent calculus and Hilbert-style presentations of this logic and prove strong normalisation and confluence results. Nick Benton, Gavin M. Bierman, Valeria de Paiva |
J. Funct. Program. | 1 |
| 1996 | Linear Logic, Monads and the Lambda CalculusabstractModels of intuitionistic linear logic also provide models of Moggi's computational metalanguage. We use the adjoint presentation of these models and the associated adjoint calculus to show that three translations, due mainly to Moggi, of the lambda calculus into the computational metalanguage (direct, call-by-name and call-by-value) correspond exactly to three translations, due mainly to Girard, of intuitionistic logic into intuitionistic linear logic. We also consider extending these results to languages with recursion. Nick Benton, Philip Wadler |
LICS | 1 |
| 1995 | Strong Normalisation for the Linear Term CalculusabstractAbstract We prove a strong normalisation result for the linear term calculus of Benton, Bierman, Hyland and de Paiva. Rather than prove the result from first principles, we give a translation of linear terms into terms in the second-order polymorphic lambda calculus (λ2) which allows the result to be proved by appealing to the well-known strong normalisation property of λ2. An interesting feature of the translation is that it makes use of the λ2 coding of a coinductive datatype as the translation of the !-types (exponentials) of the linear calculus. Nick Benton |
J. Funct. Program. | 1 |