VLDB 2026 Research / reviewers in the wild / expert
Jeroen Ketema
dblp:30/5210
· DBLP profile ↗
27ranked-venue papers
12as first author
0since 2021 · last 2020
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Theory of computation · 15 · 11 first-authorSoftware engineering, systems software and programming languages · 11 · 1 first-authorSystems, architecture and hardware · 3Databases, data management, data science and information retrieval · 2 · 1 first-authorArtificial intelligence and machine learning · 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 · 56% Concurrent programming · 18% Program analysis · 15% | |
| Theoretical computer science
1 paper |
Logic in computer science · 100% | |
| Computer architecture, parallel and distributed computing, and storage systems
5 papers |
GPUs and heterogeneous computing · 100% |
Topics — the 17 heaviest of 19, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program verification › code-level verification
GPU kernel verification |
0.9 | 4 | 2018 | Implementing and Evaluating Candidate-Based Invariant Generation · IEEE Trans. Software Eng. 2018 The Design and Implementation of a Verification Technique for GPU Kernels · ACM Trans. Program. Lang. Syst. 2015 Engineering a Static Verification Tool for GPU Kernels · CAV 2014 |
Program verification
invariant generation |
0.3 | 1 | 2018 | Implementing and Evaluating Candidate-Based Invariant Generation · IEEE Trans. Software Eng. 2018 |
Program analysis
static analysis |
0.3 | 1 | 2018 | Implementing and Evaluating Candidate-Based Invariant Generation · IEEE Trans. Software Eng. 2018 |
Program verification
underapproximation |
0.3 | 1 | 2018 | Implementing and Evaluating Candidate-Based Invariant Generation · IEEE Trans. Software Eng. 2018 |
Concurrent programming › concurrency models
asynchronous programming |
0.2 | 1 | 2015 | Asynchronous programming, analysis and testing with state machines · PLDI 2015 |
Concurrent programming › concurrency bug detection
data race detection |
0.2 | 1 | 2015 | The Design and Implementation of a Verification Technique for GPU Kernels · ACM Trans. Program. Lang. Syst. 2015 |
Concurrent programming
memory models |
0.2 | 1 | 2015 | GPU Concurrency: Weak Behaviours and Programming Assumptions · ASPLOS 2015 |
Programming languages and type systems › language semantics › formal semantics
operational semantics |
0.2 | 1 | 2015 | The Design and Implementation of a Verification Technique for GPU Kernels · ACM Trans. Program. Lang. Syst. 2015 |
Program analysis › concurrent program analysis
static race detection |
0.2 | 1 | 2015 | Asynchronous programming, analysis and testing with state machines · PLDI 2015 |
Software testing › concurrency testing
systematic concurrency testing |
0.2 | 1 | 2015 | Asynchronous programming, analysis and testing with state machines · PLDI 2015 |
Program verification
concurrent program verification |
0.2 | 1 | 2014 | A sound and complete abstraction for reasoning about parallel prefix sums · POPL 2014 |
Program verification
static verification |
0.2 | 1 | 2014 | Engineering a Static Verification Tool for GPU Kernels · CAV 2014 |
Logic in computer science › term rewriting
infinitary rewriting |
0.1 | 1 | 2011 | Infinitary Combinatory Reduction Systems · Inf. Comput. 2011 |
Logic in computer science
rewriting systems |
0.1 | 1 | 2011 | Infinitary Combinatory Reduction Systems · Inf. Comput. 2011 |
Logic in computer science
term rewriting |
0.1 | 1 | 2011 | Infinitary Combinatory Reduction Systems · Inf. Comput. 2011 |
GPUs and heterogeneous computing
GPU programming |
0.1 | 2 | 2015 | GPU Concurrency: Weak Behaviours and Programming Assumptions · ASPLOS 2015 Engineering a Static Verification Tool for GPU Kernels · CAV 2014 |
GPUs and heterogeneous computing
GPU computing |
0.1 | 1 | 2014 | A sound and complete abstraction for reasoning about parallel prefix sums · POPL 2014 |
Methods — techniques the papers use, named apart from their topics
under-approximation · 0.7static analysis · 0.7litmus testing · 0.4formal specification · 0.4static verification · 0.4soundness and completeness proof · 0.4abstraction · 0.4theorem proving · 0.2loop invariant inference · 0.2domain-specific language design · 0.2two-thread reduction · 0.2infinitary rewriting · 0.1combinatory logic · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2020 | Reducing Code Complexity through Code Refactoring and Model-Based RejuvenationabstractOver time, software tends to grow more complex, hampering understandability and further development. To reduce accidental complexity, model-based rejuvenation techniques have been proposed. These techniques combine reverse engineering (extracting models) with forward engineering (generating code). Unfortunately, model extraction can be error-prone, and validation can often only be performed at a late stage by testing the generated code. We intend to mitigate the aforementioned challenges, making model-based rejuvenation more controlled. We describe an exploratory case study that aims to rejuvenate an industrial embedded software component implementing a nested state machine. We combine two techniques. First, we develop and apply a series of small, automated, case-specific code refactorings that ensure the code (a) uses well-known programming idioms, and (b) easily maps onto the type of model we intend to extract. Second, we perform model-based rejuvenation focusing on the high-level structure of the code. The above combination of techniques gives ample opportunity for early validation, in the form of code reviews and testing, as each refactoring is performed directly on the existing code. Moreover, aligning the code with the type of model we intend to extract significantly simplifies the extraction, making the process less error-prone. Hence, we consider code refactoring to be a useful stepping stone towards model-based rejuvenation. Arjan J. Mooij, Jeroen Ketema, A. Steven Klusener, Mathijs Schuts |
SANER | 2 |
| 2019 | Computing with Infinite Terms and Infinite ReductionsabstractWe define computable infinitary rewriting by introducing computability to the study of strongly convergent infinite reductions over infinite first-order terms. Given computable infinitary reductions, we show that descendants and origins—essential to proving fundamental properties such as compression and confluence—are computable across such reductions. Jeroen Ketema, Jakob Grue Simonsen |
Fundam. Informaticae | 1 |
| 2018 | Reducing Code Duplication by Identifying Fresh Domain AbstractionsabstractWhen software components are developed iteratively, code frequently evolves in an inductive manner: a unit (class, method, etc.) is created and is then copied and modified many times. Such development often happens when variation points and, hence, proper domain abstractions are initially unclear. As a result, there may be substantial amounts of code duplication, and the code may be difficult to understand and maintain, warranting a redesign. We apply a model-based process to semi-automatically redesign an inductively-evolved industrial adapter component written in C++: we use reverse engineering to obtain models of the component, and generate redesigned code from the models. Based on our experience, we propose to use three models to help recover understanding of inductively-evolved components, and transform the components into redesigned implementations. Guided by a reference design, a component's code is analyzed and a legacy model is extracted that captures the component's functionality in a form close to its original structure. The legacy model is then unfolded, creating a flat model which eliminates design decisions by focusing on functionality in terms of external interfaces. Analyzing the variation points of the flat model yields a redesigned model and fresh domain abstractions to be used in the new design of the component. A. Steven Klusener, Arjan J. Mooij, Jeroen Ketema, Hans van Wezep |
ICSME | 3 |
| 2018 | Implementing and Evaluating Candidate-Based Invariant GenerationabstractThe discovery of inductive invariants lies at the heart of static program verification. Presently, many automatic solutions to inductive invariant generation are inflexible, only applicable to certain classes of programs, or unpredictable. An automatic technique that circumvents these deficiencies to some extent is candidate-based invariant generation, whereby a large number of candidate invariants are guessed and then proven to be inductive or rejected using a sound program analyzer. This paper describes our efforts to apply candidate-based invariant generation in GPUVerify, a static checker for programs that run on GPUs. We study a set of 383 GPU programs that contain loops, drawn from a number of open source suites and vendor SDKs. Among this set, 253 benchmarks require provision of loop invariants for verification to succeed. We describe the methodology we used to incrementally improve the invariant generation capabilities of GPUVerify to handle these benchmarks, through candidate-based invariant generation, using cheap static analysis to speculate potential program invariants. We also describe a set of experiments that we used to examine the effectiveness of our rules for candidate generation, assessing rules based on their generality (the extent to which they generate candidate invariants), hit rate (the extent to which the generated candidates hold), worth (the extent to which provable candidates actually help in allowing verification to succeed), and influence (the extent to which the success of one generation rule depends on candidates generated by another rule). We believe that our methodology may serve as a useful framework for other researchers interested in candidate-based invariant generation. The candidates produced by GPUVerify help to verify 231 of the 253 programs. This increase in precision, however, makes GPUVerify sluggish: the more candidates that are generated, the more time is spent determining which are inductive invariants. To speed up this process, we have investigated four under-approximating program analyses that aim to reject false candidates quickly and a framework whereby these analyses can run in sequence or in parallel. Across two platforms, running Windows and Linux, our results show that the best combination of these techniques running sequentially-speeds up invariant generation across our benchmarks by 1.17× (Windows) and 1.01× (Linux), with per-benchmark best speedups of 93.58× (Windows) and 48.34× (Linux), and worst slowdowns of 10.24× (Windows) and 43.31× (Linux). We find that parallelizing the strategies marginally improves overall invariant generation speedups to 1.27× (Windows) and 1.11× (Linux), maintains good best-case speedups of 91.18× (Windows) and 44.60× (Linux), and, importantly, dramatically reduces worst-case slowdowns to 3.15× (Windows) and 3.17× (Linux). Adam Betts, Nathan Chong, Pantazis Deligiannis, Alastair F. Donaldson, Jeroen Ketema |
IEEE Trans. Software Eng. | 5 |
| 2017 | Forward Progress on GPU Concurrency (Invited Talk)abstractThe tutorial at CONCUR will provide a practical overview of work undertaken over the last six years in the Multicore Programming Group at Imperial College London, and with collaborators internationally, related to understanding and reasoning about concurrency in software designed for acceleration on GPUs. In this article we provide an overview of this work, which includes contributions to data race analysis, compiler testing, memory model understanding and formalisation, and most recently efforts to enable portable GPU implementations of algorithms that require forward progress guarantees. Alastair F. Donaldson, Jeroen Ketema, Tyler Sorensen 0001, John Wickerson |
CONCUR | 2 |
| 2017 | Termination analysis for GPU kernels
Jeroen Ketema, Alastair F. Donaldson |
Sci. Comput. Program. | 1 |
| 2015 | PENCIL: A Platform-Neutral Compute Intermediate Language for Accelerator ProgrammingabstractProgramming accelerators such as GPUs with low-level APIs and languages such as OpenCL and CUDA is difficult, error-prone, and not performance-portable. Automatic parallelization and domain specific languages (DSLs) have been proposed to hide complexity and regain performance portability. We present PENCIL, a rigorously-defined subset of GNU C99-enriched with additional language constructs-that enables compilers to exploit parallelism and produce highly optimized code when targeting accelerators. PENCIL aims to serve both as a portable implementation language for libraries, and as a target language for DSL compilers. We implemented a PENCIL-to-OpenCL backend using a state-of-the-art polyhedral compiler. The polyhedral compiler, extended to handle data-dependent control flow and non-affine array accesses, generates optimized OpenCL code. To demonstrate the potential and performance portability of PENCIL and the PENCIL-to-OpenCL compiler, we consider a number of image processing kernels, a set of benchmarks from the Rodinia and SHOC suites, and DSL embedding scenarios for linear algebra (BLAS) and signal processing radar applications (SpearDE), and present experimental results for four GPU platforms: AMD Radeon HD 5670 and R9 285, NVIDIA GTX 470, and ARM Mali-T604. Riyadh Baghdadi, Ulysse Beaugnon, Albert Cohen 0001, Tobias Grosser, Michael Kruse, Chandan Reddy 0001, Sven Verdoolaege, Adam Betts, Alastair F. Donaldson, Jeroen Ketema, Javed Absar, Sven van Haastregt, Alexey Kravets, Anton Lokhmotov, Elnar Hajiyev |
PACT | 10 |
| 2015 | GPU Concurrency: Weak Behaviours and Programming AssumptionsabstractConcurrency is pervasive and perplexing, particularly on graphics processing units (GPUs). Current specifications of languages and hardware are inconclusive; thus programmers often rely on folklore assumptions when writing software. Jade Alglave, Mark Batty, Alastair F. Donaldson, Ganesh Gopalakrishnan, Jeroen Ketema, Daniel Poetzl, Tyler Sorensen 0001, John Wickerson |
ASPLOS | 5 |
| 2015 | Asynchronous programming, analysis and testing with state machinesabstractProgramming efficient asynchronous systems is challenging because it can often be hard to express the design declaratively, or to defend against data races and interleaving-dependent assertion violations. Previous work has only addressed these challenges in isolation, by either designing a new declarative language, a new data race detection tool or a new testing technique. We present P#, a language for high-reliability asynchronous programming co-designed with a static data race analysis and systematic concurrency testing infrastructure. We describe our experience using P# to write several distributed protocols and port an industrial-scale system internal to Microsoft, showing that the combined techniques, by leveraging the design of P#, are effective in finding bugs. Pantazis Deligiannis, Alastair F. Donaldson, Jeroen Ketema, Akash Lal, Paul Thomson |
PLDI | 3 |
| 2015 | The Design and Implementation of a Verification Technique for GPU KernelsabstractWe present a technique for the formal verification of GPU kernels, addressing two classes of correctness properties: data races and barrier divergence. Our approach is founded on a novel formal operational semantics for GPU kernels termed synchronous, delayed visibility (SDV) semantics, which captures the execution of a GPU kernel by multiple groups of threads. The SDV semantics provides operational definitions for barrier divergence and for both inter- and intra-group data races. We build on the semantics to develop a method for reducing the task of verifying a massively parallel GPU kernel to that of verifying a sequential program. This completely avoids the need to reason about thread interleavings, and allows existing techniques for sequential program verification to be leveraged. We describe an efficient encoding of data race detection and propose a method for automatically inferring the loop invariants that are required for verification. We have implemented these techniques as a practical verification tool, GPUVerify, that can be applied directly to OpenCL and CUDA source code. We evaluate GPUVerify with respect to a set of 162 kernels drawn from public and commercial sources. Our evaluation demonstrates that GPUVerify is capable of efficient, automatic verification of a large number of real-world kernels. Adam Betts, Nathan Chong, Alastair F. Donaldson, Jeroen Ketema, Shaz Qadeer, Paul Thomson, John Wickerson |
ACM Trans. Program. Lang. Syst. | 4 |
| 2014 | Engineering a Static Verification Tool for GPU Kernels
Ethel Bardsley, Adam Betts, Nathan Chong, Peter Collingbourne, Pantazis Deligiannis, Alastair F. Donaldson, Jeroen Ketema, Daniel Liew, Shaz Qadeer |
CAV | 7 |
| 2014 | A sound and complete abstraction for reasoning about parallel prefix sumsabstractPrefix sums are key building blocks in the implementation of many concurrent software applications, and recently much work has gone into efficiently implementing prefix sums to run on massively parallel graphics processing units (GPUs). Because they lie at the heart of many GPU-accelerated applications, the correctness of prefix sum implementations is of prime importance. Nathan Chong, Alastair F. Donaldson, Jeroen Ketema |
POPL | 3 |
| 2013 | Interleaving and Lock-Step Semantics for Analysis and Verification of GPU Kernels
Peter Collingbourne, Alastair F. Donaldson, Jeroen Ketema, Shaz Qadeer |
ESOP | 3 |
| 2013 | Barrier invariants: a shared state abstraction for the analysis of data-dependent GPU kernelsabstractData-dependent GPU kernels, whose data or control flow are dependent on the input of the program, are difficult to verify because they require reasoning about shared state manipulated by many parallel threads. Existing verification techniques for GPU kernels achieve soundness and scalability by using a two-thread reduction and making the contents of the shared state nondeterministic each time threads synchronise at a barrier, to account for all possible thread interactions. This coarse abstraction prohibits verification of data-dependent kernels. We present barrier invariants, a novel abstraction technique which allows key properties about the shared state of a kernel to be preserved across barriers during formal reasoning. We have integrated barrier invariants with the GPUVerify tool, and present a detailed case study showing how they can be used to verify three prefix sum algorithms, allowing efficient modular verification of a stream compaction kernel, a key building block for GPU programming. This analysis goes significantly beyond what is possible using existing verification techniques for GPU kernels. Nathan Chong, Alastair F. Donaldson, Paul H. J. Kelly, Jeroen Ketema, Shaz Qadeer |
OOPSLA | 4 |
| 2013 | Least upper bounds on the size of confluence and church-rosser diagrams in term rewriting and λ-calculusabstractWe study confluence and the Church-Rosser property in term rewriting and λ-calculus with explicit bounds on term sizes and reduction lengths. Given a system R , we are interested in the lengths of the reductions in the smallest valleys t → * s ′ * ← t ′ expressed as a function: —for confluence a function vs R ( m , n ) where the valleys are for peaks t ← s → * t ′ with s of size at most m and the reductions of maximum length n , and —for the Church-Rosser property a function cvs R ( m , n ) where the valleys are for conversions t ↔ * t ′ with t and t ′ of size at most m and the conversion of maximum length n . For confluent Term Rewriting Systems (TRSs), we prove that vs R is a total computable function, and for linear such systems that cvs R is a total computable function. Conversely, we show that every total computable function is the lower bound on the functions vs R ( m , n ) and cvs R ( m , n ) for some TRS R : In particular, we show that for every total computable function φ: N → N there is a TRS R with a single term s such that vs R (| s |, n ) ≥ φ( n ) and cvs R ( n , n ) ≥ φ( n ) for all n . For orthogonal TRSs R we prove that there is a constant k such that: (a) vs R ( m , n ) is bounded from above by a function exponential in k and (b) cvs R ( m , n ) is bounded from above by a function in the fourth level of the Grzegorczyk hierarchy. Similarly, for λ-calculus, we show that vs R ( m , n ) is bounded from above by a function in the fourth level of the Grzegorczyk hierarchy. Jeroen Ketema, Jakob Grue Simonsen |
ACM Trans. Comput. Log. | 1 |
| 2012 | Characterizing Languages by Normalization and Termination in String Rewriting - (Extended Abstract)
Jeroen Ketema, Jakob Grue Simonsen |
Developments in Language Theory | 1 |
| 2012 | A distributed scheduling algorithm for real-time (D-SAR) industrial wireless sensor and actuator networksabstractCurrent wireless standards and protocols for industrial applications, such as WirelessHART and ISA100.11a, typically use centralized network management for communication scheduling and route establishment. However, due to their centralized nature, these protocols have difficulty coping with dynamic large-scale networks. To address this problem, we propose D-SAR, a distributed resource reservation algorithm that allows source nodes to meet the Quality-of-Service requirements for peer-to-peer communication. D-SAR uses concepts derived from circuit switching and Asynchronous Transfer Mode (ATM) networks and applies them to wireless sensor and actuator networks. Simulations show that latency in connection setup is 93% less in D-SAR compared to WirelessHART and that 89% fewer messages are sent during connection setup in case the distance from source to destination is 12 hops. Pouria Zand, Supriyo Chatterjea, Jeroen Ketema, Paul J. M. Havinga |
ETFA | 3 |
| 2012 | Rational Term Rewriting Revisited: Decidability and Confluence
Takahito Aoto 0001, Jeroen Ketema |
ICGT | 2 |
| 2012 | Reinterpreting Compression in Infinitary RewritingabstractDeparting from a computational interpretation of compression in infinitary rewriting, we view compression as a degenerate case of standardisation. The change in perspective comes about via two observations: (a) no compression property can be recovered for non-left-linear systems and (b) some standardisation procedures, as a "side-effect", yield compressed reductions. Jeroen Ketema |
RTA | 1 |
| 2011 | Anagopos: A Reduction Graph Visualizer for Term Rewriting and Lambda CalculusabstractWe present Anagopos, an open source tool for visualizing reduction graphs of terms in lambda calculus and term rewriting. Anagopos allows step-by-step generation of reduction graphs under six different graph drawing algorithms. We provide ample examples of graphs drawn with the tool. Niels Bjørn Bugge Grathwohl, Jeroen Ketema, Jens Duelund Pallesen, Jakob Grue Simonsen |
RTA | 2 |
| 2011 | Infinitary Combinatory Reduction Systems
Jeroen Ketema, Jakob Grue Simonsen |
Inf. Comput. | 1 |
| 2011 | Counterexamples in infinitary rewriting with non-fully-extended rules
Jeroen Ketema |
Inf. Process. Lett. | 1 |
| 2009 | Comparing Böhm-Like Trees
Jeroen Ketema |
RTA | 1 |
| 2008 | On Normalisation of Infinitary Combinatory Reduction Systems
Jeroen Ketema |
RTA | 1 |
| 2005 | On Confluence of Infinitary Combinatory Reduction Systems
Jeroen Ketema, Jakob Grue Simonsen |
LPAR | 1 |
| 2005 | Infinitary Combinatory Reduction Systems
Jeroen Ketema, Jakob Grue Simonsen |
RTA | 1 |
| 2004 | Böhm-Like Trees for Term Rewriting Systems
Jeroen Ketema |
RTA | 1 |