Stijn de Gouw

dblp:34/11095 · DBLP profile ↗
← Back
25ranked-venue papers
6as first author
10since 2021 · last 2025
0000-0003-2964-6844ORCID · verified

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

Software engineering, systems software and programming languages · 15 · 3 first-author · 6 since 2021Theory of computation · 10 · 1 first-author · 7 since 2021Applied, interdisciplinary, general and emerging computing · 3 · 1 first-authorArtificial intelligence and machine learning · 2 · 2 first-author
YearPublicationVenuePosition
2025 Footprint Logic for Object-Oriented Components (extended paper)
abstract
We introduce a new way of reasoning about invariance in terms of footprints in a program logic for object-oriented components. A footprint of an object-oriented component is formalized as a monadic predicate that describes which objects on the heap can be affected by the execution of the component. Assuming encapsulation, this amounts to specifying which objects of the component can be called. Adaptation of local specifications into global specifications amounts to showing invariance of assertions, which is ensured by means of a form of bounded quantification which excludes references to a given footprint. The new approach is compared to two existing approaches to reason about invariance: separation logic and dynamic frames.
Frank S. de Boer, Stijn de Gouw, Hans-Dieter A. Hiep, Jinting Bian
Formal Aspects Comput.2
2025 Analysis and formal specification of OpenJDK's BitSet: Proof files
Andy S. Tatman, Hans-Dieter A. Hiep, Stijn de Gouw
Sci. Comput. Program.3
2023 Analysis and Formal Specification of OpenJDK's BitSet
Andy S. Tatman, Hans-Dieter A. Hiep, Stijn de Gouw
iFM3
2023 The Logic of Separation Logic: Models and Proofs
abstract
Abstract The standard semantics of separation logic is restricted to finite heaps. This restriction already gives rise to a logic which does not satisfy compactness, hence it does not allow for an effective, sound and complete axiomatization. In this paper we therefore study both the general model theory and proof theory of the separation logic of finite and infinite heaps over arbitrary (first-order) models. We show that we can express in the resulting logic finiteness of the models and the existence of both countably infinite and uncountable models. We further show that a sound and complete sequent calculus still can be obtained by restricting the second-order quantification over heaps to first-order definable heaps.
Frank S. de Boer, Hans-Dieter A. Hiep, Stijn de Gouw
TABLEAUX3
2023 Multiparty Session Typing in Java, Deductively
abstract
Abstract Multiparty session typing (MPST) is a method to automatically prove safety and liveness of protocol implementations relative to specifications. We present BGJ: a new tool to apply the MPST method in combination with Java. The checks performed using our tool are purely static (all errors are reported early at compile-time) and resource-efficient (near-zero cost abstractions at run-time), thereby addressing two issues of existing tools. BGJ is built using VerCors, but our approach is general.
Jelle Bouma, Stijn de Gouw, Sung-Shik Jongmans
TACAS (2)2
2023 Formal Specification and Verification of JDK's Identity Hash Map Implementation
abstract
Hash maps are a common and important data structure in efficient algorithm implementations. Despite their wide-spread use, real-world implementations are not regularly verified. In this article, we present the first case study of the IdentityHashMap class in the Java JDK. We specified its behavior using the Java Modeling Language (JML) and proved correctness for the main insertion and lookup methods with KeY, a semi-interactive theorem prover for JML-annotated Java programs. Furthermore, we report how unit testing and bounded model checking can be leveraged to find a suitable specification more quickly. We also investigated where the bottlenecks in the verification of hash maps lie for KeY by comparing required automatic proof effort for different hash map implementations and draw conclusions for the choice of hash map implementations regarding their verifiability.
Martin de Boer, Stijn de Gouw, Jonas Klamroth, Christian Jung 0003, Mattias Ulbrich, Alexander Weigl
Formal Aspects Comput.2
2022 Formal Specification and Verification of JDK's Identity Hash Map Implementation
Martin de Boer, Stijn de Gouw, Jonas Klamroth, Christian Jung 0003, Mattias Ulbrich, Alexander Weigl
IFM2
2022 Integrating ADTs in KeY and their application to history-based reasoning about collection
abstract
Abstract We discuss integrating abstract data types (ADTs) in the KeY theorem prover by a new approach to model data types using Isabelle/HOL as an interactive back-end, and represent Isabelle theorems as user-defined taclets in KeY. As a case study of this new approach, we reason about Java’s interface using histories, and we prove the correctness of several clients that operate on multiple objects, thereby significantly improving the state-of-the-art of history-based reasoning. Open Science. Includes video material (Bian and Hiep in FigShare, 2021. https://doi.org/10.6084/m9.figshare.c.5413263 ) and a source code artifact (Bian et al. in Zenodo, 2022. https://doi.org/10.5281/zenodo.7079126 ).
Jinting Bian, Hans-Dieter A. Hiep, Frank S. de Boer, Stijn de Gouw
Formal Methods Syst. Des.4
2022 Verifying OpenJDK's LinkedList using KeY (extended paper)
abstract
Abstract As a particular case study of the formal verification of state-of-the-art, real software, we discuss the specification and verification of a corrected version of the implementation of a linked list as provided by the Java Collection Framework.
Hans-Dieter A. Hiep, Olaf Maathuis, Jinting Bian, Frank S. de Boer, Stijn de Gouw
Int. J. Softw. Tools Technol. Transf.5
2021 Integrating ADTs in KeY and Their Application to History-Based Reasoning
Jinting Bian, Hans-Dieter A. Hiep, Frank S. de Boer, Stijn de Gouw
FM4
2020 History-Based Specification and Verification of Java Collections in KeY
Hans-Dieter A. Hiep, Jinting Bian, Frank S. de Boer, Stijn de Gouw
IFM4
2020 Verifying OpenJDK's LinkedList using KeY
abstract
Abstract As a particular case study of the formal verification of state-of-the-art, real software, we discuss the specification and verification of a corrected version of the implementation of a linked list as provided by the Java Collection framework.
Hans-Dieter A. Hiep, Olaf Maathuis, Jinting Bian, Frank S. de Boer, Marko C. J. D. van Eekelen, Stijn de Gouw
TACAS (2)6
2019 Offline Oracles for Accessibility Evaluation with the TESTAR Tool
abstract
To manage the complexity of today's information systems, we need to investigate novel approaches for automated testing. In this paper we present two extensions to TESTAR, a state-of-the-art tool for testing systems through the GUI. We extend this tool with 1) a systematic and powerful approach for storing and querying test results through a graph database for offline oracles, and 2) support for accessibility evaluation of general applications for stakeholders with disabilities utilizing offline oracles. Furthermore, we conduct a preliminary validation of these extensions through a case study on the popular VLC Media Player.
Floren de Gier, Davy Kager, Stijn de Gouw, Tanja E. J. Vos
RCIS3
2019 Verifying OpenJDK's Sort Method for Generic Collections
abstract
TimSort is the main sorting algorithm provided by the Java standard library and many other programming frameworks. Our original goal was functional verification of TimSort with mechanical proofs. However, during our verification attempt we discovered a bug which causes the implementation to crash by an uncaught exception. In this paper, we identify conditions under which the bug occurs, and from this we derive a bug-free version that does not compromise performance. We formally specify the new version and verify termination and the absence of exceptions including the bug. This verification is carried out mechanically with KeY, a state-of-the-art interactive verification tool for Java. We provide a detailed description and analysis of the proofs. The complexity of the proofs required extensions and new capabilities in KeY, including symbolic state merging.
Stijn de Gouw, Frank S. de Boer, Richard Bubel, Reiner Hähnle, Jurriaan Rot, Dominic Steinhöfel
J. Autom. Reason.1
2019 On the modeling of optimal and automatized cloud application deployment
Stijn de Gouw, Jacopo Mauro, Gianluigi Zavattaro
J. Log. Algebraic Methods Program.1
2016 Run-Time Checking Multi-threaded Java Programs
Frank S. de Boer, Stijn de Gouw
SOFSEM2
2016 Integrating deductive verification and symbolic execution for abstract object creation in dynamic logic
Stijn de Gouw, Frank S. de Boer, Wolfgang Ahrendt, Richard Bubel
Softw. Syst. Model.1
2015 OpenJDK's Java.utils.Collection.sort() Is Broken: The Good, the Bad and the Worst Case
Stijn de Gouw, Jurriaan Rot, Frank S. de Boer, Richard Bubel, Reiner Hähnle
CAV (1)1
2015 Testing abstract behavioral specifications
Peter Y. H. Wong, Richard Bubel, Frank S. de Boer, Miguel Gómez-Zamalloa, Stijn de Gouw, Reiner Hähnle, Karl Meinke, Muddassar A. Sindhu
Int. J. Softw. Tools Technol. Transf.5
2014 Proof Pearl: The KeY to Correct and Stable Sorting
Stijn de Gouw, Frank S. de Boer, Jurriaan Rot
J. Autom. Reason.1
2014 Monitoring method call sequences using annotations
Behrooz Nobakht, Frank S. de Boer, Marcello M. Bonsangue, Stijn de Gouw, Mohammad Mahdi Jaghoori
Sci. Comput. Program.4
2013 Run-Time Verification of Coboxes
Frank S. de Boer, Stijn de Gouw, Peter Y. H. Wong
SEFM2
2013 Weak Arithmetic Completeness of Object-Oriented First-Order Assertion Networks
Stijn de Gouw, Frank S. de Boer, Wolfgang Ahrendt, Richard Bubel
SOFSEM1
2012 Verification of object-oriented programs: A transformational approach
Krzysztof R. Apt, Frank S. de Boer, Ernst-Rüdiger Olderog, Stijn de Gouw
J. Comput. Syst. Sci.4
2010 Prototyping a tool environment for run-time assertion checking in JML with communication histories
abstract
In this paper we present prototype tool-support for the runtime assertion checking of the Java Modeling Language (JML) extended with communication histories specified by attribute grammars. Our tool suite integrates Rascal, a meta programming language and ANTLR, a popular parser generator. Rascal instantiates a generic model of history updates for a given Java program annotated with history specifications. ANTLR is used for the actual evaluation of history assertions.
Frank S. de Boer, Stijn de Gouw, Jurgen J. Vinju
FTfJP@ECOOP2