VLDB 2026 Research / reviewers in the wild / expert
Stefan Blom
dblp:44/699 · also Stefan C. C. Blom
· DBLP profile ↗
27ranked-venue papers
19as first author
1since 2021 · last 2021
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 20 · 15 first-author · 1 since 2021Theory of computation · 10 · 9 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.
| Theoretical computer science
4 papers |
Automated reasoning and model checking · 53% Logic in computer science · 47% | |
| Software engineering, system software, and programming languages
1 paper |
Program verification · 87% Concurrent programming · 13% | |
| Computer architecture, parallel and distributed computing, and storage systems
1 paper |
Electronic design automation · 100% |
Topics — the 12 heaviest of 12, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Program verification
concurrent program verification |
0.2 | 1 | 2014 | The VerCors Tool for Verification of Concurrent Programs · FM 2014 |
Program verification
deductive verification |
0.2 | 1 | 2014 | The VerCors Tool for Verification of Concurrent Programs · FM 2014 |
Electronic design automation › model checking
distributed model checking |
0.1 | 1 | 2010 | LTSmin: Distributed and Symbolic Reachability · CAV 2010 |
Automated reasoning and model checking
model checking |
0.1 | 1 | 2010 | LTSmin: Distributed and Symbolic Reachability · CAV 2010 |
Automated reasoning and model checking
reachability |
0.1 | 1 | 2010 | LTSmin: Distributed and Symbolic Reachability · CAV 2010 |
Logic in computer science
process algebra |
0.1 | 2 | 2003 | On the Axiomatizability of Ready Traces, Ready Simulation, and Failure Traces · ICALP 2003 µCRL: A Toolset for Analysing Algebraic Specifications · CAV 2001 |
Concurrent programming
concurrency verification |
0.1 | 1 | 2014 | The VerCors Tool for Verification of Concurrent Programs · FM 2014 |
Logic in computer science › process algebra
behavioral equivalence |
0.0 | 1 | 2003 | On the Axiomatizability of Ready Traces, Ready Simulation, and Failure Traces · ICALP 2003 |
Logic in computer science › process algebra › behavioral equivalence
ready simulation |
0.0 | 1 | 2003 | On the Axiomatizability of Ready Traces, Ready Simulation, and Failure Traces · ICALP 2003 |
Logic in computer science › concurrency theory › trace monoids
trace languages |
0.0 | 1 | 2003 | On the Axiomatizability of Ready Traces, Ready Simulation, and Failure Traces · ICALP 2003 |
Automated reasoning and model checking › model checking
state space reduction |
0.0 | 1 | 2002 | State Space Reduction by Proving Confluence · CAV 2002 |
Logic in computer science
algebraic specification |
0.0 | 1 | 2001 | µCRL: A Toolset for Analysing Algebraic Specifications · CAV 2001 |
Methods — techniques the papers use, named apart from their topics
symbolic reachability · 0.2separation logic · 0.2permission-based verification · 0.2
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2021 | Correct program parallelisationsabstractAbstract A commonly used approach to develop deterministic parallel programs is to augment a sequential program with compiler directives that indicate which program blocks may potentially be executed in parallel. This paper develops a verification technique to reason about such compiler directives, in particular to show that they do not change the behaviour of the program. Moreover, the verification technique is tool-supported and can be combined with proving functional correctness of the program. To develop our verification technique, we propose a simple intermediate representation (syntax and semantics) that captures the main forms of deterministic parallel programs. This language distinguishes three kinds of basic blocks: parallel, vectorised and sequential blocks, which can be composed using three different composition operators: sequential, parallel and fusion composition. We show how a widely used subset of OpenMP can be encoded into this intermediate representation. Our verification technique builds on the notion of iteration contract to specify the behaviour of basic blocks; we show that if iteration contracts are manually specified for single blocks, then that is sufficient to automatically reason about data race freedom of the composed program. Moreover, we also show that it is sufficient to establish functional correctness on a linearised version of the original program to conclude functional correctness of the parallel program. Finally, we exemplify our approach on an example OpenMP program, and we discuss how tool support is provided. Stefan Blom, Saeed Darabi, Marieke Huisman, Mohsen Safari |
Int. J. Softw. Tools Technol. Transf. | 1 |
| 2018 | Program Correctness by Transformation
Marieke Huisman, Stefan Blom, Saeed Darabi, Mohsen Safari |
ISoLA (1) | 2 |
| 2017 | The VerCors Tool Set: Verification of Parallel and Concurrent Software
Stefan Blom, Saeed Darabi, Marieke Huisman, Wytse Oortwijn |
IFM | 1 |
| 2016 | VerCors: A Layered Approach to Practical Verification of Concurrent SoftwareabstractThis paper discusses how several concurrent program verification techniques can be combined in a layered approach, where each layer is especially suited to verify one aspect of concurrent programs, thus making verification of concurrent programs practical. At the bottom layer, we use a combination of implicit dynamic frames and CSL-style resource invariants, to reason about data race freedom of programs. We illustrate this on the verification of a lock-free queue implementation. On top of this, layer 2 enables reasoning about resource invariants that express a relationship between thread-local and shared variables. This is illustrated by the verification of a reentrant lock implementation, where thread-locality is used to specify for a thread which locks it holds, while there is a global notion of ownership, expressing for a lock by which thread it is held. Finally, the top layer adds a notion of histories to reason about functional properties. We illustrate how this is used to prove that the lock-free queue preserves the order of elements, without having to reverify the aspects related to data race freedom. Afshin Amighi, Stefan Blom, Marieke Huisman |
PDP | 2 |
| 2015 | Verification of Loop Parallelisations
Stefan Blom, Saeed Darabi, Marieke Huisman |
FASE | 1 |
| 2015 | Specification and Verification of Atomic Operations in GPGPU Programs
Afshin Amighi, Saeed Darabi, Stefan Blom, Marieke Huisman |
SEFM | 3 |
| 2015 | History-Based Verification of Functional Behaviour of Concurrent Programs
Stefan Blom, Marieke Huisman, Marina Zaharieva-Stojanovski |
SEFM | 1 |
| 2015 | LTSmin: High-Performance Language-Independent Model Checking
Gijs Kant, Alfons Laarman, Jeroen Meijer, Jaco van de Pol, Stefan Blom, Tom van Dijk |
TACAS | 5 |
| 2015 | Witnessing the elimination of magic wandsabstractThis paper discusses static verification of programs that have been specified using separation logic with magic wands. Magic wands are used to specify incomplete resources in separation logic, i.e., if missing resources are provided, a magic wand allows one to exchange these for the completed resources. One of the applications of the magic wand operator is to describe loop invariants for algorithms that traverse a data structure, such as the imperative version of the tree delete problem (Challenge 3 from the VerifyThis@FM2012 Program Verification Competition), which is the motivating example for our work. Most separation logic-based static verification tools do not provide support for magic wands, possibly because validity of formulas containing the magic wand is, by itself, undecidable. To avoid this problem, in our approach the program annotator has to provide a witness for the magic wand, thus circumventing undecidability due to the use of magic wands. A witness is an object that encodes both instructions for the permission exchange that is specified by the magic wand and the extra resources needed during that exchange. We show how this witness information is used to encode a specification with magic wands as a specification without magic wands. Concretely, this approach is used in the VerCors tool set: annotated Java programs are encoded as Chalice programs. Chalice then further translates the program to BoogiePL, where appropriate proof obligations are generated. Besides our encoding of magic wands, we also discuss the encoding of other aspects of annotated Java programs into Chalice, and in particular, the encoding of abstract predicates with permission parameters. We illustrate our approach on the tree delete algorithm, and on the verification of an iterator of a linked list. Stefan Blom, Marieke Huisman |
Int. J. Softw. Tools Technol. Transf. | 1 |
| 2014 | Resource Protection Using Atomics - Patterns and Verification
Afshin Amighi, Stefan Blom, Marieke Huisman |
APLAS | 2 |
| 2014 | Verifying Functional Behaviour of Concurrent ProgramsabstractSpecifying the functional behaviour of a concurrent program can often be quite troublesome: it is hard to provide a stable method contract that can not be invalidated by other threads. In this paper we propose a novel modular technique for specifying and verifying behavioural properties in concurrent programs. Our approach uses history-based specifications. A history is a process algebra term built of actions, where each action represents an update over a heap location. Instead of describing the object's precise state, a method contract may describe the method's behaviour in terms of actions recorded in the history. The client class can later use the history to reason about the concrete state of the object. Marina Zaharieva-Stojanovski, Marieke Huisman, Stefan Blom |
FTfJP@ECOOP | 3 |
| 2014 | The VerCors Tool for Verification of Concurrent Programs
Stefan Blom, Marieke Huisman |
FM | 1 |
| 2014 | Formal Specifications for Java's Synchronisation ClassesabstractThis paper discusses formal specification and verification of the synchronisation classes of the Java API. In many verification systems for concurrent programs, synchronisation is treated as a primitive operation. As a result, verification rules for synchronisation are hard-coded in the logic, and not verified. These rules describe the concrete semantics of the given synchronisation primitive, and manage how resources are protected by synchronisation. In contrast, this paper describes several synchronisation primitives at the specification level, by specifying the behaviour of synchronisation routines from the Java API at method level using permission-based Separation Logic. This gives a generalised, high-level, and easily extendable approach to formalisation of arbitrary synchronisation mechanisms, which allows for modular treatment of synchronisation in verification. Notably, our approach does not only apply to locks, but also to other synchronisation mechanisms such as semaphores and latches that we also discuss. Finally, we used the verification tool that we are developing and successfully verified (so far simplified) implementations of all presented synchronisers, the paper discusses the verification of one of them. Afshin Amighi, Stefan Blom, Marieke Huisman, Wojciech Mostowski, Marina Zaharieva-Stojanovski |
PDP | 2 |
| 2014 | Specification and verification of GPGPU programs
Stefan Blom, Marieke Huisman, Matej Mihelcic |
Sci. Comput. Program. | 1 |
| 2013 | How Do Developers Use APIs? A Case Study in ConcurrencyabstractWith the omnipresent usage of APIs in software development, it has become important to analyse how the routines and functionalities of APIs are actually used. This information is in particular useful for API developers, to make decisions about future updates of the API. However, also for developers of static analysis and verification tools this information is highly important, because it indicates where and how to put the most efficient effort in annotating APIs, to make them usable for the static analysis and verification tools. This paper presents an analysis of the usage of the routines and functionalities of the Java concurrency library java. util. concurrent. It discusses the Histogram tool that we developed for this purpose, i.e., to efficiently analyse a large collection of bytecode classes. The Histogram tool is used on a representative benchmark set, the Qualitas Corpus. The paper discusses the results of the analysis of this benchmark set in detail. This covers both an analysis of the important classes and methods used by the current releases of the benchmark collection, as well as an analysis of the time it took for the Java concurrency library to start being used in released software. Stefan Blom, Joseph Kiniry, Marieke Huisman |
ICECCS | 1 |
| 2011 | A Database Approach to Distributed State-Space GenerationabstractWe study distributed state-space generation on a cluster of workstations. It is explained why state-space partitioning by a global hash function is problematic when states contain variables from unbounded domains, such as lists or other recursive data types. Our solution is to introduce a database which maintains a global numbering of state values. We also describe tree compression, a technique of recursive state folding, and show that it is superior to manipulating plain state vectors. This solution is implemented and linked to the µCRL toolset, where state values are implemented as maximally shared terms (ATerms). However, it is applicable to other models as well, e.g. PROMELA or LOTOS models. Our experiments show the trade-offs between keeping the database global, replicated or local, depending on the available network bandwidth and latency. Stefan Blom, Bert Lisser, Jaco van de Pol, Michael Weber 0002 |
J. Log. Comput. | 1 |
| 2010 | LTSmin: Distributed and Symbolic Reachability
Stefan Blom, Jaco van de Pol, Michael Weber 0002 |
CAV | 1 |
| 2008 | Symbolic Reachability for Process Algebras with Recursive Data Types
Stefan Blom, Jaco van de Pol |
ICTAC | 1 |
| 2008 | Simulated time for host-based testing with TTCN-3abstractAbstract Prior to testing embedded software in a target environment, it is usually tested in a host environment used for developing the software. When a system is tested in a host environment, its real‐time behaviour is affected by the use of simulators, emulation and monitoring. In this paper, the authors provide a semantics for host‐based testing with simulated time and propose a simulated‐time solution for distributed testing with TTCN‐3, which is a standardized language for specifying and executing test suites. The paper also presents the application of testing with simulated time to two real‐life systems. Copyright © 2007 John Wiley & Sons, Ltd. Stefan Blom, Thomas Deiß, Natalia Ioustinova, Ari Kontio, Jaco van de Pol, Axel Rennoch, Natalia Sidorova |
Softw. Test. Verification Reliab. | 1 |
| 2007 | Distributed Analysis with mu CRL: A Compendium of Case Studies
Stefan Blom, Jens R. Calamé, Bert Lisser, Simona Orzan, Jun Pang 0001, Jaco van de Pol, Muhammad Torabi Dashti, Anton Wijs |
TACAS | 1 |
| 2005 | A distributed algorithm for strong bisimulation reduction of state spaces
Stefan Blom, Simona Orzan |
Int. J. Softw. Tools Technol. Transf. | 1 |
| 2005 | Distributed state space minimization
Stefan Blom, Simona Orzan |
Int. J. Softw. Tools Technol. Transf. | 1 |
| 2004 | An Approximation Based Approach to Infinitary Lambda Calculi
Stefan Blom |
RTA | 1 |
| 2003 | On the Axiomatizability of Ready Traces, Ready Simulation, and Failure Traces
Stefan Blom, Wan J. Fokkink, Sumit Nain |
ICALP | 1 |
| 2002 | State Space Reduction by Proving Confluence
Stefan Blom, Jaco van de Pol |
CAV | 1 |
| 2002 | Skew confluence and the lambda calculus with letrec
Zena M. Ariola, Stefan Blom |
Ann. Pure Appl. Log. | 2 |
| 2001 | µCRL: A Toolset for Analysing Algebraic Specifications
Stefan Blom, Wan J. Fokkink, Jan Friso Groote, Izak van Langevelde, Bert Lisser, Jaco van de Pol |
CAV | 1 |